From 555111a220325a0c3d8f07bf23a081f86d0cf1e7 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Fri, 17 Jul 2026 10:37:19 -0400 Subject: [PATCH 01/58] watch-from-stock: add G7SensorKit-watchOS framework target Mirrors the LoopKit-watchOS pbxproj pattern (SDKROOT=watchos, SUPPORTED_PLATFORMS watchos/watchsimulator, TARGETED_DEVICE_FAMILY=4, APPLICATION_EXTENSION_API_ONLY, PRODUCT_NAME=G7SensorKit, WATCHOS_DEPLOYMENT_TARGET=8.0). Compiles the full core (23 sources: parsing/state/messages/Common + the CoreBluetooth passive-listener stack, which builds for watchOS with the two os(iOS) restoration guards). Excluded from the watch target: G7DeviceStatus.swift (imports LoopKitUI, iOS-only; consumed only by G7SensorKitUI). Links LoopKit.framework (resolved to the LoopKit-watchOS product by name, as OmnipodKit-watchOS does). Shared scheme added for the standalone compile gate. Co-Authored-By: Claude Fable 5 --- G7SensorKit.xcodeproj/project.pbxproj | 176 ++++++++++++++++++ .../xcschemes/G7SensorKit-watchOS.xcscheme | 58 ++++++ 2 files changed, 234 insertions(+) create mode 100644 G7SensorKit.xcodeproj/xcshareddata/xcschemes/G7SensorKit-watchOS.xcscheme diff --git a/G7SensorKit.xcodeproj/project.pbxproj b/G7SensorKit.xcodeproj/project.pbxproj index e7c0f76..a67ba0e 100644 --- a/G7SensorKit.xcodeproj/project.pbxproj +++ b/G7SensorKit.xcodeproj/project.pbxproj @@ -59,6 +59,32 @@ C17F5157291EBD9900555EB5 /* TimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F513F291EB27D00555EB5 /* TimeInterval.swift */; }; C19C9F4E29C91C4C00A6D3D0 /* LocalizedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = C19C9F4D29C91C4C00A6D3D0 /* LocalizedString.swift */; }; C1E71720292D84FE00DA646F /* G7ProgressBarState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1E7171F292D84FE00DA646F /* G7ProgressBarState.swift */; }; + FADE00000000000000000310 /* G7SensorKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C17F50C9291EAC3800555EB5 /* G7SensorKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FADE00000000000000000311 /* LoopKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FADE00000000000000000301 /* LoopKit.framework */; }; + FADE00000000000000000312 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = B66D1F6C2E6A803800471149 /* Localizable.xcstrings */; }; + FADE00000000000000000320 /* G7CGMManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F50E5291EAC6500555EB5 /* G7CGMManager.swift */; }; + FADE00000000000000000321 /* SensorMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F5146291EB57700555EB5 /* SensorMessage.swift */; }; + FADE00000000000000000322 /* G7BackfillMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F50DF291EAC6500555EB5 /* G7BackfillMessage.swift */; }; + FADE00000000000000000323 /* G7Opcode.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F50E3291EAC6500555EB5 /* G7Opcode.swift */; }; + FADE00000000000000000324 /* TimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F513F291EB27D00555EB5 /* TimeInterval.swift */; }; + FADE00000000000000000325 /* G7CGMManagerState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F50E6291EAC6500555EB5 /* G7CGMManagerState.swift */; }; + FADE00000000000000000326 /* CBPeripheral.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F5144291EB45900555EB5 /* CBPeripheral.swift */; }; + FADE00000000000000000327 /* ExtendedVersionMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C107607E2F05912B008B2B39 /* ExtendedVersionMessage.swift */; }; + FADE00000000000000000328 /* GlucoseLimits.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F5139291EB0D900555EB5 /* GlucoseLimits.swift */; }; + FADE00000000000000000329 /* AuthChallengeRxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F5142291EB36700555EB5 /* AuthChallengeRxMessage.swift */; }; + FADE0000000000000000032A /* OSLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1409A08291EC22F006BE8D0 /* OSLog.swift */; }; + FADE0000000000000000032B /* AlgorithmState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F5134291EB06A00555EB5 /* AlgorithmState.swift */; }; + FADE0000000000000000032C /* G7BluetoothManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F50E7291EAC6500555EB5 /* G7BluetoothManager.swift */; }; + FADE0000000000000000032D /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F5137291EB0A800555EB5 /* Data.swift */; }; + FADE0000000000000000032E /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F514A291EB6F000555EB5 /* HKUnit.swift */; }; + FADE0000000000000000032F /* G7LastReading.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F50E2291EAC6500555EB5 /* G7LastReading.swift */; }; + FADE00000000000000000330 /* Locked.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F513B291EB13D00555EB5 /* Locked.swift */; }; + FADE00000000000000000331 /* BluetoothServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F513D291EB1A500555EB5 /* BluetoothServices.swift */; }; + FADE00000000000000000332 /* LocalizedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F5148291EB6B600555EB5 /* LocalizedString.swift */; }; + FADE00000000000000000333 /* AlgorithmError.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F514C291EB79E00555EB5 /* AlgorithmError.swift */; }; + FADE00000000000000000334 /* G7Sensor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F50E1291EAC6500555EB5 /* G7Sensor.swift */; }; + FADE00000000000000000335 /* G7GlucoseMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F50E8291EAC6500555EB5 /* G7GlucoseMessage.swift */; }; + FADE00000000000000000336 /* G7PeripheralManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17F50E4291EAC6500555EB5 /* G7PeripheralManager.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -158,6 +184,8 @@ C17F5158291EBE7500555EB5 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; C19C9F4D29C91C4C00A6D3D0 /* LocalizedString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizedString.swift; sourceTree = ""; }; C1E7171F292D84FE00DA646F /* G7ProgressBarState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = G7ProgressBarState.swift; sourceTree = ""; }; + FADE00000000000000000301 /* LoopKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LoopKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FADE00000000000000000302 /* G7SensorKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = G7SensorKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -194,6 +222,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FADE00000000000000000303 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FADE00000000000000000311 /* LoopKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -217,6 +253,7 @@ C17F50CE291EAC3800555EB5 /* G7SensorKitTests.xctest */, C17F50F8291EAC9100555EB5 /* G7SensorKitUI.framework */, C17F511D291EACCD00555EB5 /* G7SensorPlugin.loopplugin */, + FADE00000000000000000302 /* G7SensorKit.framework */, ); name = Products; sourceTree = ""; @@ -302,6 +339,7 @@ isa = PBXGroup; children = ( 3B0FD2A42D803BF000E5E921 /* LoopKitUI.framework */, + FADE00000000000000000301 /* LoopKit.framework */, ); name = Frameworks; sourceTree = ""; @@ -376,6 +414,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FADE00000000000000000304 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + FADE00000000000000000310 /* G7SensorKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -455,6 +501,24 @@ productReference = C17F511D291EACCD00555EB5 /* G7SensorPlugin.loopplugin */; productType = "com.apple.product-type.framework"; }; + FADE00000000000000000305 /* G7SensorKit-watchOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = FADE00000000000000000306 /* Build configuration list for PBXNativeTarget "G7SensorKit-watchOS" */; + buildPhases = ( + FADE00000000000000000304 /* Headers */, + FADE00000000000000000307 /* Sources */, + FADE00000000000000000303 /* Frameworks */, + FADE00000000000000000308 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "G7SensorKit-watchOS"; + productName = G7SensorKit; + productReference = FADE00000000000000000302 /* G7SensorKit.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -523,6 +587,7 @@ C17F50CD291EAC3800555EB5 /* G7SensorKitTests */, C17F50F7291EAC9100555EB5 /* G7SensorKitUI */, C17F511C291EACCD00555EB5 /* G7SensorPlugin */, + FADE00000000000000000305 /* G7SensorKit-watchOS */, ); }; /* End PBXProject section */ @@ -559,6 +624,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FADE00000000000000000308 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FADE00000000000000000312 /* Localizable.xcstrings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -629,6 +702,36 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FADE00000000000000000307 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FADE00000000000000000320 /* G7CGMManager.swift in Sources */, + FADE00000000000000000321 /* SensorMessage.swift in Sources */, + FADE00000000000000000322 /* G7BackfillMessage.swift in Sources */, + FADE00000000000000000323 /* G7Opcode.swift in Sources */, + FADE00000000000000000324 /* TimeInterval.swift in Sources */, + FADE00000000000000000325 /* G7CGMManagerState.swift in Sources */, + FADE00000000000000000326 /* CBPeripheral.swift in Sources */, + FADE00000000000000000327 /* ExtendedVersionMessage.swift in Sources */, + FADE00000000000000000328 /* GlucoseLimits.swift in Sources */, + FADE00000000000000000329 /* AuthChallengeRxMessage.swift in Sources */, + FADE0000000000000000032A /* OSLog.swift in Sources */, + FADE0000000000000000032B /* AlgorithmState.swift in Sources */, + FADE0000000000000000032C /* G7BluetoothManager.swift in Sources */, + FADE0000000000000000032D /* Data.swift in Sources */, + FADE0000000000000000032E /* HKUnit.swift in Sources */, + FADE0000000000000000032F /* G7LastReading.swift in Sources */, + FADE00000000000000000330 /* Locked.swift in Sources */, + FADE00000000000000000331 /* BluetoothServices.swift in Sources */, + FADE00000000000000000332 /* LocalizedString.swift in Sources */, + FADE00000000000000000333 /* AlgorithmError.swift in Sources */, + FADE00000000000000000334 /* G7Sensor.swift in Sources */, + FADE00000000000000000335 /* G7GlucoseMessage.swift in Sources */, + FADE00000000000000000336 /* G7PeripheralManager.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1041,6 +1144,70 @@ }; name = Release; }; + FADE00000000000000000309 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.loopkit.G7SensorKit; + PRODUCT_NAME = G7SensorKit; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchos watchsimulator"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 8.0; + }; + name = Debug; + }; + FADE0000000000000000030A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.loopkit.G7SensorKit; + PRODUCT_NAME = G7SensorKit; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "watchos watchsimulator"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 8.0; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1089,6 +1256,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + FADE00000000000000000306 /* Build configuration list for PBXNativeTarget "G7SensorKit-watchOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FADE00000000000000000309 /* Debug */, + FADE0000000000000000030A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = C17F50BD291EAC3800555EB5 /* Project object */; diff --git a/G7SensorKit.xcodeproj/xcshareddata/xcschemes/G7SensorKit-watchOS.xcscheme b/G7SensorKit.xcodeproj/xcshareddata/xcschemes/G7SensorKit-watchOS.xcscheme new file mode 100644 index 0000000..abe0ecf --- /dev/null +++ b/G7SensorKit.xcodeproj/xcshareddata/xcschemes/G7SensorKit-watchOS.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + From 4d28dfcbd51b33a90e6243078f98069485ec9cce Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Fri, 17 Jul 2026 10:33:47 -0400 Subject: [PATCH 02/58] watch-from-stock: watchOS source guards + transport seam MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - G7BluetoothManager.swift: #if os(iOS) around the two CoreBluetooth state-restoration sites (restore-identifier init option, willRestoreState). watchOS branch passes options: nil; zero behavior change on iOS. Same recipe as the M2 OmnipodKit/RileyLinkBLEKit guards. - G7Sensor.swift: activationDate internal -> public (one line) — the minimal transport-injection seam so an external transport (the watch's direct-BLE G7Client) can drive the stock G7SensorDelegate flow into G7CGMManager. Co-Authored-By: Claude Fable 5 --- G7SensorKit/G7CGMManager/G7BluetoothManager.swift | 6 ++++++ G7SensorKit/G7CGMManager/G7Sensor.swift | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index 156bb80..b2c7224 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -128,7 +128,11 @@ class G7BluetoothManager: NSObject { super.init() managerQueue.sync { +#if os(iOS) // watchOS has no CoreBluetooth state restoration; the watch host owns reconnect policy self.centralManager = CBCentralManager(delegate: self, queue: managerQueue, options: [CBCentralManagerOptionRestoreIdentifierKey: "com.loudnate.CGMBLEKit"]) +#else + self.centralManager = CBCentralManager(delegate: self, queue: managerQueue, options: nil) +#endif } } @@ -334,6 +338,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { } } +#if os(iOS) // watchOS has no CoreBluetooth state restoration (willRestoreState / restored-state keys are iOS-only) func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) { dispatchPrecondition(condition: .onQueue(managerQueue)) @@ -344,6 +349,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { } } } +#endif func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) { dispatchPrecondition(condition: .onQueue(managerQueue)) diff --git a/G7SensorKit/G7CGMManager/G7Sensor.swift b/G7SensorKit/G7CGMManager/G7Sensor.swift index 3507d17..843f8c3 100644 --- a/G7SensorKit/G7CGMManager/G7Sensor.swift +++ b/G7SensorKit/G7CGMManager/G7Sensor.swift @@ -72,7 +72,11 @@ public final class G7Sensor: G7BluetoothManagerDelegate { // MARK: - Passive observation state, confined to `bluetoothManager.managerQueue` /// The initial activation date of the sensor - var activationDate: Date? + // watch-from-stock: `public` (was internal) — the transport-injection seam. An external + // transport driving the G7SensorDelegate callbacks (in place of this class's passive + // CoreBluetooth listener) must set the activation date before delivering readings, exactly + // as handleGlucoseMessage does below; G7CGMManager reads it to timestamp samples. + public var activationDate: Date? /// The initial activation date of the sensor var needsVersionInfo: Bool = false From 77bcef3d5cf877e1628e8ebbb08f5a6964b3bd49 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Sat, 15 Aug 2026 22:03:59 -0400 Subject: [PATCH 03/58] G7SensorKit-watchOS: deployment target 10.6 to match LoopKit Co-Authored-By: Claude Opus 5 --- G7SensorKit.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/G7SensorKit.xcodeproj/project.pbxproj b/G7SensorKit.xcodeproj/project.pbxproj index a67ba0e..94ac786 100644 --- a/G7SensorKit.xcodeproj/project.pbxproj +++ b/G7SensorKit.xcodeproj/project.pbxproj @@ -1172,7 +1172,7 @@ SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 8.0; + WATCHOS_DEPLOYMENT_TARGET = 10.6; }; name = Debug; }; @@ -1204,7 +1204,7 @@ SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 8.0; + WATCHOS_DEPLOYMENT_TARGET = 10.6; }; name = Release; }; From 61e30b0f34a4d5454dd80f7f46aa26ef8f2d2fd5 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Fri, 17 Jul 2026 13:49:06 -0400 Subject: [PATCH 04/58] =?UTF-8?q?watch-from-stock:=20pin=20the=20iOS=20tar?= =?UTF-8?q?get's=20SDKROOT=20(PODLOAN)=20=E2=80=94=20implicit-dependency?= =?UTF-8?q?=20hijack=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The stock iOS G7SensorKit framework target used SDKROOT = auto, which XCBuild treats as platform-specializable: the WatchApp Extension's name-based implicit dependency on G7SensorKit.framework then resolved to the iOS target instead of G7SensorKit-watchOS, dragging the iOS dependency closure's SwiftCharts package modulemap flags into the watchos build description (66x 'module map file ... GeneratedModuleMaps-watchos/SwiftCharts.modulemap not found'). Pin SDKROOT = iphoneos on the target's two configs — the shape LoopKit's iOS target already has, and zero effective change on iOS (SUPPORTED_PLATFORMS already pins iphoneos there). Full diagnosis: Loop/docs/M3_NOTES.md §7. Co-Authored-By: Claude Fable 5 --- G7SensorKit.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/G7SensorKit.xcodeproj/project.pbxproj b/G7SensorKit.xcodeproj/project.pbxproj index 94ac786..c2396c8 100644 --- a/G7SensorKit.xcodeproj/project.pbxproj +++ b/G7SensorKit.xcodeproj/project.pbxproj @@ -914,7 +914,7 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = org.loopkit.G7SensorKit; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = auto; + SDKROOT = iphoneos; /* PODLOAN watch-from-stock: was `auto` — a specializable candidate hijacks the watch extension's implicit G7SensorKit.framework dependency from G7SensorKit-watchOS; effective iOS SDK unchanged (SUPPORTED_PLATFORMS pins iphoneos) */ SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -950,7 +950,7 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = org.loopkit.G7SensorKit; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = auto; + SDKROOT = iphoneos; /* PODLOAN watch-from-stock: was `auto` — a specializable candidate hijacks the watch extension's implicit G7SensorKit.framework dependency from G7SensorKit-watchOS; effective iOS SDK unchanged (SUPPORTED_PLATFORMS pins iphoneos) */ SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; From 05b0d46d389dab57ac1fa4ff0427248407971d95 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Mon, 10 Aug 2026 23:05:06 -0400 Subject: [PATCH 05/58] =?UTF-8?q?Fork=20#101:=20G7=20radio=20census=20?= =?UTF-8?q?=E2=80=94=20make=20the=20acquisition=20mechanism=20observable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 2026-08-10 held-pod-link finding (0 adoptions in 3 held-link windows, 2 adoptions within minutes of the 2 releases) was proven by toggle experiment but the mechanism stayed inferred: this layer logged only via os_log, invisible to the on-watch mirrored log the field analysis reads. G7RadioCensus.sink (public; watch wires it, phone stays os_log-only) now reports: - scan-start branch taken: retrieved-known / system-connected list (the literal D2W piggyback, trigger a — a timing lottery against D2W's ~10-20s windows) / scan armed - connection events (trigger b — the OS reporting D2W's own connects), ALWAYS logged - ad discoveries (trigger c), rate-limited to one line per peripheral per 30s — presence vs absence per window is the scan-starvation discriminator - didConnect with peripheral identity - at both unknownCharacteristic throw sites: the full discovered GATT inventory, which distinguishes partial-discovery-on-a-dropped-shared-link from wrong-GATT — the ambiguity that made three days of auth errors uninterpretable Co-Authored-By: Claude Fable 5 (cherry picked from commit ec73922d0ffdaf285d20d95ab2d6c861929fa67c) --- .../G7CGMManager/G7BluetoothManager.swift | 45 ++++++++++++++++++- .../G7CGMManager/G7PeripheralManager.swift | 17 +++++++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index b2c7224..9374c4a 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -7,6 +7,12 @@ // import CoreBluetooth + +/// FORK ADDITION (Sport Mode #101): public sink for the radio census, since the BLE types +/// themselves are module-internal. The watch app assigns it; nil (default) = os_log only. +public enum G7RadioCensus { + public static var sink: ((String) -> Void)? +} import Foundation import os.log @@ -124,6 +130,21 @@ class G7BluetoothManager: NSObject { private let managerQueue = DispatchQueue(label: "com.loudnate.CGMBLEKit.bluetoothManagerQueue", qos: .unspecified) + /// FORK ADDITION (Sport Mode #101, 2026-08-10): radio-census sink. os_log lines from this + /// layer never reach the on-watch mirrored log, which is what the field analysis reads — + /// the 2026-08-10 acquisition investigation had to infer the mechanism because discovery, + /// connection events, and connect verdicts were all invisible. Same pattern as OmnipodKit's + /// `podLoanLogSink`; the watch wires it, the phone leaves it nil (os_log only). + /// + /// Acquisition has THREE triggers, and the census must name which one fired: + /// (a) retrieveConnectedPeripherals at scan start — riding a link D2W already holds + /// (b) connectionEventDidOccur — the OS reporting D2W (or anyone) connecting to a sensor + /// (c) advertisement scan — the only path that needs active scanning + private static func census(_ line: String) { G7RadioCensus.sink?(line) } + /// didDiscover fires many times per transmit window; log each peripheral at most + /// once per 30 s. managerQueue-confined. + private var lastDiscoveryLog: [UUID: Date] = [:] + override init() { super.init() @@ -184,6 +205,10 @@ class G7BluetoothManager: NSObject { func centralManager(_ central: CBCentralManager, connectionEventDidOccur event: CBConnectionEvent, for peripheral: CBPeripheral) { managerQueue.async { + // Trigger (b): the OS saw a connection event on a sensor-service peripheral — + // in practice, D2W connecting for its reading. Log ALWAYS (even when we have an + // active peripheral and ignore it): the census needs D2W's rhythm either way. + Self.census("connection-event \(event.rawValue == 1 ? "CONNECT" : "disconnect") \(peripheral.name ?? "unnamed") — \(self.activePeripheralIdentifier == nil ? "handling (trigger b)" : "ignored, have active")") if self.activePeripheralIdentifier == nil { self.log.default("Discovered peripheral from connectionEventDidOccur %{public}@", peripheral.identifier.uuidString) self.handleDiscoveredPeripheral(peripheral) @@ -205,12 +230,18 @@ class G7BluetoothManager: NSObject { if let peripheralID = activePeripheralIdentifier, let peripheral = centralManager.retrievePeripherals(withIdentifiers: [peripheralID]).first { log.default("Retrieved peripheral %{public}@", peripheral.identifier.uuidString) + Self.census("scan-start: retrieved KNOWN peripheral \(peripheral.name ?? "unnamed") state=\(peripheral.state.rawValue)") handleDiscoveredPeripheral(peripheral) } else { - for peripheral in centralManager.retrieveConnectedPeripherals(withServices: [ + let systemConnected = centralManager.retrieveConnectedPeripherals(withServices: [ SensorServiceUUID.advertisement.cbUUID, SensorServiceUUID.cgmService.cbUUID - ]) { + ]) + // Trigger (a): the literal piggyback. Empty means D2W held no sensor link at this + // exact moment — its connections last ~10-20 s per 5-min window, so this is a + // timing lottery and the census must show every draw. + Self.census("scan-start: system-connected list = [\(systemConnected.map { $0.name ?? "unnamed" }.joined(separator: ","))] (\(systemConnected.count))") + for peripheral in systemConnected { log.default("Found system-connected peripheral: %{public}@", peripheral.identifier.uuidString) handleDiscoveredPeripheral(peripheral) } @@ -229,6 +260,7 @@ class G7BluetoothManager: NSObject { ], options: nil ) + Self.census("scan STARTED (trigger c armed) + connection-events registered (trigger b armed)") delegate?.bluetoothManagerScanningStatusDidChange(self) } } @@ -356,6 +388,14 @@ extension G7BluetoothManager: CBCentralManagerDelegate { log.default("%{public}@: %{public}@, data = %{public}@", #function, peripheral, String(describing: advertisementData)) + // Trigger (c): an advertisement reached our scan. Rate-limited per peripheral; the + // interesting signal is PRESENCE vs ABSENCE per window — a held-pod-link arm with no + // didDiscover lines while D2W reads fine is scan starvation, observed directly. + if lastDiscoveryLog[peripheral.identifier].map({ Date().timeIntervalSince($0) > 30 }) ?? true { + lastDiscoveryLog[peripheral.identifier] = Date() + Self.census("ad DISCOVERED (trigger c) \(peripheral.name ?? "unnamed") rssi \(RSSI)") + } + managerQueue.async { self.handleDiscoveredPeripheral(peripheral) } @@ -363,6 +403,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) { dispatchPrecondition(condition: .onQueue(managerQueue)) + Self.census("didConnect \(peripheral.name ?? "unnamed")") log.default("%{public}@: %{public}@", #function, peripheral) diff --git a/G7SensorKit/G7CGMManager/G7PeripheralManager.swift b/G7SensorKit/G7CGMManager/G7PeripheralManager.swift index cffae13..70b6fbd 100644 --- a/G7SensorKit/G7CGMManager/G7PeripheralManager.swift +++ b/G7SensorKit/G7CGMManager/G7PeripheralManager.swift @@ -180,11 +180,17 @@ extension G7PeripheralManager { for (serviceUUID, characteristicUUIDs) in configuration.notifyingCharacteristics { guard let service = peripheral.services?.itemWithUUID(serviceUUID) else { + // FORK (#101): dump what discovery ACTUALLY returned before dying. An empty or + // partial inventory here on a link that D2W was using is the signature of the + // shared link dropping mid-discovery; a full-but-different inventory would mean + // wrong GATT. The bare error could not tell those apart (field 2026-08-08..10). + G7RadioCensus.sink?("unknownCharacteristic: service \(serviceUUID.uuidString.prefix(8)) MISSING on \(peripheral.name ?? "unnamed") — discovered: \(Self.gattInventory(peripheral))") throw PeripheralManagerError.unknownCharacteristic } for characteristicUUID in characteristicUUIDs { guard let characteristic = service.characteristics?.itemWithUUID(characteristicUUID) else { + G7RadioCensus.sink?("unknownCharacteristic: char \(characteristicUUID.uuidString.prefix(8)) MISSING in service \(serviceUUID.uuidString.prefix(8)) on \(peripheral.name ?? "unnamed") — discovered: \(Self.gattInventory(peripheral))") throw PeripheralManagerError.unknownCharacteristic } @@ -196,6 +202,17 @@ extension G7PeripheralManager { } } } + + /// FORK (#101): one-line GATT inventory — "svc(8chars):[char8,char8] | svc:[...]". + /// nil services = discovery never completed at all. + static func gattInventory(_ peripheral: CBPeripheral) -> String { + guard let services = peripheral.services else { return "NO SERVICES (discovery incomplete)" } + if services.isEmpty { return "0 services" } + return services.map { svc in + let chars = svc.characteristics?.map { String($0.uuid.uuidString.prefix(8)) }.joined(separator: ",") ?? "none-discovered" + return "\(svc.uuid.uuidString.prefix(8)):[\(chars)]" + }.joined(separator: " | ") + } } extension CBManagerState { From 9af6d8bae82c5b83923137fbb3e99e641890e9e1 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Tue, 11 Aug 2026 00:09:21 -0400 Subject: [PATCH 06/58] #101 phase 2: acquisition signals + churn fixes + census completion - G7RadioCensus publishes connectPendingSince / lastRideSignalAt (lock-protected) so the app can gate pod radio work on live G7 acquisition state - census lines at didFailToConnect + didDisconnect (the invisible failing half of the 23:31:52-59 churn cycle) - duplicate-connect guard in handleDiscoveredPeripheral (re-registered connection events re-fired CONNECT ~10/s during a failed ride) - scanAfterDelay single-flight (N failures scheduled N rescans) (cherry picked from commit 3a6e3f314d29162b185c19e3dd104cc7bfc2754d) --- .../G7CGMManager/G7BluetoothManager.swift | 77 ++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index 9374c4a..a7711c1 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -10,8 +10,46 @@ import CoreBluetooth /// FORK ADDITION (Sport Mode #101): public sink for the radio census, since the BLE types /// themselves are module-internal. The watch app assigns it; nil (default) = os_log only. +/// +/// #101 phase 2 additionally publishes two lock-protected timestamps so the app can gate +/// pod radio work on live G7 acquisition state (2026-08-10 23:31:48: the pod scan fired +/// 100ms before the D2W ride appeared and the G7 connect never completed — the app needs +/// to SEE an in-flight connect / fresh ride activity, not infer it from the clock): +/// - `connectPendingSince`: a `centralManager.connect` we issued that has neither +/// didConnect nor didFailToConnect'd yet. The fragile establishment phase. +/// - `lastRideSignalAt`: most recent acquisition signal of any kind (connection event, +/// sensor advertisement, connect issued/landed). "Fresh signal" means a ride is in +/// progress or imminent; silence means the radio is ours to use. public enum G7RadioCensus { public static var sink: ((String) -> Void)? + + private static let stateLock = NSLock() + private static var _connectPendingSince: Date? + private static var _lastRideSignalAt: Date? + + public static var connectPendingSince: Date? { + stateLock.lock(); defer { stateLock.unlock() } + return _connectPendingSince + } + public static var lastRideSignalAt: Date? { + stateLock.lock(); defer { stateLock.unlock() } + return _lastRideSignalAt + } + + static func noteConnectPending() { + stateLock.lock(); defer { stateLock.unlock() } + if _connectPendingSince == nil { _connectPendingSince = Date() } + _lastRideSignalAt = Date() + } + static func noteConnectResolved() { + stateLock.lock(); defer { stateLock.unlock() } + _connectPendingSince = nil + _lastRideSignalAt = Date() + } + static func noteRideSignal() { + stateLock.lock(); defer { stateLock.unlock() } + _lastRideSignalAt = Date() + } } import Foundation import os.log @@ -208,6 +246,7 @@ class G7BluetoothManager: NSObject { // Trigger (b): the OS saw a connection event on a sensor-service peripheral — // in practice, D2W connecting for its reading. Log ALWAYS (even when we have an // active peripheral and ignore it): the census needs D2W's rhythm either way. + if event == .peerConnected { G7RadioCensus.noteRideSignal() } Self.census("connection-event \(event.rawValue == 1 ? "CONNECT" : "disconnect") \(peripheral.name ?? "unnamed") — \(self.activePeripheralIdentifier == nil ? "handling (trigger b)" : "ignored, have active")") if self.activePeripheralIdentifier == nil { self.log.default("Discovered peripheral from connectionEventDidOccur %{public}@", peripheral.identifier.uuidString) @@ -273,10 +312,25 @@ class G7BluetoothManager: NSObject { The sleep gives the transmitter time to shut down, but keeps the app running. */ + /// #101 churn fix: single-flight. Every didFail/didDisconnect used to schedule its own + /// 2s-delayed rescan; a failed ride produced a burst of them and each rescan re-fired + /// connection events that produced more failures (2026-08-10 23:31:52-59, ~10 scan + /// restarts/second). N failures now schedule exactly one rescan. + private let scanRestartPending = NSLock() + private var _scanRestartPending = false + fileprivate func scanAfterDelay() { + scanRestartPending.lock() + let alreadyPending = _scanRestartPending + _scanRestartPending = true + scanRestartPending.unlock() + guard !alreadyPending else { return } + DispatchQueue.global(qos: .utility).async { Thread.sleep(forTimeInterval: 2) - + self.scanRestartPending.lock() + self._scanRestartPending = false + self.scanRestartPending.unlock() self.scanForPeripheral() } } @@ -306,6 +360,16 @@ class G7BluetoothManager: NSObject { private func handleDiscoveredPeripheral(_ peripheral: CBPeripheral) { dispatchPrecondition(condition: .onQueue(managerQueue)) + // #101 churn fix (2026-08-10 23:31:52-59): during a failed ride, every scan restart + // re-registers connection events and the OS re-fires CONNECT for the already-linked + // D2W peripheral — each firing landed here and issued ANOTHER connect() while the + // first was still pending, minting a fresh G7PeripheralManager per event (~10/s). + // A pending connect is already doing everything a duplicate would; skip it. + if peripheral.state == .connecting, managedPeripherals[peripheral.identifier] != nil { + G7RadioCensus.noteRideSignal() + return + } + if let delegate = delegate { switch delegate.bluetoothManager(self, shouldConnectPeripheral: peripheral) { case .makeActive: @@ -322,10 +386,12 @@ class G7BluetoothManager: NSObject { activePeripheralManager?.delegate = self } self.managedPeripherals[peripheral.identifier] = activePeripheralManager + G7RadioCensus.noteConnectPending() self.centralManager.connect(peripheral) case .connect: log.default("Connecting to peripheral: %{public}@", peripheral.identifier.uuidString) + G7RadioCensus.noteConnectPending() self.centralManager.connect(peripheral) let peripheralManager = G7PeripheralManager( peripheral: peripheral, @@ -391,6 +457,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { // Trigger (c): an advertisement reached our scan. Rate-limited per peripheral; the // interesting signal is PRESENCE vs ABSENCE per window — a held-pod-link arm with no // didDiscover lines while D2W reads fine is scan starvation, observed directly. + G7RadioCensus.noteRideSignal() if lastDiscoveryLog[peripheral.identifier].map({ Date().timeIntervalSince($0) > 30 }) ?? true { lastDiscoveryLog[peripheral.identifier] = Date() Self.census("ad DISCOVERED (trigger c) \(peripheral.name ?? "unnamed") rssi \(RSSI)") @@ -403,6 +470,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) { dispatchPrecondition(condition: .onQueue(managerQueue)) + G7RadioCensus.noteConnectResolved() Self.census("didConnect \(peripheral.name ?? "unnamed")") log.default("%{public}@: %{public}@", #function, peripheral) @@ -420,6 +488,11 @@ extension G7BluetoothManager: CBCentralManagerDelegate { func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) { dispatchPrecondition(condition: .onQueue(managerQueue)) + // #101: the failing half of the churn cycle was invisible — the census had + // didConnect but neither terminal callback, so a ride that died looked identical + // to one that never started. + G7RadioCensus.noteConnectResolved() + Self.census("didDisconnect \(peripheral.name ?? "unnamed")\(error.map { " error=\($0.localizedDescription)" } ?? "")") log.default("%{public}@: %{public}@", #function, peripheral) // Ignore errors indicating the peripheral disconnected remotely, as that's expected behavior if let error = error as NSError?, CBError(_nsError: error).code != .peripheralDisconnected { @@ -448,6 +521,8 @@ extension G7BluetoothManager: CBCentralManagerDelegate { func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) { dispatchPrecondition(condition: .onQueue(managerQueue)) + G7RadioCensus.noteConnectResolved() + Self.census("didFailToConnect \(peripheral.name ?? "unnamed")\(error.map { " error=\($0.localizedDescription)" } ?? "")") log.error("%{public}@: %{public}@", #function, String(describing: error)) if let error = error, let peripheralManager = activePeripheralManager { From 8c45b1ad4fde2bda53f8dbc45bbdce9c04cc8791 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Thu, 20 Aug 2026 01:33:28 -0400 Subject: [PATCH 07/58] Fix the 20-40 minute acquisition outage: arm the scan whenever not connected The known-sensor branch retrieved the peripheral and issued a bare pending connect() with NO scan armed (the arm condition was activePeripheral == nil, and the branch makes it non-nil). A pending connect rides bluetoothd's own duty-cycled background scan, which against the sensor's 1-4s advertising burst per 300s window is a lottery: measured 2026-08-19/20, seven consecutive windows missed, 20-40 min outages ending only when the sensor escalated to its ~60s distress cadence (also measured -- the 'exact 300s grid' is the collected regime only). Both collectors (ours and D2W) healed simultaneously because whoever finally connects, the other rides via trigger (b). The condition is now activePeripheral?.state != .connected: a scan is armed for the whole pending phase and catches the FIRST burst. didConnect stops it via readied -> managerQueue_stopScanning, and handleDiscoveredPeripheral's #101 guard makes a discovery-during-pending a no-op, so it cannot churn. Crude proved the same lesson: scan is the primitive. Plus the H14 scan watchdog: one full sensor window (320s) with acquisition armed and NOTHING delivered is deafness, not bad luck -- recycle the scan and any stuck pending connect, and say so in the census. Correct under every theory of the deafness. Plus the Radio Lab gates: G7Lab.trigger.a/b/c read at use, shipped defaults unchanged. --- .../G7CGMManager/G7BluetoothManager.swift | 81 ++++++++++++++++--- 1 file changed, 68 insertions(+), 13 deletions(-) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index a7711c1..6b7d7fd 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -149,6 +149,43 @@ class G7BluetoothManager: NSObject { /// Isolated to `managerQueue` private var managedPeripherals: [UUID:G7PeripheralManager] = [:] + // RADIO LAB (2026-08-20). Runtime gates over the three acquisition doorways, so experiments are a + // 10-second toggle instead of an install cycle. UserDefaults-read AT USE with the shipped default, + // the same pattern OmnipodKit's connectOnDemandEnabled has always used. Absent keys change nothing. + static var labRideEnabled: Bool { UserDefaults.standard.object(forKey: "G7Lab.trigger.a") as? Bool ?? true } + static var labEventsEnabled: Bool { UserDefaults.standard.object(forKey: "G7Lab.trigger.b") as? Bool ?? true } + static var labScanEnabled: Bool { UserDefaults.standard.object(forKey: "G7Lab.trigger.c") as? Bool ?? true } + + // SCAN WATCHDOG (H14 probe + remedy, 2026-08-20). The night of 08-19 the known-sensor branch sat in + // a bare pending connect for 37 minutes while the sensor advertised on grid (Mac observer). Whatever + // the root cause (H14: a scan session dead at the bluetoothd level while isScanning reads true), a + // full recycle of the acquisition is correct under every theory. 320 s = one full sensor window plus + // jitter: a whole window with acquisition armed and NOTHING delivered is deafness, not bad luck. + private var scanWatchdog: DispatchSourceTimer? + private var lastDeliveryAt: Date? + + private func armScanWatchdog() { + scanWatchdog?.cancel() + let t = DispatchSource.makeTimerSource(queue: managerQueue) + t.schedule(deadline: .now() + 320, repeating: 320) + t.setEventHandler { [weak self] in self?.scanWatchdogFired() } + t.resume() + scanWatchdog = t + } + + private func scanWatchdogFired() { + dispatchPrecondition(condition: .onQueue(managerQueue)) + guard activePeripheral?.state != .connected else { return } + let age = lastDeliveryAt.map { Int(-$0.timeIntervalSinceNow) } + guard (age ?? Int.max) > 315 else { return } + Self.census("scan-watchdog: NOTHING delivered in \(age.map(String.init) ?? "∞")s with acquisition armed — recycling scan + connect (H14 probe)") + if let p = activePeripheral, p.state == .connecting { + centralManager.cancelPeripheralConnection(p) + } + managerQueue_stopScanning() + managerQueue_scanForPeripheral() + } + var activePeripheralIdentifier: UUID? { get { return lockedPeripheralIdentifier.value @@ -247,6 +284,7 @@ class G7BluetoothManager: NSObject { // in practice, D2W connecting for its reading. Log ALWAYS (even when we have an // active peripheral and ignore it): the census needs D2W's rhythm either way. if event == .peerConnected { G7RadioCensus.noteRideSignal() } + self.lastDeliveryAt = Date() Self.census("connection-event \(event.rawValue == 1 ? "CONNECT" : "disconnect") \(peripheral.name ?? "unnamed") — \(self.activePeripheralIdentifier == nil ? "handling (trigger b)" : "ignored, have active")") if self.activePeripheralIdentifier == nil { self.log.default("Discovered peripheral from connectionEventDidOccur %{public}@", peripheral.identifier.uuidString) @@ -267,7 +305,7 @@ class G7BluetoothManager: NSObject { return } - if let peripheralID = activePeripheralIdentifier, let peripheral = centralManager.retrievePeripherals(withIdentifiers: [peripheralID]).first { + if Self.labRideEnabled, let peripheralID = activePeripheralIdentifier, let peripheral = centralManager.retrievePeripherals(withIdentifiers: [peripheralID]).first { log.default("Retrieved peripheral %{public}@", peripheral.identifier.uuidString) Self.census("scan-start: retrieved KNOWN peripheral \(peripheral.name ?? "unnamed") state=\(peripheral.state.rawValue)") handleDiscoveredPeripheral(peripheral) @@ -286,22 +324,37 @@ class G7BluetoothManager: NSObject { } } - if activePeripheral == nil { + // THE 20-40 MINUTE OUTAGE FIX (2026-08-20). This used to be `activePeripheral == nil`, so the + // known-sensor branch above — which retrieves the peripheral and issues a bare connect() — + // left NO scan armed. A pending connect depends on bluetoothd's own duty-cycled background + // scan, which against a 1-4 s advertising burst per 300 s window is a lottery: measured + // 2026-08-19/20, seven consecutive windows missed, 20-40 min outages ending only when the + // sensor escalated to ~60 s distress cadence (also measured — the "exact 300 s grid" is the + // COLLECTED regime only). An armed scan catches the FIRST burst instead. Crude proved the same + // lesson ("scan is the primitive"). didConnect stops the scan via readied → + // managerQueue_stopScanning, and handleDiscoveredPeripheral's #101 guard makes a discovery + // during a pending connect a no-op, so this cannot churn. + if activePeripheral?.state != .connected { log.default("Scanning for peripherals and listening for connection events") - centralManager.registerForConnectionEvents(options: [CBConnectionEventMatchingOption.serviceUUIDs: [ - SensorServiceUUID.advertisement.cbUUID, - SensorServiceUUID.cgmService.cbUUID - ]]) - - centralManager.scanForPeripherals(withServices: [ - SensorServiceUUID.advertisement.cbUUID - ], - options: nil - ) - Self.census("scan STARTED (trigger c armed) + connection-events registered (trigger b armed)") + if Self.labEventsEnabled { + centralManager.registerForConnectionEvents(options: [CBConnectionEventMatchingOption.serviceUUIDs: [ + SensorServiceUUID.advertisement.cbUUID, + SensorServiceUUID.cgmService.cbUUID + ]]) + } + + if Self.labScanEnabled { + centralManager.scanForPeripherals(withServices: [ + SensorServiceUUID.advertisement.cbUUID + ], + options: nil + ) + } + Self.census("scan STARTED (lab: a=\(Self.labRideEnabled) b=\(Self.labEventsEnabled) c=\(Self.labScanEnabled)) — trigger c \(Self.labScanEnabled ? "armed" : "DISABLED BY LAB"), events \(Self.labEventsEnabled ? "armed" : "DISABLED BY LAB")") delegate?.bluetoothManagerScanningStatusDidChange(self) } + armScanWatchdog() } /** @@ -460,6 +513,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { G7RadioCensus.noteRideSignal() if lastDiscoveryLog[peripheral.identifier].map({ Date().timeIntervalSince($0) > 30 }) ?? true { lastDiscoveryLog[peripheral.identifier] = Date() + lastDeliveryAt = Date() Self.census("ad DISCOVERED (trigger c) \(peripheral.name ?? "unnamed") rssi \(RSSI)") } @@ -471,6 +525,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) { dispatchPrecondition(condition: .onQueue(managerQueue)) G7RadioCensus.noteConnectResolved() + lastDeliveryAt = Date() Self.census("didConnect \(peripheral.name ?? "unnamed")") log.default("%{public}@: %{public}@", #function, peripheral) From bf100bdd6b0e32e963b0c773541c644b45292fa5 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Thu, 20 Aug 2026 08:15:00 -0400 Subject: [PATCH 08/58] G7 watchdog: seed the delivery baseline so the first check is not 'infinity' --- G7SensorKit/G7CGMManager/G7BluetoothManager.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index 6b7d7fd..baf7a1b 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -166,6 +166,7 @@ class G7BluetoothManager: NSObject { private func armScanWatchdog() { scanWatchdog?.cancel() + if lastDeliveryAt == nil { lastDeliveryAt = Date() } // baseline, so the first check is not "∞" let t = DispatchSource.makeTimerSource(queue: managerQueue) t.schedule(deadline: .now() + 320, repeating: 320) t.setEventHandler { [weak self] in self?.scanWatchdogFired() } From b9ef5f5c7a2bef886b7879a019f9a30873d6cc18 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Fri, 21 Aug 2026 22:49:51 -0400 Subject: [PATCH 09/58] G7RadioCensus: expose sensor sightings as a signal, not as prose MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ported from the pure/SportMode line. The census already logged every peripheral name it saw, but only inside sentences, so "which sensors are actually in range" could only be recovered by parsing log strings. The host needs it as data to break the stranded-identity trap: when the persisted sensor is gone and a replacement is advertising beside it, nothing in the manager can notice — it learns a new sensor's ID only by talking to it, and it is busy failing authentication against a corpse. Fired from the two sites that hold a peripheral name: ad discovery and connection events. Co-Authored-By: Claude Opus 5 --- G7SensorKit/G7CGMManager/G7BluetoothManager.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index baf7a1b..6467e52 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -23,6 +23,16 @@ import CoreBluetooth public enum G7RadioCensus { public static var sink: ((String) -> Void)? + /// Every sensor NAME this radio sees, as a signal rather than as prose. + /// + /// The census already logged these names, but only inside sentences — recovering "which + /// sensors are actually in range" meant parsing log strings. The host needs it as data to + /// break the stranded-identity trap: when the persisted sensor is gone and a replacement is + /// advertising beside it, nothing in the manager can notice, because it is busy failing + /// authentication against a corpse and therefore never learns the new sensor's ID. + /// (Ported from the pure/SportMode line, 2026-08-21.) + public static var sensorSighted: ((String) -> Void)? + private static let stateLock = NSLock() private static var _connectPendingSince: Date? private static var _lastRideSignalAt: Date? @@ -287,6 +297,7 @@ class G7BluetoothManager: NSObject { if event == .peerConnected { G7RadioCensus.noteRideSignal() } self.lastDeliveryAt = Date() Self.census("connection-event \(event.rawValue == 1 ? "CONNECT" : "disconnect") \(peripheral.name ?? "unnamed") — \(self.activePeripheralIdentifier == nil ? "handling (trigger b)" : "ignored, have active")") + if let name = peripheral.name { G7RadioCensus.sensorSighted?(name) } if self.activePeripheralIdentifier == nil { self.log.default("Discovered peripheral from connectionEventDidOccur %{public}@", peripheral.identifier.uuidString) self.handleDiscoveredPeripheral(peripheral) @@ -516,6 +527,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { lastDiscoveryLog[peripheral.identifier] = Date() lastDeliveryAt = Date() Self.census("ad DISCOVERED (trigger c) \(peripheral.name ?? "unnamed") rssi \(RSSI)") + if let name = peripheral.name { G7RadioCensus.sensorSighted?(name) } } managerQueue.async { From 29cafdae09b7e3afe5a7eea1615a19810df3c305 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Sat, 22 Aug 2026 21:36:13 -0400 Subject: [PATCH 10/58] Census: [domain#code] on connect failures, not just prose From the pure line, where a grep for Code=11 returned zero while 34 connection-limit failures sat in the log as localizedDescription text. Co-Authored-By: Claude Opus 5 --- G7SensorKit/G7CGMManager/G7BluetoothManager.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index 6467e52..a1bf895 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -560,7 +560,9 @@ extension G7BluetoothManager: CBCentralManagerDelegate { // didConnect but neither terminal callback, so a ride that died looked identical // to one that never started. G7RadioCensus.noteConnectResolved() - Self.census("didDisconnect \(peripheral.name ?? "unnamed")\(error.map { " error=\($0.localizedDescription)" } ?? "")") + // [domain#code] alongside Apple's prose (from the pure line, where a grep for Code=11 + // returned zero while 34 connection-limit failures sat in the log as text only). + Self.census("didDisconnect \(peripheral.name ?? "unnamed")\(error.map { " [\(($0 as NSError).domain)#\(($0 as NSError).code)] \($0.localizedDescription)" } ?? "")") log.default("%{public}@: %{public}@", #function, peripheral) // Ignore errors indicating the peripheral disconnected remotely, as that's expected behavior if let error = error as NSError?, CBError(_nsError: error).code != .peripheralDisconnected { @@ -590,7 +592,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) { dispatchPrecondition(condition: .onQueue(managerQueue)) G7RadioCensus.noteConnectResolved() - Self.census("didFailToConnect \(peripheral.name ?? "unnamed")\(error.map { " error=\($0.localizedDescription)" } ?? "")") + Self.census("didFailToConnect \(peripheral.name ?? "unnamed")\(error.map { " [\(($0 as NSError).domain)#\(($0 as NSError).code)] \($0.localizedDescription)" } ?? "")") log.error("%{public}@: %{public}@", #function, String(describing: error)) if let error = error, let peripheralManager = activePeripheralManager { From 372e5fa8d15ee5ef26452b9b40d10dea7a3f7ed8 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Tue, 25 Aug 2026 15:10:02 -0700 Subject: [PATCH 11/58] =?UTF-8?q?G7=20acquisition=20doorways=20settled=20?= =?UTF-8?q?=E2=80=94=20lab=20toggles=20hardcoded=20true?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All three (ride + events + scan) proven over weeks of field use; the UserDefaults reads are gone so a stale false from an old experiment can never silently disable a doorway. Accessors stay so call sites read as gates. Co-Authored-By: Claude Opus 5 --- G7SensorKit/G7CGMManager/G7BluetoothManager.swift | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index a1bf895..7e39062 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -159,12 +159,13 @@ class G7BluetoothManager: NSObject { /// Isolated to `managerQueue` private var managedPeripherals: [UUID:G7PeripheralManager] = [:] - // RADIO LAB (2026-08-20). Runtime gates over the three acquisition doorways, so experiments are a - // 10-second toggle instead of an install cycle. UserDefaults-read AT USE with the shipped default, - // the same pattern OmnipodKit's connectOnDemandEnabled has always used. Absent keys change nothing. - static var labRideEnabled: Bool { UserDefaults.standard.object(forKey: "G7Lab.trigger.a") as? Bool ?? true } - static var labEventsEnabled: Bool { UserDefaults.standard.object(forKey: "G7Lab.trigger.b") as? Bool ?? true } - static var labScanEnabled: Bool { UserDefaults.standard.object(forKey: "G7Lab.trigger.c") as? Bool ?? true } + // SETTLED 2026-08-25 — no longer lab toggles. All three acquisition doorways proven over + // weeks of field use (ride + events + scan together are the piggyback mechanism); the + // UserDefaults reads are gone deliberately, so a stale `false` from an old experiment can + // never silently disable a doorway. The accessors stay so the call sites read as gates. + static var labRideEnabled: Bool { true } + static var labEventsEnabled: Bool { true } + static var labScanEnabled: Bool { true } // SCAN WATCHDOG (H14 probe + remedy, 2026-08-20). The night of 08-19 the known-sensor branch sat in // a bare pending connect for 37 minutes while the sensor advertised on grid (Mac observer). Whatever From fbcb3a47471d4ab522ebde93516702f84b4ffd5f Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Mon, 7 Sep 2026 21:45:17 -0400 Subject: [PATCH 12/58] =?UTF-8?q?Ride-only=20on=20watchOS:=20no=20request?= =?UTF-8?q?=20of=20ours,=20no=20scan=20=E2=80=94=20join=20Dexcom's=20link?= =?UTF-8?q?=20instead?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ported by content from her line (mute record §5/§6, docs/G7_MUTE_INVESTIGATION_2026-09.md on reclaim-lean-bench-pm), where the mechanism was read out of six watch sysdiagnoses and the fix passed its preregistered acceptance. THE MECHANISM. bluetoothd keeps ONE accept-list entry per sensor, shared by every app that wants it, and a per-device tally of links that formed and died before encryption (reason 762 = HCI 0x3E) over a 5.8-h window. Dexcom's watch app re-subscribes 40 ms after every close; in the ~10 min after the phone stops collecting the sensor advertises 27-32 s after each read instead of 7, and one of those attempts books a failure — ~2 per phone departure, with our app quit too. At count 5 the daemon's judgment flips, and from then a failure that lands AFTER its 6-s fast scan makes the retry park minRSSI=-70 on the shared entry. Wrist RSSI sits below that, so every app on the bond is mute for 20-45 min until a strong burst, a touch, or a Bluetooth toggle. The counter is Dexcom's; the LATE failure that writes the floor had, on record, our scan or our pod link on the chip in that tail (8/8; 0/2 with only our connection-event registration; 0/6 with the watch asleep). So on watchOS this line stops putting anything of its own on the bond: - adopted: no connect request of ours; register for connection events and JOIN Dexcom's link when the OS reports it (connect() on an already-linked peripheral completes at once); - never scan to acquire, adopted or not — adoption from the air via that same registration is proven, and a scan of ours in the tail is what earned the floor; - no forget-and-scan when the sensor closes a join before auth completes: routine under ride-only, not a session end (it fired our scan straight into the tail twice on her line). The join must be told the link is up by the CALLER (viaLinkUp), never read off CBPeripheral.state: each app holds its own handle and ours reads .disconnected until WE connect — her build 170 looped 480 times on exactly that. This supersedes the 2026-08-25 'all three doorways' settlement, whose scan+pending-connect pair is the configuration the record measured feeding the tally fastest. The 20-40 minute outages that settlement cured carry this wedge's signature, and the scan 'worked' partly by accident: a direct connect from an active-scan hit bypasses the parked floor. iOS keeps stock acquisition (the mute is a watch-daemon phenomenon; the phone was never in any arm). Pure policy, pinned by WatchAppTests/G7RidePolicyTests; G7Lab.rideOnly overrides. Census hooks (sensorClosed/scanStarted) feed the watch app's per-window [tail] line. Gates: iOS 120/120, watch 115/115. FIELD-UNPROVEN on this line — her acceptance arm (T4) is the bench test, preregistered in the record's §6b. Co-Authored-By: Claude Opus 5 --- .../G7CGMManager/G7BluetoothManager.swift | 160 +++++++++++++++--- G7SensorKit/G7CGMManager/G7CGMManager.swift | 10 +- 2 files changed, 143 insertions(+), 27 deletions(-) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index 7e39062..8cedeed 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -33,6 +33,15 @@ public enum G7RadioCensus { /// (Ported from the pure/SportMode line, 2026-08-21.) public static var sensorSighted: ((String) -> Void)? + /// Tail-exposure instrument (mute record §5, 2026-09-06): the adopted sensor's link just + /// closed — the start of its advertising tail — and our own acquisition scan just started. + /// The watch app logs what of ours was on the radio in the 40 s after each close, one line + /// per window, because bluetoothd never tells an app about the failed establishment that + /// writes the −70 dBm floor; the exposure is the half we can see. Called on CoreBluetooth's + /// queue. + public static var sensorClosed: ((String) -> Void)? + public static var scanStarted: (() -> Void)? + private static let stateLock = NSLock() private static var _connectPendingSince: Date? private static var _lastRideSignalAt: Date? @@ -159,13 +168,22 @@ class G7BluetoothManager: NSObject { /// Isolated to `managerQueue` private var managedPeripherals: [UUID:G7PeripheralManager] = [:] - // SETTLED 2026-08-25 — no longer lab toggles. All three acquisition doorways proven over - // weeks of field use (ride + events + scan together are the piggyback mechanism); the - // UserDefaults reads are gone deliberately, so a stale `false` from an old experiment can - // never silently disable a doorway. The accessors stay so the call sites read as gates. - static var labRideEnabled: Bool { true } - static var labEventsEnabled: Bool { true } - static var labScanEnabled: Bool { true } + // RE-SETTLED 2026-09-08 (mute record §3d–§5, six watch sysdiagnoses on her line). The + // 2026-08-25 settlement kept all three doorways (retrieve+connect, connection events, scan) + // open at once. That is the configuration her record measured feeding bluetoothd's + // per-device signal-quality tally fastest (§3e: stock re-arm + scan, 0→5 in 12 min sitting + // still): our pending connect plus our scan on the chip during the sensor's post-read tail + // is what turns a failed establishment into the −70 dBm floor that mutes every app on the + // bond for 20–45 min. The 20–40 minute outages the August scan fix cured carry that wedge's + // exact signature, and the scan "worked" because a direct connect from an active-scan hit + // bypasses the parked floor (§3k) — an accidental heal for a wedge it helped cause. + // + // On watchOS the doorways are now RIDE-ONLY (G7RidePolicy): no connect request of ours and + // no scan while a sensor is adopted; register for connection events and JOIN Dexcom's link + // when the OS reports it up. Un-adopted acquisition also never scans — adoption from the + // air via the connection-event registration is proven (§3k 16:16:40). The phone keeps stock + // acquisition: the mute is a watch-daemon phenomenon and the phone was never in the arms. + static var rideOnly: Bool { G7RidePolicy.rideOnlyEnabled } // SCAN WATCHDOG (H14 probe + remedy, 2026-08-20). The night of 08-19 the known-sensor branch sat in // a bare pending connect for 37 minutes while the sensor advertised on grid (Mac observer). Whatever @@ -301,7 +319,16 @@ class G7BluetoothManager: NSObject { if let name = peripheral.name { G7RadioCensus.sensorSighted?(name) } if self.activePeripheralIdentifier == nil { self.log.default("Discovered peripheral from connectionEventDidOccur %{public}@", peripheral.identifier.uuidString) - self.handleDiscoveredPeripheral(peripheral) + self.handleDiscoveredPeripheral(peripheral, viaLinkUp: event == .peerConnected) + } else if G7RidePolicy.shouldJoin(rideOnly: Self.rideOnly, + connected: event == .peerConnected, + isAdoptedPeripheral: peripheral.identifier == self.activePeripheralIdentifier, + alreadyConnected: self.activePeripheral?.state == .connected) { + // RIDE-ONLY: we keep NO request of our own on the bond; Dexcom's link just came + // up, so join it now — connect() on an already-linked peripheral completes at + // once. Trigger (b), promoted from "ignored, have active" to the only path. + Self.census("ride-only: Dexcom's link is up — joining \(peripheral.name ?? "unnamed")") + self.handleDiscoveredPeripheral(peripheral, viaLinkUp: true) } } } @@ -318,7 +345,18 @@ class G7BluetoothManager: NSObject { return } - if Self.labRideEnabled, let peripheralID = activePeripheralIdentifier, let peripheral = centralManager.retrievePeripherals(withIdentifiers: [peripheralID]).first { + let sensorServices = [SensorServiceUUID.advertisement.cbUUID, SensorServiceUUID.cgmService.cbUUID] + + if let peripheralID = activePeripheralIdentifier, let peripheral = centralManager.retrievePeripherals(withIdentifiers: [peripheralID]).first { + if !G7RidePolicy.shouldIssueConnect(rideOnly: Self.rideOnly, adopted: true) { + // RIDE-ONLY: no request of ours while a sensor is adopted — the pending connect + // is what the daemon's auto-connection turns into failed establishments in the + // sensor's tail. Register for connection events and join Dexcom's link when it + // comes up (connectionEventDidOccur). + centralManager.registerForConnectionEvents(options: [CBConnectionEventMatchingOption.serviceUUIDs: sensorServices]) + Self.census("ride-only: no request of ours for \(peripheral.name ?? "unnamed") — connection-events registered, waiting for Dexcom's link") + return + } log.default("Retrieved peripheral %{public}@", peripheral.identifier.uuidString) Self.census("scan-start: retrieved KNOWN peripheral \(peripheral.name ?? "unnamed") state=\(peripheral.state.rawValue)") handleDiscoveredPeripheral(peripheral) @@ -333,7 +371,7 @@ class G7BluetoothManager: NSObject { Self.census("scan-start: system-connected list = [\(systemConnected.map { $0.name ?? "unnamed" }.joined(separator: ","))] (\(systemConnected.count))") for peripheral in systemConnected { log.default("Found system-connected peripheral: %{public}@", peripheral.identifier.uuidString) - handleDiscoveredPeripheral(peripheral) + handleDiscoveredPeripheral(peripheral, viaLinkUp: true) } } @@ -348,23 +386,20 @@ class G7BluetoothManager: NSObject { // managerQueue_stopScanning, and handleDiscoveredPeripheral's #101 guard makes a discovery // during a pending connect a no-op, so this cannot churn. if activePeripheral?.state != .connected { - log.default("Scanning for peripherals and listening for connection events") + centralManager.registerForConnectionEvents(options: [CBConnectionEventMatchingOption.serviceUUIDs: sensorServices]) - if Self.labEventsEnabled { - centralManager.registerForConnectionEvents(options: [CBConnectionEventMatchingOption.serviceUUIDs: [ - SensorServiceUUID.advertisement.cbUUID, - SensorServiceUUID.cgmService.cbUUID - ]]) - } - - if Self.labScanEnabled { - centralManager.scanForPeripherals(withServices: [ - SensorServiceUUID.advertisement.cbUUID - ], - options: nil - ) + if G7RidePolicy.shouldScanToAcquire(rideOnly: Self.rideOnly) { + log.default("Scanning for peripherals and listening for connection events") + centralManager.scanForPeripherals(withServices: [SensorServiceUUID.advertisement.cbUUID], options: nil) + G7RadioCensus.scanStarted?() + Self.census("scan STARTED (trigger c armed) + connection-events registered (trigger b armed)") + } else { + // RIDE-ONLY: never scan, adopted or not. A scan of ours in the sensor's tail is + // what earned the −70 floor in every wedge that was not the pod's; the + // connection-event registration delivers Dexcom's next link and an un-adopted + // sensor is adopted from the air there. + Self.census("ride-only: NO scan (peripheral=\(activePeripheral == nil ? "none" : "known")) — connection-events registered, adopting from Dexcom's next link") } - Self.census("scan STARTED (lab: a=\(Self.labRideEnabled) b=\(Self.labEventsEnabled) c=\(Self.labScanEnabled)) — trigger c \(Self.labScanEnabled ? "armed" : "DISABLED BY LAB"), events \(Self.labEventsEnabled ? "armed" : "DISABLED BY LAB")") delegate?.bluetoothManagerScanningStatusDidChange(self) } armScanWatchdog() @@ -423,7 +458,12 @@ class G7BluetoothManager: NSObject { return isConnected } - private func handleDiscoveredPeripheral(_ peripheral: CBPeripheral) { + /// `viaLinkUp`: the caller knows another app's link to this peripheral is UP (a CONNECT + /// connection event, or the system-connected list). The CBPeripheral's own `state` cannot + /// say so — each app holds its own handle, and ours reads `.disconnected` until WE connect + /// (her build 170 looped 480 times on exactly that: join → "not connected" → re-register → + /// the OS re-fires CONNECT → join … never issuing the connect() that IS the join). + private func handleDiscoveredPeripheral(_ peripheral: CBPeripheral, viaLinkUp: Bool = false) { dispatchPrecondition(condition: .onQueue(managerQueue)) // #101 churn fix (2026-08-10 23:31:52-59): during a failed ride, every scan restart @@ -452,6 +492,22 @@ class G7BluetoothManager: NSObject { activePeripheralManager?.delegate = self } self.managedPeripherals[peripheral.identifier] = activePeripheralManager + if !G7RidePolicy.shouldRequestOnDiscovery(rideOnly: Self.rideOnly, known: true, + peripheralConnected: viaLinkUp || peripheral.state == .connected) { + // RIDE-ONLY, known-but-unlinked (a connection event that was a disconnect, + // or a sighting after a forget): adopt from the air, put NO request of ours + // on the bond, and wait for Dexcom's link to come up as a connection event. + if centralManager.isScanning { + centralManager.stopScan() + delegate.bluetoothManagerScanningStatusDidChange(self) + } + centralManager.registerForConnectionEvents(options: [CBConnectionEventMatchingOption.serviceUUIDs: [ + SensorServiceUUID.advertisement.cbUUID, + SensorServiceUUID.cgmService.cbUUID + ]]) + Self.census("ride-only: adopted \(peripheral.name ?? "unnamed") from the air — no request of ours, waiting for Dexcom's link") + return + } G7RadioCensus.noteConnectPending() self.centralManager.connect(peripheral) @@ -561,6 +617,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { // didConnect but neither terminal callback, so a ride that died looked identical // to one that never started. G7RadioCensus.noteConnectResolved() + G7RadioCensus.sensorClosed?(peripheral.name ?? "unnamed") // [domain#code] alongside Apple's prose (from the pure line, where a grep for Code=11 // returned zero while 34 connection-limit failures sat in the log as text only). Self.census("didDisconnect \(peripheral.name ?? "unnamed")\(error.map { " [\(($0 as NSError).domain)#\(($0 as NSError).code)] \($0.localizedDescription)" } ?? "")") @@ -640,3 +697,54 @@ extension G7BluetoothManager: G7PeripheralManagerDelegate { } } } + +/// Ride-only (mute record §5, ported by content 2026-09-08): while a sensor is adopted, keep NO +/// pending connect of our own on the bond and no scan; register for connection events and join +/// Dexcom's link when it comes up. Pure so the bench can pin it. +/// +/// Why: bluetoothd keeps one accept-list entry per device shared by every app, and a per-device +/// signal-quality tally (5.8-h window, threshold 5). A link that forms and dies before encryption +/// (HCI 0x3E) counts; at count 5 a failure that comes AFTER the daemon's 6-s fast scan makes its +/// retry park a −70 dBm floor on the entry — below wrist-to-arm RSSI — and every app on the bond +/// is mute until a strong burst or a Bluetooth toggle. The counter is fed by Dexcom's own +/// re-subscribe into the sensor's long tails (not ours to prevent); the LATE failure that writes +/// the floor happened, on record, only with our scan or our pod link on the chip in that tail. +public enum G7RidePolicy { + public static let key = "G7Lab.rideOnly" + /// WATCH ONLY. G7SensorKit also compiles into the phone app, whose manager keeps stock + /// behaviour — the mute is a watch-daemon phenomenon. The key is a diagnostic override. + public static var rideOnlyEnabled: Bool { + if let v = UserDefaults.standard.object(forKey: key) as? Bool { return v } + #if os(watchOS) + return true + #else + return false + #endif + } + /// Should we issue our own connect() for the adopted peripheral? + public static func shouldIssueConnect(rideOnly: Bool, adopted: Bool) -> Bool { + !(rideOnly && adopted) + } + /// On a connection event: join the link that just came up? + public static func shouldJoin(rideOnly: Bool, connected: Bool, isAdoptedPeripheral: Bool, alreadyConnected: Bool) -> Bool { + rideOnly && connected && isAdoptedPeripheral && !alreadyConnected + } + /// On DISCOVERY of a peripheral the delegate recognises (`.makeActive`): issue our own + /// connect()? Only when the link is already up — then connect() completes at once and IS + /// the join. Otherwise adopt from the air and wait for Dexcom's link. + public static func shouldRequestOnDiscovery(rideOnly: Bool, known: Bool, peripheralConnected: Bool) -> Bool { + !(rideOnly && known && !peripheralConnected) + } + /// Arm our own acquisition SCAN? Never under ride-only — a scan of ours in the sensor's + /// tail is the late attempt that writes the floor; adoption from the air needs no scan. + public static func shouldScanToAcquire(rideOnly: Bool) -> Bool { + !rideOnly + } + /// Stock flags a REMOTE disconnect while auth is still pending as "suspected end of + /// session" and answers with forget-and-scan. Under ride-only a join the sensor closes + /// before auth completes is routine and would put our scan into the tail. Keep the + /// identity; a real replacement sensor arrives on Dexcom's next link. + public static func shouldForgetOnBareDisconnect(rideOnly: Bool, adopted: Bool) -> Bool { + !(rideOnly && adopted) + } +} diff --git a/G7SensorKit/G7CGMManager/G7CGMManager.swift b/G7SensorKit/G7CGMManager/G7CGMManager.swift index d940208..99df86b 100644 --- a/G7SensorKit/G7CGMManager/G7CGMManager.swift +++ b/G7SensorKit/G7CGMManager/G7CGMManager.swift @@ -344,7 +344,15 @@ extension G7CGMManager: G7SensorDelegate { public func sensorDisconnected(_ sensor: G7Sensor, suspectedEndOfSession: Bool) { logDeviceCommunication("Sensor disconnected: suspectedEndOfSession=\(suspectedEndOfSession)", type: .connection) if suspectedEndOfSession { - scanForNewSensor() + // Ride-only (mute record §3k): a join the sensor closes before auth completes is + // routine, not a session end — stock's forget-and-scan here put our scan into the + // sensor's tail twice on her line and the daemon wrote the −70 floor both times. + // Keep the identity; Dexcom's next link brings the reading. + if G7RidePolicy.shouldForgetOnBareDisconnect(rideOnly: G7RidePolicy.rideOnlyEnabled, adopted: state.sensorID != nil) { + scanForNewSensor() + } else { + logDeviceCommunication("ride-only: disconnect before auth — KEEPING \(state.sensorID ?? "sensor"), waiting for Dexcom's next link (no forget, no scan)", type: .connection) + } } } From b332c0e8c08d1c4a4402beea27e701ce9289ac80 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Tue, 8 Sep 2026 18:12:00 -0400 Subject: [PATCH 13/58] =?UTF-8?q?G7:=20user-initiated=20Reconnect=20?= =?UTF-8?q?=E2=80=94=20one=20acquisition=20pass=20through=20ride-only?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds recycleConnectForLab(): drop the current link and re-acquire the SAME sensor, keeping its adopted identity (disconnect() cancels the connection but never clears activePeripheralIdentifier). This is the cheap first move for a stuck client — strictly less disruptive than scanForNewSensor(), which on this line clears sensorID, forgets the peripheral and rebuilds cold. The pass deliberately bypasses ride-only, once. Ride-only exists to keep OUR radio out of the sensor's extended-phase tail AUTOMATICALLY, which is where a scan of ours earned the -70 floor in every wedge that was not the pod's. A deliberate tap is not the automatic case: someone is watching a stuck CGM and the alternative is waiting up to a full 5-minute window for Dexcom's next link. Jeremy, 2026-09-08: "we can violate ride only when it's a button that I push." The override is a one-shot consumed by the first pass that acts on it — read after the early-outs so a pass that returns without acting cannot burn the tap — so the very next re-arm is ride-only again. The policy itself is unchanged. Does NOT clear a parked minRSSI=-70: that lives in bluetoothd's accept list and nothing in our process reaches it. Co-Authored-By: Claude Opus 5 --- .../G7CGMManager/G7BluetoothManager.swift | 45 ++++++++++++++++++- G7SensorKit/G7CGMManager/G7CGMManager.swift | 4 ++ G7SensorKit/G7CGMManager/G7Sensor.swift | 4 ++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index 8cedeed..fff5dc7 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -292,6 +292,43 @@ class G7BluetoothManager: NSObject { } } + /// One-shot override: the NEXT re-arm scans even under ride-only, and issues a connect + /// for an already-adopted sensor. Set only by the user's own "Reconnect CGM" button + /// (Jeremy, 2026-09-08: "we can violate ride only when it's a button that I push"). + /// + /// Ride-only exists to keep OUR radio out of the sensor's extended-phase tail + /// AUTOMATICALLY — that is where a scan of ours earned the -70 floor. A deliberate tap is + /// not the automatic case: someone is standing there watching a stuck CGM, and the + /// alternative is waiting up to a full 5-minute window for Dexcom's next link. One scan, + /// once, on demand. It does NOT change the policy: the flag is consumed by the first pass + /// that uses it, so the very next re-arm is ride-only again. + private let forceAcquireLock = NSLock() + private var _forceAcquireOnce = false + private func consumeForceAcquireOnce() -> Bool { + forceAcquireLock.lock(); defer { forceAcquireLock.unlock() } + let was = _forceAcquireOnce + _forceAcquireOnce = false + return was + } + + /// Drop the current link and re-acquire the SAME sensor. Keeps the adopted identity + /// (`disconnect()` cancels the connection but never clears `activePeripheralIdentifier`), + /// so this is the cheap first move for a stuck client — strictly less disruptive than + /// "Re-acquire Sensor", which forgets the sensor and rebuilds cold. + func recycleConnectForLab() { + dispatchPrecondition(condition: .notOnQueue(managerQueue)) + let before = managerQueue.sync { + "peripheral=\(activePeripheral.map { "\($0.state.rawValue)" } ?? "none") adopted=\(activePeripheralIdentifier != nil) scanning=\(centralManager.isScanning)" + } + forceAcquireLock.lock(); _forceAcquireOnce = true; forceAcquireLock.unlock() + Self.census("lab: RECONNECT requested by the user — forcing one acquisition pass (ride-only bypassed for this pass only) — before: \(before)") + disconnect() + // NOT an immediate re-issue: cancelPeripheralConnection is non-blocking and the #101 + // guard in handleDiscoveredPeripheral drops a re-issue while the peripheral still reads + // `.connecting`. The 2 s settle lets the cancel resolve first. + scanAfterDelay() + } + func disconnect() { dispatchPrecondition(condition: .notOnQueue(managerQueue)) @@ -345,10 +382,14 @@ class G7BluetoothManager: NSObject { return } + // Consumed here, after the early-outs: a pass that returns without acting must not + // burn the user's tap. + let userForced = consumeForceAcquireOnce() + let sensorServices = [SensorServiceUUID.advertisement.cbUUID, SensorServiceUUID.cgmService.cbUUID] if let peripheralID = activePeripheralIdentifier, let peripheral = centralManager.retrievePeripherals(withIdentifiers: [peripheralID]).first { - if !G7RidePolicy.shouldIssueConnect(rideOnly: Self.rideOnly, adopted: true) { + if !userForced, !G7RidePolicy.shouldIssueConnect(rideOnly: Self.rideOnly, adopted: true) { // RIDE-ONLY: no request of ours while a sensor is adopted — the pending connect // is what the daemon's auto-connection turns into failed establishments in the // sensor's tail. Register for connection events and join Dexcom's link when it @@ -388,7 +429,7 @@ class G7BluetoothManager: NSObject { if activePeripheral?.state != .connected { centralManager.registerForConnectionEvents(options: [CBConnectionEventMatchingOption.serviceUUIDs: sensorServices]) - if G7RidePolicy.shouldScanToAcquire(rideOnly: Self.rideOnly) { + if userForced || G7RidePolicy.shouldScanToAcquire(rideOnly: Self.rideOnly) { log.default("Scanning for peripherals and listening for connection events") centralManager.scanForPeripherals(withServices: [SensorServiceUUID.advertisement.cbUUID], options: nil) G7RadioCensus.scanStarted?() diff --git a/G7SensorKit/G7CGMManager/G7CGMManager.swift b/G7SensorKit/G7CGMManager/G7CGMManager.swift index 99df86b..ece2ab3 100644 --- a/G7SensorKit/G7CGMManager/G7CGMManager.swift +++ b/G7SensorKit/G7CGMManager/G7CGMManager.swift @@ -255,6 +255,10 @@ public class G7CGMManager: CGMManager { return nil } + /// Drop the link and re-acquire the SAME sensor, keeping its identity. The user's + /// "Reconnect CGM" action; see `G7BluetoothManager.recycleConnectForLab`. + public func recycleG7ConnectForLab() { sensor.recycleConnectForLab() } + public func scanForNewSensor() { logDeviceCommunication("Forgetting existing sensor and starting scan for new sensor.", type: .connection) diff --git a/G7SensorKit/G7CGMManager/G7Sensor.swift b/G7SensorKit/G7CGMManager/G7Sensor.swift index 843f8c3..5ca460c 100644 --- a/G7SensorKit/G7CGMManager/G7Sensor.swift +++ b/G7SensorKit/G7CGMManager/G7Sensor.swift @@ -105,6 +105,10 @@ public final class G7Sensor: G7BluetoothManagerDelegate { bluetoothManager.delegate = self } + /// Re-acquire the SAME sensor without forgetting it — the user's "Reconnect CGM". + /// Contrast `scanForNewSensor`, which clears `sensorID` and rebuilds cold. + func recycleConnectForLab() { bluetoothManager.recycleConnectForLab() } + public func scanForNewSensor() { self.sensorID = nil bluetoothManager.disconnect() From 319fd4fc05973112ec8be6f3217ad3a15f376dc0 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Fri, 11 Sep 2026 10:34:42 -0400 Subject: [PATCH 14/58] G7TimedConnect: timed, bounded connect experiment (lab toggle, default off) Grid-timed connect 2 s before each 5-min burst, withdrawn at 5 s or the instant a connect fails; no scan, no standing request. Tests whether a client of ours can avoid bluetoothd's -70 dBm floor. Watch-only lab key G7Lab.timedConnect; anchor persisted and re-seeded on every didConnect. Co-Authored-By: Claude Fable 5.1 --- .../G7CGMManager/G7BluetoothManager.swift | 177 ++++++++++++++++++ G7SensorKit/G7CGMManager/G7CGMManager.swift | 3 + G7SensorKit/G7CGMManager/G7Sensor.swift | 2 + 3 files changed, 182 insertions(+) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index fff5dc7..8f1bdfa 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -193,6 +193,20 @@ class G7BluetoothManager: NSObject { private var scanWatchdog: DispatchSourceTimer? private var lastDeliveryAt: Date? + // MARK: - Timed, bounded connect state (see G7TimedConnect) + private var timedFireTimer: DispatchSourceTimer? + private var timedCancelTimer: DispatchSourceTimer? + private var timedIssuedAt: Date? + /// Persisted so the grid survives a relaunch; re-anchored on every didConnect. + private var timedAnchor: Date? { + get { (UserDefaults.standard.object(forKey: G7TimedConnect.anchorKey) as? Double).map { Date(timeIntervalSince1970: $0) } } + set { + if let d = newValue { UserDefaults.standard.set(d.timeIntervalSince1970, forKey: G7TimedConnect.anchorKey) } + else { UserDefaults.standard.removeObject(forKey: G7TimedConnect.anchorKey) } + } + } + private static let timedClock: DateFormatter = { let f = DateFormatter(); f.dateFormat = "HH:mm:ss.S"; return f }() + private func armScanWatchdog() { scanWatchdog?.cancel() if lastDeliveryAt == nil { lastDeliveryAt = Date() } // baseline, so the first check is not "∞" @@ -205,6 +219,7 @@ class G7BluetoothManager: NSObject { private func scanWatchdogFired() { dispatchPrecondition(condition: .onQueue(managerQueue)) + guard !G7TimedConnect.enabled else { return } // timed mode owns the radio; no recycle guard activePeripheral?.state != .connected else { return } let age = lastDeliveryAt.map { Int(-$0.timeIntervalSinceNow) } guard (age ?? Int.max) > 315 else { return } @@ -216,6 +231,104 @@ class G7BluetoothManager: NSObject { managerQueue_scanForPeripheral() } + // MARK: - Timed, bounded connect + + /// Public entry (off the manager queue). ON: drop any scan or standing request and arm the + /// grid timer. OFF: tear the timers down and return to the normal posture. + func setTimedConnect(_ on: Bool, seedAnchor: Date?) { + dispatchPrecondition(condition: .notOnQueue(managerQueue)) + UserDefaults.standard.set(on, forKey: G7TimedConnect.key) + managerQueue.sync { + if on { + if timedAnchor == nil { + let seed = seedAnchor ?? lastDeliveryAt ?? Date() + timedAnchor = seed + Self.census("timed: anchor SEEDED at \(Self.timedClock.string(from: seed)) from \(seedAnchor != nil ? "the last reading" : (lastDeliveryAt != nil ? "last delivery" : "NOW — no reading known, first cycle is a guess"))") + } + if centralManager.isScanning { + centralManager.stopScan() + delegate?.bluetoothManagerScanningStatusDidChange(self) + } + if let p = activePeripheral, p.state == .connecting { + centralManager.cancelPeripheralConnection(p) + G7RadioCensus.noteConnectResolved() + Self.census("timed: ON — withdrew the standing request that was pending") + } + managerQueue_armTimedConnect() + } else { + managerQueue_tearDownTimed() + } + } + if !on { scanForPeripheral() } + } + + private func managerQueue_tearDownTimed() { + dispatchPrecondition(condition: .onQueue(managerQueue)) + timedFireTimer?.cancel(); timedFireTimer = nil + timedCancelTimer?.cancel(); timedCancelTimer = nil + timedIssuedAt = nil + Self.census("timed: OFF — timers torn down, normal acquisition resumes") + } + + private func managerQueue_armTimedConnect() { + dispatchPrecondition(condition: .onQueue(managerQueue)) + guard G7TimedConnect.enabled else { return } + timedFireTimer?.cancel(); timedFireTimer = nil + guard let anchor = timedAnchor else { Self.census("timed: cannot arm — no anchor"); return } + let fireAt = G7TimedConnect.nextFire(anchor: anchor, now: Date()) + let t = DispatchSource.makeTimerSource(queue: managerQueue) + t.schedule(deadline: .now() + max(0.05, fireAt.timeIntervalSinceNow)) + t.setEventHandler { [weak self] in self?.managerQueue_timedFire(scheduled: fireAt) } + t.resume() + timedFireTimer = t + Self.census(String(format: "timed: ARMED for %@ (anchor %@, in %.0f s) — no scan, no standing request", + Self.timedClock.string(from: fireAt), Self.timedClock.string(from: anchor), fireAt.timeIntervalSinceNow)) + } + + private func managerQueue_timedFire(scheduled: Date) { + dispatchPrecondition(condition: .onQueue(managerQueue)) + timedFireTimer = nil + guard G7TimedConnect.enabled else { return } + guard centralManager.state == .poweredOn else { Self.census("timed: fire skipped — radio not powered on"); managerQueue_armTimedConnect(); return } + if let p = activePeripheral, p.state == .connected { Self.census("timed: fire skipped — already connected"); managerQueue_armTimedConnect(); return } + guard let id = activePeripheralIdentifier, let peripheral = centralManager.retrievePeripherals(withIdentifiers: [id]).first else { + Self.census("timed: fire skipped — no adopted peripheral (adopt the sensor BEFORE removing Dexcom)") + managerQueue_armTimedConnect(); return + } + if let pm = activePeripheralManager { pm.peripheral = peripheral } else { + activePeripheralManager = G7PeripheralManager(peripheral: peripheral, configuration: .dexcomG7, centralManager: centralManager) + activePeripheralManager?.delegate = self + } + managedPeripherals[peripheral.identifier] = activePeripheralManager + let late = Date().timeIntervalSince(scheduled) + timedIssuedAt = Date() + G7RadioCensus.noteConnectPending() + centralManager.connect(peripheral) + Self.census(String(format: "timed: connect ISSUED (timer late %+.2f s) — bounded cancel in %.0f s", late, G7TimedConnect.bound)) + timedCancelTimer?.cancel() + let c = DispatchSource.makeTimerSource(queue: managerQueue) + c.schedule(deadline: .now() + G7TimedConnect.bound) + c.setEventHandler { [weak self] in self?.managerQueue_timedBoundedCancel(peripheral) } + c.resume() + timedCancelTimer = c + } + + private func managerQueue_timedBoundedCancel(_ peripheral: CBPeripheral) { + dispatchPrecondition(condition: .onQueue(managerQueue)) + timedCancelTimer = nil + guard G7TimedConnect.enabled else { return } + let age = timedIssuedAt.map { Date().timeIntervalSince($0) } ?? -1 + if peripheral.state == .connecting { + centralManager.cancelPeripheralConnection(peripheral) + G7RadioCensus.noteConnectResolved() + Self.census(String(format: "timed: BOUNDED CANCEL at +%.1f s — request withdrawn under the fast scan", age)) + } else { + Self.census(String(format: "timed: bound reached at +%.1f s, state=%d — nothing pending to cancel", age, peripheral.state.rawValue)) + } + timedIssuedAt = nil + managerQueue_armTimedConnect() + } + var activePeripheralIdentifier: UUID? { get { return lockedPeripheralIdentifier.value @@ -386,6 +499,14 @@ class G7BluetoothManager: NSObject { // burn the user's tap. let userForced = consumeForceAcquireOnce() + if G7TimedConnect.enabled { + // TIMED MODE owns the radio: no connection-event registration, no scan, no standing + // request. The only thing that touches the sensor is the bounded connect the grid + // timer issues. (A user-forced pass is deliberately swallowed here.) + managerQueue_armTimedConnect() + return + } + let sensorServices = [SensorServiceUUID.advertisement.cbUUID, SensorServiceUUID.cgmService.cbUUID] if let peripheralID = activePeripheralIdentifier, let peripheral = centralManager.retrievePeripherals(withIdentifiers: [peripheralID]).first { @@ -638,6 +759,13 @@ extension G7BluetoothManager: CBCentralManagerDelegate { G7RadioCensus.noteConnectResolved() lastDeliveryAt = Date() Self.census("didConnect \(peripheral.name ?? "unnamed")") + if G7TimedConnect.enabled { + timedCancelTimer?.cancel(); timedCancelTimer = nil + let age = timedIssuedAt.map { Date().timeIntervalSince($0) } ?? -1 + timedAnchor = Date() + timedIssuedAt = nil + Self.census(String(format: "timed: didConnect at +%.2f s after issue — RE-ANCHORED", age)) + } log.default("%{public}@: %{public}@", #function, peripheral) @@ -685,6 +813,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { managedPeripherals.removeValue(forKey: peripheral.identifier) } + if G7TimedConnect.enabled { managerQueue_armTimedConnect(); return } scanAfterDelay() } @@ -694,6 +823,18 @@ extension G7BluetoothManager: CBCentralManagerDelegate { Self.census("didFailToConnect \(peripheral.name ?? "unnamed")\(error.map { " [\(($0 as NSError).domain)#\(($0 as NSError).code)] \($0.localizedDescription)" } ?? "")") log.error("%{public}@: %{public}@", #function, String(describing: error)) + if G7TimedConnect.enabled { + timedCancelTimer?.cancel(); timedCancelTimer = nil + let age = timedIssuedAt.map { Date().timeIntervalSince($0) } ?? -1 + // THE MOVE UNDER TEST: withdraw the request the instant it fails, before the daemon's + // own "Connection failed, Retrying" re-adds the device and lands a late attempt in the + // sensor's tail. Whether this beats that retry is what the sysdiagnose will show. + centralManager.cancelPeripheralConnection(peripheral) + Self.census(String(format: "timed: didFailToConnect at +%.2f s — CANCELLED IMMEDIATELY (does the daemon still retry? read the capture)", age)) + timedIssuedAt = nil + managerQueue_armTimedConnect() + return + } if let error = error, let peripheralManager = activePeripheralManager { self.delegate?.bluetoothManager(self, readyingFailed: peripheralManager, with: error) } @@ -750,6 +891,42 @@ extension G7BluetoothManager: G7PeripheralManagerDelegate { /// is mute until a strong burst or a Bluetooth toggle. The counter is fed by Dexcom's own /// re-subscribe into the sensor's long tails (not ours to prevent); the LATE failure that writes /// the floor happened, on record, only with our scan or our pod link on the chip in that tail. +/// TIMED, BOUNDED CONNECT — the experiment that decides whether a direct-auth client of OURS +/// could avoid bluetoothd's −70 dBm floor (the G7 mute). Built 2026-09-11 after the Dexcom-alone +/// arm proved the mute is platform-native: departure → the daemon scores failed establishments → +/// count 5 → judgment 1 → the next failure landing >6 s after the connect REQUEST writes −70. +/// Every −70 on record came from the daemon's OWN retry ("Connection failed, Retrying") landing +/// late in the sensor's tail. So the question is whether a client that (a) never scans, (b) never +/// leaves a request standing, (c) connects on the grid just before the burst and (d) withdraws the +/// request at 5 s — or the instant it fails — can keep the daemon from ever making that late retry. +/// +/// Watch-only, diagnostic key, default OFF. Meant to run with the Dexcom watch app REMOVED (so ours +/// is the only client) under the CGM-only soak (keepalive, no pod), with the sniffer on the sensor +/// and a sysdiagnose inside 3 h. Without auth the sensor hangs up ~10 s after we connect; that is +/// fine — we are testing the connect PATTERN against the daemon's tally, not reading glucose. +/// Pass = no −70 ever, and no "Retrying" line after one of our cancels. The −70 is measured from +/// the request, not the burst, so `bound` sits under the daemon's 6-s fast scan with margin. +public enum G7TimedConnect { + public static let key = "G7Lab.timedConnect" + public static let anchorKey = "G7Lab.timedConnect.anchor" + /// The sensor's collected cadence, measured 296–311 s across 11 links on 2026-09-09. + public static let period: TimeInterval = 300 + /// Issue the connect this long BEFORE the expected burst. + public static let lead: TimeInterval = 2 + /// Withdraw a still-pending request this long after issuing it (< the daemon's 6-s fast scan). + public static let bound: TimeInterval = 5 + public static var enabled: Bool { UserDefaults.standard.bool(forKey: key) } + /// Pure, pinned by WatchAppTests: the next grid-aligned fire time strictly after `now + margin`. + /// Grid point n fires at anchor + n·period − lead. Re-anchored on every didConnect, so drift + /// (≈0.4 s/cycle against a fixed 300) never accumulates. + public static func nextFire(anchor: Date, now: Date, margin: TimeInterval = 1) -> Date { + var n = floor(now.timeIntervalSince(anchor) / period) + var t = anchor.addingTimeInterval(n * period - lead) + while t <= now.addingTimeInterval(margin) { n += 1; t = anchor.addingTimeInterval(n * period - lead) } + return t + } +} + public enum G7RidePolicy { public static let key = "G7Lab.rideOnly" /// WATCH ONLY. G7SensorKit also compiles into the phone app, whose manager keeps stock diff --git a/G7SensorKit/G7CGMManager/G7CGMManager.swift b/G7SensorKit/G7CGMManager/G7CGMManager.swift index ece2ab3..e24cfef 100644 --- a/G7SensorKit/G7CGMManager/G7CGMManager.swift +++ b/G7SensorKit/G7CGMManager/G7CGMManager.swift @@ -258,6 +258,9 @@ public class G7CGMManager: CGMManager { /// Drop the link and re-acquire the SAME sensor, keeping its identity. The user's /// "Reconnect CGM" action; see `G7BluetoothManager.recycleConnectForLab`. public func recycleG7ConnectForLab() { sensor.recycleConnectForLab() } + /// Timed, bounded connect experiment (see G7TimedConnect). Seeds the grid from the last + /// persisted reading so the first cycle lands on the sensor's real cadence. + public func setTimedConnectForLab(_ on: Bool) { sensor.setTimedConnect(on, seedAnchor: state.latestReadingTimestamp) } public func scanForNewSensor() { logDeviceCommunication("Forgetting existing sensor and starting scan for new sensor.", type: .connection) diff --git a/G7SensorKit/G7CGMManager/G7Sensor.swift b/G7SensorKit/G7CGMManager/G7Sensor.swift index 5ca460c..12278fc 100644 --- a/G7SensorKit/G7CGMManager/G7Sensor.swift +++ b/G7SensorKit/G7CGMManager/G7Sensor.swift @@ -108,6 +108,8 @@ public final class G7Sensor: G7BluetoothManagerDelegate { /// Re-acquire the SAME sensor without forgetting it — the user's "Reconnect CGM". /// Contrast `scanForNewSensor`, which clears `sensorID` and rebuilds cold. func recycleConnectForLab() { bluetoothManager.recycleConnectForLab() } + /// Timed, bounded connect experiment (see G7TimedConnect). + func setTimedConnect(_ on: Bool, seedAnchor: Date?) { bluetoothManager.setTimedConnect(on, seedAnchor: seedAnchor) } public func scanForNewSensor() { self.sensorID = nil From 79e82d6c3482022e693e835bae1d37f98242e891 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Fri, 11 Sep 2026 10:59:01 -0400 Subject: [PATCH 15/58] G7TimedConnect: reseed anchor on ON, 3-miss re-acquire pass, observe-only connection events A stale anchor (sensor drifts ~0.4 s/cycle) put the burst outside the 5-s bound with no recovery, and OFF->ON kept the stale anchor. Now ON reseeds from the freshest known reading; after 3 consecutive misses one normal scan+connect pass (90 s cap, logged) re-anchors. Co-Authored-By: Claude Fable 5.1 --- .../G7CGMManager/G7BluetoothManager.swift | 65 ++++++++++++++++--- 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift index 8f1bdfa..38c16fd 100644 --- a/G7SensorKit/G7CGMManager/G7BluetoothManager.swift +++ b/G7SensorKit/G7CGMManager/G7BluetoothManager.swift @@ -197,6 +197,12 @@ class G7BluetoothManager: NSObject { private var timedFireTimer: DispatchSourceTimer? private var timedCancelTimer: DispatchSourceTimer? private var timedIssuedAt: Date? + /// Consecutive fires without a didConnect. At `timedMissLimit` the anchor is presumed stale + /// and ONE normal scan+connect pass runs to re-anchor (logged loudly — it contaminates that cycle). + private var timedMisses = 0 + private static let timedMissLimit = 3 + private var timedReacquirePass = false + private var timedReacquireTimer: DispatchSourceTimer? /// Persisted so the grid survives a relaunch; re-anchored on every didConnect. private var timedAnchor: Date? { get { (UserDefaults.standard.object(forKey: G7TimedConnect.anchorKey) as? Double).map { Date(timeIntervalSince1970: $0) } } @@ -240,11 +246,14 @@ class G7BluetoothManager: NSObject { UserDefaults.standard.set(on, forKey: G7TimedConnect.key) managerQueue.sync { if on { - if timedAnchor == nil { - let seed = seedAnchor ?? lastDeliveryAt ?? Date() - timedAnchor = seed - Self.census("timed: anchor SEEDED at \(Self.timedClock.string(from: seed)) from \(seedAnchor != nil ? "the last reading" : (lastDeliveryAt != nil ? "last delivery" : "NOW — no reading known, first cycle is a guess"))") - } + // Always reseed from the FRESHEST thing we know. A stale anchor is fatal: the + // sensor drifts ~0.4 s/cycle, so an anchor hours old puts the burst outside the + // 5-s bound and every fire misses. OFF→ON must therefore reseed, not keep. + let candidates: [(String, Date)] = [("the last reading", seedAnchor), ("last delivery", lastDeliveryAt), ("the previous anchor", timedAnchor)].compactMap { n, d in d.map { (n, $0) } } + let (label, seed) = candidates.max(by: { $0.1 < $1.1 }) ?? ("NOW — nothing known, first cycle is a guess", Date()) + timedAnchor = seed + timedMisses = 0 + Self.census(String(format: "timed: anchor SEEDED at %@ from %@ (%.0f s old)", Self.timedClock.string(from: seed), label, Date().timeIntervalSince(seed))) if centralManager.isScanning { centralManager.stopScan() delegate?.bluetoothManagerScanningStatusDidChange(self) @@ -267,6 +276,9 @@ class G7BluetoothManager: NSObject { timedFireTimer?.cancel(); timedFireTimer = nil timedCancelTimer?.cancel(); timedCancelTimer = nil timedIssuedAt = nil + timedReacquireTimer?.cancel(); timedReacquireTimer = nil + timedReacquirePass = false + timedMisses = 0 Self.census("timed: OFF — timers torn down, normal acquisition resumes") } @@ -326,6 +338,34 @@ class G7BluetoothManager: NSObject { Self.census(String(format: "timed: bound reached at +%.1f s, state=%d — nothing pending to cancel", age, peripheral.state.rawValue)) } timedIssuedAt = nil + managerQueue_timedNoteMissAndRearm() + } + + /// A fire ended without a didConnect. Re-arm, or after `timedMissLimit` in a row run the + /// one-shot re-acquire pass. + private func managerQueue_timedNoteMissAndRearm() { + dispatchPrecondition(condition: .onQueue(managerQueue)) + timedMisses += 1 + if timedMisses >= Self.timedMissLimit, !timedReacquirePass { + timedReacquirePass = true + timedMisses = 0 + Self.census("timed: \(Self.timedMissLimit) consecutive MISSES — anchor presumed stale; ONE normal scan+connect pass to re-anchor (contaminates this cycle; 90 s cap)") + let t = DispatchSource.makeTimerSource(queue: managerQueue) + t.schedule(deadline: .now() + 90) + t.setEventHandler { [weak self] in + guard let self = self, self.timedReacquirePass else { return } + self.timedReacquirePass = false + if self.centralManager.isScanning { self.centralManager.stopScan(); self.delegate?.bluetoothManagerScanningStatusDidChange(self) } + if let p = self.activePeripheral, p.state == .connecting { self.centralManager.cancelPeripheralConnection(p); G7RadioCensus.noteConnectResolved() } + Self.census("timed: re-acquire pass TIMED OUT at 90 s — scan and request withdrawn, back to the grid") + self.managerQueue_armTimedConnect() + } + t.resume() + timedReacquireTimer = t + managerQueue_scanForPeripheral() + return + } + Self.census("timed: miss \(timedMisses)/\(Self.timedMissLimit)") managerQueue_armTimedConnect() } @@ -467,6 +507,7 @@ class G7BluetoothManager: NSObject { self.lastDeliveryAt = Date() Self.census("connection-event \(event.rawValue == 1 ? "CONNECT" : "disconnect") \(peripheral.name ?? "unnamed") — \(self.activePeripheralIdentifier == nil ? "handling (trigger b)" : "ignored, have active")") if let name = peripheral.name { G7RadioCensus.sensorSighted?(name) } + if G7TimedConnect.enabled { return } // timed mode: observe only, never connect from here if self.activePeripheralIdentifier == nil { self.log.default("Discovered peripheral from connectionEventDidOccur %{public}@", peripheral.identifier.uuidString) self.handleDiscoveredPeripheral(peripheral, viaLinkUp: event == .peerConnected) @@ -499,7 +540,7 @@ class G7BluetoothManager: NSObject { // burn the user's tap. let userForced = consumeForceAcquireOnce() - if G7TimedConnect.enabled { + if G7TimedConnect.enabled, !timedReacquirePass { // TIMED MODE owns the radio: no connection-event registration, no scan, no standing // request. The only thing that touches the sensor is the bounded connect the grid // timer issues. (A user-forced pass is deliberately swallowed here.) @@ -764,7 +805,15 @@ extension G7BluetoothManager: CBCentralManagerDelegate { let age = timedIssuedAt.map { Date().timeIntervalSince($0) } ?? -1 timedAnchor = Date() timedIssuedAt = nil - Self.census(String(format: "timed: didConnect at +%.2f s after issue — RE-ANCHORED", age)) + timedMisses = 0 + if timedReacquirePass { + timedReacquirePass = false + timedReacquireTimer?.cancel(); timedReacquireTimer = nil + if centralManager.isScanning { centralManager.stopScan(); delegate?.bluetoothManagerScanningStatusDidChange(self) } + Self.census("timed: re-acquire pass CONNECTED — re-anchored, scan stopped, back to the grid") + } else { + Self.census(String(format: "timed: didConnect at +%.2f s after issue — RE-ANCHORED", age)) + } } log.default("%{public}@: %{public}@", #function, peripheral) @@ -832,7 +881,7 @@ extension G7BluetoothManager: CBCentralManagerDelegate { centralManager.cancelPeripheralConnection(peripheral) Self.census(String(format: "timed: didFailToConnect at +%.2f s — CANCELLED IMMEDIATELY (does the daemon still retry? read the capture)", age)) timedIssuedAt = nil - managerQueue_armTimedConnect() + managerQueue_timedNoteMissAndRearm() return } if let error = error, let peripheralManager = activePeripheralManager { From 15cf59af2fe8bf498dcb70394f314c77b10708e7 Mon Sep 17 00:00:00 2001 From: Jeremy Barnum Date: Fri, 11 Sep 2026 14:08:51 -0400 Subject: [PATCH 16/58] G7 direct auth: our own J-PAKE handshake (lab toggle, default off) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ports the proven G7watchOS J-PAKE/ECDSA/AES crypto (libg7auth over static OpenSSL, ios+watchos xcframeworks) into G7SensorKit and drives the full handshake through the kit's own G7PeripheralManager — one BLE stack, so the two-delegate collision that sank the earlier attempt (bc3c0978) cannot recur. Adds the 3538 data characteristic (J-PAKE bulk payloads), the async inbound channels, and G7DirectAuthSession (JPAKE 0A -> AES 02/03/04/05 -> certs 0B -> PoP 0C -> keepalive 06/19 -> bond gate -> glucose 4E), slot byte 0x01 (the concurrent slot proven to coexist with an active phone). Gated by G7Lab.directAuth, default off; reads glucose with no Dexcom app present. EXCLUDED_ARCHS x86_64 for watchsimulator (arm64-sim-only crypto slices). Co-Authored-By: Claude Opus 4.8 --- Frameworks/libg7auth.xcframework/Info.plist | 82 + .../ios-arm64-simulator/Headers/g7auth.h | 35 + .../ios-arm64-simulator/libg7auth-sim.a | Bin 0 -> 47160 bytes .../ios-arm64/Headers/g7auth.h | 35 + .../ios-arm64/libg7auth-device.a | Bin 0 -> 47160 bytes .../watchos-arm64-simulator/Headers/g7auth.h | 35 + .../watchos-arm64-simulator/libg7auth-sim.a | Bin 0 -> 47160 bytes .../watchos-arm64_arm64_32/Headers/g7auth.h | 35 + .../libg7auth-watchos-device.a | Bin 0 -> 92416 bytes Frameworks/openssl.xcframework/Info.plist | 82 + .../ios-arm64-simulator/Headers/openssl/aes.h | 109 + .../Headers/openssl/asn1.h | 1125 +++ .../Headers/openssl/asn1err.h | 140 + .../Headers/openssl/asn1t.h | 935 +++ .../Headers/openssl/async.h | 102 + .../Headers/openssl/asyncerr.h | 27 + .../ios-arm64-simulator/Headers/openssl/bio.h | 1028 +++ .../Headers/openssl/bioerr.h | 70 + .../Headers/openssl/blowfish.h | 78 + .../ios-arm64-simulator/Headers/openssl/bn.h | 588 ++ .../Headers/openssl/bnerr.h | 45 + .../Headers/openssl/buffer.h | 60 + .../Headers/openssl/buffererr.h | 23 + .../Headers/openssl/byteorder.h | 339 + .../Headers/openssl/camellia.h | 117 + .../Headers/openssl/cast.h | 71 + .../Headers/openssl/cmac.h | 52 + .../ios-arm64-simulator/Headers/openssl/cmp.h | 741 ++ .../Headers/openssl/cmp_util.h | 56 + .../Headers/openssl/cmperr.h | 132 + .../ios-arm64-simulator/Headers/openssl/cms.h | 524 ++ .../Headers/openssl/cmserr.h | 128 + .../Headers/openssl/comp.h | 101 + .../Headers/openssl/comperr.h | 36 + .../Headers/openssl/conf.h | 219 + .../Headers/openssl/conf_api.h | 46 + .../Headers/openssl/conferr.h | 50 + .../Headers/openssl/configuration.h | 238 + .../Headers/openssl/conftypes.h | 44 + .../Headers/openssl/core.h | 235 + .../Headers/openssl/core_dispatch.h | 1061 +++ .../Headers/openssl/core_names.h | 588 ++ .../Headers/openssl/core_object.h | 41 + .../Headers/openssl/crmf.h | 279 + .../Headers/openssl/crmferr.h | 55 + .../Headers/openssl/crypto.h | 619 ++ .../Headers/openssl/cryptoerr.h | 54 + .../Headers/openssl/cryptoerr_legacy.h | 1466 ++++ .../ios-arm64-simulator/Headers/openssl/ct.h | 574 ++ .../Headers/openssl/cterr.h | 43 + .../Headers/openssl/decoder.h | 133 + .../Headers/openssl/decodererr.h | 26 + .../ios-arm64-simulator/Headers/openssl/des.h | 211 + .../ios-arm64-simulator/Headers/openssl/dh.h | 333 + .../Headers/openssl/dherr.h | 57 + .../ios-arm64-simulator/Headers/openssl/dsa.h | 273 + .../Headers/openssl/dsaerr.h | 42 + .../Headers/openssl/dtls1.h | 57 + .../Headers/openssl/e_os2.h | 306 + .../Headers/openssl/e_ostime.h | 38 + .../Headers/openssl/ebcdic.h | 39 + .../ios-arm64-simulator/Headers/openssl/ec.h | 1569 ++++ .../Headers/openssl/ecdh.h | 10 + .../Headers/openssl/ecdsa.h | 10 + .../Headers/openssl/ecerr.h | 102 + .../Headers/openssl/encoder.h | 124 + .../Headers/openssl/encodererr.h | 26 + .../Headers/openssl/engine.h | 841 +++ .../Headers/openssl/engineerr.h | 61 + .../ios-arm64-simulator/Headers/openssl/err.h | 517 ++ .../ios-arm64-simulator/Headers/openssl/ess.h | 131 + .../Headers/openssl/esserr.h | 32 + .../ios-arm64-simulator/Headers/openssl/evp.h | 2290 ++++++ .../Headers/openssl/evperr.h | 146 + .../Headers/openssl/fips_names.h | 50 + .../Headers/openssl/fipskey.h | 47 + .../Headers/openssl/hmac.h | 62 + .../Headers/openssl/hpke.h | 169 + .../Headers/openssl/http.h | 117 + .../Headers/openssl/httperr.h | 55 + .../Headers/openssl/idea.h | 82 + .../Headers/openssl/indicator.h | 31 + .../ios-arm64-simulator/Headers/openssl/kdf.h | 141 + .../Headers/openssl/kdferr.h | 16 + .../Headers/openssl/lhash.h | 417 + .../Headers/openssl/macros.h | 361 + .../ios-arm64-simulator/Headers/openssl/md2.h | 56 + .../ios-arm64-simulator/Headers/openssl/md4.h | 63 + .../ios-arm64-simulator/Headers/openssl/md5.h | 62 + .../Headers/openssl/mdc2.h | 55 + .../Headers/openssl/ml_kem.h | 31 + .../Headers/openssl/modes.h | 219 + .../Headers/openssl/obj_mac.h | 6695 +++++++++++++++++ .../Headers/openssl/objects.h | 186 + .../Headers/openssl/objectserr.h | 26 + .../Headers/openssl/ocsp.h | 487 ++ .../Headers/openssl/ocsperr.h | 51 + .../Headers/openssl/opensslconf.h | 17 + .../Headers/openssl/opensslv.h | 131 + .../Headers/openssl/ossl_typ.h | 16 + .../Headers/openssl/param_build.h | 63 + .../Headers/openssl/params.h | 166 + .../ios-arm64-simulator/Headers/openssl/pem.h | 548 ++ .../Headers/openssl/pem2.h | 19 + .../Headers/openssl/pemerr.h | 57 + .../Headers/openssl/pkcs12.h | 376 + .../Headers/openssl/pkcs12err.h | 44 + .../Headers/openssl/pkcs7.h | 435 ++ .../Headers/openssl/pkcs7err.h | 61 + .../Headers/openssl/prov_ssl.h | 38 + .../Headers/openssl/proverr.h | 169 + .../Headers/openssl/provider.h | 94 + .../Headers/openssl/quic.h | 75 + .../Headers/openssl/rand.h | 133 + .../Headers/openssl/randerr.h | 68 + .../ios-arm64-simulator/Headers/openssl/rc2.h | 68 + .../ios-arm64-simulator/Headers/openssl/rc4.h | 47 + .../ios-arm64-simulator/Headers/openssl/rc5.h | 79 + .../Headers/openssl/ripemd.h | 59 + .../ios-arm64-simulator/Headers/openssl/rsa.h | 614 ++ .../Headers/openssl/rsaerr.h | 105 + .../Headers/openssl/safestack.h | 326 + .../Headers/openssl/seed.h | 112 + .../Headers/openssl/self_test.h | 116 + .../ios-arm64-simulator/Headers/openssl/sha.h | 139 + .../ios-arm64-simulator/Headers/openssl/srp.h | 291 + .../Headers/openssl/srtp.h | 68 + .../ios-arm64-simulator/Headers/openssl/ssl.h | 2947 ++++++++ .../Headers/openssl/ssl2.h | 30 + .../Headers/openssl/ssl3.h | 357 + .../Headers/openssl/sslerr.h | 380 + .../Headers/openssl/sslerr_legacy.h | 467 ++ .../Headers/openssl/stack.h | 92 + .../Headers/openssl/store.h | 372 + .../Headers/openssl/storeerr.h | 47 + .../Headers/openssl/symhacks.h | 39 + .../Headers/openssl/thread.h | 31 + .../Headers/openssl/tls1.h | 1222 +++ .../Headers/openssl/trace.h | 325 + .../ios-arm64-simulator/Headers/openssl/ts.h | 521 ++ .../Headers/openssl/tserr.h | 65 + .../Headers/openssl/txt_db.h | 63 + .../Headers/openssl/types.h | 250 + .../ios-arm64-simulator/Headers/openssl/ui.h | 409 + .../Headers/openssl/uierr.h | 36 + .../Headers/openssl/whrlpool.h | 62 + .../Headers/openssl/x509.h | 1302 ++++ .../Headers/openssl/x509_acert.h | 304 + .../Headers/openssl/x509_vfy.h | 922 +++ .../Headers/openssl/x509err.h | 68 + .../Headers/openssl/x509v3.h | 2013 +++++ .../Headers/openssl/x509v3err.h | 95 + .../ios-arm64-simulator/libcrypto.a | Bin 0 -> 8918600 bytes .../ios-arm64/Headers/openssl/aes.h | 109 + .../ios-arm64/Headers/openssl/asn1.h | 1125 +++ .../ios-arm64/Headers/openssl/asn1err.h | 140 + .../ios-arm64/Headers/openssl/asn1t.h | 935 +++ .../ios-arm64/Headers/openssl/async.h | 102 + .../ios-arm64/Headers/openssl/asyncerr.h | 27 + .../ios-arm64/Headers/openssl/bio.h | 1028 +++ .../ios-arm64/Headers/openssl/bioerr.h | 70 + .../ios-arm64/Headers/openssl/blowfish.h | 78 + .../ios-arm64/Headers/openssl/bn.h | 588 ++ .../ios-arm64/Headers/openssl/bnerr.h | 45 + .../ios-arm64/Headers/openssl/buffer.h | 60 + .../ios-arm64/Headers/openssl/buffererr.h | 23 + .../ios-arm64/Headers/openssl/byteorder.h | 339 + .../ios-arm64/Headers/openssl/camellia.h | 117 + .../ios-arm64/Headers/openssl/cast.h | 71 + .../ios-arm64/Headers/openssl/cmac.h | 52 + .../ios-arm64/Headers/openssl/cmp.h | 741 ++ .../ios-arm64/Headers/openssl/cmp_util.h | 56 + .../ios-arm64/Headers/openssl/cmperr.h | 132 + .../ios-arm64/Headers/openssl/cms.h | 524 ++ .../ios-arm64/Headers/openssl/cmserr.h | 128 + .../ios-arm64/Headers/openssl/comp.h | 101 + .../ios-arm64/Headers/openssl/comperr.h | 36 + .../ios-arm64/Headers/openssl/conf.h | 219 + .../ios-arm64/Headers/openssl/conf_api.h | 46 + .../ios-arm64/Headers/openssl/conferr.h | 50 + .../ios-arm64/Headers/openssl/configuration.h | 238 + .../ios-arm64/Headers/openssl/conftypes.h | 44 + .../ios-arm64/Headers/openssl/core.h | 235 + .../ios-arm64/Headers/openssl/core_dispatch.h | 1061 +++ .../ios-arm64/Headers/openssl/core_names.h | 588 ++ .../ios-arm64/Headers/openssl/core_object.h | 41 + .../ios-arm64/Headers/openssl/crmf.h | 279 + .../ios-arm64/Headers/openssl/crmferr.h | 55 + .../ios-arm64/Headers/openssl/crypto.h | 619 ++ .../ios-arm64/Headers/openssl/cryptoerr.h | 54 + .../Headers/openssl/cryptoerr_legacy.h | 1466 ++++ .../ios-arm64/Headers/openssl/ct.h | 574 ++ .../ios-arm64/Headers/openssl/cterr.h | 43 + .../ios-arm64/Headers/openssl/decoder.h | 133 + .../ios-arm64/Headers/openssl/decodererr.h | 26 + .../ios-arm64/Headers/openssl/des.h | 211 + .../ios-arm64/Headers/openssl/dh.h | 333 + .../ios-arm64/Headers/openssl/dherr.h | 57 + .../ios-arm64/Headers/openssl/dsa.h | 273 + .../ios-arm64/Headers/openssl/dsaerr.h | 42 + .../ios-arm64/Headers/openssl/dtls1.h | 57 + .../ios-arm64/Headers/openssl/e_os2.h | 306 + .../ios-arm64/Headers/openssl/e_ostime.h | 38 + .../ios-arm64/Headers/openssl/ebcdic.h | 39 + .../ios-arm64/Headers/openssl/ec.h | 1569 ++++ .../ios-arm64/Headers/openssl/ecdh.h | 10 + .../ios-arm64/Headers/openssl/ecdsa.h | 10 + .../ios-arm64/Headers/openssl/ecerr.h | 102 + .../ios-arm64/Headers/openssl/encoder.h | 124 + .../ios-arm64/Headers/openssl/encodererr.h | 26 + .../ios-arm64/Headers/openssl/engine.h | 841 +++ .../ios-arm64/Headers/openssl/engineerr.h | 61 + .../ios-arm64/Headers/openssl/err.h | 517 ++ .../ios-arm64/Headers/openssl/ess.h | 131 + .../ios-arm64/Headers/openssl/esserr.h | 32 + .../ios-arm64/Headers/openssl/evp.h | 2290 ++++++ .../ios-arm64/Headers/openssl/evperr.h | 146 + .../ios-arm64/Headers/openssl/fips_names.h | 50 + .../ios-arm64/Headers/openssl/fipskey.h | 47 + .../ios-arm64/Headers/openssl/hmac.h | 62 + .../ios-arm64/Headers/openssl/hpke.h | 169 + .../ios-arm64/Headers/openssl/http.h | 117 + .../ios-arm64/Headers/openssl/httperr.h | 55 + .../ios-arm64/Headers/openssl/idea.h | 82 + .../ios-arm64/Headers/openssl/indicator.h | 31 + .../ios-arm64/Headers/openssl/kdf.h | 141 + .../ios-arm64/Headers/openssl/kdferr.h | 16 + .../ios-arm64/Headers/openssl/lhash.h | 417 + .../ios-arm64/Headers/openssl/macros.h | 361 + .../ios-arm64/Headers/openssl/md2.h | 56 + .../ios-arm64/Headers/openssl/md4.h | 63 + .../ios-arm64/Headers/openssl/md5.h | 62 + .../ios-arm64/Headers/openssl/mdc2.h | 55 + .../ios-arm64/Headers/openssl/ml_kem.h | 31 + .../ios-arm64/Headers/openssl/modes.h | 219 + .../ios-arm64/Headers/openssl/obj_mac.h | 6695 +++++++++++++++++ .../ios-arm64/Headers/openssl/objects.h | 186 + .../ios-arm64/Headers/openssl/objectserr.h | 26 + .../ios-arm64/Headers/openssl/ocsp.h | 487 ++ .../ios-arm64/Headers/openssl/ocsperr.h | 51 + .../ios-arm64/Headers/openssl/opensslconf.h | 17 + .../ios-arm64/Headers/openssl/opensslv.h | 131 + .../ios-arm64/Headers/openssl/ossl_typ.h | 16 + .../ios-arm64/Headers/openssl/param_build.h | 63 + .../ios-arm64/Headers/openssl/params.h | 166 + .../ios-arm64/Headers/openssl/pem.h | 548 ++ .../ios-arm64/Headers/openssl/pem2.h | 19 + .../ios-arm64/Headers/openssl/pemerr.h | 57 + .../ios-arm64/Headers/openssl/pkcs12.h | 376 + .../ios-arm64/Headers/openssl/pkcs12err.h | 44 + .../ios-arm64/Headers/openssl/pkcs7.h | 435 ++ .../ios-arm64/Headers/openssl/pkcs7err.h | 61 + .../ios-arm64/Headers/openssl/prov_ssl.h | 38 + .../ios-arm64/Headers/openssl/proverr.h | 169 + .../ios-arm64/Headers/openssl/provider.h | 94 + .../ios-arm64/Headers/openssl/quic.h | 75 + .../ios-arm64/Headers/openssl/rand.h | 133 + .../ios-arm64/Headers/openssl/randerr.h | 68 + .../ios-arm64/Headers/openssl/rc2.h | 68 + .../ios-arm64/Headers/openssl/rc4.h | 47 + .../ios-arm64/Headers/openssl/rc5.h | 79 + .../ios-arm64/Headers/openssl/ripemd.h | 59 + .../ios-arm64/Headers/openssl/rsa.h | 614 ++ .../ios-arm64/Headers/openssl/rsaerr.h | 105 + .../ios-arm64/Headers/openssl/safestack.h | 326 + .../ios-arm64/Headers/openssl/seed.h | 112 + .../ios-arm64/Headers/openssl/self_test.h | 116 + .../ios-arm64/Headers/openssl/sha.h | 139 + .../ios-arm64/Headers/openssl/srp.h | 291 + .../ios-arm64/Headers/openssl/srtp.h | 68 + .../ios-arm64/Headers/openssl/ssl.h | 2947 ++++++++ .../ios-arm64/Headers/openssl/ssl2.h | 30 + .../ios-arm64/Headers/openssl/ssl3.h | 357 + .../ios-arm64/Headers/openssl/sslerr.h | 380 + .../ios-arm64/Headers/openssl/sslerr_legacy.h | 467 ++ .../ios-arm64/Headers/openssl/stack.h | 92 + .../ios-arm64/Headers/openssl/store.h | 372 + .../ios-arm64/Headers/openssl/storeerr.h | 47 + .../ios-arm64/Headers/openssl/symhacks.h | 39 + .../ios-arm64/Headers/openssl/thread.h | 31 + .../ios-arm64/Headers/openssl/tls1.h | 1222 +++ .../ios-arm64/Headers/openssl/trace.h | 325 + .../ios-arm64/Headers/openssl/ts.h | 521 ++ .../ios-arm64/Headers/openssl/tserr.h | 65 + .../ios-arm64/Headers/openssl/txt_db.h | 63 + .../ios-arm64/Headers/openssl/types.h | 250 + .../ios-arm64/Headers/openssl/ui.h | 409 + .../ios-arm64/Headers/openssl/uierr.h | 36 + .../ios-arm64/Headers/openssl/whrlpool.h | 62 + .../ios-arm64/Headers/openssl/x509.h | 1302 ++++ .../ios-arm64/Headers/openssl/x509_acert.h | 304 + .../ios-arm64/Headers/openssl/x509_vfy.h | 922 +++ .../ios-arm64/Headers/openssl/x509err.h | 68 + .../ios-arm64/Headers/openssl/x509v3.h | 2013 +++++ .../ios-arm64/Headers/openssl/x509v3err.h | 95 + .../openssl.xcframework/ios-arm64/libcrypto.a | Bin 0 -> 8913272 bytes .../Headers/openssl/aes.h | 109 + .../Headers/openssl/asn1.h | 1125 +++ .../Headers/openssl/asn1err.h | 140 + .../Headers/openssl/asn1t.h | 935 +++ .../Headers/openssl/async.h | 102 + .../Headers/openssl/asyncerr.h | 27 + .../Headers/openssl/bio.h | 1028 +++ .../Headers/openssl/bioerr.h | 70 + .../Headers/openssl/blowfish.h | 78 + .../Headers/openssl/bn.h | 588 ++ .../Headers/openssl/bnerr.h | 45 + .../Headers/openssl/buffer.h | 60 + .../Headers/openssl/buffererr.h | 23 + .../Headers/openssl/byteorder.h | 339 + .../Headers/openssl/camellia.h | 117 + .../Headers/openssl/cast.h | 71 + .../Headers/openssl/cmac.h | 52 + .../Headers/openssl/cmp.h | 741 ++ .../Headers/openssl/cmp_util.h | 56 + .../Headers/openssl/cmperr.h | 132 + .../Headers/openssl/cms.h | 524 ++ .../Headers/openssl/cmserr.h | 128 + .../Headers/openssl/comp.h | 101 + .../Headers/openssl/comperr.h | 36 + .../Headers/openssl/conf.h | 219 + .../Headers/openssl/conf_api.h | 46 + .../Headers/openssl/conferr.h | 50 + .../Headers/openssl/configuration.h | 241 + .../Headers/openssl/conftypes.h | 44 + .../Headers/openssl/core.h | 235 + .../Headers/openssl/core_dispatch.h | 1061 +++ .../Headers/openssl/core_names.h | 588 ++ .../Headers/openssl/core_object.h | 41 + .../Headers/openssl/crmf.h | 279 + .../Headers/openssl/crmferr.h | 55 + .../Headers/openssl/crypto.h | 619 ++ .../Headers/openssl/cryptoerr.h | 54 + .../Headers/openssl/cryptoerr_legacy.h | 1466 ++++ .../Headers/openssl/ct.h | 574 ++ .../Headers/openssl/cterr.h | 43 + .../Headers/openssl/decoder.h | 133 + .../Headers/openssl/decodererr.h | 26 + .../Headers/openssl/des.h | 211 + .../Headers/openssl/dh.h | 333 + .../Headers/openssl/dherr.h | 57 + .../Headers/openssl/dsa.h | 273 + .../Headers/openssl/dsaerr.h | 42 + .../Headers/openssl/dtls1.h | 57 + .../Headers/openssl/e_os2.h | 306 + .../Headers/openssl/e_ostime.h | 38 + .../Headers/openssl/ebcdic.h | 39 + .../Headers/openssl/ec.h | 1569 ++++ .../Headers/openssl/ecdh.h | 10 + .../Headers/openssl/ecdsa.h | 10 + .../Headers/openssl/ecerr.h | 102 + .../Headers/openssl/encoder.h | 124 + .../Headers/openssl/encodererr.h | 26 + .../Headers/openssl/engine.h | 841 +++ .../Headers/openssl/engineerr.h | 61 + .../Headers/openssl/err.h | 517 ++ .../Headers/openssl/ess.h | 131 + .../Headers/openssl/esserr.h | 32 + .../Headers/openssl/evp.h | 2290 ++++++ .../Headers/openssl/evperr.h | 146 + .../Headers/openssl/fips_names.h | 50 + .../Headers/openssl/fipskey.h | 47 + .../Headers/openssl/hmac.h | 62 + .../Headers/openssl/hpke.h | 169 + .../Headers/openssl/http.h | 117 + .../Headers/openssl/httperr.h | 55 + .../Headers/openssl/idea.h | 82 + .../Headers/openssl/indicator.h | 31 + .../Headers/openssl/kdf.h | 141 + .../Headers/openssl/kdferr.h | 16 + .../Headers/openssl/lhash.h | 417 + .../Headers/openssl/macros.h | 361 + .../Headers/openssl/md2.h | 56 + .../Headers/openssl/md4.h | 63 + .../Headers/openssl/md5.h | 62 + .../Headers/openssl/mdc2.h | 55 + .../Headers/openssl/ml_kem.h | 31 + .../Headers/openssl/modes.h | 219 + .../Headers/openssl/obj_mac.h | 6695 +++++++++++++++++ .../Headers/openssl/objects.h | 186 + .../Headers/openssl/objectserr.h | 26 + .../Headers/openssl/ocsp.h | 487 ++ .../Headers/openssl/ocsperr.h | 51 + .../Headers/openssl/opensslconf.h | 17 + .../Headers/openssl/opensslv.h | 131 + .../Headers/openssl/ossl_typ.h | 16 + .../Headers/openssl/param_build.h | 63 + .../Headers/openssl/params.h | 166 + .../Headers/openssl/pem.h | 548 ++ .../Headers/openssl/pem2.h | 19 + .../Headers/openssl/pemerr.h | 57 + .../Headers/openssl/pkcs12.h | 376 + .../Headers/openssl/pkcs12err.h | 44 + .../Headers/openssl/pkcs7.h | 435 ++ .../Headers/openssl/pkcs7err.h | 61 + .../Headers/openssl/prov_ssl.h | 38 + .../Headers/openssl/proverr.h | 169 + .../Headers/openssl/provider.h | 94 + .../Headers/openssl/quic.h | 75 + .../Headers/openssl/rand.h | 133 + .../Headers/openssl/randerr.h | 68 + .../Headers/openssl/rc2.h | 68 + .../Headers/openssl/rc4.h | 47 + .../Headers/openssl/rc5.h | 79 + .../Headers/openssl/ripemd.h | 59 + .../Headers/openssl/rsa.h | 614 ++ .../Headers/openssl/rsaerr.h | 105 + .../Headers/openssl/safestack.h | 326 + .../Headers/openssl/seed.h | 112 + .../Headers/openssl/self_test.h | 116 + .../Headers/openssl/sha.h | 139 + .../Headers/openssl/srp.h | 291 + .../Headers/openssl/srtp.h | 68 + .../Headers/openssl/ssl.h | 2947 ++++++++ .../Headers/openssl/ssl2.h | 30 + .../Headers/openssl/ssl3.h | 357 + .../Headers/openssl/sslerr.h | 380 + .../Headers/openssl/sslerr_legacy.h | 467 ++ .../Headers/openssl/stack.h | 92 + .../Headers/openssl/store.h | 372 + .../Headers/openssl/storeerr.h | 47 + .../Headers/openssl/symhacks.h | 39 + .../Headers/openssl/thread.h | 31 + .../Headers/openssl/tls1.h | 1222 +++ .../Headers/openssl/trace.h | 325 + .../Headers/openssl/ts.h | 521 ++ .../Headers/openssl/tserr.h | 65 + .../Headers/openssl/txt_db.h | 63 + .../Headers/openssl/types.h | 250 + .../Headers/openssl/ui.h | 409 + .../Headers/openssl/uierr.h | 36 + .../Headers/openssl/whrlpool.h | 62 + .../Headers/openssl/x509.h | 1302 ++++ .../Headers/openssl/x509_acert.h | 304 + .../Headers/openssl/x509_vfy.h | 922 +++ .../Headers/openssl/x509err.h | 68 + .../Headers/openssl/x509v3.h | 2013 +++++ .../Headers/openssl/x509v3err.h | 95 + .../watchos-arm64-simulator/libcrypto.a | Bin 0 -> 7936392 bytes .../Headers/openssl/aes.h | 109 + .../Headers/openssl/asn1.h | 1125 +++ .../Headers/openssl/asn1err.h | 140 + .../Headers/openssl/asn1t.h | 935 +++ .../Headers/openssl/async.h | 102 + .../Headers/openssl/asyncerr.h | 27 + .../Headers/openssl/bio.h | 1028 +++ .../Headers/openssl/bioerr.h | 70 + .../Headers/openssl/blowfish.h | 78 + .../Headers/openssl/bn.h | 588 ++ .../Headers/openssl/bnerr.h | 45 + .../Headers/openssl/buffer.h | 60 + .../Headers/openssl/buffererr.h | 23 + .../Headers/openssl/byteorder.h | 339 + .../Headers/openssl/camellia.h | 117 + .../Headers/openssl/cast.h | 71 + .../Headers/openssl/cmac.h | 52 + .../Headers/openssl/cmp.h | 741 ++ .../Headers/openssl/cmp_util.h | 56 + .../Headers/openssl/cmperr.h | 132 + .../Headers/openssl/cms.h | 524 ++ .../Headers/openssl/cmserr.h | 128 + .../Headers/openssl/comp.h | 101 + .../Headers/openssl/comperr.h | 36 + .../Headers/openssl/conf.h | 219 + .../Headers/openssl/conf_api.h | 46 + .../Headers/openssl/conferr.h | 50 + .../Headers/openssl/configuration.h | 241 + .../Headers/openssl/conftypes.h | 44 + .../Headers/openssl/core.h | 235 + .../Headers/openssl/core_dispatch.h | 1061 +++ .../Headers/openssl/core_names.h | 588 ++ .../Headers/openssl/core_object.h | 41 + .../Headers/openssl/crmf.h | 279 + .../Headers/openssl/crmferr.h | 55 + .../Headers/openssl/crypto.h | 619 ++ .../Headers/openssl/cryptoerr.h | 54 + .../Headers/openssl/cryptoerr_legacy.h | 1466 ++++ .../Headers/openssl/ct.h | 574 ++ .../Headers/openssl/cterr.h | 43 + .../Headers/openssl/decoder.h | 133 + .../Headers/openssl/decodererr.h | 26 + .../Headers/openssl/des.h | 211 + .../Headers/openssl/dh.h | 333 + .../Headers/openssl/dherr.h | 57 + .../Headers/openssl/dsa.h | 273 + .../Headers/openssl/dsaerr.h | 42 + .../Headers/openssl/dtls1.h | 57 + .../Headers/openssl/e_os2.h | 306 + .../Headers/openssl/e_ostime.h | 38 + .../Headers/openssl/ebcdic.h | 39 + .../Headers/openssl/ec.h | 1569 ++++ .../Headers/openssl/ecdh.h | 10 + .../Headers/openssl/ecdsa.h | 10 + .../Headers/openssl/ecerr.h | 102 + .../Headers/openssl/encoder.h | 124 + .../Headers/openssl/encodererr.h | 26 + .../Headers/openssl/engine.h | 841 +++ .../Headers/openssl/engineerr.h | 61 + .../Headers/openssl/err.h | 517 ++ .../Headers/openssl/ess.h | 131 + .../Headers/openssl/esserr.h | 32 + .../Headers/openssl/evp.h | 2290 ++++++ .../Headers/openssl/evperr.h | 146 + .../Headers/openssl/fips_names.h | 50 + .../Headers/openssl/fipskey.h | 47 + .../Headers/openssl/hmac.h | 62 + .../Headers/openssl/hpke.h | 169 + .../Headers/openssl/http.h | 117 + .../Headers/openssl/httperr.h | 55 + .../Headers/openssl/idea.h | 82 + .../Headers/openssl/indicator.h | 31 + .../Headers/openssl/kdf.h | 141 + .../Headers/openssl/kdferr.h | 16 + .../Headers/openssl/lhash.h | 417 + .../Headers/openssl/macros.h | 361 + .../Headers/openssl/md2.h | 56 + .../Headers/openssl/md4.h | 63 + .../Headers/openssl/md5.h | 62 + .../Headers/openssl/mdc2.h | 55 + .../Headers/openssl/ml_kem.h | 31 + .../Headers/openssl/modes.h | 219 + .../Headers/openssl/obj_mac.h | 6695 +++++++++++++++++ .../Headers/openssl/objects.h | 186 + .../Headers/openssl/objectserr.h | 26 + .../Headers/openssl/ocsp.h | 487 ++ .../Headers/openssl/ocsperr.h | 51 + .../Headers/openssl/opensslconf.h | 17 + .../Headers/openssl/opensslv.h | 131 + .../Headers/openssl/ossl_typ.h | 16 + .../Headers/openssl/param_build.h | 63 + .../Headers/openssl/params.h | 166 + .../Headers/openssl/pem.h | 548 ++ .../Headers/openssl/pem2.h | 19 + .../Headers/openssl/pemerr.h | 57 + .../Headers/openssl/pkcs12.h | 376 + .../Headers/openssl/pkcs12err.h | 44 + .../Headers/openssl/pkcs7.h | 435 ++ .../Headers/openssl/pkcs7err.h | 61 + .../Headers/openssl/prov_ssl.h | 38 + .../Headers/openssl/proverr.h | 169 + .../Headers/openssl/provider.h | 94 + .../Headers/openssl/quic.h | 75 + .../Headers/openssl/rand.h | 133 + .../Headers/openssl/randerr.h | 68 + .../Headers/openssl/rc2.h | 68 + .../Headers/openssl/rc4.h | 47 + .../Headers/openssl/rc5.h | 79 + .../Headers/openssl/ripemd.h | 59 + .../Headers/openssl/rsa.h | 614 ++ .../Headers/openssl/rsaerr.h | 105 + .../Headers/openssl/safestack.h | 326 + .../Headers/openssl/seed.h | 112 + .../Headers/openssl/self_test.h | 116 + .../Headers/openssl/sha.h | 139 + .../Headers/openssl/srp.h | 291 + .../Headers/openssl/srtp.h | 68 + .../Headers/openssl/ssl.h | 2947 ++++++++ .../Headers/openssl/ssl2.h | 30 + .../Headers/openssl/ssl3.h | 357 + .../Headers/openssl/sslerr.h | 380 + .../Headers/openssl/sslerr_legacy.h | 467 ++ .../Headers/openssl/stack.h | 92 + .../Headers/openssl/store.h | 372 + .../Headers/openssl/storeerr.h | 47 + .../Headers/openssl/symhacks.h | 39 + .../Headers/openssl/thread.h | 31 + .../Headers/openssl/tls1.h | 1222 +++ .../Headers/openssl/trace.h | 325 + .../Headers/openssl/ts.h | 521 ++ .../Headers/openssl/tserr.h | 65 + .../Headers/openssl/txt_db.h | 63 + .../Headers/openssl/types.h | 250 + .../Headers/openssl/ui.h | 409 + .../Headers/openssl/uierr.h | 36 + .../Headers/openssl/whrlpool.h | 62 + .../Headers/openssl/x509.h | 1302 ++++ .../Headers/openssl/x509_acert.h | 304 + .../Headers/openssl/x509_vfy.h | 922 +++ .../Headers/openssl/x509err.h | 68 + .../Headers/openssl/x509v3.h | 2013 +++++ .../Headers/openssl/x509v3err.h | 95 + .../libcrypto-watchos-device.a | Bin 0 -> 15207776 bytes G7SensorKit.xcodeproj/project.pbxproj | 92 +- G7SensorKit/BluetoothServices.swift | 5 + G7SensorKit/G7Auth/G7AuthCerts.swift | 99 + G7SensorKit/G7Auth/G7AuthCrypto.swift | 83 + G7SensorKit/G7Auth/G7DirectAuthSession.swift | 221 + G7SensorKit/G7Auth/G7DirectAuthStreams.swift | 117 + G7SensorKit/G7Auth/g7auth.h | 35 + .../G7CGMManager/G7BluetoothManager.swift | 60 +- G7SensorKit/G7CGMManager/G7CGMManager.swift | 5 + G7SensorKit/G7SensorKit.h | 2 + 592 files changed, 185204 insertions(+), 5 deletions(-) create mode 100644 Frameworks/libg7auth.xcframework/Info.plist create mode 100644 Frameworks/libg7auth.xcframework/ios-arm64-simulator/Headers/g7auth.h create mode 100644 Frameworks/libg7auth.xcframework/ios-arm64-simulator/libg7auth-sim.a create mode 100644 Frameworks/libg7auth.xcframework/ios-arm64/Headers/g7auth.h create mode 100644 Frameworks/libg7auth.xcframework/ios-arm64/libg7auth-device.a create mode 100644 Frameworks/libg7auth.xcframework/watchos-arm64-simulator/Headers/g7auth.h create mode 100644 Frameworks/libg7auth.xcframework/watchos-arm64-simulator/libg7auth-sim.a create mode 100644 Frameworks/libg7auth.xcframework/watchos-arm64_arm64_32/Headers/g7auth.h create mode 100644 Frameworks/libg7auth.xcframework/watchos-arm64_arm64_32/libg7auth-watchos-device.a create mode 100644 Frameworks/openssl.xcframework/Info.plist create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/aes.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1t.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/async.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asyncerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bio.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bioerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/blowfish.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bn.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bnerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/buffer.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/buffererr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/byteorder.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/camellia.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cast.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmac.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmp_util.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cms.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmserr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/comp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/comperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conf.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conf_api.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conferr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/configuration.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conftypes.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_dispatch.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_names.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_object.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crmf.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crmferr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crypto.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr_legacy.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ct.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cterr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/decoder.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/decodererr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/des.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dh.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dherr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dsa.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dsaerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dtls1.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/e_os2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/e_ostime.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ebcdic.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ec.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecdh.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecdsa.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/encoder.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/encodererr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/engine.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/engineerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ess.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/esserr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/evp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/evperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/fips_names.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/fipskey.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/hmac.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/hpke.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/http.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/httperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/idea.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/indicator.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/kdf.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/kdferr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/lhash.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/macros.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md4.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md5.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/mdc2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ml_kem.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/modes.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/obj_mac.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/objects.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/objectserr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ocsp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ocsperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/opensslconf.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/opensslv.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ossl_typ.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/param_build.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/params.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pem.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pem2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pemerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/prov_ssl.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/proverr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/provider.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/quic.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rand.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/randerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc4.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc5.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ripemd.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rsa.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rsaerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/safestack.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/seed.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/self_test.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sha.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/srp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/srtp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl3.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sslerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sslerr_legacy.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/stack.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/store.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/storeerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/symhacks.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/thread.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/tls1.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/trace.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ts.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/tserr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/txt_db.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/types.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ui.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/uierr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/whrlpool.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509_acert.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509_vfy.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509v3.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509v3err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64-simulator/libcrypto.a create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/aes.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1t.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/async.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asyncerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bio.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bioerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/blowfish.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bn.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bnerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/buffer.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/buffererr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/byteorder.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/camellia.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cast.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmac.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmp_util.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cms.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmserr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/comp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/comperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conf.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conf_api.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conferr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/configuration.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conftypes.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_dispatch.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_names.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_object.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crmf.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crmferr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crypto.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cryptoerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cryptoerr_legacy.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ct.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cterr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/decoder.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/decodererr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/des.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dh.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dherr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dsa.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dsaerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dtls1.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/e_os2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/e_ostime.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ebcdic.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ec.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecdh.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecdsa.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/encoder.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/encodererr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/engine.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/engineerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ess.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/esserr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/evp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/evperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/fips_names.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/fipskey.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/hmac.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/hpke.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/http.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/httperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/idea.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/indicator.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/kdf.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/kdferr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/lhash.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/macros.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md4.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md5.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/mdc2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ml_kem.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/modes.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/obj_mac.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/objects.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/objectserr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ocsp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ocsperr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/opensslconf.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/opensslv.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ossl_typ.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/param_build.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/params.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pem.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pem2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pemerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs12.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs12err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs7.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs7err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/prov_ssl.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/proverr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/provider.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/quic.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rand.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/randerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc4.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc5.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ripemd.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rsa.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rsaerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/safestack.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/seed.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/self_test.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sha.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/srp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/srtp.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl2.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl3.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sslerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sslerr_legacy.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/stack.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/store.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/storeerr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/symhacks.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/thread.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/tls1.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/trace.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ts.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/tserr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/txt_db.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/types.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ui.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/uierr.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/whrlpool.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509_acert.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509_vfy.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509v3.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509v3err.h create mode 100644 Frameworks/openssl.xcframework/ios-arm64/libcrypto.a create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/aes.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1t.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/async.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asyncerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bio.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bioerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/blowfish.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bn.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bnerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/buffer.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/buffererr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/byteorder.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/camellia.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cast.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmac.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmp_util.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cms.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmserr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/comp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/comperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conf.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conf_api.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conferr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/configuration.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conftypes.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_dispatch.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_names.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_object.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crmf.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crmferr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crypto.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cryptoerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cryptoerr_legacy.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ct.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cterr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/decoder.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/decodererr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/des.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dh.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dherr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dsa.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dsaerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dtls1.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/e_os2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/e_ostime.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ebcdic.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ec.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecdh.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecdsa.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/encoder.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/encodererr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/engine.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/engineerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ess.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/esserr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/evp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/evperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/fips_names.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/fipskey.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/hmac.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/hpke.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/http.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/httperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/idea.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/indicator.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/kdf.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/kdferr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/lhash.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/macros.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md4.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md5.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/mdc2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ml_kem.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/modes.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/obj_mac.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/objects.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/objectserr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ocsp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ocsperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/opensslconf.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/opensslv.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ossl_typ.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/param_build.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/params.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pem.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pem2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pemerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs12.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs12err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs7.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs7err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/prov_ssl.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/proverr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/provider.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/quic.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rand.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/randerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc4.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc5.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ripemd.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rsa.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rsaerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/safestack.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/seed.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/self_test.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sha.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/srp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/srtp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl3.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sslerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sslerr_legacy.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/stack.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/store.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/storeerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/symhacks.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/thread.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/tls1.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/trace.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ts.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/tserr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/txt_db.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/types.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ui.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/uierr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/whrlpool.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509_acert.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509_vfy.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509v3.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509v3err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64-simulator/libcrypto.a create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/aes.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1t.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/async.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asyncerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bio.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bioerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/blowfish.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bn.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bnerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/buffer.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/buffererr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/byteorder.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/camellia.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cast.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmac.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmp_util.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cms.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmserr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/comp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/comperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conf.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conf_api.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conferr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/configuration.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conftypes.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_dispatch.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_names.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_object.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crmf.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crmferr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crypto.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cryptoerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cryptoerr_legacy.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ct.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cterr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/decoder.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/decodererr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/des.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dh.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dherr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dsa.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dsaerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dtls1.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/e_os2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/e_ostime.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ebcdic.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ec.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecdh.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecdsa.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/encoder.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/encodererr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/engine.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/engineerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ess.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/esserr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/evp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/evperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/fips_names.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/fipskey.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/hmac.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/hpke.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/http.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/httperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/idea.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/indicator.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/kdf.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/kdferr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/lhash.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/macros.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md4.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md5.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/mdc2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ml_kem.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/modes.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/obj_mac.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/objects.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/objectserr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ocsp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ocsperr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/opensslconf.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/opensslv.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ossl_typ.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/param_build.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/params.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pem.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pem2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pemerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs12.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs12err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs7.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs7err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/prov_ssl.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/proverr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/provider.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/quic.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rand.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/randerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc4.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc5.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ripemd.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rsa.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rsaerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/safestack.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/seed.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/self_test.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sha.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/srp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/srtp.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl2.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl3.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sslerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sslerr_legacy.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/stack.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/store.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/storeerr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/symhacks.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/thread.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/tls1.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/trace.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ts.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/tserr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/txt_db.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/types.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ui.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/uierr.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/whrlpool.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509_acert.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509_vfy.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509v3.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509v3err.h create mode 100644 Frameworks/openssl.xcframework/watchos-arm64_arm64_32/libcrypto-watchos-device.a create mode 100644 G7SensorKit/G7Auth/G7AuthCerts.swift create mode 100644 G7SensorKit/G7Auth/G7AuthCrypto.swift create mode 100644 G7SensorKit/G7Auth/G7DirectAuthSession.swift create mode 100644 G7SensorKit/G7Auth/G7DirectAuthStreams.swift create mode 100644 G7SensorKit/G7Auth/g7auth.h diff --git a/Frameworks/libg7auth.xcframework/Info.plist b/Frameworks/libg7auth.xcframework/Info.plist new file mode 100644 index 0000000..141ce55 --- /dev/null +++ b/Frameworks/libg7auth.xcframework/Info.plist @@ -0,0 +1,82 @@ + + + + + AvailableLibraries + + + BinaryPath + libg7auth-sim.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64-simulator + LibraryPath + libg7auth-sim.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libg7auth-device.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libg7auth-device.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + libg7auth-sim.a + HeadersPath + Headers + LibraryIdentifier + watchos-arm64-simulator + LibraryPath + libg7auth-sim.a + SupportedArchitectures + + arm64 + + SupportedPlatform + watchos + SupportedPlatformVariant + simulator + + + BinaryPath + libg7auth-watchos-device.a + HeadersPath + Headers + LibraryIdentifier + watchos-arm64_arm64_32 + LibraryPath + libg7auth-watchos-device.a + SupportedArchitectures + + arm64 + arm64_32 + + SupportedPlatform + watchos + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/libg7auth.xcframework/ios-arm64-simulator/Headers/g7auth.h b/Frameworks/libg7auth.xcframework/ios-arm64-simulator/Headers/g7auth.h new file mode 100644 index 0000000..c6efa66 --- /dev/null +++ b/Frameworks/libg7auth.xcframework/ios-arm64-simulator/Headers/g7auth.h @@ -0,0 +1,35 @@ +/* g7auth.h — C bridge to the ported Juggluco/OpenSSL Dexcom G7 J-PAKE crypto (libg7auth.dylib). + All buffers are caller-allocated. Return 1 = success/valid, 0 = failure, unless noted. */ +#ifndef G7AUTH_H +#define G7AUTH_H +#include +#ifdef __cplusplus +extern "C" { +#endif + +/* Initialize with the 4-digit pairing code as ASCII bytes (e.g. {'3','1','0','2'}). + Loads the embedded partner certs. Returns 1 if keys + pin are valid. Call once. */ +int g7_init(const uint8_t* pin4); + +/* J-PAKE round 1/2 (which = 0 or 1): write our 160-byte payload into out160. Returns 1. */ +int g7_round12(int which, uint8_t* out160); + +/* Feed the sensor's 160-byte round payload (which = 0,1) or round-3 material (which = 2). + For which<2 returns 1 if the sensor's ZKP validates; for which==2 derives the shared key. */ +int g7_put_pubkey(int which, const uint8_t* in160); + +/* J-PAKE round 3: write our 160-byte payload into out160. Returns 1 on success. */ +int g7_round3(uint8_t* out160); + +/* ECDSA-P256 proof-of-possession: sign `data` (len bytes; the sensor's 0x0C challenge body), + write the 64-byte r||s signature into out64. Returns 1. */ +int g7_challenge(const uint8_t* data, int len, uint8_t* out64); + +/* AES-8: encrypt `data` (8 bytes) under the derived J-PAKE shared key, write 8 bytes to out8. + Used for the AES challenge/response after the shared key is established. Returns 1. */ +int g7_aes8(const uint8_t* data, uint8_t* out8); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/libg7auth.xcframework/ios-arm64-simulator/libg7auth-sim.a b/Frameworks/libg7auth.xcframework/ios-arm64-simulator/libg7auth-sim.a new file mode 100644 index 0000000000000000000000000000000000000000..32035f920d2c678a5d24e68002727964f06c64b5 GIT binary patch literal 47160 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 literal 0 HcmV?d00001 diff --git a/Frameworks/libg7auth.xcframework/ios-arm64/Headers/g7auth.h b/Frameworks/libg7auth.xcframework/ios-arm64/Headers/g7auth.h new file mode 100644 index 0000000..c6efa66 --- /dev/null +++ b/Frameworks/libg7auth.xcframework/ios-arm64/Headers/g7auth.h @@ -0,0 +1,35 @@ +/* g7auth.h — C bridge to the ported Juggluco/OpenSSL Dexcom G7 J-PAKE crypto (libg7auth.dylib). + All buffers are caller-allocated. Return 1 = success/valid, 0 = failure, unless noted. */ +#ifndef G7AUTH_H +#define G7AUTH_H +#include +#ifdef __cplusplus +extern "C" { +#endif + +/* Initialize with the 4-digit pairing code as ASCII bytes (e.g. {'3','1','0','2'}). + Loads the embedded partner certs. Returns 1 if keys + pin are valid. Call once. */ +int g7_init(const uint8_t* pin4); + +/* J-PAKE round 1/2 (which = 0 or 1): write our 160-byte payload into out160. Returns 1. */ +int g7_round12(int which, uint8_t* out160); + +/* Feed the sensor's 160-byte round payload (which = 0,1) or round-3 material (which = 2). + For which<2 returns 1 if the sensor's ZKP validates; for which==2 derives the shared key. */ +int g7_put_pubkey(int which, const uint8_t* in160); + +/* J-PAKE round 3: write our 160-byte payload into out160. Returns 1 on success. */ +int g7_round3(uint8_t* out160); + +/* ECDSA-P256 proof-of-possession: sign `data` (len bytes; the sensor's 0x0C challenge body), + write the 64-byte r||s signature into out64. Returns 1. */ +int g7_challenge(const uint8_t* data, int len, uint8_t* out64); + +/* AES-8: encrypt `data` (8 bytes) under the derived J-PAKE shared key, write 8 bytes to out8. + Used for the AES challenge/response after the shared key is established. Returns 1. */ +int g7_aes8(const uint8_t* data, uint8_t* out8); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/libg7auth.xcframework/ios-arm64/libg7auth-device.a b/Frameworks/libg7auth.xcframework/ios-arm64/libg7auth-device.a new file mode 100644 index 0000000000000000000000000000000000000000..b629465221782ce7ae31034175a8bebe9aa2a918 GIT binary patch literal 47160 zcmeIbeOz4EdGEVt&j2GC+c-iJlCV9pv5jr4Fn|y^EE^fHaW%Gxz_ui7JPa_r)FZ$! z$T(K&u|<2R11-AcwA>Tg;D+=d9o$13(vpNGlbEC==A_t%x}+sHW1HTLQ`$okYNG^4 z_xJ4Q*~2g(+sWx)_ul!4{ax#M)_T_a%U-i*Yk!fqt+w%=?Ke9=o|ElZ|2Pj7W%oNOj~=TkE7kCs*EMYnw5MxY zNH{P2k?^NN&BEcX6W%DiOIRQ*5grw~g?{1F!WV?UFMLTjD*USOyTbols3Fgk-`&Ck z!iR)zVTbU%a8±iB-D!fUN;*CBKYON0%=PT}tghlGDE{3ju*P0PGW)BczEtv0s5 zOL(X7Ug0sJSC}U8+r%h+O}s}11)C^fz#j8Q0w*kYrM5j zRvf84U15kHb{?wqHMh64J>c)CZE5$FdIR2r4ToBrn#(j#!y%8?*Ir;aY8w&P*WBPU zd`-Rnf}fT{szYMOHzeVu0Dx~4Nx zXGg2)tZ(!AOg93@7(d-o=Q-WsHC96S0*g{Q$6$i}7F*X9khv>9e&b)MRmdT;I4nvS+Jn~ix|+Uk69 zc93~b%`=`_ir{JXo{q*kQg*@jz%)7-dGL7lXAR1jNAj)RK#c;3ZJt1zw<*y6U~L&b6-S&- zU#-We4}|Bb>WtUlL>YDF96NHbqQuw6a;HoS1(+r(jx<(gdny`vDm(pTr7@!%@jYY4 zsC0TNjuh5lcy*kH;mSOZ5i|$Q8lAc%yLs)c-sT67G`dbZ3-a>v59Q@$AId$HU3l=I zGv9d-nKWYNo%TNIJ4W+aF6HPLXDlxNmAM}L+mLX+k#K=gNe_3N##9@tCewwdpOks> z*pWjhLWQ@tvhGZ=s{WHh=2MS+eTsf>+Wk`ph9W|FN(vuD;dY;Yl>0 zp*6glF4GhNpKgkS5ADV1gDr{iCtmb2>Vt;LxOhBOWyh=5{ie%>Jsy3?o{?1&z8Wlbgf z?>~F^!phNaju`2{PT0ERBH0LAQw?4&vA(u)^eUvEeBpho^?U?jC?4hEc1!Uk`nz!M zhE?2$Je6tHs!TcVx5j^FwOqXYq0G-jZr08__H*9C=e}L^=DEKus!p`N96mP<_jlm7 z!Tn9RUxC{K_Y~aUf?J0>1ot=K)?RiX-H~%oteR<1+V@)Q|MHTiRlWbL3*|U+0r@@8 zb*J@TK4*FD-N&qu+mQbR)Su-%)fMHR>d21x^cUH!U3zZ2_7ui%6)L5#8}-(hpp9>{ z29Gt~bm6m_m-9~Y=MuH2B1rEY>yA6NL!Y_-VpM+v)v1(|(xLDeutuA_DSjQctotqJ z&3bm|THb#~xSv^fUJN9btPb7B;onAhs<)SJ;;?T?d)SS9Yv-w6G)quXokVsQUy84j zZy0q_hO(Dlc=xfA3#g0rda>GGTlFMEel_&hpl+_c@ct`S^sV(e89A4}x*Pro@|KCZ zpz>UPPP=gVD(zD0)y0=~?m^k4tnX4@W6HWH{sh!**s7g>6M26N<$K$@i~E+YJzV^?Wd$qd<*VxOP}}#+}|w9L)occV7RBI!fn#D zJ96&SroLjaXjRm=-+%Tf%Kk9w;Gqkv9@mA-R$H`wFqTrOyrvzqtuDV}!B{{)dN%RG z`>4;KS@nw>>+FWr{b!5+fZEL%Lot0fwtsKchpD}&E#H6ke&nm{0@8}+=ly5Djnj9tzLWR{RZ|2Fysjf2aVEy-Gjre!2IYS}JLga5knf?-|j zvLp}bTAyVErH%W*7JW9%kt7hg$xV8iE9r9gywjBHkGdcdMs5g3J0o85M$)7 z43RrTo($d!Ip#|3Hcj(mJP_SeAodV zb3nfUVx_uk3dBFxBrf~m9~VEJecc3qkN9ODq0Yij`RZi4Pl1$Pfynbj?f|L0=}eUd zqHgY@#3-F*v;&;32$&8(?TyGk3*H3(wD?2f9|w0qJ|Oab5Od~TLGhnusz#9VSI2ah zf|S1ukvl{_k4D-Dd59a!Mg0ots}Ydm4>R4}Ak}XWycsM7DWAnmRRmrSc>xI1t~{p7 z0y7}TAMG1l4yK|&_?H-lpBNHOfUui52Hv7+*9?g~D6AG92Pquw87N$_$Q?q!u$!dk z71*r97^0&VU7xgsEH>+qKCF-EHtV7u(U-t++k|b>X0xu^)@;E9n{_5}HgPTy`lLwG zQj*O&nlzR)o|L2y*@x{`>$rWwK54%h{pcEG-2Ak|eT_}i%zao1GDrR~G(LTjC_Ggd zWb}E5^fCS~Ncaf}{}s`jCKQIam{@jwIiL&n&D|)xi%)h`^9h0 zM=r#t@I#XRUyvW+&GG&K+~hashc8NebH0Mg(3|tmFC@M>U(tCv#jghGL;aKd=6rDo zZv2aWJ_}c@KOs*4uW|k-VK+AXpU3Iv;_T5lj1B)gap7->^HVuu!xzW-AC2?3#rb7i zK+2ybAlBa1sQXy|&*Jot#N}tx3F${am#y>5`Rsq-4X4~fn>V-4Z1cP!_S^+$zI?cQ z<+J50onJIReHynsIDEkgv!}N4Nl(4E$xlZOIP&2G-uROo$iiq;H&H#6}XZ$49-A zVEj2uppX?8Bw`PC>am~rym~x1{q?Sgh(9-Re1di6I#zHmpL49o*yuugG`9J?b>?wQ zyuIba93J+YCj{MPQ>@;ugY@7Tg!> zxDU1BUKeL4R?GRzB`L41;C`3Rbg=J=o}G-G+qX*o-E@{>%HRK?9sBLRFX2oelBDGm zvG4DD1DwZSn9c#L_r8I%tU@|Bvf$hWdF|6QvVn62%e`+TfN$Sy#~Hy+-1DYhe1Y!o zi-X6)`n_+g;2t<+(Z=aMdxvGmXWm6PPER{Oy{otY_gzS12jcBC&Kugl>G({4qV|*h zmoHb1oO^uJnE<|fuR{6GzyEA0%3Ol7--kLld||ESTQT?6oUeb5-hapDmD1xfWg?%b zhr-t`U&gH=mkI0-zjry$teu&{$WH88AhiY6MHnPq z5caBdi*YUxOw^+7QLXFeEwT?@WW=?1rJmtxQTe%`Qko0Dy-*AcW?Y*|a z9+%WUg#d|R(>ZtGB7TYoJsj^iW5nLr%Oaj8^yX1+jlZ92=<`st5!|5GJ7&Xp9XQ~=EJvdM&W?!ZL%kvNVGR`(%B0cJ; z8f{K}I*2->Fy%JZh0ytP*uE{R@=q5leA0kVqJMp>etMhJ!TEDU#sPR1@&m^c)ag5#xm70 z_N#q`*5XSC@fWu4xk&R1tu6Z?e-<)YV_w>(RW%y=eMY==wBNctwuL=#bZrY;_hL>- zyGV29+bHiM=9Pc8rW`*g-`=9kWZ-%7&zh&;xQMXnb*YsXp?Ge%iX z_V&OY$2nuH0esf{?qj8BpAxjweOU7jN6((k^vKp4(%e{o>*Y1)!O@t$MR9%}7YApR z(K<5YOd<}~C*~29Gqn8S{qNJ!ID7`Ky?Z&2;;#31mS04;_5P`y$F|Hk*N;ul?62=W z_BZI8_>S#a9cTNR@jcOsF~*87y(wd@5#x9#&i9|!cYekkHzU|v(04C4VVEGsd;t|sIO38 zz`cX9PX4;<%~>fap5HG zg4vE#Pi8yD?vXNgY59MTHo(16Upp9(_6W+HX11lVZ{DF*nQgi+I=9GrjPL2l2E`}) zSfGr(7ulhHMYc&E5qUM_<{Yyl+TVDdqI{MkUvDGMdsk8apuV#Q^GQ19#eEkk?j_7e z)!Vc@&Yw9qVy;15Zq8K6sEyX=4wh56 z^|^y(H=#Y&Wkx&n@83e^*g{7Aj?$q&JYBMJZ!Y~}JLF~o ze=z#ju8U!`Kkc_@PV(;Fyxyc?Zc0a-L5z>?%j@@p_B1X3`>>G-eFXE>vv8aJl=4n% zA^G=iF&||jF3m^O|K39#zKMQK&loIXKH&9_??Wj)N+*P{L&#@r9a0+RoR>~%IEIcz zO0+L?9(eAjGX_*6EUuQtY~u(XfgWDjAj*t=4FP#7E>9mP4p%VxMY zvBxpz0#ioe%sp`Io`dAH=M2LZ?Gw!KYy*2_oGnloQ%>P%9yHGzV&xQWFY?7Q?ff>> z`#U#dUj1b8YNXP(8o^mp+ClC7zW1*^zX$bLXvJD$O?$QbH$NrkI%&o}miltqD~`{c zOw!JK&S^h+^Ou*S&+eGz>NfgE{5Zi_L>^ej_rW99lbgn8 z8#)*I_J(tzRXTq$>L?BC{N{NQ`!n=Y9w+8JSrna%u%=Rcl!y9o@JAm$_ffc4eb~C6!_Zv2F5`Tg&!gQ89qDQAb>NTYMSSOAgvSJG5a-kelZCXdlD+kQ z$ZO!bf9pQ7uIGM2c4%GJ@rSk9u<6ybgJ#}LUVcTxb3z;MB}`j%uW&p1{2kcGo9^uv zE#Cnd_aVCf=lciPp|d<%7mWLBoTXAd_nYw|*mD*CGNxVRToDoa`qB4;aqH|m7?Tv| zpV7AK_eEy?qKvTpVfXCjJxiXe_yXq(+t$9z6*1ouFc&)E6iybqtgTFZYL^P+iH zGGUBQj7Pa&G0SP(J7fHr`;0wUAGrS3@0;zg^?Af!{Pv5lFD~M~`NvbZZ>IT~_Fr5U zn(OJ_i0+GM9T-X0@~h#d^?~k9>7I$?-LOS+$_MRpD2^R|-skR>{o<~Ri&S@*uc@8Z z_4{J>lRGg#i=J$tO-&oTm!&n}N_x5vV;!{(wPCkWKfFI>cl`Z6&t>#XVtDuG_L|R* zec1gxm7U6P3FLK#?P9(~ez`r&dFoH2^8oh~?WddjTXl5&bC~}Wjl<(PggDf(xqP+#_%I#V{ow04)+wh)?&fFI<_NZLz`xese zmisf-ab7TASk}+Yczp19-B@qteahzZ(D<_iIzObeX%9yGxy@y!e$91b_Uo_5^}XO0 zX9|wEe*M+>I9q(D6CdY`Tl77%kC^!cW6w?dX>GYuT~Jv1qyA(;`)O!Phjyc}_lot$ zpOc&YkHS-3J*QKhP~EOS|4nxPqvM(1byXw1XdaM$eA-t^_oK$Ab?Zv!%+x1-CigL^ zs53Jk<{9jlFm`bNkv{~|y=?4WAp{xKSL}U*DKqaKXq;0Rb01FMX>l67UeUPf-mc~E z$N1TUdyGq0t>0s8!#;q*eg}FT@yvc|=8?z8`hJCM$Hu2Jko`vF|0Wu<=;yRQquf7XseVCUZo0juU+OxcieW4fU zo3ze4P~P?P2EO-fH0B_l&(`zLV}Gl)DdrjH_3sb1SOeDA4eIY&{~t!jA+ICF|IX{n z`q*Rna7;MdzZh{TUvHwGhE`(M8q`nhewOCAVh$hOw?;5;Q@lTlu}OKU{s24i`5D+S z7ii~ce@f#Vc8qk8w+;ReIox$xAZr1Zm;njzTLw8 zH5K`pPSx`J(Vpw=$ZdS1!}8Qi#Zm!??!8UA{_2lmx7=d?jO8iqHOKSZ43eQn_~E z{(Kk8^nY6TUUI}hszK`n}37v@PyW3L{oc?q{^~fAm{;J_UX3d63ScD4jISr*G(KpLtWq8Ac+9r!c18 zZs_fwNweBH%=WFrY=iy{v}*y%HfK$BZ;T_QBzdFuOiNn7tn% z%nctQ%uOF5%&i|G%pD&g%z=*(Cg&rB$^Qsp?%q1gJ81V8?K|n z=*!f%-a>z(b=Z=^b7HkcJ7~^-)DLNne-nQcj^-c=OZV}O==V2jeDAl_b4?cf*6H%O zD?isn{geJKTj_Ul7JL_g?>?W!GheUp_n+omM|+I!1TA0kWSsLp58GxQ&GQKC5x)Em z=Fu?b&Diyn&PyT{pCD%y^c)1uA>Fdi+MvUC)TaEo0~q5pFTT)KRQQ>+XM)Rd{JTvdr zx3Zt|T73t*DWBB`V&r>c+&9F8xhY0|O^o|vF=2MG+f3hl#^yPxkB#M6KQE&1o6YBB zV$1fydxD+V6VP)QmJ9D;-ZRgCsbBKEw`bK+r(YW`(f)?^duLEi%2z+wjqeZ5a~}JR zTK+Fk_x~sMNJ!h*&(ZS^bk;)ir19OruFdzO^qgPq4(k7O4xVN_=a*p*9t&X~Zlqgj zpQJP?t?ui!{DBzz8*J~~+BTghTW_Jg1)WLn-ekY}^Y+Phv7ec)<^RzY>>p130Q-eH z>|@`J{qYOfFHrugk^dd&^PxKJ+UlPrPj=*9Ju&jj>i^l;es!lE^<(U{P{)x!!rF@U zIr56FF!FiZ`JK05O{KLJ`8M}4c-{bOYx|b_n0BnK&(&LvwUzC1-!bo3c2GMS>9L&m zWIK)TY)$!_NQ?ISH|>ktlbxe>*}26zKJW3VeBmVQ7n1asH|@(%E~7lym;K7+d4bRK z&HROt4-4wZJa3LIo7vZ5`@%Quo7>8Yenw?6ziXlP898@i)4BgkSJUr9cV4_~-T8t0 z5i@TzA7AO2(Ad10=MH6-SSA6Y>$e=Ueqm zVvX3i&c)Uz#U=l)m@z|ZpE=)6ilklcOUx=w9A9|4zfJ@o&z&2vhh)$SEgq-%{~hD z58?Sa(~jAeA${X`rf2(NSg0UJeqvs+p&Qh_*Fm(9YgF);q z4VvGrt@kk=dsOadKIj|^emXb#pzr6*@U(Buv|#-O%{}b4|KI=rsruNCw*L*x4Q9L3 zJX9`yfZV@IANhZCc)G8Mc~;&ygTWXxo`J)@p|2L-@7J8boJecGysv`CJmzl5G@L~l zL|E{=v3_-F1@!(3_*2dISm6B>=~@pg_gK;ft=cet^o}1r>Gm$Gwxq+t<ed>{C`tzfQUVy;Rc{bUR+T&}X&dg$sCYx65W( zw%UU>%c>PK5zN!)@@KEM*wP&pxMz;_yRPWJY}utvA@G#NKBj9ux*cy@=%*YS@7UO- zg)j?+Z1(;HZOLZqO3;>VMTQRfe~79g&xYa^oI=%DQirYDm?e3@s!dz${YEkRjAHZ{ z#emi<#;UH3S?zOHOUP=UwOXdv3vl_fJr>IgI4DGx#x1spU7NAk!gg)NvTRwlYfDz! zxLsSbW=`0(F`I47ZdtLVK|YXRU$9$-6YTSL%Xor)&Tg4Z2;dibiS_}zwwP$|LXado zUaC2jWLrqmrjvrOKW(?o+AV8#`}j6X&o=wmHp}2P`{*{y@V3;L`W&!Wx-H0shQG9h zZQ82EHn$D$vMO5Krp@S`OSoEXv)i-yrBJFb8QmZY(&Z5OOnW(KN#VHmO=ENM9ZkvK9Xn|w<7we&EA)&&D(6jM6El)zLcO%q8<~psRZi3vx)ZZ zBuf}om}FT_v%Lz8T9(E-mkMeNY za#c@4UU#AvO29Zoo^G-1!&j3S=9bh23kGnxrY%`)YZi3G_2Gtadn_pq+lgKK=?C>$gqKZ(b$c)&VOh7Y*%BtKHb^F|$ZF7LkJz+vn|;oP z3T{P5L9b3oKA9ZD;jHEkKfPEp z%ZS;T)1Fn+?5PcO-cGqZthD-?+QLK5nu6RzzQVjhr!ViIH_v&f&{vn6TabUS_F#5_ z*XhglI_q)|X4fC|)@Roj=HuOx`Gp7T>uPfgbG4W^1l;Y=%r`LPIvP-VydZG>JqP9w z+G|@|Q6>ED*iZQ~@rvBrm7>?k9%yfZ|8}hsZf~HY%?Eq2793ij#nI?(Z;VOjq_3^z zNOQ~6sP+b5MO#Zty#s}+Fy2b&fN3W;n$dE<{^jg1{{9c&{ZZ-D6QOtBeeb2fZBL}! z@b1??o%Y@3>z;q@wl6(n`()ZHPyET@ABBBK|1Fq)?83Kx_^p)xwe7^GPkpz`yZGM+ z>l;$f9li5A)}OTex3#j4$1Uf6GW17f|Kswj4}bibKdJcI_y6omJ!Z~q?7(>4_z}4= zw6K{+SLKiSyLrrp#s`xPO$26e7UH@pdOIv*zaEW0OcMcpB!eobHCHe{kg{i1M z`JfS78@_@*UGyuW$23A8@v+Ac$opTgf79?xVAOt=#CPEVJ|i4sQ~gwk9xFM$hbbDr zT;i|UIU*Kq4SSwV=^w{tkv{WCKem4ABz`t-YUne8n6dUJMUU?wjZZbo5vzCQv%GvK za}tQHzli8BL-doPx1(`l%Qq|br%If_$=MTOoo1U zO#A1Fe)SgCQ|1vQTEC^H{#MpY#y8d9n&{^dEH=Jh;?LpXSo&Nk{=Dezas8uP;)k(r z(I+FW|F4SPMlZC)XECn*lM7iM$z~QHbNFn^zeC1xCI{QpKINh>x`MtF`hUdxv>HKl zNmm_HRfC5iKMsB$tO7CAhKUreLi|MdRVnxe!r=vg)CjHurpg0L;Lm2NEbu<~Gnpz4 z48orZhVg!|6s9|w<;o5oh2F+g8u&ScTgx@*UIj6CxmLg-$d{S!C6=oQ=!G874QPJ> zJ-!Dcx))fk=D`~1=a_01{7ZzJVY;V5ymZwy1%3_k5Ys)$ay0?sRT8do@Nb|WW4cFK zu13HH=!cnV2>fe=8)Ui%z$WPX!7oGJ$8`6wTy=wf=)1s4ID<_0S(d9#uo3zIQ?-H< z2={{H3i}x#T5eo z4*E%^dxGU^96SsC82CNtN15&smaAd#S?Gtr{{j6V(>=g))en9O`aW<5`W~jco8_tt zd>Z;7__xrXWx6|At^(j0=v%>WL+@w08(FUEzz*oE!EZr-is?Sia#aNepsxU@pm#Cd zuk1*UtR9hQU+N4}qi54>H{Y zELZ*D274XssoQhUk#2x ze~Rfo&T>@+J_daS_+O!SG2P`XSEb;i&=-S$27M9JUBGgc2UbC!4SoUoET%h?rtErBl~ z9Icz6dlCE-tV;{v>)<3v^)QvHlGRTuaJgby;^tsvEhpQ)-rs*h7lGZ$$I|;)7=kJ{q!+=yFhA}AXB+SUoQGA(1P%p%-(d6>MM=uP5~)@$xOE$ z#CqqlG1Y1o&r2&zwE$B2=7qB$_3s&w>`XJ=6Cm~DF_6kTD*6%84}etOex~XHsl45+ z_jfVfXF-bJDe{2G>p+TM%~Z!hieJTge+AQB4pRJ5kr#_R8>IMIOqBsrd!&E$R16iDGh%-&Iu!i_L{2SC~{ zHL`xNj@j#C{a`t>w*aK^l*e>ufiJ?J$#iFcWXHi&$so-acBY%|3x5ygngwZnnGsG4 zhrvd~?-%wlRTp>y@=lQES--Gam#G1^U6W;_qatMv>PsRS`Icpao2K9!UKxo2fFueE1zql?vLi z^b<**B7P$LYULKr-!e$^&J;-X9Adirz@v!Q!&CvV0{&K}@`KdBT*6GDO&HE#{iJX} z7!XznvxIix;>{9I*e`4qRtSqgEAmsoRH-24KZWUz+{EQu6fS@?@6Ll*a$IvvH3J&u z2Wj35iGEV_6CjpW*EpC9{U}KD-U#bm!%Q^@=0NTTDIbkYcLn$sIOri>cDU8u(M0Dg~r^von~=HNSrAjXtCOkxApW@;nd%fs z?R;G1RU)qdkwsS#NaL!2sj@+8?<^4iT$xOj29ljrkkU(Gs$>vLpUcivD>tycWu{sL zp;uv$?9PJ}e~zhUK(adxQn{v>Dg<5w|0I|K{WwVR$5`(gWvXG2;tzpTPlHT%57>bC z-Aok(DgIg3`#YKL3h)HNxtOXLr1>&Wn9Wq_Al+Z2F;xoqG1yzXp1B16KKvn&>UDyt z#z0h!Ym}*m!DH|bF;ySvfxm~Tf*{prCsVb8R9}9kss^cEjx$vSNcHAos&cRz{!*qY z0NwECF;xcmoA5iBDg}HJ{$!?FP3QG$h3Q@bsa_*Y_aaz}@L{GJ25DX&VyZrn=Jy_^ zsuO*+=qp6;5`6*qC#bhHkk*YNagKfstFiV&Tl064V?V1i!{iQM8$smmv z`r#y~*3vlKDoEj0nC^(k7eyWx`5gF?;s>8$ssG2M&1xxa;(Y7{(ycq2?T2vWQC3455T6>Npv&r}s4^*a|+ zWr1`)m@K3h-NCPxcX2nf!OM~vYCqhGZX4(t2?>>tbi16ndx2tsh;OWJ}2@SkkXrG zx+g)S-!Rpv=to393{pD`f@FVy>Fx(7E5C{tQUvnP#dfkosW=r13WaQv7k&yT+Jm7^L_^Af-RZ zboYRiem7H{1u1@j_5N0-+XYg8E@$@Ufi(YTGnEGZfXekTgYG5p1oUCB4P0QVS&>f( zLrgUazJ+xAK`X-dF;y$LAAUbmodQ1%|8b@&1wRFUF;iuMXW`Fes#Nef_*0lF8GIIg zJ5#M)$NTG5riy@%K)=XTA+R0(Nv0YD-SCexRSy_|zZIl;#m`hOk(V=7Hh2p9ET&2a zssE%hRWeBZ#m-b~XiVBqtuoaTNa;qHY8LE(e}<{XKw~~)sv*#rkCrBXnW`Hk zdtFTB2mcuD*T{5NgVaw>G2JfEXn$sJ7HC0#$Yl1WgFis{G^TqIlO&Dzuy8>*555lh zG)Vnpim4{RHu%SxYDE0Q;_m^CbzImb3<_I8vgc>2YLTA;DZMI?#(4!u<#I9I#Ud{f zd4b5YM4l<~43VdaJQbw+O<^huc0xZSF0ek%L*>2n!A=j8eb8R;x97Q0!Z=a zLCW78(>(>!_zW@C1W576S??cXx<^2YKP>Vgk@tZVzlW*1K#Ct^z5guJ9RMkQtH}K# zKLt|!<4jcnQhXQd{pCz|21xzG!R$>1KZ$rLOch39Pr$#xRI?zp_mnWiRO8??kdHCd z2>3ryAHz)dAowc$159^6cs;`RF%{mcL|b@Q7gL=Dv9)z|GF2WfflkjISRT@a+CzYvEz~>Rq24c(NqQ(W)LNd<}^Gr1dQn+alTMgF~ zQw@VH@OKG=Om!Bd@U0-0ewUxA8by8z#FFVc&Qw(*F9)&IxJsGI0ir2fX-t&@B8#qM zrm}-HKiHUR=_;OI=7h6MH3d?+LrgUSQo9c`d;36|7kZezLGX{!UT2x^07(72mFdPi zM2z;XW2!8W#(AbN1Eler3Q{|zFqKXG^dF%@uIT?qrFe_N1(3%3JoqBgn`64CLF(sI zA`gjt45WTO%2dPP_YrQ0_5MMoyA!1H2AI8#AocS)rYZs{pV`7Jrb+{8U9kx@rouzY zhP`=a?<7d|H^J;31*!fC)MfeAq?g5b2Cwf5}sJcOFpR>YFrYZs{{Q{=S20w=K zr3>k098}MEKHI1_JmPGmgNM3_?gfzg%RE!ffK-puBA*g@2&8^C3DSIrC%}z*9Amv} zl&OY6ia!JzrV4`84rf{K?_|2mL8|vsrb-omiumV}`1^ucrkVt4J)K~x zVUX72A*LDtF?HY72~z%BnF{Z_Hp*ScR0SZ7$1D&-#g)lac98Y~Hl|uh{j_%4vfXOO7^tamjE>zJwnr113r5B?C$1}R<^Q#nAg zpDIjYDm+$i#KVL223J68AN)?vh#zJu{7!`PE&dQl=}ij9L26I>e>@)2|6AJ^EP% z=aUuqj)PQxRjl_{Fx^=ovNo8>>`e!${?eFgN#lKVgz26G z--ewKh$=Szzfn*H;U_z1nZ4B@OblX9BlcE+RDUj}yA-7I6f@mL;M1^Iz%>5f(H}sc z2|ws29>G+Y2L4|l=5p;pV`^kSjUS|wSS>6T7J$fCB8``SLU zg_)eo+k1Xk!vCk z!?=+j;RHzO;rCaZACV7;yiepokyi_gg#{q~C1&G7`ErPy`Yp**L{1(`cNG_s(@#Yx zd>AD8yvV6vlRPBy36YP9d`RR2BJUG*YyE?P`B%|`W)P09Y6fjSMbXt zyWV5%v+DY+6~A86=WPo%yFO!^wdwklZ5r2Q+X}8-3Ec_0KAbRuYgb}-qOSKR4kX(3 z$;1%c^grX;^>8A7)ut~eu0Rq@>PoWf{Ym(Rn@;~vF6<}G;Tld_#C6m@W=EK9UE3hv zHn$CSwuiRc^|9^a+mYh-6}X448oo-`Lsv~*W!LAfn#VPA)eGx>zuK;MUEO^(tX(~a>%`TQxDH)Ce07pOa?R*9$n!PbxGrD40?Fbv5x8fsox2tx zubsqo=-Odi`%?N-Q0kQF6uZ8fvIckebv@T1t?P!aOVUTL8^d+#x@lbJuUmjTa^2E( zu<)_TkJvjPi{8Iua0lvV#{jMqJ0@|R-?4z}VrnE+*H=4(orh#;?=r5dd)IL7+Sk1=N$=a&zt64@?;F`?vkvSV+&8pO*T?pa5 z^=OUjBei#uIMsFH}d+DZSTt{ynyBYs8^vxk$7jKT>x_a{(u6-H(85X@eqb~#f zBclh`k&IDXLm5-J&SxxSpd7dK--6oAScYWbmhde$>)I{BTf1&W9&eq&b?nyhThX$& zuE5=WThDFi54R27mZXo}HjeA`Z8MO}-?nfY@_5@4+-tW5GhsEeKNB^cISlt?W(e2$ z%!N$Ub>=eMYnj2@F&1v`za69O_C;KmZ(qSRct_VA$n_olcOb<(R&ZUsBLd079bvdf z?i{_-t`FQfcqjVmos)3S-8qlz^qn)fF5kI=>wMNi7Fr@}HVZk-8qb2wySnZ|-m;b; z8N6!r&1# zuH(5Ax#-Ec^SO3CnAequSh=f^EafieCh6h4#XO{Su=^ld;ouCeV+Y3%qKpSu;11?@ z zf<;_s3TAN~DjY6E?=S2tL{17kt6ibbA)zQoM@mLU9<^sp9Eki#}OA1@~le z2-nf#F!$K0I?6b$nmfeM$PlePLY3OD9S(dzJQ;+N_b%rP5{ihRa6E(6h@z zxXzW$mm#mevGN;9`o#T{_uH&}_xImFa6c>_={sVxhK@`fnLdJYxcadtpKwjOLN2tZ zYaG}4hZY{P>*Ey@73fbDqZKx5cSTP{Uj^E|Vg}d6iU_VFpB()pM(ro3aP2;wA_$1uZkI%rp@OT*4<;PbbSvVCwg&uZl`V{K_)c7fz zb?DUasS)^APpzFo?%Y#uw1#`ajr_XD+(~-BdjRfv_X4gGu zGq^515yo}tiRCA3)}W`$)9pcBcqVY2@=SX$=XsXlUh@R2G3QnH<2qD5T#X!5kHbAx zJ&o%^br{#>>J`XGyrW+9bnm1W;T!uKQS!#VM$D`YL0p#`RvIk&Qo~vU=9`8^xEC6h zaGh%iLo(Aai)*N13X;i&8Mwz9#^D}qn8bCsVGNSNh9O-08u}sWX&8h%*w6*{T73_$ zEA>H0mg<-5VZVN{9`@^(;GV6YgL|fa0oSSeSx6@9L%5FBk3%wAKMD6x{V?2v^`p4< z*AGF`Q{RVcu)eE4(YoSW^>xFys(;>xO%&Zn+Nj>sISvzb*{-d|d?Y znYvlHr|ah7o~#SOJyACe_h{W1+#_`pa1YiE!97qn0(VbcAKcw_18}d^2H{?4tl$X1NCTYgTJuza|X#d`$%InVMO+r)%cno~#MMJyA0a_h`)+ z+#@v;a1YiD!97qj0(VbMAKcwF18}c-gK)2UyK!CiuAyf|yh~opSB;a6SScIFaUE$K z#dWrE4%fxTNaMZN;U)$*66R+Vj%$)Mt^5-#!C9B#H~)WUyu(Sm2KSKW|8HHD0zYmH zy7D;u$vFS(IOin$tCGfF;joXw4@>xF@teOJzD@k*?}WdLLqQ5}{w}yp{O0d`jql%( zpJxg={o{6o$DjQ^_8%6%`Tt4Zfx}eFkNNw`>)|GUIE%yAP<2pBJ zXa3H2mGX=9{|`yuBmO@WKYedS`u`&SKco2Y|5E(_Ci;TA+5Vr2{}bXrBH=$R;cKb< zi2o^mhd)-|4(EOH9pgZ~iX%IZ6Mg68{&{UgqzTzasg6QS|>+^ycr9k4pWUza#!#vIqO-?}q7o zobsP3`Tf559pVp4e$3wizexQRVG2awA^vRf4@!Q&C;7<`|38YKzV}7{u$jMyEz=FZ zW;?*`RVeA1zbmHi7b(By?}%TL^ok|DFN;0%_p|*H-uzwh{bqg84L3ez(!LSN4}D)u z_RZe`CyC$u-S7LL`?3up{w#j&iWOMp!)ZPd` zAnDWhnB@P0_)m!cFT`&l`zUjDF~=Vx`v`B&7meh{nX*ID-%oxV44VHR{Z&+7G5#sC zkNL=)f9?|f>S4D3d!$GEn&X?kKaDMaG5JvkAxZCFk(X;>BO>wf|DzcGu=we{1f)0f z|2s&V{EbqcdyzNtw~GI~=!4=<6@91p|4{68i~lY0_lcj*|HYLaA@MuK-iY`g z691U^Pm6y-{Qn^KL*j1~d(+~#ihox8e=7cY@!ur&=A}OH@)sk2v*I6;{C0}}cf{W< z{?AJIp!jD+-zfe?Gr!{BX_i;~4@&;W#DAArU*dmO`~%|uTd_AH{*RgE7r$5h)8g-t z^ulI+Nc@QSesE zioaF-_`imY`p*`Bs^|;E|CgdK7XK}h-*WMPQPQsv|F=YcT>OuTzgqlw@v3&MCHh_h z?RD{+@1yuK<`U8`-NgC*QZoA^7{~PaCguy$o9|zs@4?BRjqi);^LeqyK75Ccu}gaM zeGXv>-?xWDyh!?lpq44)cNKOhJpCSpKC`C(7WQ9;j`VZ4vH#2BH{Zu_PVAfS|L7Gx zor}{4FA6f^4?|9$90_l}PlUeDC;K+E1AXZG4)Rw?{O^f9nn&o9C;GGL?Eg2>7m5F7 z(VOqf_<`un_iH>Z{xzE8@Oeu7^!zh@J|}*9KAJvHNqw2~>yz8@e3K=ltw?@;jPwvC z`ay9w_+O9n|1s(}HavZg9qZo}=l?=n_`i*_cPApp#{VMn8|!b1i+@*~{gODpJI=or zm)>v3+l%vmG0wj~&fXE!Uu^#V1>+^wPv3XP`X7r6e^*@ju8T{rD9(R0F8}#){%7O- z@5QBeL!7=Y&j0&y>3uaWe_x36pNtFtI@YS#@*a(=uYZe6@4dMG=8cR07jb@DT>4*) zOaJA#`hGet{ZGc(I~P|!560QUcWfKVL(hZ7mhVS#@k^nM)nA4AF4mtLr?Dtz3 zG|%C(N>95l;PExrwms7t@ZeQing=f?J5qMSkhiuqo$&^I8{~LbSGH$sMYFFhJ~Ua! zi_iQ`wObg8k$X;_bQQuhUb9wGb^J_OKEJ2;g z0gE>@;l_~BR@^Awx-m9}*}6TW&@r)cSoG zKfbm$Q&!?xw`9y*rWvlFx{g*uK$Dp`qdltjbX14Qw5F+9qVk&?8`z78m}YZoqCSL+ z@yUxZHztY~RGNvJ&h=q(KRPa}*WVFoMqe*VZAaS~AB&@{^GItQCSWrxEmUZ8Pt7wP zBe190dpfFQLtCp+qBd`H9bFot5y%=%!qFsU8CjQ^OG#7$J5l%1in50*D_!dXD4Uy6 zIc9FTHN15!fHuY{mG6z}+B<4E9va-33c11CJ+&f7m9#f{a}MU4=3^>OdXq7*qvDvZ z1jWXFL{m}W=_lJ-I-2Wf0yQW9jTSsc=i<4n0Ns{X$+Ck{F|E~GDo&EL0p?rJlogn7 zN0s?+YgM#|qRa9+OpHp=ZxJ2Sw5O(}C4kAzOMcAe`A8`6bjz8tTwEoEcwx<_@Iq1O zJl^(pEY+U2K(mnqHv*+%c7H?6eV;=Z9p7+DuaC(S`Z;Te9;{W^7=HfnxKwWYZ|Z~#e}3-|%rkJNP3UrF0hLrPD((GSVdY`V;v`jpS8 zhiG5p;b;`mk0FNQ`Td^g{wcODctD$#!K-?k4>MdlOmYp$QeXR2M^hUKrIlNneQ0G| zNkl!5nm$(eNb}Q87~{u$?H#8%e_PHMF*)BfSs3lPK2sP$&1r&55i>^^S{~#yDHw6t z5!)Gz(il2pa)^n9>A;YijLr#$6cYl%Zk`RO^bf~w=&;MHa2~4kHMh64J>c)CZE5$F zdIR3g;ha|v$9)HujvcA=7%@fSj7pq&r@c@5j?s*fOB>!}93rmUR_1!}FLnc0nICH~ zufECekKg}Q=4^~{(1_u5#=M2t+~ZX`HwMi!f)<*a!QA-lI6cvr9Q5HWs_J0Fq1LA6 zGAg&rnREI{dL8k7O$`rXf4gy`iqzvWAba0~-nKUHGY=kVbe+z}{?@RRlW*o~^ZShB z?3#JJvNdN8I(ziB%MvcHz17=nBFsc+i>eJV^PV;ZJuu9uLO< zuWKW4y0uVyprpj(>#W6M=?Qpi{Jxw*7^hw40cX?&2f`L?3R@5j3Kv2g+7u#Zv&eZU z8VfGO%HI?#pNAwbi<`7Ln1IAHwXrs$g`Ih#e!gQh_^U?y*qnaz@%%_3)> zX@*>|le@{z7Lv^(XKvI^)CC6&=4>{YV}{L*x^gxLb4HcxE{I^#xyj^aNv<=R$Yy0u zRJrbQMrF>;6WG=h-GSN`f87Bi_^;Q)*9~|YIy*hBzP9!j>{put&v?#c8%4#H`+9En Prb6dz7CEEg;nMyeuIMVG literal 0 HcmV?d00001 diff --git a/Frameworks/libg7auth.xcframework/watchos-arm64-simulator/Headers/g7auth.h b/Frameworks/libg7auth.xcframework/watchos-arm64-simulator/Headers/g7auth.h new file mode 100644 index 0000000..c6efa66 --- /dev/null +++ b/Frameworks/libg7auth.xcframework/watchos-arm64-simulator/Headers/g7auth.h @@ -0,0 +1,35 @@ +/* g7auth.h — C bridge to the ported Juggluco/OpenSSL Dexcom G7 J-PAKE crypto (libg7auth.dylib). + All buffers are caller-allocated. Return 1 = success/valid, 0 = failure, unless noted. */ +#ifndef G7AUTH_H +#define G7AUTH_H +#include +#ifdef __cplusplus +extern "C" { +#endif + +/* Initialize with the 4-digit pairing code as ASCII bytes (e.g. {'3','1','0','2'}). + Loads the embedded partner certs. Returns 1 if keys + pin are valid. Call once. */ +int g7_init(const uint8_t* pin4); + +/* J-PAKE round 1/2 (which = 0 or 1): write our 160-byte payload into out160. Returns 1. */ +int g7_round12(int which, uint8_t* out160); + +/* Feed the sensor's 160-byte round payload (which = 0,1) or round-3 material (which = 2). + For which<2 returns 1 if the sensor's ZKP validates; for which==2 derives the shared key. */ +int g7_put_pubkey(int which, const uint8_t* in160); + +/* J-PAKE round 3: write our 160-byte payload into out160. Returns 1 on success. */ +int g7_round3(uint8_t* out160); + +/* ECDSA-P256 proof-of-possession: sign `data` (len bytes; the sensor's 0x0C challenge body), + write the 64-byte r||s signature into out64. Returns 1. */ +int g7_challenge(const uint8_t* data, int len, uint8_t* out64); + +/* AES-8: encrypt `data` (8 bytes) under the derived J-PAKE shared key, write 8 bytes to out8. + Used for the AES challenge/response after the shared key is established. Returns 1. */ +int g7_aes8(const uint8_t* data, uint8_t* out8); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/libg7auth.xcframework/watchos-arm64-simulator/libg7auth-sim.a b/Frameworks/libg7auth.xcframework/watchos-arm64-simulator/libg7auth-sim.a new file mode 100644 index 0000000000000000000000000000000000000000..4c4b3ee82e94e113907037c4bccf72017f690a4e GIT binary patch literal 47160 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 literal 0 HcmV?d00001 diff --git a/Frameworks/libg7auth.xcframework/watchos-arm64_arm64_32/Headers/g7auth.h b/Frameworks/libg7auth.xcframework/watchos-arm64_arm64_32/Headers/g7auth.h new file mode 100644 index 0000000..c6efa66 --- /dev/null +++ b/Frameworks/libg7auth.xcframework/watchos-arm64_arm64_32/Headers/g7auth.h @@ -0,0 +1,35 @@ +/* g7auth.h — C bridge to the ported Juggluco/OpenSSL Dexcom G7 J-PAKE crypto (libg7auth.dylib). + All buffers are caller-allocated. Return 1 = success/valid, 0 = failure, unless noted. */ +#ifndef G7AUTH_H +#define G7AUTH_H +#include +#ifdef __cplusplus +extern "C" { +#endif + +/* Initialize with the 4-digit pairing code as ASCII bytes (e.g. {'3','1','0','2'}). + Loads the embedded partner certs. Returns 1 if keys + pin are valid. Call once. */ +int g7_init(const uint8_t* pin4); + +/* J-PAKE round 1/2 (which = 0 or 1): write our 160-byte payload into out160. Returns 1. */ +int g7_round12(int which, uint8_t* out160); + +/* Feed the sensor's 160-byte round payload (which = 0,1) or round-3 material (which = 2). + For which<2 returns 1 if the sensor's ZKP validates; for which==2 derives the shared key. */ +int g7_put_pubkey(int which, const uint8_t* in160); + +/* J-PAKE round 3: write our 160-byte payload into out160. Returns 1 on success. */ +int g7_round3(uint8_t* out160); + +/* ECDSA-P256 proof-of-possession: sign `data` (len bytes; the sensor's 0x0C challenge body), + write the 64-byte r||s signature into out64. Returns 1. */ +int g7_challenge(const uint8_t* data, int len, uint8_t* out64); + +/* AES-8: encrypt `data` (8 bytes) under the derived J-PAKE shared key, write 8 bytes to out8. + Used for the AES challenge/response after the shared key is established. Returns 1. */ +int g7_aes8(const uint8_t* data, uint8_t* out8); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/libg7auth.xcframework/watchos-arm64_arm64_32/libg7auth-watchos-device.a b/Frameworks/libg7auth.xcframework/watchos-arm64_arm64_32/libg7auth-watchos-device.a new file mode 100644 index 0000000000000000000000000000000000000000..49ae097b41be028d20835ffdf96a9471728faa43 GIT binary patch literal 92416 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 literal 0 HcmV?d00001 diff --git a/Frameworks/openssl.xcframework/Info.plist b/Frameworks/openssl.xcframework/Info.plist new file mode 100644 index 0000000..13d6979 --- /dev/null +++ b/Frameworks/openssl.xcframework/Info.plist @@ -0,0 +1,82 @@ + + + + + AvailableLibraries + + + BinaryPath + libcrypto.a + HeadersPath + Headers + LibraryIdentifier + watchos-arm64-simulator + LibraryPath + libcrypto.a + SupportedArchitectures + + arm64 + + SupportedPlatform + watchos + SupportedPlatformVariant + simulator + + + BinaryPath + libcrypto-watchos-device.a + HeadersPath + Headers + LibraryIdentifier + watchos-arm64_arm64_32 + LibraryPath + libcrypto-watchos-device.a + SupportedArchitectures + + arm64 + arm64_32 + + SupportedPlatform + watchos + + + BinaryPath + libcrypto.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64-simulator + LibraryPath + libcrypto.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + libcrypto.a + HeadersPath + Headers + LibraryIdentifier + ios-arm64 + LibraryPath + libcrypto.a + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/aes.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/aes.h new file mode 100644 index 0000000..2b6c683 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/aes.h @@ -0,0 +1,109 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_AES_H +#endif + +#include + +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1.h new file mode 100644 index 0000000..b9b7dca --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1.h @@ -0,0 +1,1125 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/asn1.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1_H +#define OPENSSL_ASN1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1_H +#endif + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#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 */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) +#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) +#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) +#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) +#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) +#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) +#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) +#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_freefunc_type(freefunc)) +#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) +#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) +#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) +#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) + +/* clang-format on */ + +#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; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) +#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) +#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) +#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) +#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) +#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) +#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) +#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) +#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) +#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) + +/* clang-format on */ + +/* size limits: this stuff is taken straight from RFC 5280 */ + +#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 is 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 **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); + +/*- + * 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; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) +#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) +#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) +#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) +#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) +#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) +#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_freefunc_type(freefunc)) +#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) +#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) +#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) +#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) +#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) +#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) +#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) +#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) +#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) +#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) +#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) +#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) +#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) +#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) +#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) +#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) +#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) +#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) +#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) +#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) +#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) +#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) +#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) +#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) +#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) +#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) +#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) +#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) +#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) +#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) +#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) +#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) +#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) +#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) +#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) +#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) +#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) +#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) +#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) +#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) +#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) +#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) +#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) +#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +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); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); + +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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1err.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1err.h new file mode 100644 index 0000000..9175614 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1err.h @@ -0,0 +1,140 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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 +#include +#include + +/* + * 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_GENERALIZEDTIME_IS_TOO_SHORT 232 +#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_UTCTIME_IS_TOO_SHORT 233 +#define ASN1_R_WRONG_INTEGER_TYPE 225 +#define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +#define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1t.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1t.h new file mode 100644 index 0000000..aa40de3 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asn1t.h @@ -0,0 +1,935 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/asn1t.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1T_H +#define OPENSSL_ASN1T_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1T_H +#endif + +#include +#include +#include + +#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 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) +#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) +#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) +#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) +#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) +#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) +#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_freefunc_type(freefunc)) +#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) +#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) +#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) +#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +/* 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/async.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/async.h new file mode 100644 index 0000000..9044385 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/async.h @@ -0,0 +1,102 @@ +/* + * Copyright 2015-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 + */ + +#include + +#ifndef OPENSSL_ASYNC_H +#define OPENSSL_ASYNC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASYNC_H +#endif + +#if defined(_WIN32) +#if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include 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 + +#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); + +typedef void *(*ASYNC_stack_alloc_fn)(size_t *num); +typedef void (*ASYNC_stack_free_fn)(void *addr); + +int ASYNC_set_mem_functions(ASYNC_stack_alloc_fn alloc_fn, + ASYNC_stack_free_fn free_fn); +void ASYNC_get_mem_functions(ASYNC_stack_alloc_fn *alloc_fn, + ASYNC_stack_free_fn *free_fn); + +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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asyncerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asyncerr.h new file mode 100644 index 0000000..41bd4a0 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/asyncerr.h @@ -0,0 +1,27 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bio.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bio.h new file mode 100644 index 0000000..3a0c96b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bio.h @@ -0,0 +1,1028 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/bio.h.in + * + * Copyright 1995-2025 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 + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_BIO_H +#define OPENSSL_BIO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BIO_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include + +#include +#include +#include + +#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_DGRAM_PAIR (26 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_DGRAM_MEM (27 | BIO_TYPE_SOURCE_SINK) + +/* Custom type starting index returned by BIO_get_new_index() */ +#define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF + +/* + * 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 + +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +#define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +#define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +#define BIO_CTRL_DGRAM_GET_CAPS 86 +#define BIO_CTRL_DGRAM_SET_CAPS 87 +#define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +#define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +#define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +#define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +#define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +#define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +#define BIO_DGRAM_CAP_NONE 0U +#define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +#define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +#define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +#define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + +#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 0x8000 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 +#define BIO_CB_RECVMMSG 0x07 +#define BIO_CB_SENDMMSG 0x08 + +/* + * 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 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) +#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) +#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) +#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) +#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) +#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) +#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) +#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) +#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk), ossl_check_BIO_freefunc_type(freefunc)) +#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) +#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) +#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) +#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) +#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) +#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) + +/* clang-format on */ + +/* 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 + +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + +/* + * #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_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +#define BIO_C_SET_SOCK_TYPE 157 +#define BIO_C_GET_SOCK_TYPE 158 +#define BIO_C_GET_DGRAM_BIO 159 + +#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) +#define BIO_set_tfo(b, n) BIO_ctrl(b, BIO_C_SET_TFO, (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_get_conn_mode(b) BIO_ctrl(b, BIO_C_GET_CONNECT, 4, NULL) +#define BIO_set_conn_mode(b, n) BIO_ctrl(b, BIO_C_SET_CONNECT_MODE, (n), NULL) +#define BIO_set_sock_type(b, t) BIO_ctrl(b, BIO_C_SET_SOCK_TYPE, (t), NULL) +#define BIO_get_sock_type(b) BIO_ctrl(b, BIO_C_GET_SOCK_TYPE, 0, NULL) +#define BIO_get0_dgram_bio(b, p) BIO_ctrl(b, BIO_C_GET_DGRAM_BIO, 0, (void *)(BIO **)(p)) + +/* 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) +#define BIO_set_tfo_accept(b, n) BIO_ctrl(b, BIO_C_SET_ACCEPT, 5, (n) ? (void *)"a" : 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_detect_peer_addr(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) +#define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +#define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +#define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +#define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +#define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +#define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +#define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +#define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +#define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +#define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +#define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +#define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) + +/* 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); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +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); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +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); +#ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +#endif +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_dgram_pair(void); +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_err_is_non_fatal(unsigned int errcode); +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_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); +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 +#define BIO_SOCK_TFO 0x20 + +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); +#ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +#endif + +/* + * 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_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_set_sendmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_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_set_recvmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts)(BIO *, const char *)); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*ossl_gets)(BIO *, char *, int)); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl)(BIO *, int, long, void *)); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create)(BIO *)); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *)); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl)(BIO *, int, + BIO_info_cb *)); +#ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom))(BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom))(BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom))(BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom))(BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom))(BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion))(BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom))(BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))(BIO *, int, + BIO_info_cb *); +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bioerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bioerr.h new file mode 100644 index 0000000..b4ee5c6 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bioerr.h @@ -0,0 +1,70 @@ +/* + * 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_BIOERR_H +#define OPENSSL_BIOERR_H +#pragma once + +#include +#include +#include + +/* + * 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_LOCAL_ADDR_NOT_AVAILABLE 111 +#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_NON_FATAL 112 +#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_TFO_DISABLED 106 +#define BIO_R_TFO_NO_KERNEL_SUPPORT 108 +#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_UNABLE_TO_TFO 109 +#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 +#define BIO_R_PORT_MISMATCH 150 +#define BIO_R_PEER_ADDR_NOT_AVAILABLE 151 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/blowfish.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/blowfish.h new file mode 100644 index 0000000..49c74e9 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/blowfish.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BLOWFISH_H +#endif + +#include + +#ifndef OPENSSL_NO_BF +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bn.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bn.h new file mode 100644 index 0000000..d210b8b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bn.h @@ -0,0 +1,588 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BN_H +#endif + +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include + +#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); +BIGNUM *BN_signed_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); +int BN_signed_bn2bin(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2lebin(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_native2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2native(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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bnerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bnerr.h new file mode 100644 index 0000000..dbbcd69 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/bnerr.h @@ -0,0 +1,45 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/buffer.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/buffer.h new file mode 100644 index 0000000..09b35e8 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/buffer.h @@ -0,0 +1,60 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BUFFER_H +#endif + +#include +#ifndef OPENSSL_CRYPTO_H +#include +#endif +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/buffererr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/buffererr.h new file mode 100644 index 0000000..4fa0da4 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/buffererr.h @@ -0,0 +1,23 @@ +/* + * 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 +#include +#include + +/* + * BUF reason codes. + */ + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/byteorder.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/byteorder.h new file mode 100644 index 0000000..393f34b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/byteorder.h @@ -0,0 +1,339 @@ +/* + * Copyright 2025 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_BYTEORDER_H +#define OPENSSL_BYTEORDER_H +#pragma once + +#include +#include + +/* + * "Modern" compilers do a decent job of optimising these functions to just a + * couple of instruction ([swap +] store, or load [+ swap]) when either no + * swapping is required, or a suitable swap instruction is available. + */ + +#if defined(_MSC_VER) && _MSC_VER >= 1300 +#include +#pragma intrinsic(_byteswap_ushort) +#pragma intrinsic(_byteswap_ulong) +#pragma intrinsic(_byteswap_uint64) +#define OSSL_HTOBE16(x) _byteswap_ushort(x) +#define OSSL_HTOBE32(x) _byteswap_ulong(x) +#define OSSL_HTOBE64(x) _byteswap_uint64(x) +#define OSSL_BE16TOH(x) _byteswap_ushort(x) +#define OSSL_BE32TOH(x) _byteswap_ulong(x) +#define OSSL_BE64TOH(x) _byteswap_uint64(x) +#define OSSL_HTOLE16(x) (x) +#define OSSL_HTOLE32(x) (x) +#define OSSL_HTOLE64(x) (x) +#define OSSL_LE16TOH(x) (x) +#define OSSL_LE32TOH(x) (x) +#define OSSL_LE64TOH(x) (x) + +#elif defined(__GLIBC__) && defined(__GLIBC_PREREQ) +#if (__GLIBC_PREREQ(2, 19)) && defined(_DEFAULT_SOURCE) +#include +#define OSSL_HTOBE16(x) htobe16(x) +#define OSSL_HTOBE32(x) htobe32(x) +#define OSSL_HTOBE64(x) htobe64(x) +#define OSSL_BE16TOH(x) be16toh(x) +#define OSSL_BE32TOH(x) be32toh(x) +#define OSSL_BE64TOH(x) be64toh(x) +#define OSSL_HTOLE16(x) htole16(x) +#define OSSL_HTOLE32(x) htole32(x) +#define OSSL_HTOLE64(x) htole64(x) +#define OSSL_LE16TOH(x) le16toh(x) +#define OSSL_LE32TOH(x) le32toh(x) +#define OSSL_LE64TOH(x) le64toh(x) +#endif + +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__OpenBSD__) +#include +#else +#include +#endif +#define OSSL_HTOBE16(x) htobe16(x) +#define OSSL_HTOBE32(x) htobe32(x) +#define OSSL_HTOBE64(x) htobe64(x) +#define OSSL_BE16TOH(x) be16toh(x) +#define OSSL_BE32TOH(x) be32toh(x) +#define OSSL_BE64TOH(x) be64toh(x) +#define OSSL_HTOLE16(x) htole16(x) +#define OSSL_HTOLE32(x) htole32(x) +#define OSSL_HTOLE64(x) htole64(x) +#define OSSL_LE16TOH(x) le16toh(x) +#define OSSL_LE32TOH(x) le32toh(x) +#define OSSL_LE64TOH(x) le64toh(x) + +#elif defined(__APPLE__) +#include +#define OSSL_HTOBE16(x) OSSwapHostToBigInt16(x) +#define OSSL_HTOBE32(x) OSSwapHostToBigInt32(x) +#define OSSL_HTOBE64(x) OSSwapHostToBigInt64(x) +#define OSSL_BE16TOH(x) OSSwapBigToHostInt16(x) +#define OSSL_BE32TOH(x) OSSwapBigToHostInt32(x) +#define OSSL_BE64TOH(x) OSSwapBigToHostInt64(x) +#define OSSL_HTOLE16(x) OSSwapHostToLittleInt16(x) +#define OSSL_HTOLE32(x) OSSwapHostToLittleInt32(x) +#define OSSL_HTOLE64(x) OSSwapHostToLittleInt64(x) +#define OSSL_LE16TOH(x) OSSwapLittleToHostInt16(x) +#define OSSL_LE32TOH(x) OSSwapLittleToHostInt32(x) +#define OSSL_LE64TOH(x) OSSwapLittleToHostInt64(x) + +#endif + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u16_le(unsigned char *out, uint16_t val) +{ +#ifdef OSSL_HTOLE16 + uint16_t t = OSSL_HTOLE16(val); + + memcpy(out, (unsigned char *)&t, 2); + return out + 2; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u16_be(unsigned char *out, uint16_t val) +{ +#ifdef OSSL_HTOBE16 + uint16_t t = OSSL_HTOBE16(val); + + memcpy(out, (unsigned char *)&t, 2); + return out + 2; +#else + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u32_le(unsigned char *out, uint32_t val) +{ +#ifdef OSSL_HTOLE32 + uint32_t t = OSSL_HTOLE32(val); + + memcpy(out, (unsigned char *)&t, 4); + return out + 4; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 24) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u32_be(unsigned char *out, uint32_t val) +{ +#ifdef OSSL_HTOBE32 + uint32_t t = OSSL_HTOBE32(val); + + memcpy(out, (unsigned char *)&t, 4); + return out + 4; +#else + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u64_le(unsigned char *out, uint64_t val) +{ +#ifdef OSSL_HTOLE64 + uint64_t t = OSSL_HTOLE64(val); + + memcpy(out, (unsigned char *)&t, 8); + return out + 8; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 32) & 0xff; + *out++ = (val >> 40) & 0xff; + *out++ = (val >> 48) & 0xff; + *out++ = (val >> 56) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u64_be(unsigned char *out, uint64_t val) +{ +#ifdef OSSL_HTOLE64 + uint64_t t = OSSL_HTOBE64(val); + + memcpy(out, (unsigned char *)&t, 8); + return out + 8; +#else + *out++ = (val >> 56) & 0xff; + *out++ = (val >> 48) & 0xff; + *out++ = (val >> 40) & 0xff; + *out++ = (val >> 32) & 0xff; + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u16_le(uint16_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE16TOH + uint16_t t; + + memcpy((unsigned char *)&t, in, 2); + *val = OSSL_LE16TOH(t); + return in + 2; +#else + uint16_t b0 = *in++; + uint16_t b1 = *in++; + + *val = b0 | (b1 << 8); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u16_be(uint16_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE16TOH + uint16_t t; + + memcpy((unsigned char *)&t, in, 2); + *val = OSSL_BE16TOH(t); + return in + 2; +#else + uint16_t b1 = *in++; + uint16_t b0 = *in++; + + *val = b0 | (b1 << 8); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u32_le(uint32_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE32TOH + uint32_t t; + + memcpy((unsigned char *)&t, in, 4); + *val = OSSL_LE32TOH(t); + return in + 4; +#else + uint32_t b0 = *in++; + uint32_t b1 = *in++; + uint32_t b2 = *in++; + uint32_t b3 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u32_be(uint32_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE32TOH + uint32_t t; + + memcpy((unsigned char *)&t, in, 4); + *val = OSSL_BE32TOH(t); + return in + 4; +#else + uint32_t b3 = *in++; + uint32_t b2 = *in++; + uint32_t b1 = *in++; + uint32_t b0 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u64_le(uint64_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE64TOH + uint64_t t; + + memcpy((unsigned char *)&t, in, 8); + *val = OSSL_LE64TOH(t); + return in + 8; +#else + uint64_t b0 = *in++; + uint64_t b1 = *in++; + uint64_t b2 = *in++; + uint64_t b3 = *in++; + uint64_t b4 = *in++; + uint64_t b5 = *in++; + uint64_t b6 = *in++; + uint64_t b7 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) + | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u64_be(uint64_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE64TOH + uint64_t t; + + memcpy((unsigned char *)&t, in, 8); + *val = OSSL_BE64TOH(t); + return in + 8; +#else + uint64_t b7 = *in++; + uint64_t b6 = *in++; + uint64_t b5 = *in++; + uint64_t b4 = *in++; + uint64_t b3 = *in++; + uint64_t b2 = *in++; + uint64_t b1 = *in++; + uint64_t b0 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) + | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); + return in; +#endif +} + +#undef OSSL_HTOBE16 +#undef OSSL_HTOBE32 +#undef OSSL_HTOBE64 +#undef OSSL_BE16TOH +#undef OSSL_BE32TOH +#undef OSSL_BE64TOH +#undef OSSL_HTOLE16 +#undef OSSL_HTOLE32 +#undef OSSL_HTOLE64 +#undef OSSL_LE16TOH +#undef OSSL_LE32TOH +#undef OSSL_LE64TOH + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/camellia.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/camellia.h new file mode 100644 index 0000000..aec94e4 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/camellia.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CAMELLIA_H +#endif + +#include + +#ifndef OPENSSL_NO_CAMELLIA +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cast.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cast.h new file mode 100644 index 0000000..af94312 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cast.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CAST_H +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmac.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmac.h new file mode 100644 index 0000000..c72da7e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmac.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMAC_H +#endif + +#ifndef OPENSSL_NO_CMAC + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmp.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmp.h new file mode 100644 index 0000000..c5478a6 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmp.h @@ -0,0 +1,741 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/cmp.h.in + * + * Copyright 2007-2026 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMP_H +#define OPENSSL_CMP_H + +#include +#ifndef OPENSSL_NO_CMP + +#include +#include +#include +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_CMP_PVNO_2 2 +#define OSSL_CMP_PVNO_3 3 +#define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ + +/*- + * 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_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 +#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; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) +#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) +#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) +#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) +#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) +#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) +#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) +#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) +#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) +#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) +#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + +/* clang-format on */ + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +#define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +#define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +#define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +#define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +#define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +#define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + +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) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) +#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) +#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) +#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) +#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) +#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) +#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) +#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) +#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) +#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) +#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) + +/* clang-format on */ +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; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) +#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) + +/* clang-format on */ +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) **sk_p, + OSSL_CMP_ITAV *itav); +void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + +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); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const 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 +#define OSSL_CMP_OPT_USE_TLS 13 +/* 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 +#define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 +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); +#ifndef OPENSSL_NO_HTTP +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); +#endif +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); +#define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore +X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +#define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore +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); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_CTX_get0_geninfo_ITAVs(const 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_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); +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_validatedSrvCert(const OSSL_CMP_CTX *ctx); +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); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_HDR_get0_geninfo_ITAVs(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); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(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 */ +#ifndef OPENSSL_NO_HTTP +OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); +#endif + +/* 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); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); +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_GENM 21 +#define OSSL_CMP_ERROR 23 +#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); + +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CMP) */ +#endif /* !defined(OPENSSL_CMP_H) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmp_util.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmp_util.h new file mode 100644 index 0000000..a0ee20f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmp_util.h @@ -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 +#ifndef OPENSSL_NO_CMP + +#include +#include + +#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) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmperr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmperr.h new file mode 100644 index 0000000..b07ac6d --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmperr.h @@ -0,0 +1,132 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#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_EXPECTED_POLLREQ 104 +#define CMP_R_FAILED_BUILDING_OWN_CHAIN 164 +#define CMP_R_FAILED_EXTRACTING_CENTRAL_GEN_KEY 203 +#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_GENERATE_CERTREQTEMPLATE 197 +#define CMP_R_GENERATE_CRLSTATUS 198 +#define CMP_R_GETTING_GENP 192 +#define CMP_R_GET_ITAV 199 +#define CMP_R_INVALID_ARGS 100 +#define CMP_R_INVALID_GENP 193 +#define CMP_R_INVALID_KEYSPEC 202 +#define CMP_R_INVALID_OPTION 174 +#define CMP_R_INVALID_ROOTCAKEYUPDATE 195 +#define CMP_R_MISSING_CENTRAL_GEN_KEY 204 +#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_UNCLEAN_CTX 191 +#define CMP_R_UNEXPECTED_CENTRAL_GEN_KEY 205 +#define CMP_R_UNEXPECTED_CERTPROFILE 196 +#define CMP_R_UNEXPECTED_CRLSTATUSLIST 201 +#define CMP_R_UNEXPECTED_PKIBODY 133 +#define CMP_R_UNEXPECTED_PKISTATUS 185 +#define CMP_R_UNEXPECTED_POLLREQ 105 +#define CMP_R_UNEXPECTED_PVNO 153 +#define CMP_R_UNEXPECTED_SENDER 106 +#define CMP_R_UNKNOWN_ALGORITHM_ID 134 +#define CMP_R_UNKNOWN_CERT_TYPE 135 +#define CMP_R_UNKNOWN_CRL_ISSUER 200 +#define CMP_R_UNKNOWN_PKISTATUS 186 +#define CMP_R_UNSUPPORTED_ALGORITHM 136 +#define CMP_R_UNSUPPORTED_KEY_TYPE 137 +#define CMP_R_UNSUPPORTED_PKIBODY 101 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cms.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cms.h new file mode 100644 index 0000000..2c10cd3 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cms.h @@ -0,0 +1,524 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/cms.h.in + * + * Copyright 2008-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMS_H +#define OPENSSL_CMS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMS_H +#endif + +#include + +#ifndef OPENSSL_NO_CMS +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; +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; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) +#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) +#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) +#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) +#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) +#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) +#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) +#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) +#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) +#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) +#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) +#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) +#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) +#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) +#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) +#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) +#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) +#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) +#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) +#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) +#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) +#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) +#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) +#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) +#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) +#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) +#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) +#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) +#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) +#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) +#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) +#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) +#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) +#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) +#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) +#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + +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 +#define CMS_RECIPINFO_KEM 5 + +/* 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 +#define CMS_NO_SIGNING_TIME 0x400000 + +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); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, 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 *libctx, + 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 *libctx, 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 *libctx, + 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 *libctx, + 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 *libctx, 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 *libctx, + 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 *libctx, + const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, 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); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +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 *libctx); + +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); + +int CMS_RecipientInfo_kemri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_kemri_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +EVP_CIPHER_CTX *CMS_RecipientInfo_kemri_get0_ctx(CMS_RecipientInfo *ri); +X509_ALGOR *CMS_RecipientInfo_kemri_get0_kdf_alg(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kemri_set_ukm(CMS_RecipientInfo *ri, + const unsigned char *ukm, + int ukmLength); + +/* 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmserr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmserr.h new file mode 100644 index 0000000..49c22c2 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cmserr.h @@ -0,0 +1,128 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#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_IN_ENVELOPED_DATA 200 +#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_ERROR_UNSUPPORTED_STATIC_KEY_AGREEMENT 196 +#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_KEM 197 +#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_OPERATION_UNSUPPORTED 182 +#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_UNKNOWN_KDF_ALGORITHM 198 +#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_KDF_ALGORITHM 199 +#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_SIGNATURE_ALGORITHM 195 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/comp.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/comp.h new file mode 100644 index 0000000..0363a33 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/comp.h @@ -0,0 +1,101 @@ +/* + * Copyright 2015-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_COMP_H +#define OPENSSL_COMP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_COMP_H +#endif + +#include + +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_COMP + +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); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define COMP_zlib_cleanup() \ + while (0) \ + continue +#endif + +#ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +#endif + +#endif + +typedef struct ssl_comp_st SSL_COMP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/comperr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/comperr.h new file mode 100644 index 0000000..90ec7c1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/comperr.h @@ -0,0 +1,36 @@ +/* + * 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 +#include +#include + +#ifndef OPENSSL_NO_COMP + +/* + * COMP reason codes. + */ +#define COMP_R_BROTLI_DECODE_ERROR 102 +#define COMP_R_BROTLI_ENCODE_ERROR 103 +#define COMP_R_BROTLI_NOT_SUPPORTED 104 +#define COMP_R_ZLIB_DEFLATE_ERROR 99 +#define COMP_R_ZLIB_INFLATE_ERROR 100 +#define COMP_R_ZLIB_NOT_SUPPORTED 101 +#define COMP_R_ZSTD_COMPRESS_ERROR 105 +#define COMP_R_ZSTD_DECODE_ERROR 106 +#define COMP_R_ZSTD_DECOMPRESS_ERROR 107 +#define COMP_R_ZSTD_NOT_SUPPORTED 108 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conf.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conf.h new file mode 100644 index 0000000..b00136c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conf.h @@ -0,0 +1,219 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/conf.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CONF_H +#define OPENSSL_CONF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) +#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) +#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) +#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) +#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) +#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) +#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) +#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_freefunc_type(freefunc)) +#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) +#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) +#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) +#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) +DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) +#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) +#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conf_api.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conf_api.h new file mode 100644 index 0000000..f3f3c64 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conf_api.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_API_H +#endif + +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conferr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conferr.h new file mode 100644 index 0000000..0b984dd --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conferr.h @@ -0,0 +1,50 @@ +/* + * 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_CONFERR_H +#define OPENSSL_CONFERR_H +#pragma once + +#include +#include +#include + +/* + * 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_RECURSIVE_SECTION_REFERENCE 126 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/configuration.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/configuration.h new file mode 100644 index 0000000..0da836f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/configuration.h @@ -0,0 +1,238 @@ +/* + * WARNING: do not edit! + * Generated by configdata.pm from ../../openssl-3.6.2/Configurations/common0.tmpl, ../../openssl-3.6.2/Configurations/unix-Makefile.tmpl + * via Makefile.in + * + * 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: + */ + +/* clang-format off */ +# ifndef OPENSSL_SYS_iOS +# define OPENSSL_SYS_iOS 1 +# endif +# define OPENSSL_CONFIGURED_API 30600 +# ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +# endif +# ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +# endif +# ifndef OPENSSL_NO_ACVP_TESTS +# define OPENSSL_NO_ACVP_TESTS +# endif +# ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +# endif +# ifndef OPENSSL_NO_ALLOCFAIL_TESTS +# define OPENSSL_NO_ALLOCFAIL_TESTS +# endif +# ifndef OPENSSL_NO_APPS +# define OPENSSL_NO_APPS +# endif +# ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +# endif +# ifndef OPENSSL_NO_ASYNC +# define OPENSSL_NO_ASYNC +# endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif +# ifndef OPENSSL_NO_CAPIENG +# define OPENSSL_NO_CAPIENG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif +# ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +# endif +# ifndef OPENSSL_NO_DOCS +# define OPENSSL_NO_DOCS +# endif +# ifndef OPENSSL_NO_DSO +# define OPENSSL_NO_DSO +# endif +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +# endif +# ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +# endif +# ifndef OPENSSL_NO_ENGINE +# define OPENSSL_NO_ENGINE +# endif +# ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +# endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif +# ifndef OPENSSL_NO_FIPS_POST +# define OPENSSL_NO_FIPS_POST +# endif +# ifndef OPENSSL_NO_FIPS_SECURITYCHECKS +# define OPENSSL_NO_FIPS_SECURITYCHECKS +# endif +# ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +# endif +# ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +# endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif +# ifndef OPENSSL_NO_KTLS +# define OPENSSL_NO_KTLS +# endif +# ifndef OPENSSL_NO_LMS +# define OPENSSL_NO_LMS +# endif +# ifndef OPENSSL_NO_LOADERENG +# define OPENSSL_NO_LOADERENG +# endif +# ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +# endif +# ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +# endif +# ifndef OPENSSL_NO_PADLOCKENG +# define OPENSSL_NO_PADLOCKENG +# endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif +# ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +# endif +# ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +# endif +# ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +# endif +# ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +# endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TESTS +# define OPENSSL_NO_TESTS +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif +# ifndef OPENSSL_NO_TRACE +# define OPENSSL_NO_TRACE +# endif +# ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +# endif +# ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +# endif +# ifndef OPENSSL_NO_UPLINK +# define OPENSSL_NO_UPLINK +# endif +# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +# endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif +# ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +# endif + +/* clang-format on */ + +/* Generate 80386 code? */ +/* clang-format off */ +# undef I386_ONLY +/* clang-format on */ + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) + /* clang-format off */ +# undef BN_LLONG + /* clang-format on */ + /* Only one for the following should be defined */ + /* clang-format off */ +# define SIXTY_FOUR_BIT_LONG + /* clang-format on */ + /* clang-format off */ +# undef SIXTY_FOUR_BIT + /* clang-format on */ + /* clang-format off */ +# undef THIRTY_TWO_BIT +/* clang-format on */ +#endif + +/* clang-format off */ +# define RC4_INT unsigned int +/* clang-format on */ + +#if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +#define OPENSSL_NO_COMP_ALG +#else +#undef OPENSSL_NO_COMP_ALG +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_CONFIGURATION_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conftypes.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conftypes.h new file mode 100644 index 0000000..f2d2be1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/conftypes.h @@ -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 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core.h new file mode 100644 index 0000000..a883173 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core.h @@ -0,0 +1,235 @@ +/* + * 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_H +#define OPENSSL_CORE_H +#pragma once + +#include +#include + +#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); +}; + +#define OSSL_DISPATCH_END \ + { 0, NULL } + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_dispatch.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_dispatch.h new file mode 100644 index 0000000..d645916 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_dispatch.h @@ -0,0 +1,1061 @@ +/* + * Copyright 2019-2026 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 +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Generic function pointer for provider method arrays, or other contexts where + * functions of various signatures must occupy a common slot in an array of + * structures. + */ +typedef void (*OSSL_FUNC)(void); + +/*- + * 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)) + +/* New seeding functions prototypes with the 101-104 series */ +#define OSSL_FUNC_CLEANUP_USER_ENTROPY 96 +#define OSSL_FUNC_CLEANUP_USER_NONCE 97 +#define OSSL_FUNC_GET_USER_ENTROPY 98 +#define OSSL_FUNC_GET_USER_NONCE 99 + +#define OSSL_FUNC_INDICATOR_CB 95 +OSSL_CORE_MAKE_FUNC(void, indicator_cb, (OPENSSL_CORE_CTX *ctx, OSSL_INDICATOR_CALLBACK **cb)) +#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(size_t, get_user_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(void, cleanup_user_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(size_t, get_user_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)) +OSSL_CORE_MAKE_FUNC(void, cleanup_user_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)) + +/* Additional error functions provided by the core */ +#define OSSL_FUNC_CORE_COUNT_TO_MARK 120 +OSSL_CORE_MAKE_FUNC(int, core_count_to_mark, (const OSSL_CORE_HANDLE *prov)) + +/* 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)) +#define OSSL_FUNC_PROVIDER_RANDOM_BYTES 1032 +OSSL_CORE_MAKE_FUNC(int, provider_random_bytes, (void *provctx, int which, void *buf, size_t n, unsigned int strength)) + +/* Libssl related functions */ +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_SEND 2001 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_send, + (SSL *s, const unsigned char *buf, size_t buf_len, + size_t *consumed, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RECV_RCD 2002 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_recv_rcd, + (SSL *s, const unsigned char **buf, size_t *bytes_read, + void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RELEASE_RCD 2003 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_release_rcd, + (SSL *s, size_t bytes_read, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_YIELD_SECRET 2004 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_yield_secret, + (SSL *s, uint32_t prot_level, int direction, + const unsigned char *secret, size_t secret_len, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_GOT_TRANSPORT_PARAMS 2005 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_got_transport_params, + (SSL *s, const unsigned char *params, size_t params_len, + void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_ALERT 2006 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_alert, + (SSL *s, unsigned char alert_code, void *arg)) + +/* 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 +#define OSSL_OP_SKEYMGMT 15 +/* 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 +#define OSSL_FUNC_DIGEST_SQUEEZE 14 +#define OSSL_FUNC_DIGEST_COPYCTX 15 + +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_squeeze, + (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(void, digest_copyctx, (void *outctx, void *inctx)) + +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 +#define OSSL_FUNC_CIPHER_PIPELINE_ENCRYPT_INIT 15 +#define OSSL_FUNC_CIPHER_PIPELINE_DECRYPT_INIT 16 +#define OSSL_FUNC_CIPHER_PIPELINE_UPDATE 17 +#define OSSL_FUNC_CIPHER_PIPELINE_FINAL 18 +#define OSSL_FUNC_CIPHER_ENCRYPT_SKEY_INIT 19 +#define OSSL_FUNC_CIPHER_DECRYPT_SKEY_INIT 20 + +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(int, cipher_pipeline_encrypt_init, + (void *cctx, + const unsigned char *key, size_t keylen, + size_t numpipes, const unsigned char **iv, size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_decrypt_init, + (void *cctx, + const unsigned char *key, size_t keylen, + size_t numpipes, const unsigned char **iv, size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_update, + (void *cctx, size_t numpipes, + unsigned char **out, size_t *outl, const size_t *outsize, + const unsigned char **in, const size_t *inl)) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_final, + (void *cctx, size_t numpipes, + unsigned char **out, size_t *outl, const size_t *outsize)) +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)) +OSSL_CORE_MAKE_FUNC(int, cipher_encrypt_skey_init, (void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_decrypt_skey_init, (void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[])) + +/* 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 +#define OSSL_FUNC_MAC_INIT_SKEY 13 + +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[])) +OSSL_CORE_MAKE_FUNC(int, mac_init_skey, (void *mctx, void *key, const OSSL_PARAM params[])) + +/*- + * Symmetric key management + * + * The Key Management takes care of provider side of symmetric key objects, and + * includes 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, and the secret key. + * + * Key objects are created with OSSL_FUNC_skeymgmt_import() (there is no + * dedicated memory allocation function), exported with + * OSSL_FUNC_skeymgmt_export() and destroyed with OSSL_FUNC_keymgmt_free(). + * + */ + +/* Key data subset selection - individual bits */ +#define OSSL_SKEYMGMT_SELECT_PARAMETERS 0x01 +#define OSSL_SKEYMGMT_SELECT_SECRET_KEY 0x02 + +/* Key data subset selection - combinations */ +#define OSSL_SKEYMGMT_SELECT_ALL \ + (OSSL_SKEYMGMT_SELECT_PARAMETERS | OSSL_SKEYMGMT_SELECT_SECRET_KEY) + +#define OSSL_FUNC_SKEYMGMT_FREE 1 +#define OSSL_FUNC_SKEYMGMT_IMPORT 2 +#define OSSL_FUNC_SKEYMGMT_EXPORT 3 +#define OSSL_FUNC_SKEYMGMT_GENERATE 4 +#define OSSL_FUNC_SKEYMGMT_GET_KEY_ID 5 +#define OSSL_FUNC_SKEYMGMT_IMP_SETTABLE_PARAMS 6 +#define OSSL_FUNC_SKEYMGMT_GEN_SETTABLE_PARAMS 7 + +OSSL_CORE_MAKE_FUNC(void, skeymgmt_free, (void *keydata)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + skeymgmt_imp_settable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, skeymgmt_import, (void *provctx, int selection, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, skeymgmt_export, + (void *keydata, int selection, + OSSL_CALLBACK *param_cb, void *cbarg)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + skeymgmt_gen_settable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, skeymgmt_generate, (void *provctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const char *, skeymgmt_get_key_id, (void *keydata)) + +/* 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 +#define OSSL_FUNC_KDF_SET_SKEY 12 +#define OSSL_FUNC_KDF_DERIVE_SKEY 13 + +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[])) +OSSL_CORE_MAKE_FUNC(int, kdf_set_skey, + (void *kctx, void *skeydata, const char *paramname)) +OSSL_CORE_MAKE_FUNC(void *, kdf_derive_skey, (void *ctx, const char *key_type, void *provctx, OSSL_FUNC_skeymgmt_import_fn *import, size_t keylen, 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 +#define OSSL_FUNC_KEYMGMT_GEN_GET_PARAMS 15 +#define OSSL_FUNC_KEYMGMT_GEN_GETTABLE_PARAMS 16 + +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(int, keymgmt_gen_get_params, + (void *genctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_gen_gettable_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)) + +/* Extended import and export functions */ +#define OSSL_FUNC_KEYMGMT_IMPORT_TYPES_EX 45 +#define OSSL_FUNC_KEYMGMT_EXPORT_TYPES_EX 46 +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types_ex, + (void *provctx, int selection)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types_ex, + (void *provctx, 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 +#define OSSL_FUNC_KEYEXCH_DERIVE_SKEY 11 + +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)) +OSSL_CORE_MAKE_FUNC(void *, keyexch_derive_skey, (void *ctx, const char *key_type, void *provctx, OSSL_FUNC_skeymgmt_import_fn *import, size_t keylen, const OSSL_PARAM params[])) + +/* 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 +#define OSSL_FUNC_SIGNATURE_QUERY_KEY_TYPES 26 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_INIT 27 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_UPDATE 28 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_FINAL 29 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_INIT 30 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_UPDATE 31 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_FINAL 32 + +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_sign_message_init, + (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_sign_message_update, + (void *ctx, const unsigned char *in, size_t inlen)) +OSSL_CORE_MAKE_FUNC(int, signature_sign_message_final, + (void *ctx, unsigned char *sig, + size_t *siglen, size_t sigsize)) +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_message_init, + (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_verify_message_update, + (void *ctx, const unsigned char *in, size_t inlen)) +/* + * signature_verify_final requires that the signature to be verified against + * is specified via an OSSL_PARAM. + */ +OSSL_CORE_MAKE_FUNC(int, signature_verify_message_final, (void *ctx)) +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)) +OSSL_CORE_MAKE_FUNC(const char **, signature_query_key_types, (void)) + +/* 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 +#define OSSL_FUNC_KEM_AUTH_ENCAPSULATE_INIT 12 +#define OSSL_FUNC_KEM_AUTH_DECAPSULATE_INIT 13 + +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_auth_encapsulate_init, (void *ctx, void *provkey, void *authprivkey, 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_auth_decapsulate_init, (void *ctx, void *provkey, void *authpubkey, 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 +#define OSSL_FUNC_STORE_DELETE 9 +#define OSSL_FUNC_STORE_OPEN_EX 10 +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)) +OSSL_CORE_MAKE_FUNC(int, store_delete, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) +OSSL_CORE_MAKE_FUNC(void *, store_open_ex, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_names.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_names.h new file mode 100644 index 0000000..9e45b4d --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_names.h @@ -0,0 +1,588 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/core_names.h.in + * + * Copyright 2019-2025 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 + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CORE_NAMES_H +#define OPENSSL_CORE_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* 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" + +/* Known CIPHER names (not a complete list) */ +#define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* 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_256_192 "SHA2-256/192" +#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" + +/* 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" + +/* Known KDF names */ +#define OSSL_KDF_NAME_HKDF "HKDF" +#define OSSL_KDF_NAME_HKDF_SHA256 "HKDF-SHA256" +#define OSSL_KDF_NAME_HKDF_SHA384 "HKDF-SHA384" +#define OSSL_KDF_NAME_HKDF_SHA512 "HKDF-SHA512" +#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" +#define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* 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" + +/* 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" + +/* PROV_SKEY well known key types */ +#define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +#define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ALG_PARAM_SECURITY_CATEGORY "security-category" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# 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" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# 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_MIN_TLS "tls-min-tls" +# 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_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_HMAC_PARAM_MAC OSSL_CIPHER_PARAM_AEAD_TAG +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_ENCRYPT_THEN_MAC "encrypt-then-mac" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# 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_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_CMS_KEMRI_KDF_ALGORITHM "kemri-kdf-alg" +# define OSSL_PKEY_PARAM_CMS_RI_TYPE "ri-type" +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# 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_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# 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_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# 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_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# 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_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# 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_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SECURITY_CATEGORY OSSL_ALG_PARAM_SECURITY_CATEGORY +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# 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_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_object.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_object.h new file mode 100644 index 0000000..df0c794 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/core_object.h @@ -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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crmf.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crmf.h new file mode 100644 index 0000000..8b73b11 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crmf.h @@ -0,0 +1,279 @@ +/*- + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/crmf.h.in + * + * Copyright 2007-2025 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. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRMF_H +#define OPENSSL_CRMF_H + +#include + +#ifndef OPENSSL_NO_CRMF +#include +#include +#include +#include /* for GENERAL_NAME etc. */ +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include + +#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_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + +typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) +#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) +#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) +#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) +#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) +#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) +#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + +/* clang-format on */ + +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) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) +#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) +#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) +#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) +#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) +#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) +#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) + +/* clang-format on */ + +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) +DECLARE_ASN1_DUP_FUNCTION(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); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(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); +const ASN1_INTEGER *OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(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); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char *OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +#ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CRMF) */ +#endif /* !defined(OPENSSL_CRMF_H) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crmferr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crmferr.h new file mode 100644 index 0000000..2215394 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crmferr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#ifndef OPENSSL_NO_CRMF + +/* + * CRMF reason codes. + */ +#define CRMF_R_BAD_PBM_ITERATIONCOUNT 100 +#define CRMF_R_CMS_NOT_SUPPORTED 122 +#define CRMF_R_CRMFERROR 102 +#define CRMF_R_ERROR 103 +#define CRMF_R_ERROR_DECODING_CERTIFICATE 104 +#define CRMF_R_ERROR_DECODING_ENCRYPTEDKEY 123 +#define CRMF_R_ERROR_DECRYPTING_CERTIFICATE 105 +#define CRMF_R_ERROR_DECRYPTING_ENCRYPTEDKEY 124 +#define CRMF_R_ERROR_DECRYPTING_ENCRYPTEDVALUE 125 +#define CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY 106 +#define CRMF_R_ERROR_SETTING_PURPOSE 126 +#define CRMF_R_ERROR_VERIFYING_ENCRYPTEDKEY 127 +#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_CENTRAL_KEYGEN 128 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crypto.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crypto.h new file mode 100644 index 0000000..2dd16ac --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/crypto.h @@ -0,0 +1,619 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/crypto.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRYPTO_H +#define OPENSSL_CRYPTO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CRYPTO_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef CHARSET_EBCDIC +#include +#endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#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_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *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); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, 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_malloc_array(num, size) \ + CRYPTO_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_calloc(num, size) \ + CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc_array(num, size, alignment, freeptr) \ + CRYPTO_aligned_alloc_array(num, size, alignment, freeptr, \ + 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_realloc_array(addr, num, size) \ + CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_clear_realloc_array(addr, old_num, num, size) \ + CRYPTO_clear_realloc_array(addr, old_num, num, size, \ + 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_malloc_array(num, size) \ + CRYPTO_secure_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_calloc(num, size) \ + CRYPTO_secure_calloc(num, size, 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_strtoul(const char *str, char **endptr, int base, unsigned long *num); +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 +#define OPENSSL_WINCTX 10 + +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 +#define OPENSSL_INFO_WINDOWS_CONTEXT 1009 + +int OPENSSL_issetugid(void); + +struct crypto_ex_data_st { + OSSL_LIB_CTX *ctx; + STACK_OF(void) *sk; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) +#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) +#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) +#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) +#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) +#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) +#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) +#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) +#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) +#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) +#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) +#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) +#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) +#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk), ossl_check_void_freefunc_type(freefunc)) +#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) +#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) +#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) +#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) +#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) +#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) +#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) +#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * 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_malloc_array(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_calloc(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc_array(size_t num, size_t size, + size_t align, void **freeptr, + const char *file, int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +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); +void *CRYPTO_realloc_array(void *addr, size_t num, size_t size, + const char *file, int line); +void *CRYPTO_clear_realloc_array(void *addr, size_t old_num, size_t num, + size_t size, 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); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc_array(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_calloc(size_t num, size_t size, + 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 */ + +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +#define CRYPTO_MEM_CHECK_MAX_FS 256 + +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 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 +#else +#include +#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); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr.h new file mode 100644 index 0000000..626e3e9 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr.h @@ -0,0 +1,54 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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 +#include +#include + +/* + * 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_NAMES 132 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr_legacy.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr_legacy.h new file mode 100644 index 0000000..b1388a5 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cryptoerr_legacy.h @@ -0,0 +1,1466 @@ +/* + * 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 + */ + +/* + * This header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public {lib}err.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_CRYPTOERR_LEGACY_H +#define OPENSSL_CRYPTOERR_LEGACY_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASN1_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASYNC_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BIO_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BN_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BUF_strings(void); +#ifndef OPENSSL_NO_CMS +OSSL_DEPRECATEDIN_3_0 int ERR_load_CMS_strings(void); +#endif +#ifndef OPENSSL_NO_COMP +OSSL_DEPRECATEDIN_3_0 int ERR_load_COMP_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_CONF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_CRYPTO_strings(void); +#ifndef OPENSSL_NO_CT +OSSL_DEPRECATEDIN_3_0 int ERR_load_CT_strings(void); +#endif +#ifndef OPENSSL_NO_DH +OSSL_DEPRECATEDIN_3_0 int ERR_load_DH_strings(void); +#endif +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 int ERR_load_DSA_strings(void); +#endif +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 int ERR_load_EC_strings(void); +#endif +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int ERR_load_ENGINE_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_ERR_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_EVP_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_KDF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OBJ_strings(void); +#ifndef OPENSSL_NO_OCSP +OSSL_DEPRECATEDIN_3_0 int ERR_load_OCSP_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_PEM_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS12_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS7_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RAND_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RSA_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OSSL_STORE_strings(void); +#ifndef OPENSSL_NO_TS +OSSL_DEPRECATEDIN_3_0 int ERR_load_TS_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_UI_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509V3_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * ASN1 function codes. + */ +#define ASN1_F_A2D_ASN1_OBJECT 0 +#define ASN1_F_A2I_ASN1_INTEGER 0 +#define ASN1_F_A2I_ASN1_STRING 0 +#define ASN1_F_APPEND_EXP 0 +#define ASN1_F_ASN1_BIO_INIT 0 +#define ASN1_F_ASN1_BIT_STRING_SET_BIT 0 +#define ASN1_F_ASN1_CB 0 +#define ASN1_F_ASN1_CHECK_TLEN 0 +#define ASN1_F_ASN1_COLLECT 0 +#define ASN1_F_ASN1_D2I_EX_PRIMITIVE 0 +#define ASN1_F_ASN1_D2I_FP 0 +#define ASN1_F_ASN1_D2I_READ_BIO 0 +#define ASN1_F_ASN1_DIGEST 0 +#define ASN1_F_ASN1_DO_ADB 0 +#define ASN1_F_ASN1_DO_LOCK 0 +#define ASN1_F_ASN1_DUP 0 +#define ASN1_F_ASN1_ENC_SAVE 0 +#define ASN1_F_ASN1_EX_C2I 0 +#define ASN1_F_ASN1_FIND_END 0 +#define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 0 +#define ASN1_F_ASN1_GENERATE_V3 0 +#define ASN1_F_ASN1_GET_INT64 0 +#define ASN1_F_ASN1_GET_OBJECT 0 +#define ASN1_F_ASN1_GET_UINT64 0 +#define ASN1_F_ASN1_I2D_BIO 0 +#define ASN1_F_ASN1_I2D_FP 0 +#define ASN1_F_ASN1_ITEM_D2I_FP 0 +#define ASN1_F_ASN1_ITEM_DUP 0 +#define ASN1_F_ASN1_ITEM_EMBED_D2I 0 +#define ASN1_F_ASN1_ITEM_EMBED_NEW 0 +#define ASN1_F_ASN1_ITEM_FLAGS_I2D 0 +#define ASN1_F_ASN1_ITEM_I2D_BIO 0 +#define ASN1_F_ASN1_ITEM_I2D_FP 0 +#define ASN1_F_ASN1_ITEM_PACK 0 +#define ASN1_F_ASN1_ITEM_SIGN 0 +#define ASN1_F_ASN1_ITEM_SIGN_CTX 0 +#define ASN1_F_ASN1_ITEM_UNPACK 0 +#define ASN1_F_ASN1_ITEM_VERIFY 0 +#define ASN1_F_ASN1_MBSTRING_NCOPY 0 +#define ASN1_F_ASN1_OBJECT_NEW 0 +#define ASN1_F_ASN1_OUTPUT_DATA 0 +#define ASN1_F_ASN1_PCTX_NEW 0 +#define ASN1_F_ASN1_PRIMITIVE_NEW 0 +#define ASN1_F_ASN1_SCTX_NEW 0 +#define ASN1_F_ASN1_SIGN 0 +#define ASN1_F_ASN1_STR2TYPE 0 +#define ASN1_F_ASN1_STRING_GET_INT64 0 +#define ASN1_F_ASN1_STRING_GET_UINT64 0 +#define ASN1_F_ASN1_STRING_SET 0 +#define ASN1_F_ASN1_STRING_TABLE_ADD 0 +#define ASN1_F_ASN1_STRING_TO_BN 0 +#define ASN1_F_ASN1_STRING_TYPE_NEW 0 +#define ASN1_F_ASN1_TEMPLATE_EX_D2I 0 +#define ASN1_F_ASN1_TEMPLATE_NEW 0 +#define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 0 +#define ASN1_F_ASN1_TIME_ADJ 0 +#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 0 +#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 0 +#define ASN1_F_ASN1_UTCTIME_ADJ 0 +#define ASN1_F_ASN1_VERIFY 0 +#define ASN1_F_B64_READ_ASN1 0 +#define ASN1_F_B64_WRITE_ASN1 0 +#define ASN1_F_BIO_NEW_NDEF 0 +#define ASN1_F_BITSTR_CB 0 +#define ASN1_F_BN_TO_ASN1_STRING 0 +#define ASN1_F_C2I_ASN1_BIT_STRING 0 +#define ASN1_F_C2I_ASN1_INTEGER 0 +#define ASN1_F_C2I_ASN1_OBJECT 0 +#define ASN1_F_C2I_IBUF 0 +#define ASN1_F_C2I_UINT64_INT 0 +#define ASN1_F_COLLECT_DATA 0 +#define ASN1_F_D2I_ASN1_OBJECT 0 +#define ASN1_F_D2I_ASN1_UINTEGER 0 +#define ASN1_F_D2I_AUTOPRIVATEKEY 0 +#define ASN1_F_D2I_PRIVATEKEY 0 +#define ASN1_F_D2I_PUBLICKEY 0 +#define ASN1_F_DO_BUF 0 +#define ASN1_F_DO_CREATE 0 +#define ASN1_F_DO_DUMP 0 +#define ASN1_F_DO_TCREATE 0 +#define ASN1_F_I2A_ASN1_OBJECT 0 +#define ASN1_F_I2D_ASN1_BIO_STREAM 0 +#define ASN1_F_I2D_ASN1_OBJECT 0 +#define ASN1_F_I2D_DSA_PUBKEY 0 +#define ASN1_F_I2D_EC_PUBKEY 0 +#define ASN1_F_I2D_PRIVATEKEY 0 +#define ASN1_F_I2D_PUBLICKEY 0 +#define ASN1_F_I2D_RSA_PUBKEY 0 +#define ASN1_F_LONG_C2I 0 +#define ASN1_F_NDEF_PREFIX 0 +#define ASN1_F_NDEF_SUFFIX 0 +#define ASN1_F_OID_MODULE_INIT 0 +#define ASN1_F_PARSE_TAGGING 0 +#define ASN1_F_PKCS5_PBE2_SET_IV 0 +#define ASN1_F_PKCS5_PBE2_SET_SCRYPT 0 +#define ASN1_F_PKCS5_PBE_SET 0 +#define ASN1_F_PKCS5_PBE_SET0_ALGOR 0 +#define ASN1_F_PKCS5_PBKDF2_SET 0 +#define ASN1_F_PKCS5_SCRYPT_SET 0 +#define ASN1_F_SMIME_READ_ASN1 0 +#define ASN1_F_SMIME_TEXT 0 +#define ASN1_F_STABLE_GET 0 +#define ASN1_F_STBL_MODULE_INIT 0 +#define ASN1_F_UINT32_C2I 0 +#define ASN1_F_UINT32_NEW 0 +#define ASN1_F_UINT64_C2I 0 +#define ASN1_F_UINT64_NEW 0 +#define ASN1_F_X509_CRL_ADD0_REVOKED 0 +#define ASN1_F_X509_INFO_NEW 0 +#define ASN1_F_X509_NAME_ENCODE 0 +#define ASN1_F_X509_NAME_EX_D2I 0 +#define ASN1_F_X509_NAME_EX_NEW 0 +#define ASN1_F_X509_PKEY_NEW 0 + +/* + * ASYNC function codes. + */ +#define ASYNC_F_ASYNC_CTX_NEW 0 +#define ASYNC_F_ASYNC_INIT_THREAD 0 +#define ASYNC_F_ASYNC_JOB_NEW 0 +#define ASYNC_F_ASYNC_PAUSE_JOB 0 +#define ASYNC_F_ASYNC_START_FUNC 0 +#define ASYNC_F_ASYNC_START_JOB 0 +#define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 0 + +/* + * BIO function codes. + */ +#define BIO_F_ACPT_STATE 0 +#define BIO_F_ADDRINFO_WRAP 0 +#define BIO_F_ADDR_STRINGS 0 +#define BIO_F_BIO_ACCEPT 0 +#define BIO_F_BIO_ACCEPT_EX 0 +#define BIO_F_BIO_ACCEPT_NEW 0 +#define BIO_F_BIO_ADDR_NEW 0 +#define BIO_F_BIO_BIND 0 +#define BIO_F_BIO_CALLBACK_CTRL 0 +#define BIO_F_BIO_CONNECT 0 +#define BIO_F_BIO_CONNECT_NEW 0 +#define BIO_F_BIO_CTRL 0 +#define BIO_F_BIO_GETS 0 +#define BIO_F_BIO_GET_HOST_IP 0 +#define BIO_F_BIO_GET_NEW_INDEX 0 +#define BIO_F_BIO_GET_PORT 0 +#define BIO_F_BIO_LISTEN 0 +#define BIO_F_BIO_LOOKUP 0 +#define BIO_F_BIO_LOOKUP_EX 0 +#define BIO_F_BIO_MAKE_PAIR 0 +#define BIO_F_BIO_METH_NEW 0 +#define BIO_F_BIO_NEW 0 +#define BIO_F_BIO_NEW_DGRAM_SCTP 0 +#define BIO_F_BIO_NEW_FILE 0 +#define BIO_F_BIO_NEW_MEM_BUF 0 +#define BIO_F_BIO_NREAD 0 +#define BIO_F_BIO_NREAD0 0 +#define BIO_F_BIO_NWRITE 0 +#define BIO_F_BIO_NWRITE0 0 +#define BIO_F_BIO_PARSE_HOSTSERV 0 +#define BIO_F_BIO_PUTS 0 +#define BIO_F_BIO_READ 0 +#define BIO_F_BIO_READ_EX 0 +#define BIO_F_BIO_READ_INTERN 0 +#define BIO_F_BIO_SOCKET 0 +#define BIO_F_BIO_SOCKET_NBIO 0 +#define BIO_F_BIO_SOCK_INFO 0 +#define BIO_F_BIO_SOCK_INIT 0 +#define BIO_F_BIO_WRITE 0 +#define BIO_F_BIO_WRITE_EX 0 +#define BIO_F_BIO_WRITE_INTERN 0 +#define BIO_F_BUFFER_CTRL 0 +#define BIO_F_CONN_CTRL 0 +#define BIO_F_CONN_STATE 0 +#define BIO_F_DGRAM_SCTP_NEW 0 +#define BIO_F_DGRAM_SCTP_READ 0 +#define BIO_F_DGRAM_SCTP_WRITE 0 +#define BIO_F_DOAPR_OUTCH 0 +#define BIO_F_FILE_CTRL 0 +#define BIO_F_FILE_READ 0 +#define BIO_F_LINEBUFFER_CTRL 0 +#define BIO_F_LINEBUFFER_NEW 0 +#define BIO_F_MEM_WRITE 0 +#define BIO_F_NBIOF_NEW 0 +#define BIO_F_SLG_WRITE 0 +#define BIO_F_SSL_NEW 0 + +/* + * BN function codes. + */ +#define BN_F_BNRAND 0 +#define BN_F_BNRAND_RANGE 0 +#define BN_F_BN_BLINDING_CONVERT_EX 0 +#define BN_F_BN_BLINDING_CREATE_PARAM 0 +#define BN_F_BN_BLINDING_INVERT_EX 0 +#define BN_F_BN_BLINDING_NEW 0 +#define BN_F_BN_BLINDING_UPDATE 0 +#define BN_F_BN_BN2DEC 0 +#define BN_F_BN_BN2HEX 0 +#define BN_F_BN_COMPUTE_WNAF 0 +#define BN_F_BN_CTX_GET 0 +#define BN_F_BN_CTX_NEW 0 +#define BN_F_BN_CTX_START 0 +#define BN_F_BN_DIV 0 +#define BN_F_BN_DIV_RECP 0 +#define BN_F_BN_EXP 0 +#define BN_F_BN_EXPAND_INTERNAL 0 +#define BN_F_BN_GENCB_NEW 0 +#define BN_F_BN_GENERATE_DSA_NONCE 0 +#define BN_F_BN_GENERATE_PRIME_EX 0 +#define BN_F_BN_GF2M_MOD 0 +#define BN_F_BN_GF2M_MOD_EXP 0 +#define BN_F_BN_GF2M_MOD_MUL 0 +#define BN_F_BN_GF2M_MOD_SOLVE_QUAD 0 +#define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 0 +#define BN_F_BN_GF2M_MOD_SQR 0 +#define BN_F_BN_GF2M_MOD_SQRT 0 +#define BN_F_BN_LSHIFT 0 +#define BN_F_BN_MOD_EXP2_MONT 0 +#define BN_F_BN_MOD_EXP_MONT 0 +#define BN_F_BN_MOD_EXP_MONT_CONSTTIME 0 +#define BN_F_BN_MOD_EXP_MONT_WORD 0 +#define BN_F_BN_MOD_EXP_RECP 0 +#define BN_F_BN_MOD_EXP_SIMPLE 0 +#define BN_F_BN_MOD_INVERSE 0 +#define BN_F_BN_MOD_INVERSE_NO_BRANCH 0 +#define BN_F_BN_MOD_LSHIFT_QUICK 0 +#define BN_F_BN_MOD_SQRT 0 +#define BN_F_BN_MONT_CTX_NEW 0 +#define BN_F_BN_MPI2BN 0 +#define BN_F_BN_NEW 0 +#define BN_F_BN_POOL_GET 0 +#define BN_F_BN_RAND 0 +#define BN_F_BN_RAND_RANGE 0 +#define BN_F_BN_RECP_CTX_NEW 0 +#define BN_F_BN_RSHIFT 0 +#define BN_F_BN_SET_WORDS 0 +#define BN_F_BN_STACK_PUSH 0 +#define BN_F_BN_USUB 0 + +/* + * BUF function codes. + */ +#define BUF_F_BUF_MEM_GROW 0 +#define BUF_F_BUF_MEM_GROW_CLEAN 0 +#define BUF_F_BUF_MEM_NEW 0 + +#ifndef OPENSSL_NO_CMS +/* + * CMS function codes. + */ +#define CMS_F_CHECK_CONTENT 0 +#define CMS_F_CMS_ADD0_CERT 0 +#define CMS_F_CMS_ADD0_RECIPIENT_KEY 0 +#define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 0 +#define CMS_F_CMS_ADD1_RECEIPTREQUEST 0 +#define CMS_F_CMS_ADD1_RECIPIENT_CERT 0 +#define CMS_F_CMS_ADD1_SIGNER 0 +#define CMS_F_CMS_ADD1_SIGNINGTIME 0 +#define CMS_F_CMS_COMPRESS 0 +#define CMS_F_CMS_COMPRESSEDDATA_CREATE 0 +#define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 0 +#define CMS_F_CMS_COPY_CONTENT 0 +#define CMS_F_CMS_COPY_MESSAGEDIGEST 0 +#define CMS_F_CMS_DATA 0 +#define CMS_F_CMS_DATAFINAL 0 +#define CMS_F_CMS_DATAINIT 0 +#define CMS_F_CMS_DECRYPT 0 +#define CMS_F_CMS_DECRYPT_SET1_KEY 0 +#define CMS_F_CMS_DECRYPT_SET1_PASSWORD 0 +#define CMS_F_CMS_DECRYPT_SET1_PKEY 0 +#define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 0 +#define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 0 +#define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 0 +#define CMS_F_CMS_DIGEST_VERIFY 0 +#define CMS_F_CMS_ENCODE_RECEIPT 0 +#define CMS_F_CMS_ENCRYPT 0 +#define CMS_F_CMS_ENCRYPTEDCONTENT_INIT 0 +#define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 0 +#define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 0 +#define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 0 +#define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 0 +#define CMS_F_CMS_ENVELOPEDDATA_CREATE 0 +#define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 0 +#define CMS_F_CMS_ENVELOPED_DATA_INIT 0 +#define CMS_F_CMS_ENV_ASN1_CTRL 0 +#define CMS_F_CMS_FINAL 0 +#define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 0 +#define CMS_F_CMS_GET0_CONTENT 0 +#define CMS_F_CMS_GET0_ECONTENT_TYPE 0 +#define CMS_F_CMS_GET0_ENVELOPED 0 +#define CMS_F_CMS_GET0_REVOCATION_CHOICES 0 +#define CMS_F_CMS_GET0_SIGNED 0 +#define CMS_F_CMS_MSGSIGDIGEST_ADD1 0 +#define CMS_F_CMS_RECEIPTREQUEST_CREATE0 0 +#define CMS_F_CMS_RECEIPT_VERIFY 0 +#define CMS_F_CMS_RECIPIENTINFO_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 0 +#define CMS_F_CMS_SD_ASN1_CTRL 0 +#define CMS_F_CMS_SET1_IAS 0 +#define CMS_F_CMS_SET1_KEYID 0 +#define CMS_F_CMS_SET1_SIGNERIDENTIFIER 0 +#define CMS_F_CMS_SET_DETACHED 0 +#define CMS_F_CMS_SIGN 0 +#define CMS_F_CMS_SIGNED_DATA_INIT 0 +#define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 0 +#define CMS_F_CMS_SIGNERINFO_SIGN 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 0 +#define CMS_F_CMS_SIGN_RECEIPT 0 +#define CMS_F_CMS_SI_CHECK_ATTRIBUTES 0 +#define CMS_F_CMS_STREAM 0 +#define CMS_F_CMS_UNCOMPRESS 0 +#define CMS_F_CMS_VERIFY 0 +#define CMS_F_KEK_UNWRAP_KEY 0 +#endif + +#ifndef OPENSSL_NO_COMP +/* + * COMP function codes. + */ +#define COMP_F_BIO_ZLIB_FLUSH 0 +#define COMP_F_BIO_ZLIB_NEW 0 +#define COMP_F_BIO_ZLIB_READ 0 +#define COMP_F_BIO_ZLIB_WRITE 0 +#define COMP_F_COMP_CTX_NEW 0 +#endif + +/* + * CONF function codes. + */ +#define CONF_F_CONF_DUMP_FP 0 +#define CONF_F_CONF_LOAD 0 +#define CONF_F_CONF_LOAD_FP 0 +#define CONF_F_CONF_PARSE_LIST 0 +#define CONF_F_DEF_LOAD 0 +#define CONF_F_DEF_LOAD_BIO 0 +#define CONF_F_GET_NEXT_FILE 0 +#define CONF_F_MODULE_ADD 0 +#define CONF_F_MODULE_INIT 0 +#define CONF_F_MODULE_LOAD_DSO 0 +#define CONF_F_MODULE_RUN 0 +#define CONF_F_NCONF_DUMP_BIO 0 +#define CONF_F_NCONF_DUMP_FP 0 +#define CONF_F_NCONF_GET_NUMBER_E 0 +#define CONF_F_NCONF_GET_SECTION 0 +#define CONF_F_NCONF_GET_STRING 0 +#define CONF_F_NCONF_LOAD 0 +#define CONF_F_NCONF_LOAD_BIO 0 +#define CONF_F_NCONF_LOAD_FP 0 +#define CONF_F_NCONF_NEW 0 +#define CONF_F_PROCESS_INCLUDE 0 +#define CONF_F_SSL_MODULE_INIT 0 +#define CONF_F_STR_COPY 0 + +/* + * CRYPTO function codes. + */ +#define CRYPTO_F_CMAC_CTX_NEW 0 +#define CRYPTO_F_CRYPTO_DUP_EX_DATA 0 +#define CRYPTO_F_CRYPTO_FREE_EX_DATA 0 +#define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 0 +#define CRYPTO_F_CRYPTO_MEMDUP 0 +#define CRYPTO_F_CRYPTO_NEW_EX_DATA 0 +#define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 0 +#define CRYPTO_F_CRYPTO_OCB128_INIT 0 +#define CRYPTO_F_CRYPTO_SET_EX_DATA 0 +#define CRYPTO_F_GET_AND_LOCK 0 +#define CRYPTO_F_OPENSSL_ATEXIT 0 +#define CRYPTO_F_OPENSSL_BUF2HEXSTR 0 +#define CRYPTO_F_OPENSSL_FOPEN 0 +#define CRYPTO_F_OPENSSL_HEXSTR2BUF 0 +#define CRYPTO_F_OPENSSL_INIT_CRYPTO 0 +#define CRYPTO_F_OPENSSL_LH_NEW 0 +#define CRYPTO_F_OPENSSL_SK_DEEP_COPY 0 +#define CRYPTO_F_OPENSSL_SK_DUP 0 +#define CRYPTO_F_PKEY_HMAC_INIT 0 +#define CRYPTO_F_PKEY_POLY1305_INIT 0 +#define CRYPTO_F_PKEY_SIPHASH_INIT 0 +#define CRYPTO_F_SK_RESERVE 0 + +#ifndef OPENSSL_NO_CT +/* + * CT function codes. + */ +#define CT_F_CTLOG_NEW 0 +#define CT_F_CTLOG_NEW_FROM_BASE64 0 +#define CT_F_CTLOG_NEW_FROM_CONF 0 +#define CT_F_CTLOG_STORE_LOAD_CTX_NEW 0 +#define CT_F_CTLOG_STORE_LOAD_FILE 0 +#define CT_F_CTLOG_STORE_LOAD_LOG 0 +#define CT_F_CTLOG_STORE_NEW 0 +#define CT_F_CT_BASE64_DECODE 0 +#define CT_F_CT_POLICY_EVAL_CTX_NEW 0 +#define CT_F_CT_V1_LOG_ID_FROM_PKEY 0 +#define CT_F_I2O_SCT 0 +#define CT_F_I2O_SCT_LIST 0 +#define CT_F_I2O_SCT_SIGNATURE 0 +#define CT_F_O2I_SCT 0 +#define CT_F_O2I_SCT_LIST 0 +#define CT_F_O2I_SCT_SIGNATURE 0 +#define CT_F_SCT_CTX_NEW 0 +#define CT_F_SCT_CTX_VERIFY 0 +#define CT_F_SCT_NEW 0 +#define CT_F_SCT_NEW_FROM_BASE64 0 +#define CT_F_SCT_SET0_LOG_ID 0 +#define CT_F_SCT_SET1_EXTENSIONS 0 +#define CT_F_SCT_SET1_LOG_ID 0 +#define CT_F_SCT_SET1_SIGNATURE 0 +#define CT_F_SCT_SET_LOG_ENTRY_TYPE 0 +#define CT_F_SCT_SET_SIGNATURE_NID 0 +#define CT_F_SCT_SET_VERSION 0 +#endif + +#ifndef OPENSSL_NO_DH +/* + * DH function codes. + */ +#define DH_F_COMPUTE_KEY 0 +#define DH_F_DHPARAMS_PRINT_FP 0 +#define DH_F_DH_BUILTIN_GENPARAMS 0 +#define DH_F_DH_CHECK_EX 0 +#define DH_F_DH_CHECK_PARAMS_EX 0 +#define DH_F_DH_CHECK_PUB_KEY_EX 0 +#define DH_F_DH_CMS_DECRYPT 0 +#define DH_F_DH_CMS_SET_PEERKEY 0 +#define DH_F_DH_CMS_SET_SHARED_INFO 0 +#define DH_F_DH_METH_DUP 0 +#define DH_F_DH_METH_NEW 0 +#define DH_F_DH_METH_SET1_NAME 0 +#define DH_F_DH_NEW_BY_NID 0 +#define DH_F_DH_NEW_METHOD 0 +#define DH_F_DH_PARAM_DECODE 0 +#define DH_F_DH_PKEY_PUBLIC_CHECK 0 +#define DH_F_DH_PRIV_DECODE 0 +#define DH_F_DH_PRIV_ENCODE 0 +#define DH_F_DH_PUB_DECODE 0 +#define DH_F_DH_PUB_ENCODE 0 +#define DH_F_DO_DH_PRINT 0 +#define DH_F_GENERATE_KEY 0 +#define DH_F_PKEY_DH_CTRL_STR 0 +#define DH_F_PKEY_DH_DERIVE 0 +#define DH_F_PKEY_DH_INIT 0 +#define DH_F_PKEY_DH_KEYGEN 0 +#endif + +#ifndef OPENSSL_NO_DSA +/* + * DSA function codes. + */ +#define DSA_F_DSAPARAMS_PRINT 0 +#define DSA_F_DSAPARAMS_PRINT_FP 0 +#define DSA_F_DSA_BUILTIN_PARAMGEN 0 +#define DSA_F_DSA_BUILTIN_PARAMGEN2 0 +#define DSA_F_DSA_DO_SIGN 0 +#define DSA_F_DSA_DO_VERIFY 0 +#define DSA_F_DSA_METH_DUP 0 +#define DSA_F_DSA_METH_NEW 0 +#define DSA_F_DSA_METH_SET1_NAME 0 +#define DSA_F_DSA_NEW_METHOD 0 +#define DSA_F_DSA_PARAM_DECODE 0 +#define DSA_F_DSA_PRINT_FP 0 +#define DSA_F_DSA_PRIV_DECODE 0 +#define DSA_F_DSA_PRIV_ENCODE 0 +#define DSA_F_DSA_PUB_DECODE 0 +#define DSA_F_DSA_PUB_ENCODE 0 +#define DSA_F_DSA_SIGN 0 +#define DSA_F_DSA_SIGN_SETUP 0 +#define DSA_F_DSA_SIG_NEW 0 +#define DSA_F_OLD_DSA_PRIV_DECODE 0 +#define DSA_F_PKEY_DSA_CTRL 0 +#define DSA_F_PKEY_DSA_CTRL_STR 0 +#define DSA_F_PKEY_DSA_KEYGEN 0 +#endif + +#ifndef OPENSSL_NO_EC +/* + * EC function codes. + */ +#define EC_F_BN_TO_FELEM 0 +#define EC_F_D2I_ECPARAMETERS 0 +#define EC_F_D2I_ECPKPARAMETERS 0 +#define EC_F_D2I_ECPRIVATEKEY 0 +#define EC_F_DO_EC_KEY_PRINT 0 +#define EC_F_ECDH_CMS_DECRYPT 0 +#define EC_F_ECDH_CMS_SET_SHARED_INFO 0 +#define EC_F_ECDH_COMPUTE_KEY 0 +#define EC_F_ECDH_SIMPLE_COMPUTE_KEY 0 +#define EC_F_ECDSA_DO_SIGN_EX 0 +#define EC_F_ECDSA_DO_VERIFY 0 +#define EC_F_ECDSA_SIGN_EX 0 +#define EC_F_ECDSA_SIGN_SETUP 0 +#define EC_F_ECDSA_SIG_NEW 0 +#define EC_F_ECDSA_VERIFY 0 +#define EC_F_ECD_ITEM_VERIFY 0 +#define EC_F_ECKEY_PARAM2TYPE 0 +#define EC_F_ECKEY_PARAM_DECODE 0 +#define EC_F_ECKEY_PRIV_DECODE 0 +#define EC_F_ECKEY_PRIV_ENCODE 0 +#define EC_F_ECKEY_PUB_DECODE 0 +#define EC_F_ECKEY_PUB_ENCODE 0 +#define EC_F_ECKEY_TYPE2PARAM 0 +#define EC_F_ECPARAMETERS_PRINT 0 +#define EC_F_ECPARAMETERS_PRINT_FP 0 +#define EC_F_ECPKPARAMETERS_PRINT 0 +#define EC_F_ECPKPARAMETERS_PRINT_FP 0 +#define EC_F_ECP_NISTZ256_GET_AFFINE 0 +#define EC_F_ECP_NISTZ256_INV_MOD_ORD 0 +#define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 0 +#define EC_F_ECP_NISTZ256_POINTS_MUL 0 +#define EC_F_ECP_NISTZ256_PRE_COMP_NEW 0 +#define EC_F_ECP_NISTZ256_WINDOWED_MUL 0 +#define EC_F_ECX_KEY_OP 0 +#define EC_F_ECX_PRIV_ENCODE 0 +#define EC_F_ECX_PUB_ENCODE 0 +#define EC_F_EC_ASN1_GROUP2CURVE 0 +#define EC_F_EC_ASN1_GROUP2FIELDID 0 +#define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 0 +#define EC_F_EC_GF2M_SIMPLE_FIELD_INV 0 +#define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 0 +#define EC_F_EC_GF2M_SIMPLE_LADDER_POST 0 +#define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 0 +#define EC_F_EC_GF2M_SIMPLE_OCT2POINT 0 +#define EC_F_EC_GF2M_SIMPLE_POINT2OCT 0 +#define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 0 +#define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_GFP_MONT_FIELD_DECODE 0 +#define EC_F_EC_GFP_MONT_FIELD_ENCODE 0 +#define EC_F_EC_GFP_MONT_FIELD_INV 0 +#define EC_F_EC_GFP_MONT_FIELD_MUL 0 +#define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 0 +#define EC_F_EC_GFP_MONT_FIELD_SQR 0 +#define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP224_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP256_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP521_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NIST_FIELD_MUL 0 +#define EC_F_EC_GFP_NIST_FIELD_SQR 0 +#define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_FIELD_INV 0 +#define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 0 +#define EC_F_EC_GFP_SIMPLE_OCT2POINT 0 +#define EC_F_EC_GFP_SIMPLE_POINT2OCT 0 +#define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 0 +#define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_GROUP_CHECK 0 +#define EC_F_EC_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GROUP_COPY 0 +#define EC_F_EC_GROUP_GET_CURVE 0 +#define EC_F_EC_GROUP_GET_CURVE_GF2M 0 +#define EC_F_EC_GROUP_GET_CURVE_GFP 0 +#define EC_F_EC_GROUP_GET_DEGREE 0 +#define EC_F_EC_GROUP_GET_ECPARAMETERS 0 +#define EC_F_EC_GROUP_GET_ECPKPARAMETERS 0 +#define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 0 +#define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 0 +#define EC_F_EC_GROUP_NEW 0 +#define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 0 +#define EC_F_EC_GROUP_NEW_FROM_DATA 0 +#define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 0 +#define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 0 +#define EC_F_EC_GROUP_SET_CURVE 0 +#define EC_F_EC_GROUP_SET_CURVE_GF2M 0 +#define EC_F_EC_GROUP_SET_CURVE_GFP 0 +#define EC_F_EC_GROUP_SET_GENERATOR 0 +#define EC_F_EC_GROUP_SET_SEED 0 +#define EC_F_EC_KEY_CHECK_KEY 0 +#define EC_F_EC_KEY_COPY 0 +#define EC_F_EC_KEY_GENERATE_KEY 0 +#define EC_F_EC_KEY_NEW 0 +#define EC_F_EC_KEY_NEW_METHOD 0 +#define EC_F_EC_KEY_OCT2PRIV 0 +#define EC_F_EC_KEY_PRINT 0 +#define EC_F_EC_KEY_PRINT_FP 0 +#define EC_F_EC_KEY_PRIV2BUF 0 +#define EC_F_EC_KEY_PRIV2OCT 0 +#define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 0 +#define EC_F_EC_KEY_SIMPLE_CHECK_KEY 0 +#define EC_F_EC_KEY_SIMPLE_OCT2PRIV 0 +#define EC_F_EC_KEY_SIMPLE_PRIV2OCT 0 +#define EC_F_EC_PKEY_CHECK 0 +#define EC_F_EC_PKEY_PARAM_CHECK 0 +#define EC_F_EC_POINTS_MAKE_AFFINE 0 +#define EC_F_EC_POINTS_MUL 0 +#define EC_F_EC_POINT_ADD 0 +#define EC_F_EC_POINT_BN2POINT 0 +#define EC_F_EC_POINT_CMP 0 +#define EC_F_EC_POINT_COPY 0 +#define EC_F_EC_POINT_DBL 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_INVERT 0 +#define EC_F_EC_POINT_IS_AT_INFINITY 0 +#define EC_F_EC_POINT_IS_ON_CURVE 0 +#define EC_F_EC_POINT_MAKE_AFFINE 0 +#define EC_F_EC_POINT_NEW 0 +#define EC_F_EC_POINT_OCT2POINT 0 +#define EC_F_EC_POINT_POINT2BUF 0 +#define EC_F_EC_POINT_POINT2OCT 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_TO_INFINITY 0 +#define EC_F_EC_PRE_COMP_NEW 0 +#define EC_F_EC_SCALAR_MUL_LADDER 0 +#define EC_F_EC_WNAF_MUL 0 +#define EC_F_EC_WNAF_PRECOMPUTE_MULT 0 +#define EC_F_I2D_ECPARAMETERS 0 +#define EC_F_I2D_ECPKPARAMETERS 0 +#define EC_F_I2D_ECPRIVATEKEY 0 +#define EC_F_I2O_ECPUBLICKEY 0 +#define EC_F_NISTP224_PRE_COMP_NEW 0 +#define EC_F_NISTP256_PRE_COMP_NEW 0 +#define EC_F_NISTP521_PRE_COMP_NEW 0 +#define EC_F_O2I_ECPUBLICKEY 0 +#define EC_F_OLD_EC_PRIV_DECODE 0 +#define EC_F_OSSL_ECDH_COMPUTE_KEY 0 +#define EC_F_OSSL_ECDSA_SIGN_SIG 0 +#define EC_F_OSSL_ECDSA_VERIFY_SIG 0 +#define EC_F_PKEY_ECD_CTRL 0 +#define EC_F_PKEY_ECD_DIGESTSIGN 0 +#define EC_F_PKEY_ECD_DIGESTSIGN25519 0 +#define EC_F_PKEY_ECD_DIGESTSIGN448 0 +#define EC_F_PKEY_ECX_DERIVE 0 +#define EC_F_PKEY_EC_CTRL 0 +#define EC_F_PKEY_EC_CTRL_STR 0 +#define EC_F_PKEY_EC_DERIVE 0 +#define EC_F_PKEY_EC_INIT 0 +#define EC_F_PKEY_EC_KDF_DERIVE 0 +#define EC_F_PKEY_EC_KEYGEN 0 +#define EC_F_PKEY_EC_PARAMGEN 0 +#define EC_F_PKEY_EC_SIGN 0 +#define EC_F_VALIDATE_ECX_DERIVE 0 +#endif + +#ifndef OPENSSL_NO_ENGINE +/* + * ENGINE function codes. + */ +#define ENGINE_F_DIGEST_UPDATE 0 +#define ENGINE_F_DYNAMIC_CTRL 0 +#define ENGINE_F_DYNAMIC_GET_DATA_CTX 0 +#define ENGINE_F_DYNAMIC_LOAD 0 +#define ENGINE_F_DYNAMIC_SET_DATA_CTX 0 +#define ENGINE_F_ENGINE_ADD 0 +#define ENGINE_F_ENGINE_BY_ID 0 +#define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 0 +#define ENGINE_F_ENGINE_CTRL 0 +#define ENGINE_F_ENGINE_CTRL_CMD 0 +#define ENGINE_F_ENGINE_CTRL_CMD_STRING 0 +#define ENGINE_F_ENGINE_FINISH 0 +#define ENGINE_F_ENGINE_GET_CIPHER 0 +#define ENGINE_F_ENGINE_GET_DIGEST 0 +#define ENGINE_F_ENGINE_GET_FIRST 0 +#define ENGINE_F_ENGINE_GET_LAST 0 +#define ENGINE_F_ENGINE_GET_NEXT 0 +#define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 0 +#define ENGINE_F_ENGINE_GET_PKEY_METH 0 +#define ENGINE_F_ENGINE_GET_PREV 0 +#define ENGINE_F_ENGINE_INIT 0 +#define ENGINE_F_ENGINE_LIST_ADD 0 +#define ENGINE_F_ENGINE_LIST_REMOVE 0 +#define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 0 +#define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 0 +#define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 0 +#define ENGINE_F_ENGINE_NEW 0 +#define ENGINE_F_ENGINE_PKEY_ASN1_FIND_STR 0 +#define ENGINE_F_ENGINE_REMOVE 0 +#define ENGINE_F_ENGINE_SET_DEFAULT_STRING 0 +#define ENGINE_F_ENGINE_SET_ID 0 +#define ENGINE_F_ENGINE_SET_NAME 0 +#define ENGINE_F_ENGINE_TABLE_REGISTER 0 +#define ENGINE_F_ENGINE_UNLOCKED_FINISH 0 +#define ENGINE_F_ENGINE_UP_REF 0 +#define ENGINE_F_INT_CLEANUP_ITEM 0 +#define ENGINE_F_INT_CTRL_HELPER 0 +#define ENGINE_F_INT_ENGINE_CONFIGURE 0 +#define ENGINE_F_INT_ENGINE_MODULE_INIT 0 +#define ENGINE_F_OSSL_HMAC_INIT 0 +#endif + +/* + * EVP function codes. + */ +#define EVP_F_AESNI_INIT_KEY 0 +#define EVP_F_AESNI_XTS_INIT_KEY 0 +#define EVP_F_AES_GCM_CTRL 0 +#define EVP_F_AES_INIT_KEY 0 +#define EVP_F_AES_OCB_CIPHER 0 +#define EVP_F_AES_T4_INIT_KEY 0 +#define EVP_F_AES_T4_XTS_INIT_KEY 0 +#define EVP_F_AES_WRAP_CIPHER 0 +#define EVP_F_AES_XTS_INIT_KEY 0 +#define EVP_F_ALG_MODULE_INIT 0 +#define EVP_F_ARIA_CCM_INIT_KEY 0 +#define EVP_F_ARIA_GCM_CTRL 0 +#define EVP_F_ARIA_GCM_INIT_KEY 0 +#define EVP_F_ARIA_INIT_KEY 0 +#define EVP_F_B64_NEW 0 +#define EVP_F_CAMELLIA_INIT_KEY 0 +#define EVP_F_CHACHA20_POLY1305_CTRL 0 +#define EVP_F_CMLL_T4_INIT_KEY 0 +#define EVP_F_DES_EDE3_WRAP_CIPHER 0 +#define EVP_F_DO_SIGVER_INIT 0 +#define EVP_F_ENC_NEW 0 +#define EVP_F_EVP_CIPHERINIT_EX 0 +#define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 0 +#define EVP_F_EVP_CIPHER_CTX_COPY 0 +#define EVP_F_EVP_CIPHER_CTX_CTRL 0 +#define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 0 +#define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 0 +#define EVP_F_EVP_DECRYPTFINAL_EX 0 +#define EVP_F_EVP_DECRYPTUPDATE 0 +#define EVP_F_EVP_DIGESTFINALXOF 0 +#define EVP_F_EVP_DIGESTINIT_EX 0 +#define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 0 +#define EVP_F_EVP_ENCRYPTFINAL_EX 0 +#define EVP_F_EVP_ENCRYPTUPDATE 0 +#define EVP_F_EVP_MD_CTX_COPY_EX 0 +#define EVP_F_EVP_MD_SIZE 0 +#define EVP_F_EVP_OPENINIT 0 +#define EVP_F_EVP_PBE_ALG_ADD 0 +#define EVP_F_EVP_PBE_ALG_ADD_TYPE 0 +#define EVP_F_EVP_PBE_CIPHERINIT 0 +#define EVP_F_EVP_PBE_SCRYPT 0 +#define EVP_F_EVP_PKCS82PKEY 0 +#define EVP_F_EVP_PKEY2PKCS8 0 +#define EVP_F_EVP_PKEY_ASN1_ADD0 0 +#define EVP_F_EVP_PKEY_CHECK 0 +#define EVP_F_EVP_PKEY_COPY_PARAMETERS 0 +#define EVP_F_EVP_PKEY_CTX_CTRL 0 +#define EVP_F_EVP_PKEY_CTX_CTRL_STR 0 +#define EVP_F_EVP_PKEY_CTX_DUP 0 +#define EVP_F_EVP_PKEY_CTX_MD 0 +#define EVP_F_EVP_PKEY_DECRYPT 0 +#define EVP_F_EVP_PKEY_DECRYPT_INIT 0 +#define EVP_F_EVP_PKEY_DECRYPT_OLD 0 +#define EVP_F_EVP_PKEY_DERIVE 0 +#define EVP_F_EVP_PKEY_DERIVE_INIT 0 +#define EVP_F_EVP_PKEY_DERIVE_SET_PEER 0 +#define EVP_F_EVP_PKEY_ENCRYPT 0 +#define EVP_F_EVP_PKEY_ENCRYPT_INIT 0 +#define EVP_F_EVP_PKEY_ENCRYPT_OLD 0 +#define EVP_F_EVP_PKEY_GET0_DH 0 +#define EVP_F_EVP_PKEY_GET0_DSA 0 +#define EVP_F_EVP_PKEY_GET0_EC_KEY 0 +#define EVP_F_EVP_PKEY_GET0_HMAC 0 +#define EVP_F_EVP_PKEY_GET0_POLY1305 0 +#define EVP_F_EVP_PKEY_GET0_RSA 0 +#define EVP_F_EVP_PKEY_GET0_SIPHASH 0 +#define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 0 +#define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 0 +#define EVP_F_EVP_PKEY_KEYGEN 0 +#define EVP_F_EVP_PKEY_KEYGEN_INIT 0 +#define EVP_F_EVP_PKEY_METH_ADD0 0 +#define EVP_F_EVP_PKEY_METH_NEW 0 +#define EVP_F_EVP_PKEY_NEW 0 +#define EVP_F_EVP_PKEY_NEW_CMAC_KEY 0 +#define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 0 +#define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 0 +#define EVP_F_EVP_PKEY_PARAMGEN 0 +#define EVP_F_EVP_PKEY_PARAMGEN_INIT 0 +#define EVP_F_EVP_PKEY_PARAM_CHECK 0 +#define EVP_F_EVP_PKEY_PUBLIC_CHECK 0 +#define EVP_F_EVP_PKEY_SET1_ENGINE 0 +#define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 0 +#define EVP_F_EVP_PKEY_SIGN 0 +#define EVP_F_EVP_PKEY_SIGN_INIT 0 +#define EVP_F_EVP_PKEY_VERIFY 0 +#define EVP_F_EVP_PKEY_VERIFY_INIT 0 +#define EVP_F_EVP_PKEY_VERIFY_RECOVER 0 +#define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 0 +#define EVP_F_EVP_SIGNFINAL 0 +#define EVP_F_EVP_VERIFYFINAL 0 +#define EVP_F_INT_CTX_NEW 0 +#define EVP_F_OK_NEW 0 +#define EVP_F_PKCS5_PBE_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_PBE_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 0 +#define EVP_F_PKEY_SET_TYPE 0 +#define EVP_F_RC2_MAGIC_TO_METH 0 +#define EVP_F_RC5_CTRL 0 +#define EVP_F_R_32_12_16_INIT_KEY 0 +#define EVP_F_S390X_AES_GCM_CTRL 0 +#define EVP_F_UPDATE 0 + +/* + * KDF function codes. + */ +#define KDF_F_PKEY_HKDF_CTRL_STR 0 +#define KDF_F_PKEY_HKDF_DERIVE 0 +#define KDF_F_PKEY_HKDF_INIT 0 +#define KDF_F_PKEY_SCRYPT_CTRL_STR 0 +#define KDF_F_PKEY_SCRYPT_CTRL_UINT64 0 +#define KDF_F_PKEY_SCRYPT_DERIVE 0 +#define KDF_F_PKEY_SCRYPT_INIT 0 +#define KDF_F_PKEY_SCRYPT_SET_MEMBUF 0 +#define KDF_F_PKEY_TLS1_PRF_CTRL_STR 0 +#define KDF_F_PKEY_TLS1_PRF_DERIVE 0 +#define KDF_F_PKEY_TLS1_PRF_INIT 0 +#define KDF_F_TLS1_PRF_ALG 0 + +/* + * KDF reason codes. + */ +#define KDF_R_INVALID_DIGEST 0 +#define KDF_R_MISSING_ITERATION_COUNT 0 +#define KDF_R_MISSING_KEY 0 +#define KDF_R_MISSING_MESSAGE_DIGEST 0 +#define KDF_R_MISSING_PARAMETER 0 +#define KDF_R_MISSING_PASS 0 +#define KDF_R_MISSING_SALT 0 +#define KDF_R_MISSING_SECRET 0 +#define KDF_R_MISSING_SEED 0 +#define KDF_R_UNKNOWN_PARAMETER_TYPE 0 +#define KDF_R_VALUE_ERROR 0 +#define KDF_R_VALUE_MISSING 0 + +/* + * OBJ function codes. + */ +#define OBJ_F_OBJ_ADD_OBJECT 0 +#define OBJ_F_OBJ_ADD_SIGID 0 +#define OBJ_F_OBJ_CREATE 0 +#define OBJ_F_OBJ_DUP 0 +#define OBJ_F_OBJ_NAME_NEW_INDEX 0 +#define OBJ_F_OBJ_NID2LN 0 +#define OBJ_F_OBJ_NID2OBJ 0 +#define OBJ_F_OBJ_NID2SN 0 +#define OBJ_F_OBJ_TXT2OBJ 0 + +#ifndef OPENSSL_NO_OCSP +/* + * OCSP function codes. + */ +#define OCSP_F_D2I_OCSP_NONCE 0 +#define OCSP_F_OCSP_BASIC_ADD1_STATUS 0 +#define OCSP_F_OCSP_BASIC_SIGN 0 +#define OCSP_F_OCSP_BASIC_SIGN_CTX 0 +#define OCSP_F_OCSP_BASIC_VERIFY 0 +#define OCSP_F_OCSP_CERT_ID_NEW 0 +#define OCSP_F_OCSP_CHECK_DELEGATED 0 +#define OCSP_F_OCSP_CHECK_IDS 0 +#define OCSP_F_OCSP_CHECK_ISSUER 0 +#define OCSP_F_OCSP_CHECK_VALIDITY 0 +#define OCSP_F_OCSP_MATCH_ISSUERID 0 +#define OCSP_F_OCSP_PARSE_URL 0 +#define OCSP_F_OCSP_REQUEST_SIGN 0 +#define OCSP_F_OCSP_REQUEST_VERIFY 0 +#define OCSP_F_OCSP_RESPONSE_GET1_BASIC 0 +#define OCSP_F_PARSE_HTTP_LINE1 0 +#endif + +/* + * PEM function codes. + */ +#define PEM_F_B2I_DSS 0 +#define PEM_F_B2I_PVK_BIO 0 +#define PEM_F_B2I_RSA 0 +#define PEM_F_CHECK_BITLEN_DSA 0 +#define PEM_F_CHECK_BITLEN_RSA 0 +#define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 0 +#define PEM_F_D2I_PKCS8PRIVATEKEY_FP 0 +#define PEM_F_DO_B2I 0 +#define PEM_F_DO_B2I_BIO 0 +#define PEM_F_DO_BLOB_HEADER 0 +#define PEM_F_DO_I2B 0 +#define PEM_F_DO_PK8PKEY 0 +#define PEM_F_DO_PK8PKEY_FP 0 +#define PEM_F_DO_PVK_BODY 0 +#define PEM_F_DO_PVK_HEADER 0 +#define PEM_F_GET_HEADER_AND_DATA 0 +#define PEM_F_GET_NAME 0 +#define PEM_F_I2B_PVK 0 +#define PEM_F_I2B_PVK_BIO 0 +#define PEM_F_LOAD_IV 0 +#define PEM_F_PEM_ASN1_READ 0 +#define PEM_F_PEM_ASN1_READ_BIO 0 +#define PEM_F_PEM_ASN1_WRITE 0 +#define PEM_F_PEM_ASN1_WRITE_BIO 0 +#define PEM_F_PEM_DEF_CALLBACK 0 +#define PEM_F_PEM_DO_HEADER 0 +#define PEM_F_PEM_GET_EVP_CIPHER_INFO 0 +#define PEM_F_PEM_READ 0 +#define PEM_F_PEM_READ_BIO 0 +#define PEM_F_PEM_READ_BIO_DHPARAMS 0 +#define PEM_F_PEM_READ_BIO_EX 0 +#define PEM_F_PEM_READ_BIO_PARAMETERS 0 +#define PEM_F_PEM_READ_BIO_PRIVATEKEY 0 +#define PEM_F_PEM_READ_DHPARAMS 0 +#define PEM_F_PEM_READ_PRIVATEKEY 0 +#define PEM_F_PEM_SIGNFINAL 0 +#define PEM_F_PEM_WRITE 0 +#define PEM_F_PEM_WRITE_BIO 0 +#define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 0 +#define PEM_F_PEM_WRITE_PRIVATEKEY 0 +#define PEM_F_PEM_X509_INFO_READ 0 +#define PEM_F_PEM_X509_INFO_READ_BIO 0 +#define PEM_F_PEM_X509_INFO_WRITE_BIO 0 + +/* + * PKCS12 function codes. + */ +#define PKCS12_F_OPENSSL_ASC2UNI 0 +#define PKCS12_F_OPENSSL_UNI2ASC 0 +#define PKCS12_F_OPENSSL_UNI2UTF8 0 +#define PKCS12_F_OPENSSL_UTF82UNI 0 +#define PKCS12_F_PKCS12_CREATE 0 +#define PKCS12_F_PKCS12_GEN_MAC 0 +#define PKCS12_F_PKCS12_INIT 0 +#define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 0 +#define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 0 +#define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 0 +#define PKCS12_F_PKCS12_KEY_GEN_ASC 0 +#define PKCS12_F_PKCS12_KEY_GEN_UNI 0 +#define PKCS12_F_PKCS12_KEY_GEN_UTF8 0 +#define PKCS12_F_PKCS12_NEWPASS 0 +#define PKCS12_F_PKCS12_PACK_P7DATA 0 +#define PKCS12_F_PKCS12_PACK_P7ENCDATA 0 +#define PKCS12_F_PKCS12_PARSE 0 +#define PKCS12_F_PKCS12_PBE_CRYPT 0 +#define PKCS12_F_PKCS12_PBE_KEYIVGEN 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 0 +#define PKCS12_F_PKCS12_SETUP_MAC 0 +#define PKCS12_F_PKCS12_SET_MAC 0 +#define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 0 +#define PKCS12_F_PKCS12_UNPACK_P7DATA 0 +#define PKCS12_F_PKCS12_VERIFY_MAC 0 +#define PKCS12_F_PKCS8_ENCRYPT 0 +#define PKCS12_F_PKCS8_SET0_PBE 0 + +/* + * PKCS7 function codes. + */ +#define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 0 +#define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 0 +#define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 0 +#define PKCS7_F_PKCS7_ADD_CERTIFICATE 0 +#define PKCS7_F_PKCS7_ADD_CRL 0 +#define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 0 +#define PKCS7_F_PKCS7_ADD_SIGNATURE 0 +#define PKCS7_F_PKCS7_ADD_SIGNER 0 +#define PKCS7_F_PKCS7_BIO_ADD_DIGEST 0 +#define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 0 +#define PKCS7_F_PKCS7_CTRL 0 +#define PKCS7_F_PKCS7_DATADECODE 0 +#define PKCS7_F_PKCS7_DATAFINAL 0 +#define PKCS7_F_PKCS7_DATAINIT 0 +#define PKCS7_F_PKCS7_DATAVERIFY 0 +#define PKCS7_F_PKCS7_DECRYPT 0 +#define PKCS7_F_PKCS7_DECRYPT_RINFO 0 +#define PKCS7_F_PKCS7_ENCODE_RINFO 0 +#define PKCS7_F_PKCS7_ENCRYPT 0 +#define PKCS7_F_PKCS7_FINAL 0 +#define PKCS7_F_PKCS7_FIND_DIGEST 0 +#define PKCS7_F_PKCS7_GET0_SIGNERS 0 +#define PKCS7_F_PKCS7_RECIP_INFO_SET 0 +#define PKCS7_F_PKCS7_SET_CIPHER 0 +#define PKCS7_F_PKCS7_SET_CONTENT 0 +#define PKCS7_F_PKCS7_SET_DIGEST 0 +#define PKCS7_F_PKCS7_SET_TYPE 0 +#define PKCS7_F_PKCS7_SIGN 0 +#define PKCS7_F_PKCS7_SIGNATUREVERIFY 0 +#define PKCS7_F_PKCS7_SIGNER_INFO_SET 0 +#define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 0 +#define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 0 +#define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 0 +#define PKCS7_F_PKCS7_VERIFY 0 + +/* + * RAND function codes. + */ +#define RAND_F_DATA_COLLECT_METHOD 0 +#define RAND_F_DRBG_BYTES 0 +#define RAND_F_DRBG_GET_ENTROPY 0 +#define RAND_F_DRBG_SETUP 0 +#define RAND_F_GET_ENTROPY 0 +#define RAND_F_RAND_BYTES 0 +#define RAND_F_RAND_DRBG_ENABLE_LOCKING 0 +#define RAND_F_RAND_DRBG_GENERATE 0 +#define RAND_F_RAND_DRBG_GET_ENTROPY 0 +#define RAND_F_RAND_DRBG_GET_NONCE 0 +#define RAND_F_RAND_DRBG_INSTANTIATE 0 +#define RAND_F_RAND_DRBG_NEW 0 +#define RAND_F_RAND_DRBG_RESEED 0 +#define RAND_F_RAND_DRBG_RESTART 0 +#define RAND_F_RAND_DRBG_SET 0 +#define RAND_F_RAND_DRBG_SET_DEFAULTS 0 +#define RAND_F_RAND_DRBG_UNINSTANTIATE 0 +#define RAND_F_RAND_LOAD_FILE 0 +#define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 0 +#define RAND_F_RAND_POOL_ADD 0 +#define RAND_F_RAND_POOL_ADD_BEGIN 0 +#define RAND_F_RAND_POOL_ADD_END 0 +#define RAND_F_RAND_POOL_ATTACH 0 +#define RAND_F_RAND_POOL_BYTES_NEEDED 0 +#define RAND_F_RAND_POOL_GROW 0 +#define RAND_F_RAND_POOL_NEW 0 +#define RAND_F_RAND_PSEUDO_BYTES 0 +#define RAND_F_RAND_WRITE_FILE 0 + +/* + * RSA function codes. + */ +#define RSA_F_CHECK_PADDING_MD 0 +#define RSA_F_ENCODE_PKCS1 0 +#define RSA_F_INT_RSA_VERIFY 0 +#define RSA_F_OLD_RSA_PRIV_DECODE 0 +#define RSA_F_PKEY_PSS_INIT 0 +#define RSA_F_PKEY_RSA_CTRL 0 +#define RSA_F_PKEY_RSA_CTRL_STR 0 +#define RSA_F_PKEY_RSA_SIGN 0 +#define RSA_F_PKEY_RSA_VERIFY 0 +#define RSA_F_PKEY_RSA_VERIFYRECOVER 0 +#define RSA_F_RSA_ALGOR_TO_MD 0 +#define RSA_F_RSA_BUILTIN_KEYGEN 0 +#define RSA_F_RSA_CHECK_KEY 0 +#define RSA_F_RSA_CHECK_KEY_EX 0 +#define RSA_F_RSA_CMS_DECRYPT 0 +#define RSA_F_RSA_CMS_VERIFY 0 +#define RSA_F_RSA_ITEM_VERIFY 0 +#define RSA_F_RSA_METH_DUP 0 +#define RSA_F_RSA_METH_NEW 0 +#define RSA_F_RSA_METH_SET1_NAME 0 +#define RSA_F_RSA_MGF1_TO_MD 0 +#define RSA_F_RSA_MULTIP_INFO_NEW 0 +#define RSA_F_RSA_NEW_METHOD 0 +#define RSA_F_RSA_NULL 0 +#define RSA_F_RSA_NULL_PRIVATE_DECRYPT 0 +#define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 0 +#define RSA_F_RSA_NULL_PUBLIC_DECRYPT 0 +#define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 0 +#define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 0 +#define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 0 +#define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 0 +#define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 0 +#define RSA_F_RSA_PADDING_ADD_NONE 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 0 +#define RSA_F_RSA_PADDING_ADD_SSLV23 0 +#define RSA_F_RSA_PADDING_ADD_X931 0 +#define RSA_F_RSA_PADDING_CHECK_NONE 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 0 +#define RSA_F_RSA_PADDING_CHECK_SSLV23 0 +#define RSA_F_RSA_PADDING_CHECK_X931 0 +#define RSA_F_RSA_PARAM_DECODE 0 +#define RSA_F_RSA_PRINT 0 +#define RSA_F_RSA_PRINT_FP 0 +#define RSA_F_RSA_PRIV_DECODE 0 +#define RSA_F_RSA_PRIV_ENCODE 0 +#define RSA_F_RSA_PSS_GET_PARAM 0 +#define RSA_F_RSA_PSS_TO_CTX 0 +#define RSA_F_RSA_PUB_DECODE 0 +#define RSA_F_RSA_SETUP_BLINDING 0 +#define RSA_F_RSA_SIGN 0 +#define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 0 +#define RSA_F_RSA_VERIFY 0 +#define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 0 +#define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 0 +#define RSA_F_SETUP_TBUF 0 + +/* + * OSSL_STORE function codes. + */ +#define OSSL_STORE_F_FILE_CTRL 0 +#define OSSL_STORE_F_FILE_FIND 0 +#define OSSL_STORE_F_FILE_GET_PASS 0 +#define OSSL_STORE_F_FILE_LOAD 0 +#define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 0 +#define OSSL_STORE_F_FILE_NAME_TO_URI 0 +#define OSSL_STORE_F_FILE_OPEN 0 +#define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 0 +#define OSSL_STORE_F_OSSL_STORE_EXPECT 0 +#define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 0 +#define OSSL_STORE_F_OSSL_STORE_FIND 0 +#define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 0 +#define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 0 +#define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 0 +#define OSSL_STORE_F_OSSL_STORE_OPEN 0 +#define OSSL_STORE_F_OSSL_STORE_OPEN_INT 0 +#define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 0 +#define OSSL_STORE_F_TRY_DECODE_PARAMS 0 +#define OSSL_STORE_F_TRY_DECODE_PKCS12 0 +#define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 0 + +#ifndef OPENSSL_NO_TS +/* + * TS function codes. + */ +#define TS_F_DEF_SERIAL_CB 0 +#define TS_F_DEF_TIME_CB 0 +#define TS_F_ESS_ADD_SIGNING_CERT 0 +#define TS_F_ESS_ADD_SIGNING_CERT_V2 0 +#define TS_F_ESS_CERT_ID_NEW_INIT 0 +#define TS_F_ESS_CERT_ID_V2_NEW_INIT 0 +#define TS_F_ESS_SIGNING_CERT_NEW_INIT 0 +#define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 0 +#define TS_F_INT_TS_RESP_VERIFY_TOKEN 0 +#define TS_F_PKCS7_TO_TS_TST_INFO 0 +#define TS_F_TS_ACCURACY_SET_MICROS 0 +#define TS_F_TS_ACCURACY_SET_MILLIS 0 +#define TS_F_TS_ACCURACY_SET_SECONDS 0 +#define TS_F_TS_CHECK_IMPRINTS 0 +#define TS_F_TS_CHECK_NONCES 0 +#define TS_F_TS_CHECK_POLICY 0 +#define TS_F_TS_CHECK_SIGNING_CERTS 0 +#define TS_F_TS_CHECK_STATUS_INFO 0 +#define TS_F_TS_COMPUTE_IMPRINT 0 +#define TS_F_TS_CONF_INVALID 0 +#define TS_F_TS_CONF_LOAD_CERT 0 +#define TS_F_TS_CONF_LOAD_CERTS 0 +#define TS_F_TS_CONF_LOAD_KEY 0 +#define TS_F_TS_CONF_LOOKUP_FAIL 0 +#define TS_F_TS_CONF_SET_DEFAULT_ENGINE 0 +#define TS_F_TS_GET_STATUS_TEXT 0 +#define TS_F_TS_MSG_IMPRINT_SET_ALGO 0 +#define TS_F_TS_REQ_SET_MSG_IMPRINT 0 +#define TS_F_TS_REQ_SET_NONCE 0 +#define TS_F_TS_REQ_SET_POLICY_ID 0 +#define TS_F_TS_RESP_CREATE_RESPONSE 0 +#define TS_F_TS_RESP_CREATE_TST_INFO 0 +#define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 0 +#define TS_F_TS_RESP_CTX_ADD_MD 0 +#define TS_F_TS_RESP_CTX_ADD_POLICY 0 +#define TS_F_TS_RESP_CTX_NEW 0 +#define TS_F_TS_RESP_CTX_SET_ACCURACY 0 +#define TS_F_TS_RESP_CTX_SET_CERTS 0 +#define TS_F_TS_RESP_CTX_SET_DEF_POLICY 0 +#define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 0 +#define TS_F_TS_RESP_CTX_SET_STATUS_INFO 0 +#define TS_F_TS_RESP_GET_POLICY 0 +#define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 0 +#define TS_F_TS_RESP_SET_STATUS_INFO 0 +#define TS_F_TS_RESP_SET_TST_INFO 0 +#define TS_F_TS_RESP_SIGN 0 +#define TS_F_TS_RESP_VERIFY_SIGNATURE 0 +#define TS_F_TS_TST_INFO_SET_ACCURACY 0 +#define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 0 +#define TS_F_TS_TST_INFO_SET_NONCE 0 +#define TS_F_TS_TST_INFO_SET_POLICY_ID 0 +#define TS_F_TS_TST_INFO_SET_SERIAL 0 +#define TS_F_TS_TST_INFO_SET_TIME 0 +#define TS_F_TS_TST_INFO_SET_TSA 0 +#define TS_F_TS_VERIFY 0 +#define TS_F_TS_VERIFY_CERT 0 +#define TS_F_TS_VERIFY_CTX_NEW 0 +#endif + +/* + * UI function codes. + */ +#define UI_F_CLOSE_CONSOLE 0 +#define UI_F_ECHO_CONSOLE 0 +#define UI_F_GENERAL_ALLOCATE_BOOLEAN 0 +#define UI_F_GENERAL_ALLOCATE_PROMPT 0 +#define UI_F_NOECHO_CONSOLE 0 +#define UI_F_OPEN_CONSOLE 0 +#define UI_F_UI_CONSTRUCT_PROMPT 0 +#define UI_F_UI_CREATE_METHOD 0 +#define UI_F_UI_CTRL 0 +#define UI_F_UI_DUP_ERROR_STRING 0 +#define UI_F_UI_DUP_INFO_STRING 0 +#define UI_F_UI_DUP_INPUT_BOOLEAN 0 +#define UI_F_UI_DUP_INPUT_STRING 0 +#define UI_F_UI_DUP_USER_DATA 0 +#define UI_F_UI_DUP_VERIFY_STRING 0 +#define UI_F_UI_GET0_RESULT 0 +#define UI_F_UI_GET_RESULT_LENGTH 0 +#define UI_F_UI_NEW_METHOD 0 +#define UI_F_UI_PROCESS 0 +#define UI_F_UI_SET_RESULT 0 +#define UI_F_UI_SET_RESULT_EX 0 + +/* + * X509 function codes. + */ +#define X509_F_ADD_CERT_DIR 0 +#define X509_F_BUILD_CHAIN 0 +#define X509_F_BY_FILE_CTRL 0 +#define X509_F_CHECK_NAME_CONSTRAINTS 0 +#define X509_F_CHECK_POLICY 0 +#define X509_F_DANE_I2D 0 +#define X509_F_DIR_CTRL 0 +#define X509_F_GET_CERT_BY_SUBJECT 0 +#define X509_F_I2D_X509_AUX 0 +#define X509_F_LOOKUP_CERTS_SK 0 +#define X509_F_NETSCAPE_SPKI_B64_DECODE 0 +#define X509_F_NETSCAPE_SPKI_B64_ENCODE 0 +#define X509_F_NEW_DIR 0 +#define X509_F_X509AT_ADD1_ATTR 0 +#define X509_F_X509V3_ADD_EXT 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 0 +#define X509_F_X509_ATTRIBUTE_GET0_DATA 0 +#define X509_F_X509_ATTRIBUTE_SET1_DATA 0 +#define X509_F_X509_CHECK_PRIVATE_KEY 0 +#define X509_F_X509_CRL_DIFF 0 +#define X509_F_X509_CRL_METHOD_NEW 0 +#define X509_F_X509_CRL_PRINT_FP 0 +#define X509_F_X509_EXTENSION_CREATE_BY_NID 0 +#define X509_F_X509_EXTENSION_CREATE_BY_OBJ 0 +#define X509_F_X509_GET_PUBKEY_PARAMETERS 0 +#define X509_F_X509_LOAD_CERT_CRL_FILE 0 +#define X509_F_X509_LOAD_CERT_FILE 0 +#define X509_F_X509_LOAD_CRL_FILE 0 +#define X509_F_X509_LOOKUP_METH_NEW 0 +#define X509_F_X509_LOOKUP_NEW 0 +#define X509_F_X509_NAME_ADD_ENTRY 0 +#define X509_F_X509_NAME_CANON 0 +#define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 0 +#define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 0 +#define X509_F_X509_NAME_ENTRY_SET_OBJECT 0 +#define X509_F_X509_NAME_ONELINE 0 +#define X509_F_X509_NAME_PRINT 0 +#define X509_F_X509_OBJECT_NEW 0 +#define X509_F_X509_PRINT_EX_FP 0 +#define X509_F_X509_PUBKEY_DECODE 0 +#define X509_F_X509_PUBKEY_GET 0 +#define X509_F_X509_PUBKEY_GET0 0 +#define X509_F_X509_PUBKEY_SET 0 +#define X509_F_X509_REQ_CHECK_PRIVATE_KEY 0 +#define X509_F_X509_REQ_PRINT_EX 0 +#define X509_F_X509_REQ_PRINT_FP 0 +#define X509_F_X509_REQ_TO_X509 0 +#define X509_F_X509_STORE_ADD_CERT 0 +#define X509_F_X509_STORE_ADD_CRL 0 +#define X509_F_X509_STORE_ADD_LOOKUP 0 +#define X509_F_X509_STORE_CTX_GET1_ISSUER 0 +#define X509_F_X509_STORE_CTX_INIT 0 +#define X509_F_X509_STORE_CTX_NEW 0 +#define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 0 +#define X509_F_X509_STORE_NEW 0 +#define X509_F_X509_TO_X509_REQ 0 +#define X509_F_X509_TRUST_ADD 0 +#define X509_F_X509_TRUST_SET 0 +#define X509_F_X509_VERIFY_CERT 0 +#define X509_F_X509_VERIFY_PARAM_NEW 0 + +/* + * X509V3 function codes. + */ +#define X509V3_F_A2I_GENERAL_NAME 0 +#define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 0 +#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 0 +#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 0 +#define X509V3_F_BIGNUM_TO_STRING 0 +#define X509V3_F_COPY_EMAIL 0 +#define X509V3_F_COPY_ISSUER 0 +#define X509V3_F_DO_DIRNAME 0 +#define X509V3_F_DO_EXT_I2D 0 +#define X509V3_F_DO_EXT_NCONF 0 +#define X509V3_F_GNAMES_FROM_SECTNAME 0 +#define X509V3_F_I2S_ASN1_ENUMERATED 0 +#define X509V3_F_I2S_ASN1_IA5STRING 0 +#define X509V3_F_I2S_ASN1_INTEGER 0 +#define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 0 +#define X509V3_F_LEVEL_ADD_NODE 0 +#define X509V3_F_NOTICE_SECTION 0 +#define X509V3_F_NREF_NOS 0 +#define X509V3_F_POLICY_CACHE_CREATE 0 +#define X509V3_F_POLICY_CACHE_NEW 0 +#define X509V3_F_POLICY_DATA_NEW 0 +#define X509V3_F_POLICY_SECTION 0 +#define X509V3_F_PROCESS_PCI_VALUE 0 +#define X509V3_F_R2I_CERTPOL 0 +#define X509V3_F_R2I_PCI 0 +#define X509V3_F_S2I_ASN1_IA5STRING 0 +#define X509V3_F_S2I_ASN1_INTEGER 0 +#define X509V3_F_S2I_ASN1_OCTET_STRING 0 +#define X509V3_F_S2I_SKEY_ID 0 +#define X509V3_F_SET_DIST_POINT_NAME 0 +#define X509V3_F_SXNET_ADD_ID_ASC 0 +#define X509V3_F_SXNET_ADD_ID_INTEGER 0 +#define X509V3_F_SXNET_ADD_ID_ULONG 0 +#define X509V3_F_SXNET_GET_ID_ASC 0 +#define X509V3_F_SXNET_GET_ID_ULONG 0 +#define X509V3_F_TREE_INIT 0 +#define X509V3_F_V2I_ASIDENTIFIERS 0 +#define X509V3_F_V2I_ASN1_BIT_STRING 0 +#define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 0 +#define X509V3_F_V2I_AUTHORITY_KEYID 0 +#define X509V3_F_V2I_BASIC_CONSTRAINTS 0 +#define X509V3_F_V2I_CRLD 0 +#define X509V3_F_V2I_EXTENDED_KEY_USAGE 0 +#define X509V3_F_V2I_GENERAL_NAMES 0 +#define X509V3_F_V2I_GENERAL_NAME_EX 0 +#define X509V3_F_V2I_IDP 0 +#define X509V3_F_V2I_IPADDRBLOCKS 0 +#define X509V3_F_V2I_ISSUER_ALT 0 +#define X509V3_F_V2I_NAME_CONSTRAINTS 0 +#define X509V3_F_V2I_POLICY_CONSTRAINTS 0 +#define X509V3_F_V2I_POLICY_MAPPINGS 0 +#define X509V3_F_V2I_SUBJECT_ALT 0 +#define X509V3_F_V2I_TLS_FEATURE 0 +#define X509V3_F_V3_GENERIC_EXTENSION 0 +#define X509V3_F_X509V3_ADD1_I2D 0 +#define X509V3_F_X509V3_ADD_VALUE 0 +#define X509V3_F_X509V3_EXT_ADD 0 +#define X509V3_F_X509V3_EXT_ADD_ALIAS 0 +#define X509V3_F_X509V3_EXT_I2D 0 +#define X509V3_F_X509V3_EXT_NCONF 0 +#define X509V3_F_X509V3_GET_SECTION 0 +#define X509V3_F_X509V3_GET_STRING 0 +#define X509V3_F_X509V3_GET_VALUE_BOOL 0 +#define X509V3_F_X509V3_PARSE_LIST 0 +#define X509V3_F_X509_PURPOSE_ADD 0 +#define X509V3_F_X509_PURPOSE_SET 0 + +/* + * Compatibility defines. + */ +#define EVP_R_OPERATON_NOT_INITIALIZED EVP_R_OPERATION_NOT_INITIALIZED + +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ct.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ct.h new file mode 100644 index 0000000..083ac4e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ct.h @@ -0,0 +1,574 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ct.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CT_H +#define OPENSSL_CT_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CT_H +#endif + +#include + +#ifndef OPENSSL_NO_CT +#include +#include +#include +#include +#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 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) +#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) +#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) +#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) +#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) +#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) +#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) +#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) +#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk), ossl_check_SCT_freefunc_type(freefunc)) +#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) +#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) +#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) +#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) +#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) +#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) +#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) +#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) +#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) +#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) +#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) +#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) +#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_freefunc_type(freefunc)) +#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) +#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) +#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) +#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) +#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) + +/* clang-format on */ + +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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cterr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cterr.h new file mode 100644 index 0000000..950b7b3 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/cterr.h @@ -0,0 +1,43 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/decoder.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/decoder.h new file mode 100644 index 0000000..8194c24 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/decoder.h @@ -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 + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/decodererr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/decodererr.h new file mode 100644 index 0000000..5fdeace --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/decodererr.h @@ -0,0 +1,26 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/des.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/des.h new file mode 100644 index 0000000..daaef4e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/des.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DES_H +#endif + +#include + +#ifndef OPENSSL_NO_DES +#ifdef __cplusplus +extern "C" { +#endif +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dh.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dh.h new file mode 100644 index 0000000..6d0abe2 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dh.h @@ -0,0 +1,333 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DH_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * DH parameter generation types used by EVP_PKEY_CTX_set_dh_paramgen_type() + * Note that additions/changes to this set of values requires corresponding + * adjustments to range checks in dh_gen() + */ +#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 +#endif +#ifndef OPENSSL_NO_DH +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include + +#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, some of them shared with DH_check_pub_key */ +/* + * 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 /* +DH_check_pub_key */ +#define DH_CHECK_INVALID_J_VALUE 0x40 +#define DH_MODULUS_TOO_SMALL 0x80 +#define DH_MODULUS_TOO_LARGE 0x100 /* +DH_check_pub_key */ + +/* 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((void *(*)(void))DH_new, \ + (d2i_of_void *)d2i_DHparams, \ + (fp), \ + (void **)(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((void *(*)(void))DH_new, \ + (d2i_of_void *)d2i_DHxparams, \ + (fp), \ + (void **)(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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dherr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dherr.h new file mode 100644 index 0000000..753659b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dherr.h @@ -0,0 +1,57 @@ +/* + * 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_DHERR_H +#define OPENSSL_DHERR_H +#pragma once + +#include +#include +#include + +#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_INVALID_SIZE 129 +#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_Q_TOO_LARGE 130 +#define DH_R_SHARED_INFO_ERROR 113 +#define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dsa.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dsa.h new file mode 100644 index 0000000..61baa64 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dsa.h @@ -0,0 +1,273 @@ +/* + * 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_DSA_H +#define OPENSSL_DSA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DSA_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_DSA +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#ifndef OPENSSL_NO_STDIO +#include +#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((void *(*)(void))DSA_new, \ + (d2i_of_void *)d2i_DSAparams, (fp), \ + (void **)(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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dsaerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dsaerr.h new file mode 100644 index 0000000..cc5f4bf --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dsaerr.h @@ -0,0 +1,42 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dtls1.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dtls1.h new file mode 100644 index 0000000..0b42948 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/dtls1.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DTLS1_H +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/e_os2.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/e_os2.h new file mode 100644 index 0000000..86a572b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/e_os2.h @@ -0,0 +1,306 @@ +/* + * Copyright 1995-2024 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_E_OS2_H +#endif + +#include + +#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 implementer 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 +#endif +#define OPENSSL_USE_BUILD_DATE +#if defined(OPENSSL_THREADS) && defined(_SPT_MODEL_) +#define SPT_THREAD_SIGNAL 1 +#define SPT_THREAD_AWARE 1 +#include +#elif defined(OPENSSL_THREADS) && defined(_PUT_MODEL_) +#include +#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 +#include +#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; +typedef UINTN uintptr_t; +#elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__osf__) || defined(__sgi) || defined(__hpux) || defined(OPENSSL_SYS_VMS) || defined(__OpenBSD__) +#include +#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 +#include +#else +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/e_ostime.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/e_ostime.h new file mode 100644 index 0000000..c0f1c54 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/e_ostime.h @@ -0,0 +1,38 @@ +/* + * Copyright 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_E_OSTIME_H +#define OPENSSL_E_OSTIME_H +#pragma once + +#include +#include +#include + +/* + * This header guarantees that 'struct timeval' will be available. It includes + * the minimum headers needed to facilitate this. This may still be a + * substantial set of headers on some platforms (e.g. on Win32). + */ + +#if defined(OPENSSL_SYS_WINDOWS) +#if !defined(_WINSOCKAPI_) +/* + * winsock2.h defines _WINSOCK2API_ and both winsock2.h and winsock.h define + * _WINSOCKAPI_. Both of these provide struct timeval. Don't include + * winsock2.h if either header has been included to avoid breakage with + * applications that prefer to use over . + */ +#include +#endif +#else +#include +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ebcdic.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ebcdic.h new file mode 100644 index 0000000..f2171bb --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ebcdic.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_EBCDIC_H +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ec.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ec.h new file mode 100644 index 0000000..cdde09c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ec.h @@ -0,0 +1,1569 @@ +/* + * Copyright 2002-2023 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_EC_H +#define OPENSSL_EC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_EC_H +#endif + +#include +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Values for EVP_PKEY_CTX_set_ec_param_enc() */ +#define OPENSSL_EC_EXPLICIT_CURVE 0x000 +#define OPENSSL_EC_NAMED_CURVE 0x001 + +int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid); +int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx, int param_enc); +int EVP_PKEY_CTX_set_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx, int cofactor_mode); +int EVP_PKEY_CTX_get_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_type(EVP_PKEY_CTX *ctx, int kdf); +int EVP_PKEY_CTX_get_ecdh_kdf_type(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_get_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); + +int EVP_PKEY_CTX_set_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int len); +int EVP_PKEY_CTX_get_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len); + +int EVP_PKEY_CTX_set0_ecdh_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_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm); +#endif + +#define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +#define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +#define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +#define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) + +/* KDF types */ +#define EVP_PKEY_ECDH_KDF_NONE 1 +#define EVP_PKEY_ECDH_KDF_X9_63 2 +/* + * The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +#define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x04 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +const char *OSSL_EC_curve_nid2name(int nid); + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#ifndef OPENSSL_NO_EC +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include + +#ifndef OPENSSL_ECC_MAX_FIELD_BITS +#define OPENSSL_ECC_MAX_FIELD_BITS 661 +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_method_st EC_METHOD; +#endif +typedef struct ec_group_st EC_GROUP; +typedef struct ec_point_st EC_POINT; +typedef struct ecpk_parameters_st ECPKPARAMETERS; +typedef struct ec_parameters_st ECPARAMETERS; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nist_method(void); + +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp521_method(void); +#endif /* OPENSSL_NO_EC_NISTP_64_GCC_128 */ + +#ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GF2m_simple_method(void); + +#endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** + * Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +OSSL_DEPRECATEDIN_3_0 EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +OSSL_DEPRECATEDIN_3_0 void EC_GROUP_clear_free(EC_GROUP *group); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +OSSL_DEPRECATEDIN_3_0 int EC_METHOD_get_field_type(const EC_METHOD *meth); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Sets the generator and its order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used montgomery data (possibly NULL). + */ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +/** Gets the field of an EC_GROUP + * \param group EC_GROUP object + * \return the group field + */ +const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group); + +/** Returns the field type of the EC_GROUP. + * \param group EC_GROUP object + * \return NID of the underlying field type OID. + */ +int EC_GROUP_get_field_type(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameters of an ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GFp(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GFp(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_EC2M +/** Sets the parameter of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GF2m(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); +#endif /* OPENSSL_NO_EC2M */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if the groups are equal, 1 if not, or -1 on error + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +#ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +#endif + +/** + * Creates a EC_GROUP object with a curve specified by parameters. + * The parameters may be explicit or a named curve, + * \param params A list of parameters describing the group. + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \return newly created EC_GROUP object with specified parameters or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[], + OSSL_LIB_CTX *libctx, const char *propq); + +/** + * Creates an OSSL_PARAM array with the parameters describing the given + * EC_GROUP. + * The resulting parameters may contain an explicit or a named curve depending + * on the EC_GROUP. + * \param group pointer to the EC_GROUP object + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param bnctx BN_CTX object (optional) + * \return newly created OSSL_PARAM array with the parameters + * describing the given EC_GROUP or NULL if an error occurred + */ +OSSL_PARAM *EC_GROUP_to_params(const EC_GROUP *group, OSSL_LIB_CTX *libctx, + const char *propq, BN_CTX *bnctx); + +/** + * Creates a EC_GROUP object with a curve specified by a NID + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name_ex(OSSL_LIB_CTX *libctx, const char *propq, + int nid); + +/** + * Creates a EC_GROUP object with a curve specified by a NID. Same as + * EC_GROUP_new_by_curve_name_ex but the libctx and propq are always + * NULL. + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r is not zero, + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); +int EC_GROUP_check_named_curve(const EC_GROUP *group, int nist_only, + BN_CTX *ctx); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the affine coordinates of an EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the x9.62 compressed coordinates of a EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +#ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Encodes an EC_POINT object to an allocated octet string + * \param group underlying EC_GROUP object + * \param point EC_POINT object + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 BIGNUM *EC_POINT_point2bn(const EC_GROUP *, + const EC_POINT *, + point_conversion_form_t form, + BIGNUM *, BN_CTX *); +OSSL_DEPRECATEDIN_3_0 EC_POINT *EC_POINT_bn2point(const EC_GROUP *, + const BIGNUM *, + EC_POINT *, BN_CTX *); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if the point is on the curve, 0 if not, or -1 on error + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 if the points are not equal, 0 if they are, or -1 on error + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_POINT_make_affine(const EC_GROUP *group, + EC_POINT *point, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n + sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number further summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, + const BIGNUM *n, size_t num, + const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_have_precompute_mult(const EC_GROUP *group); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +DECLARE_ASN1_ITEM(ECPKPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPKPARAMETERS) +DECLARE_ASN1_ITEM(ECPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +#ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +#endif + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +#define d2i_ECPKParameters_bio(bp, x) \ + ASN1_d2i_bio_of(EC_GROUP, NULL, d2i_ECPKParameters, bp, x) +#define i2d_ECPKParameters_bio(bp, x) \ + ASN1_i2d_bio_of(EC_GROUP, i2d_ECPKParameters, bp, x) +#define d2i_ECPKParameters_fp(fp, x) \ + (EC_GROUP *)ASN1_d2i_fp(NULL, (d2i_of_void *)d2i_ECPKParameters, (fp), \ + (void **)(x)) +#define i2d_ECPKParameters_fp(fp, x) \ + ASN1_i2d_fp((i2d_of_void *)i2d_ECPKParameters, (fp), (void *)(x)) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print(BIO *bp, const EC_GROUP *x, + int off); +#ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, + int off); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +/* some values for the encoding_flag */ +#define EC_PKEY_NO_PARAMETERS 0x001 +#define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +#define EC_FLAG_SM2_RANGE 0x0004 +#define EC_FLAG_COFACTOR_ECDH 0x1000 +#define EC_FLAG_CHECK_NAMED_GROUP 0x2000 +#define EC_FLAG_CHECK_NAMED_GROUP_NIST 0x4000 +#define EC_FLAG_CHECK_NAMED_GROUP_MASK \ + (EC_FLAG_CHECK_NAMED_GROUP | EC_FLAG_CHECK_NAMED_GROUP_NIST) + +/* Deprecated flags - it was using 0x01..0x02 */ +#define EC_FLAG_NON_FIPS_ALLOW 0x0000 +#define EC_FLAG_FIPS_CHECKED 0x0000 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** + * Creates a new EC_KEY object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_ex(OSSL_LIB_CTX *ctx, const char *propq); + +/** + * Creates a new EC_KEY object. Same as calling EC_KEY_new_ex with a + * NULL library context + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new(void); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_get_flags(const EC_KEY *key); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_clear_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \param propq Any property query string + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name_ex(OSSL_LIB_CTX *ctx, + const char *propq, + int nid); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. Same as calling EC_KEY_new_by_curve_name_ex with a NULL + * library context and property query string. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +OSSL_DEPRECATEDIN_3_0 void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +OSSL_DEPRECATEDIN_3_0 const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +OSSL_DEPRECATEDIN_3_0 unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +OSSL_DEPRECATEDIN_3_0 point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_conv_form(EC_KEY *eckey, + point_conversion_form_t cform); +#endif /*OPENSSL_NO_DEPRECATED_3_0 */ + +#define EC_KEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EC_KEY, l, p, newf, dupf, freef) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_check_key(const EC_KEY *key); + +/** Indicates if an EC_KEY can be used for signing. + * \param eckey the EC_KEY object + * \return 1 if can sign and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_can_sign(const EC_KEY *eckey); + +/** Sets a public key from affine coordinates performing + * necessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, + BIGNUM *x, + BIGNUM *y); + +/** Encodes an EC_KEY public key to an allocated octet string + * \param key key to encode + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_key2buf(const EC_KEY *key, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/** Decodes a EC_KEY public key from a octet string + * \param key key to decode + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, + size_t len, BN_CTX *ctx); + +/** Decodes an EC_KEY private key from an octet string + * \param key key to decode + * \param buf memory buffer with the encoded private key + * \param len length of the encoded key + * \return 1 on success and 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, + size_t len); + +/** Encodes a EC_KEY private key to an octet string + * \param key key to encode + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_priv2oct(const EC_KEY *key, + unsigned char *buf, size_t len); + +/** Encodes an EC_KEY private key to an allocated octet string + * \param eckey key to encode + * \param pbuf returns pointer to allocated buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_priv2buf(const EC_KEY *eckey, + unsigned char **pbuf); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey(EC_KEY **key, + const unsigned char **in, + long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey(const EC_KEY *key, + unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECParameters(EC_KEY **key, + const unsigned char **in, + long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec parameters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECParameters(const EC_KEY *key, + unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes an ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *o2i_ECPublicKey(EC_KEY **key, + const unsigned char **in, long len); + +/** Encodes an ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out); + +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +#ifndef OPENSSL_NO_STDIO +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); +#endif /* OPENSSL_NO_STDIO */ + +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +OSSL_DEPRECATEDIN_3_0 int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + const unsigned char *sinfo, + size_t sinfolen, const EVP_MD *md); + +OSSL_DEPRECATEDIN_3_0 int ECDH_compute_key(void *out, size_t outlen, + const EC_POINT *pub_key, + const EC_KEY *ecdh, + void *(*KDF)(const void *in, + size_t inlen, void *out, + size_t *outlen)); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +typedef struct ECDSA_SIG_st ECDSA_SIG; + +/** Allocates and initialize a ECDSA_SIG structure + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_SIG_new(void); + +/** frees a ECDSA_SIG structure + * \param sig pointer to the ECDSA_SIG structure + */ +void ECDSA_SIG_free(ECDSA_SIG *sig); + +/** i2d_ECDSA_SIG encodes content of ECDSA_SIG (note: this function modifies *pp + * (*pp += length of the DER encoded signature)). + * \param sig pointer to the ECDSA_SIG object + * \param pp pointer to a unsigned char pointer for the output or NULL + * \return the length of the DER encoded ECDSA_SIG object or a negative value + * on error + */ +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ECDSA_SIG, ECDSA_SIG) + +/** d2i_ECDSA_SIG decodes an ECDSA signature (note: this function modifies *pp + * (*pp += len)). + * \param sig pointer to ECDSA_SIG pointer (may be NULL) + * \param pp memory buffer with the DER encoded signature + * \param len length of the buffer + * \return pointer to the decoded ECDSA_SIG structure (or NULL) + */ + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r + * \param s pointer to BIGNUM for s + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Computes the ECDSA signature of the given hash value using + * the supplied private key and returns the created signature. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, + int dgst_len, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, + int dgstlen, const BIGNUM *kinv, + const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the supplied signature is a valid ECDSA + * signature of the supplied hash value using the supplied public key. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param sig ECDSA_SIG structure + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, + const ECDSA_SIG *sig, EC_KEY *eckey); + +/** Precompute parts of the signing operation + * \param eckey EC_KEY object containing a private EC key + * \param ctx BN_CTX object (optional) + * \param kinv BIGNUM pointer for the inverse of k + * \param rp BIGNUM pointer for x coordinate of k * generator + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, + BIGNUM **kinv, BIGNUM **rp); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig memory for the DER encoded created signature + * \param siglen pointer to the length of the returned signature + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign(int type, const unsigned char *dgst, + int dgstlen, unsigned char *sig, + unsigned int *siglen, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig buffer to hold the DER encoded signature + * \param siglen pointer to the length of the returned signature + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign_ex(int type, const unsigned char *dgst, + int dgstlen, unsigned char *sig, + unsigned int *siglen, const BIGNUM *kinv, + const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the given signature is valid ECDSA signature + * of the supplied hash value using the specified public key. + * \param type this parameter is ignored + * \param dgst pointer to the hash value + * \param dgstlen length of the hash value + * \param sig pointer to the DER encoded signature + * \param siglen length of the DER encoded signature + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_verify(int type, const unsigned char *dgst, + int dgstlen, const unsigned char *sig, + int siglen, EC_KEY *eckey); + +/** Returns the maximum length of the DER encoded signature + * \param eckey EC_KEY object + * \return numbers of bytes required for the DER encoded signature + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +OSSL_DEPRECATEDIN_3_0 EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, + int (*init)(EC_KEY *key), + void (*finish)(EC_KEY *key), + int (*copy)(EC_KEY *dest, const EC_KEY *src), + int (*set_group)(EC_KEY *key, const EC_GROUP *grp), + int (*set_private)(EC_KEY *key, const BIGNUM *priv_key), + int (*set_public)(EC_KEY *key, const EC_POINT *pub_key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, + int (*ckey)(unsigned char **psec, size_t *pseclen, + const EC_POINT *pub_key, const EC_KEY *ecdh)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, + int (*sign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, + int (*verify)(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (*verify_sig)(const unsigned char *dgst, + int dgst_len, const ECDSA_SIG *sig, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, const EC_POINT *pub_key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, int (**pkeygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +#define EVP_EC_gen(curve) \ + EVP_PKEY_Q_keygen(NULL, NULL, "EC", (char *)(strstr(curve, ""))) +/* strstr is used to enable type checking for the variadic string arg */ +#define ECParameters_dup(x) ASN1_dup_of(EC_KEY, i2d_ECParameters, \ + d2i_ECParameters, x) + +#ifndef __cplusplus +#if defined(__SUNPRO_C) +#if __SUNPRO_C >= 0x520 +#pragma error_messages(default, E_ARRAY_OF_INCOMPLETE_NONAME, E_ARRAY_OF_INCOMPLETE) +#endif +#endif +#endif + +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecdh.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecdh.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecdh.h @@ -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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecdsa.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecdsa.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecdsa.h @@ -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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecerr.h new file mode 100644 index 0000000..e4d26aa --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ecerr.h @@ -0,0 +1,102 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/encoder.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/encoder.h new file mode 100644 index 0000000..9138c07 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/encoder.h @@ -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 + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/encodererr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/encodererr.h new file mode 100644 index 0000000..e07174c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/encodererr.h @@ -0,0 +1,26 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/engine.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/engine.h new file mode 100644 index 0000000..73f6d86 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/engine.h @@ -0,0 +1,841 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ENGINE_H +#endif + +#include + +#ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include +#include +#include +#include +#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 is 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 */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/engineerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/engineerr.h new file mode 100644 index 0000000..7cdfb8a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/engineerr.h @@ -0,0 +1,61 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/err.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/err.h new file mode 100644 index 0000000..a15ac6a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/err.h @@ -0,0 +1,517 @@ +/* + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ERR_H +#define OPENSSL_ERR_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ERR_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#include +#endif + +#include +#include +#include +#include + +#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 +#include + +#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; + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) +#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) +#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +/* 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); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ess.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ess.h new file mode 100644 index 0000000..4758cf1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ess.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ess.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ESS_H +#define OPENSSL_ESS_H +#pragma once + +#include + +#include +#include +#include + +#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; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) +#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) +#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) +#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) +#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) +#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) +#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) + +/* clang-format on */ + +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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/esserr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/esserr.h new file mode 100644 index 0000000..4688129 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/esserr.h @@ -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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/evp.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/evp.h new file mode 100644 index 0000000..de6f503 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/evp.h @@ -0,0 +1,2290 @@ +/* + * Copyright 1995-2025 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_EVP_H +#define OPENSSL_EVP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ENVELOPE_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#define EVP_MAX_MD_SIZE 64 /* longest known is SHA512 */ +#define EVP_MAX_KEY_LENGTH 64 +#define EVP_MAX_IV_LENGTH 16 +#define EVP_MAX_BLOCK_LENGTH 32 +#define EVP_MAX_AEAD_TAG_LENGTH 16 + +/* Maximum pipes in cipher pipelining */ +#define EVP_MAX_PIPES 32 + +#define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +#define PKCS5_DEFAULT_ITER 2048 + +#include + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PK_RSA 0x0001 +#define EVP_PK_DSA 0x0002 +#define EVP_PK_DH 0x0004 +#define EVP_PK_EC 0x0008 +#define EVP_PKT_SIGN 0x0010 +#define EVP_PKT_ENC 0x0020 +#define EVP_PKT_EXCH 0x0040 +#define EVP_PKS_RSA 0x0100 +#define EVP_PKS_DSA 0x0200 +#define EVP_PKS_EC 0x0400 +#endif + +#define EVP_PKEY_NONE NID_undef +#define EVP_PKEY_RSA NID_rsaEncryption +#define EVP_PKEY_RSA2 NID_rsa +#define EVP_PKEY_RSA_PSS NID_rsassaPss +#define EVP_PKEY_DSA NID_dsa +#define EVP_PKEY_DSA1 NID_dsa_2 +#define EVP_PKEY_DSA2 NID_dsaWithSHA +#define EVP_PKEY_DSA3 NID_dsaWithSHA1 +#define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +#define EVP_PKEY_DH NID_dhKeyAgreement +#define EVP_PKEY_DHX NID_dhpublicnumber +#define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +#define EVP_PKEY_SM2 NID_sm2 +#define EVP_PKEY_HMAC NID_hmac +#define EVP_PKEY_CMAC NID_cmac +#define EVP_PKEY_SCRYPT NID_id_scrypt +#define EVP_PKEY_TLS1_PRF NID_tls1_prf +#define EVP_PKEY_HKDF NID_hkdf +#define EVP_PKEY_POLY1305 NID_poly1305 +#define EVP_PKEY_SIPHASH NID_siphash +#define EVP_PKEY_X25519 NID_X25519 +#define EVP_PKEY_ED25519 NID_ED25519 +#define EVP_PKEY_X448 NID_X448 +#define EVP_PKEY_ED448 NID_ED448 +#define EVP_PKEY_ML_DSA_44 NID_ML_DSA_44 +#define EVP_PKEY_ML_DSA_65 NID_ML_DSA_65 +#define EVP_PKEY_ML_DSA_87 NID_ML_DSA_87 +#define EVP_PKEY_SLH_DSA_SHA2_128S NID_SLH_DSA_SHA2_128s +#define EVP_PKEY_SLH_DSA_SHA2_128F NID_SLH_DSA_SHA2_128f +#define EVP_PKEY_SLH_DSA_SHA2_192S NID_SLH_DSA_SHA2_192s +#define EVP_PKEY_SLH_DSA_SHA2_192F NID_SLH_DSA_SHA2_192f +#define EVP_PKEY_SLH_DSA_SHA2_256S NID_SLH_DSA_SHA2_256s +#define EVP_PKEY_SLH_DSA_SHA2_256F NID_SLH_DSA_SHA2_256f +#define EVP_PKEY_SLH_DSA_SHAKE_128S NID_SLH_DSA_SHAKE_128s +#define EVP_PKEY_SLH_DSA_SHAKE_128F NID_SLH_DSA_SHAKE_128f +#define EVP_PKEY_SLH_DSA_SHAKE_192S NID_SLH_DSA_SHAKE_192s +#define EVP_PKEY_SLH_DSA_SHAKE_192F NID_SLH_DSA_SHAKE_192f +#define EVP_PKEY_SLH_DSA_SHAKE_256S NID_SLH_DSA_SHAKE_256s +#define EVP_PKEY_SLH_DSA_SHAKE_256F NID_SLH_DSA_SHAKE_256f + +/* Special indicator that the object is uniquely provider side */ +#define EVP_PKEY_KEYMGMT -1 + +/* Easy to use macros for EVP_PKEY related selections */ +#define EVP_PKEY_KEY_PARAMETERS \ + (OSSL_KEYMGMT_SELECT_ALL_PARAMETERS) +#define EVP_PKEY_PRIVATE_KEY \ + (EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PRIVATE_KEY) +#define EVP_PKEY_PUBLIC_KEY \ + (EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PUBLIC_KEY) +#define EVP_PKEY_KEYPAIR \ + (EVP_PKEY_PUBLIC_KEY | OSSL_KEYMGMT_SELECT_PRIVATE_KEY) + +#ifdef __cplusplus +extern "C" { +#endif + +int EVP_set_default_properties(OSSL_LIB_CTX *libctx, const char *propq); +char *EVP_get1_default_properties(OSSL_LIB_CTX *libctx); +int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx); +int EVP_default_properties_enable_fips(OSSL_LIB_CTX *libctx, int enable); + +#define EVP_PKEY_MO_SIGN 0x0001 +#define EVP_PKEY_MO_VERIFY 0x0002 +#define EVP_PKEY_MO_ENCRYPT 0x0004 +#define EVP_PKEY_MO_DECRYPT 0x0008 + +#ifndef EVP_MD +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 void EVP_MD_meth_free(EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, const void *data, size_t count)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, unsigned char *md)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, const EVP_MD_CTX *from)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, int p1, void *p2)); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_result_size(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); +#endif +/* digest can only handle a single block */ +#define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +#define EVP_MD_FLAG_XOF 0x0002 + +/* DigestAlgorithmIdentifier flags... */ + +#define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +#define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +#define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +#define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +#define EVP_MD_CTRL_DIGALGID 0x1 +#define EVP_MD_CTRL_MICALG 0x2 +#define EVP_MD_CTRL_XOF_LEN 0x3 +#define EVP_MD_CTRL_TLSTREE 0x4 + +/* Minimum Algorithm specific ctrl value */ + +#define EVP_MD_CTRL_ALG_CTRL 0x1000 + +#endif /* !EVP_MD */ + +/* values for EVP_MD_CTX flags */ + +#define EVP_MD_CTX_FLAG_ONESHOT 0x0001 /* digest update will be \ + * called once only */ +#define EVP_MD_CTX_FLAG_CLEANED 0x0002 /* context has already been \ + * cleaned */ +#define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data \ + * in EVP_MD_CTX_reset */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +/* This flag has no effect from openssl-3.0 onwards */ +#define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +#define EVP_MD_CTX_FLAG_PAD_MASK 0xF0 /* RSA mode to use */ +#define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00 /* PKCS#1 v1.5 mode */ +#define EVP_MD_CTX_FLAG_PAD_X931 0x10 /* X9.31 mode */ +#define EVP_MD_CTX_FLAG_PAD_PSS 0x20 /* PSS mode */ + +#define EVP_MD_CTX_FLAG_NO_INIT 0x0100 /* Don't initialize md_data */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +#define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 and 0x0800 are reserved for internal usage */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, + int (*init)(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, + int (*do_cipher)(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup)(EVP_CIPHER_CTX *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters)(EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters)(EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl)(EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, int type, + int arg, void *ptr); +#endif + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +#define EVP_CIPH_STREAM_CIPHER 0x0 +#define EVP_CIPH_ECB_MODE 0x1 +#define EVP_CIPH_CBC_MODE 0x2 +#define EVP_CIPH_CFB_MODE 0x3 +#define EVP_CIPH_OFB_MODE 0x4 +#define EVP_CIPH_CTR_MODE 0x5 +#define EVP_CIPH_GCM_MODE 0x6 +#define EVP_CIPH_CCM_MODE 0x7 +#define EVP_CIPH_XTS_MODE 0x10001 +#define EVP_CIPH_WRAP_MODE 0x10002 +#define EVP_CIPH_OCB_MODE 0x10003 +#define EVP_CIPH_SIV_MODE 0x10004 +#define EVP_CIPH_GCM_SIV_MODE 0x10005 +#define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +#define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +#define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +#define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +#define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +#define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +#define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +#define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +#define EVP_CIPH_CUSTOM_COPY 0x400 +/* Don't use standard iv length function */ +#define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* Legacy and no longer relevant: Allow use default ASN1 get/set iv */ +#define EVP_CIPH_FLAG_DEFAULT_ASN1 0 +/* Free: 0x1000 */ +/* Buffer length in bits not bytes: CFB1 mode only */ +#define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Deprecated FIPS flag: was 0x4000 */ +#define EVP_CIPH_FLAG_FIPS 0 +/* Deprecated FIPS flag: was 0x8000 */ +#define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0 + +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +#define EVP_CIPH_FLAG_CTS 0x4000 +#define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +#define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +#define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 +/* Cipher can handle pipeline operations */ +#define EVP_CIPH_FLAG_PIPELINE 0X800000 +/* For provider implementations that handle ASN1 get/set param themselves */ +#define EVP_CIPH_FLAG_CUSTOM_ASN1 0x1000000 +/* For ciphers generating unprotected CMS attributes */ +#define EVP_CIPH_FLAG_CIPHER_WITH_MAC 0x2000000 +/* For supplementary wrap cipher support */ +#define EVP_CIPH_FLAG_GET_WRAP_CIPHER 0x4000000 +#define EVP_CIPH_FLAG_INVERSE_CIPHER 0x8000000 +#define EVP_CIPH_FLAG_ENC_THEN_MAC 0x10000000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +#define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +#define EVP_CTRL_INIT 0x0 +#define EVP_CTRL_SET_KEY_LENGTH 0x1 +#define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +#define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +#define EVP_CTRL_GET_RC5_ROUNDS 0x4 +#define EVP_CTRL_SET_RC5_ROUNDS 0x5 +#define EVP_CTRL_RAND_KEY 0x6 +#define EVP_CTRL_PBE_PRF_NID 0x7 +#define EVP_CTRL_COPY 0x8 +#define EVP_CTRL_AEAD_SET_IVLEN 0x9 +#define EVP_CTRL_AEAD_GET_TAG 0x10 +#define EVP_CTRL_AEAD_SET_TAG 0x11 +#define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +#define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +#define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +#define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +#define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +#define EVP_CTRL_GCM_IV_GEN 0x13 +#define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +#define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +#define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +#define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +#define EVP_CTRL_CCM_SET_L 0x14 +#define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +#define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +#define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +#define EVP_CTRL_GCM_SET_IV_INV 0x18 + +#define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +#define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +#define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +#define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +#define EVP_CTRL_SSL3_MASTER_SECRET 0x1d + +/* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ +#define EVP_CTRL_SET_SBOX 0x1e +/* + * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a + * pre-allocated buffer with specified size + */ +#define EVP_CTRL_SBOX_USED 0x1f +/* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, + * 0 switches meshing off + */ +#define EVP_CTRL_KEY_MESH 0x20 +/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ +#define EVP_CTRL_BLOCK_PADDING_MODE 0x21 + +/* Set the output buffers to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 +/* Set the input buffers to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 +/* Set the input buffer lengths to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 +/* Get the IV length used by the cipher */ +#define EVP_CTRL_GET_IVLEN 0x25 +/* 0x26 is unused */ +/* Tell the cipher it's doing a speed test (SIV disallows multiple ops) */ +#define EVP_CTRL_SET_SPEED 0x27 +/* Get the unprotectedAttrs from cipher ctx */ +#define EVP_CTRL_PROCESS_UNPROTECTED 0x28 +/* Get the supplementary wrap cipher */ +#define EVP_CTRL_GET_WRAP_CIPHER 0x29 +/* TLSTREE key diversification */ +#define EVP_CTRL_TLSTREE 0x2A + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +#define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +#define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +#define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +#define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +#define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +#define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +#define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +#define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +#define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +#define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + +/* Password based encryption function */ +typedef int(EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +typedef int(EVP_PBE_KEYGEN_EX)(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de, OSSL_LIB_CTX *libctx, const char *propq); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PKEY_assign_RSA(pkey, rsa) EVP_PKEY_assign((pkey), EVP_PKEY_RSA, \ + (rsa)) +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_6 +#ifndef OPENSSL_NO_DSA +#define EVP_PKEY_assign_DSA(pkey, dsa) EVP_PKEY_assign((pkey), EVP_PKEY_DSA, \ + (dsa)) +#endif +#endif + +#if !defined(OPENSSL_NO_DH) && !defined(OPENSSL_NO_DEPRECATED_3_0) +#define EVP_PKEY_assign_DH(pkey, dh) EVP_PKEY_assign((pkey), EVP_PKEY_DH, (dh)) +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +#define EVP_PKEY_assign_EC_KEY(pkey, eckey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_EC, \ + (eckey)) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_6 +#ifndef OPENSSL_NO_SIPHASH +#define EVP_PKEY_assign_SIPHASH(pkey, shkey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_SIPHASH, \ + (shkey)) +#endif + +#ifndef OPENSSL_NO_POLY1305 +#define EVP_PKEY_assign_POLY1305(pkey, polykey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_POLY1305, \ + (polykey)) +#endif +#endif + +/* Add some extra combinations */ +#define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +#define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +#define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +#define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_get_type(const EVP_MD *md); +#define EVP_MD_type EVP_MD_get_type +#define EVP_MD_nid EVP_MD_get_type +const char *EVP_MD_get0_name(const EVP_MD *md); +#define EVP_MD_name EVP_MD_get0_name +const char *EVP_MD_get0_description(const EVP_MD *md); +int EVP_MD_is_a(const EVP_MD *md, const char *name); +int EVP_MD_names_do_all(const EVP_MD *md, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_MD_get0_provider(const EVP_MD *md); +int EVP_MD_get_pkey_type(const EVP_MD *md); +#define EVP_MD_pkey_type EVP_MD_get_pkey_type +int EVP_MD_get_size(const EVP_MD *md); +#define EVP_MD_size EVP_MD_get_size +int EVP_MD_get_block_size(const EVP_MD *md); +#define EVP_MD_block_size EVP_MD_get_block_size +unsigned long EVP_MD_get_flags(const EVP_MD *md); +#define EVP_MD_flags EVP_MD_get_flags +int EVP_MD_xof(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_get0_md(const EVP_MD_CTX *ctx); +EVP_MD *EVP_MD_CTX_get1_md(EVP_MD_CTX *ctx); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update)(EVP_MD_CTX *ctx, + const void *data, size_t count)); +#endif +int EVP_MD_CTX_get_size_ex(const EVP_MD_CTX *ctx); + +#define EVP_MD_CTX_get0_name(e) EVP_MD_get0_name(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_get_size(e) EVP_MD_CTX_get_size_ex(e) +#define EVP_MD_CTX_size EVP_MD_CTX_get_size_ex +#define EVP_MD_CTX_get_block_size(e) EVP_MD_get_block_size(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_block_size EVP_MD_CTX_get_block_size +#define EVP_MD_CTX_get_type(e) EVP_MD_get_type(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_type EVP_MD_CTX_get_type +EVP_PKEY_CTX *EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX *ctx); +#define EVP_MD_CTX_pkey_ctx EVP_MD_CTX_get_pkey_ctx +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_get0_md_data(const EVP_MD_CTX *ctx); +#define EVP_MD_CTX_md_data EVP_MD_CTX_get0_md_data + +int EVP_CIPHER_get_nid(const EVP_CIPHER *cipher); +#define EVP_CIPHER_nid EVP_CIPHER_get_nid +const char *EVP_CIPHER_get0_name(const EVP_CIPHER *cipher); +#define EVP_CIPHER_name EVP_CIPHER_get0_name +const char *EVP_CIPHER_get0_description(const EVP_CIPHER *cipher); +int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name); +int EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_CIPHER_get0_provider(const EVP_CIPHER *cipher); +int EVP_CIPHER_get_block_size(const EVP_CIPHER *cipher); +#define EVP_CIPHER_block_size EVP_CIPHER_get_block_size +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +#endif +int EVP_CIPHER_get_key_length(const EVP_CIPHER *cipher); +#define EVP_CIPHER_key_length EVP_CIPHER_get_key_length +int EVP_CIPHER_get_iv_length(const EVP_CIPHER *cipher); +#define EVP_CIPHER_iv_length EVP_CIPHER_get_iv_length +unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER *cipher); +#define EVP_CIPHER_flags EVP_CIPHER_get_flags +int EVP_CIPHER_get_mode(const EVP_CIPHER *cipher); +#define EVP_CIPHER_mode EVP_CIPHER_get_mode +int EVP_CIPHER_get_type(const EVP_CIPHER *cipher); +#define EVP_CIPHER_type EVP_CIPHER_get_type +EVP_CIPHER *EVP_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_CIPHER_can_pipeline(const EVP_CIPHER *cipher, int enc); +int EVP_CIPHER_up_ref(EVP_CIPHER *cipher); +void EVP_CIPHER_free(EVP_CIPHER *cipher); + +const EVP_CIPHER *EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX *ctx); +EVP_CIPHER *EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_encrypting EVP_CIPHER_CTX_is_encrypting +int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_nid EVP_CIPHER_CTX_get_nid +int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_block_size EVP_CIPHER_CTX_get_block_size +int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_key_length EVP_CIPHER_CTX_get_key_length +int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_iv_length EVP_CIPHER_CTX_get_iv_length +int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_tag_length EVP_CIPHER_CTX_get_tag_length +#ifndef OPENSSL_NO_DEPRECATED_3_0 +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +#endif +int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +#endif +int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_num EVP_CIPHER_CTX_get_num +int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +EVP_CIPHER_CTX *EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX *in); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); +void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); +#define EVP_CIPHER_CTX_get0_name(c) EVP_CIPHER_get0_name(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_get_type(c) EVP_CIPHER_get_type(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_type EVP_CIPHER_CTX_get_type +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(c)) +#endif +#define EVP_CIPHER_CTX_get_mode(c) EVP_CIPHER_get_mode(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_mode EVP_CIPHER_CTX_get_mode + +#define EVP_ENCODE_LENGTH(l) ((((l) + 2) / 3 * 4) + ((l) / 48 + 1) * 2 + 80) +#define EVP_DECODE_LENGTH(l) (((l) + 3) / 4 * 3 + 80) + +#define EVP_SignInit_ex(a, b, c) EVP_DigestInit_ex(a, b, c) +#define EVP_SignInit(a, b) EVP_DigestInit(a, b) +#define EVP_SignUpdate(a, b, c) EVP_DigestUpdate(a, b, c) +#define EVP_VerifyInit_ex(a, b, c) EVP_DigestInit_ex(a, b, c) +#define EVP_VerifyInit(a, b) EVP_DigestInit(a, b) +#define EVP_VerifyUpdate(a, b, c) EVP_DigestUpdate(a, b, c) +#define EVP_OpenUpdate(a, b, c, d, e) EVP_DecryptUpdate(a, b, c, d, e) +#define EVP_SealUpdate(a, b, c, d, e) EVP_EncryptUpdate(a, b, c, d, e) + +#ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +#else +#define BIO_set_md(b, md) BIO_ctrl(b, BIO_C_SET_MD, 0, (void *)(md)) +#endif +#define BIO_get_md(b, mdp) BIO_ctrl(b, BIO_C_GET_MD, 0, (mdp)) +#define BIO_get_md_ctx(b, mdcp) BIO_ctrl(b, BIO_C_GET_MD_CTX, 0, (mdcp)) +#define BIO_set_md_ctx(b, mdcp) BIO_ctrl(b, BIO_C_SET_MD_CTX, 0, (mdcp)) +#define BIO_get_cipher_status(b) BIO_ctrl(b, BIO_C_GET_CIPHER_STATUS, 0, NULL) +#define BIO_get_cipher_ctx(b, c_pp) BIO_ctrl(b, BIO_C_GET_CIPHER_CTX, 0, (c_pp)) + +__owur int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, + const unsigned char *in, unsigned int inl); + +#define EVP_add_cipher_alias(n, alias) \ + OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n)) +#define EVP_add_digest_alias(n, alias) \ + OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n)) +#define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias, OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS); +#define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias, OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS); + +int EVP_MD_get_params(const EVP_MD *digest, OSSL_PARAM params[]); +int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[]); +int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest); +const OSSL_PARAM *EVP_MD_settable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_gettable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_CTX_settable_params(EVP_MD_CTX *ctx); +const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx); +int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +EVP_MD_CTX *EVP_MD_CTX_new(void); +int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); +#define EVP_MD_CTX_create() EVP_MD_CTX_new() +#define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) +#define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) +__owur EVP_MD_CTX *EVP_MD_CTX_dup(const EVP_MD_CTX *in); +__owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +__owur int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type, + const OSSL_PARAM params[]); +__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, + ENGINE *impl); +__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, + size_t cnt); +__owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, + const EVP_MD *type, ENGINE *impl); +__owur int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name, + const char *propq, const void *data, size_t datalen, + unsigned char *md, size_t *mdlen); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *out, + size_t outlen); +__owur int EVP_DigestSqueeze(EVP_MD_CTX *ctx, unsigned char *out, + size_t outlen); + +__owur EVP_MD *EVP_MD_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); + +int EVP_MD_up_ref(EVP_MD *md); +void EVP_MD_free(EVP_MD *md); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +__owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, + const unsigned char *data, int datal, int count, + unsigned char *key, unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +__owur int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +__owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +__owur int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); +__owur int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); + +__owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +__owur int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +__owur int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +__owur int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +__owur int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv, int enc); +__owur int EVP_CipherInit_SKEY(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + EVP_SKEY *skey, const unsigned char *iv, size_t iv_len, + int enc, const OSSL_PARAM params[]); +__owur int EVP_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc, const OSSL_PARAM params[]); +__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_CipherPipelineEncryptInit(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, + const unsigned char *key, size_t keylen, + size_t numpipes, + const unsigned char **iv, size_t ivlen); +__owur int EVP_CipherPipelineDecryptInit(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, + const unsigned char *key, size_t keylen, + size_t numpipes, + const unsigned char **iv, size_t ivlen); +__owur int EVP_CipherPipelineUpdate(EVP_CIPHER_CTX *ctx, + unsigned char **out, size_t *outl, + const size_t *outsize, + const unsigned char **in, const size_t *inl); +__owur int EVP_CipherPipelineFinal(EVP_CIPHER_CTX *ctx, + unsigned char **outm, size_t *outl, + const size_t *outsize); +__owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); +__owur int EVP_SignFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *propq); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); +__owur int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey, + OSSL_LIB_CTX *libctx, const char *propq); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +__owur int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +__owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, + const unsigned char *iv, EVP_PKEY *priv); +__owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +__owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +__owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, const EVP_ENCODE_CTX *sctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) +#define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) +#endif +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); +int EVP_CIPHER_get_params(EVP_CIPHER *cipher, OSSL_PARAM params[]); +int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX *ctx, const OSSL_PARAM params[]); +int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_CIPHER_gettable_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_settable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX *ctx); +const OSSL_PARAM *EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX *ctx); + +int EVP_CIPHER_CTX_set_algor_params(EVP_CIPHER_CTX *ctx, const X509_ALGOR *alg); +int EVP_CIPHER_CTX_get_algor_params(EVP_CIPHER_CTX *ctx, X509_ALGOR *alg); +int EVP_CIPHER_CTX_get_algor(EVP_CIPHER_CTX *ctx, X509_ALGOR **alg); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +const EVP_MD *EVP_md_null(void); +#ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +#endif +#ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +#endif +#ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +const EVP_MD *EVP_md5_sha1(void); +#endif +#ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +#endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); + +#ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +#endif +#ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +#endif +#ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +#endif +#ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(void); +#endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +#ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +#define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +#define EVP_des_ede_cfb EVP_des_ede_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +#define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +#endif +#ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +#ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +#endif +#endif +#ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +#define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +#endif +#ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +#define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +#endif +#ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +#define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +#endif +#ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +#define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +#endif +#ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +#define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +#endif +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +#define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_128_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +#define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_192_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +#define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +#ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +#define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +#define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +#define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +#endif +#ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +#define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_128_ctr(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +#define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ctr(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +#define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +#endif +#ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +#ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +#endif +#endif + +#ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +#define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +#endif + +#ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +#define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, \ + NULL) +#define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, \ + NULL) + +#ifdef OPENSSL_LOAD_CONF +#define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() +#else +#define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() +#endif + +#define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +#define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +#define EVP_cleanup() \ + while (0) \ + continue +#endif + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); + +void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_CIPHER *cipher, void *arg), + void *arg); + +void EVP_MD_do_all(void (*fn)(const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *ciph, const char *from, + const char *to, void *x), + void *arg); +void EVP_MD_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MD *md, void *arg), + void *arg); + +/* MAC stuff */ + +EVP_MAC *EVP_MAC_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_MAC_up_ref(EVP_MAC *mac); +void EVP_MAC_free(EVP_MAC *mac); +const char *EVP_MAC_get0_name(const EVP_MAC *mac); +const char *EVP_MAC_get0_description(const EVP_MAC *mac); +int EVP_MAC_is_a(const EVP_MAC *mac, const char *name); +const OSSL_PROVIDER *EVP_MAC_get0_provider(const EVP_MAC *mac); +int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]); + +EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac); +void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx); +EVP_MAC_CTX *EVP_MAC_CTX_dup(const EVP_MAC_CTX *src); +EVP_MAC *EVP_MAC_CTX_get0_mac(EVP_MAC_CTX *ctx); +int EVP_MAC_CTX_get_params(EVP_MAC_CTX *ctx, OSSL_PARAM params[]); +int EVP_MAC_CTX_set_params(EVP_MAC_CTX *ctx, const OSSL_PARAM params[]); + +size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX *ctx); +size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX *ctx); +unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *propq, + const char *subalg, const OSSL_PARAM *params, + const void *key, size_t keylen, + const unsigned char *data, size_t datalen, + unsigned char *out, size_t outsize, size_t *outlen); +int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_MAC_init_SKEY(EVP_MAC_CTX *ctx, EVP_SKEY *skey, const OSSL_PARAM params[]); +int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen); +int EVP_MAC_final(EVP_MAC_CTX *ctx, + unsigned char *out, size_t *outl, size_t outsize); +int EVP_MAC_finalXOF(EVP_MAC_CTX *ctx, unsigned char *out, size_t outsize); +const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_gettable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_settable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_CTX_gettable_params(EVP_MAC_CTX *ctx); +const OSSL_PARAM *EVP_MAC_CTX_settable_params(EVP_MAC_CTX *ctx); + +void EVP_MAC_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MAC *mac, void *arg), + void *arg); +int EVP_MAC_names_do_all(const EVP_MAC *mac, + void (*fn)(const char *name, void *data), + void *data); + +/* RAND stuff */ +EVP_RAND *EVP_RAND_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_RAND_up_ref(EVP_RAND *rand); +void EVP_RAND_free(EVP_RAND *rand); +const char *EVP_RAND_get0_name(const EVP_RAND *rand); +const char *EVP_RAND_get0_description(const EVP_RAND *md); +int EVP_RAND_is_a(const EVP_RAND *rand, const char *name); +const OSSL_PROVIDER *EVP_RAND_get0_provider(const EVP_RAND *rand); +int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[]); + +EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent); +int EVP_RAND_CTX_up_ref(EVP_RAND_CTX *ctx); +void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx); +EVP_RAND *EVP_RAND_CTX_get0_rand(EVP_RAND_CTX *ctx); +int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[]); +int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx); +const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx); + +void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_RAND *rand, void *arg), + void *arg); +int EVP_RAND_names_do_all(const EVP_RAND *rand, + void (*fn)(const char *name, void *data), + void *data); + +__owur int EVP_RAND_instantiate(EVP_RAND_CTX *ctx, unsigned int strength, + int prediction_resistance, + const unsigned char *pstr, size_t pstr_len, + const OSSL_PARAM params[]); +int EVP_RAND_uninstantiate(EVP_RAND_CTX *ctx); +__owur int EVP_RAND_generate(EVP_RAND_CTX *ctx, unsigned char *out, + size_t outlen, unsigned int strength, + int prediction_resistance, + const unsigned char *addin, size_t addin_len); +int EVP_RAND_reseed(EVP_RAND_CTX *ctx, int prediction_resistance, + const unsigned char *ent, size_t ent_len, + const unsigned char *addin, size_t addin_len); +__owur int EVP_RAND_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen); +__owur int EVP_RAND_enable_locking(EVP_RAND_CTX *ctx); + +int EVP_RAND_verify_zeroization(EVP_RAND_CTX *ctx); +unsigned int EVP_RAND_get_strength(EVP_RAND_CTX *ctx); +int EVP_RAND_get_state(EVP_RAND_CTX *ctx); + +#define EVP_RAND_STATE_UNINITIALISED 0 +#define EVP_RAND_STATE_READY 1 +#define EVP_RAND_STATE_ERROR 2 + +/* PKEY stuff */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, + int enc_key_len, + EVP_PKEY *private_key); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, + int key_len, EVP_PKEY *pub_key); +#endif +int EVP_PKEY_is_a(const EVP_PKEY *pkey, const char *name); +int EVP_PKEY_type_names_do_all(const EVP_PKEY *pkey, + void (*fn)(const char *name, void *data), + void *data); +int EVP_PKEY_type(int type); +int EVP_PKEY_get_id(const EVP_PKEY *pkey); +#define EVP_PKEY_id EVP_PKEY_get_id +int EVP_PKEY_get_base_id(const EVP_PKEY *pkey); +#define EVP_PKEY_base_id EVP_PKEY_get_base_id +int EVP_PKEY_get_bits(const EVP_PKEY *pkey); +#define EVP_PKEY_bits EVP_PKEY_get_bits +int EVP_PKEY_get_security_bits(const EVP_PKEY *pkey); +#define EVP_PKEY_security_bits EVP_PKEY_get_security_bits +int EVP_PKEY_get_security_category(const EVP_PKEY *pkey); +int EVP_PKEY_get_size(const EVP_PKEY *pkey); +#define EVP_PKEY_size EVP_PKEY_get_size +int EVP_PKEY_can_sign(const EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY *pkey, EVP_KEYMGMT *keymgmt); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +#endif +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +OSSL_DEPRECATEDIN_3_0 +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +#ifndef OPENSSL_NO_POLY1305 +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +#endif +#ifndef OPENSSL_NO_SIPHASH +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +#endif + +struct rsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); + +#ifndef OPENSSL_NO_DSA +struct dsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct dsa_st *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +#endif + +#ifndef OPENSSL_NO_DH +struct dh_st; +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +OSSL_DEPRECATEDIN_3_0 const struct dh_st *EVP_PKEY_get0_DH(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +#endif + +#ifndef OPENSSL_NO_EC +struct ec_key_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct ec_key_st *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); +const char *EVP_PKEY_get0_description(const EVP_PKEY *pkey); +const OSSL_PROVIDER *EVP_PKEY_get0_provider(const EVP_PKEY *key); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey_ex(int type, EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey_ex(EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(const EVP_PKEY *a, unsigned char **pp); +int i2d_PKCS8PrivateKey(const EVP_PKEY *a, unsigned char **pp); + +int i2d_KeyParams(const EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_KeyParams(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_KeyParams_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_KeyParams_bio(int type, EVP_PKEY **a, BIO *in); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b); +int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); +#endif + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +#ifndef OPENSSL_NO_STDIO +int EVP_PKEY_print_public_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +#endif + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); +int EVP_PKEY_get_default_digest_name(EVP_PKEY *pkey, + char *mdname, size_t mdname_sz); +int EVP_PKEY_digestsign_supports_digest(EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *name, const char *propq); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_set1_encoded_public_key in + * preference + */ +#define EVP_PKEY_set1_tls_encodedpoint(pkey, pt, ptlen) \ + EVP_PKEY_set1_encoded_public_key((pkey), (pt), (ptlen)) +#endif + +int EVP_PKEY_set1_encoded_public_key(EVP_PKEY *pkey, + const unsigned char *pub, size_t publen); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_get1_encoded_public_key in + * preference + */ +#define EVP_PKEY_get1_tls_encodedpoint(pkey, ppt) \ + EVP_PKEY_get1_encoded_public_key((pkey), (ppt)) +#endif + +size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY *pkey, unsigned char **ppub); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +#ifndef OPENSSL_NO_SCRYPT +int EVP_PBE_scrypt(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); +int EVP_PBE_scrypt_ex(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de); +int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +#endif + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +int EVP_PBE_CipherInit_ex(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +#define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +#define EVP_PBE_TYPE_PRF 0x1 +/* Is a PKCS#5 v2.0 KDF */ +#define EVP_PBE_TYPE_KDF 0x2 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +int EVP_PBE_find_ex(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen, EVP_PBE_KEYGEN_EX **pkeygen_ex); +void EVP_PBE_cleanup(void); +int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); + +#define ASN1_PKEY_ALIAS 0x1 +#define ASN1_PKEY_DYNAMIC 0x2 +#define ASN1_PKEY_SIGPARAM_NULL 0x4 + +#define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +#define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +#define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +#define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +#define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +#define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +#define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 +#define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa +#define ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED 0xb + +#ifndef OPENSSL_NO_DEPRECATED_3_6 +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_get_count(void); +OSSL_DEPRECATEDIN_3_6 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +OSSL_DEPRECATEDIN_3_6 +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +OSSL_DEPRECATEDIN_3_6 +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_add_alias(int to, int from); +OSSL_DEPRECATEDIN_3_6 +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +OSSL_DEPRECATEDIN_3_6 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_6 EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +OSSL_DEPRECATEDIN_3_6 void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +OSSL_DEPRECATEDIN_3_6 void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode)(EVP_PKEY *pk, + const X509_PUBKEY *pub), + int (*pub_encode)(X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp)(const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size)(const EVP_PKEY *pk), + int (*pkey_bits)(const EVP_PKEY *pk)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode)(EVP_PKEY *pk, + const PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode)(PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode)(EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode)(const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing)(const EVP_PKEY *pk), + int (*param_copy)(EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp)(const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl)(EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify)(EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + const void *data, + const X509_ALGOR *a, + const ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign)(EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + const void *data, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set)(X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key)(EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key)(EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key)(const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key)(const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits)(const EVP_PKEY + *pk)); +#endif /* OPENSSL_NO_DEPRECATED_3_6 */ + +int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, const void *id, int len); +int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id); +int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len); + +int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX *ctx, const char *op); + +const char *EVP_PKEY_get0_type_name(const EVP_PKEY *key); + +#define EVP_PKEY_OP_UNDEFINED 0 +#define EVP_PKEY_OP_PARAMGEN (1 << 1) +#define EVP_PKEY_OP_KEYGEN (1 << 2) +#define EVP_PKEY_OP_FROMDATA (1 << 3) +#define EVP_PKEY_OP_SIGN (1 << 4) +#define EVP_PKEY_OP_VERIFY (1 << 5) +#define EVP_PKEY_OP_VERIFYRECOVER (1 << 6) +#define EVP_PKEY_OP_SIGNCTX (1 << 7) +#define EVP_PKEY_OP_VERIFYCTX (1 << 8) +#define EVP_PKEY_OP_ENCRYPT (1 << 9) +#define EVP_PKEY_OP_DECRYPT (1 << 10) +#define EVP_PKEY_OP_DERIVE (1 << 11) +#define EVP_PKEY_OP_ENCAPSULATE (1 << 12) +#define EVP_PKEY_OP_DECAPSULATE (1 << 13) +#define EVP_PKEY_OP_SIGNMSG (1 << 14) +#define EVP_PKEY_OP_VERIFYMSG (1 << 15) +/* Update the following when adding new EVP_PKEY_OPs */ +#define EVP_PKEY_OP_ALL ((1 << 16) - 1) + +#define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG \ + | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \ + | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +#define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +#define EVP_PKEY_OP_TYPE_DERIVE \ + (EVP_PKEY_OP_DERIVE) + +#define EVP_PKEY_OP_TYPE_DATA \ + (EVP_PKEY_OP_FROMDATA) + +#define EVP_PKEY_OP_TYPE_KEM \ + (EVP_PKEY_OP_ENCAPSULATE | EVP_PKEY_OP_DECAPSULATE) + +#define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +#define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_ALL & ~EVP_PKEY_OP_TYPE_GEN) + +int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key, + int keylen); + +#define EVP_PKEY_CTRL_MD 1 +#define EVP_PKEY_CTRL_PEER_KEY 2 +#define EVP_PKEY_CTRL_SET_MAC_KEY 6 +#define EVP_PKEY_CTRL_DIGESTINIT 7 +/* Used by GOST key encryption in TLS */ +#define EVP_PKEY_CTRL_SET_IV 8 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +#define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 +#define EVP_PKEY_CTRL_PKCS7_SIGN 5 +#define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +#define EVP_PKEY_CTRL_CMS_DECRYPT 10 +#define EVP_PKEY_CTRL_CMS_SIGN 11 +#endif +#define EVP_PKEY_CTRL_CIPHER 12 +#define EVP_PKEY_CTRL_GET_MD 13 +#define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 +#define EVP_PKEY_CTRL_SET1_ID 15 +#define EVP_PKEY_CTRL_GET1_ID 16 +#define EVP_PKEY_CTRL_GET1_ID_LEN 17 + +#define EVP_PKEY_ALG_CTRL 0x1000 + +#define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +#define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +OSSL_DEPRECATEDIN_3_0 EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, + const EVP_PKEY_METHOD *src); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 size_t EVP_PKEY_meth_get_count(void); +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); +#endif + +EVP_KEYMGMT *EVP_KEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEYMGMT_up_ref(EVP_KEYMGMT *keymgmt); +void EVP_KEYMGMT_free(EVP_KEYMGMT *keymgmt); +const OSSL_PROVIDER *EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_name(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_description(const EVP_KEYMGMT *keymgmt); +int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name); +void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYMGMT *keymgmt, void *arg), + void *arg); +int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_gen_gettable_params(const EVP_KEYMGMT *keymgmt); + +EVP_SKEYMGMT *EVP_SKEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_SKEYMGMT_up_ref(EVP_SKEYMGMT *keymgmt); +void EVP_SKEYMGMT_free(EVP_SKEYMGMT *keymgmt); +const OSSL_PROVIDER *EVP_SKEYMGMT_get0_provider(const EVP_SKEYMGMT *keymgmt); +const char *EVP_SKEYMGMT_get0_name(const EVP_SKEYMGMT *keymgmt); +const char *EVP_SKEYMGMT_get0_description(const EVP_SKEYMGMT *keymgmt); +int EVP_SKEYMGMT_is_a(const EVP_SKEYMGMT *keymgmt, const char *name); +void EVP_SKEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_SKEYMGMT *keymgmt, void *arg), + void *arg); +int EVP_SKEYMGMT_names_do_all(const EVP_SKEYMGMT *keymgmt, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_SKEYMGMT_get0_gen_settable_params(const EVP_SKEYMGMT *skeymgmt); +const OSSL_PARAM *EVP_SKEYMGMT_get0_imp_settable_params(const EVP_SKEYMGMT *skeymgmt); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_name(OSSL_LIB_CTX *libctx, + const char *name, + const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX *libctx, + EVP_PKEY *pkey, const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(const EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX *ctx, const char *keytype); + +int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX *ctx, OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_algor_params(EVP_PKEY_CTX *ctx, const X509_ALGOR *alg); +int EVP_PKEY_CTX_get_algor_params(EVP_PKEY_CTX *ctx, X509_ALGOR *alg); +int EVP_PKEY_CTX_get_algor(EVP_PKEY_CTX *ctx, X509_ALGOR **alg); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); +EVP_PKEY *EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, + const char *propq, + const unsigned char *priv, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, const char *propq, + const unsigned char *pub, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); +#endif + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_signature(EVP_PKEY_CTX *pctx, + const unsigned char *sig, size_t siglen); + +void EVP_SIGNATURE_free(EVP_SIGNATURE *signature); +int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature); +OSSL_PROVIDER *EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE *signature); +EVP_SIGNATURE *EVP_SIGNATURE_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_SIGNATURE_is_a(const EVP_SIGNATURE *signature, const char *name); +const char *EVP_SIGNATURE_get0_name(const EVP_SIGNATURE *signature); +const char *EVP_SIGNATURE_get0_description(const EVP_SIGNATURE *signature); +void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_SIGNATURE *signature, + void *data), + void *data); +int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig); +const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig); + +void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher); +int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher); +OSSL_PROVIDER *EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER *cipher); +EVP_ASYM_CIPHER *EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER *cipher, const char *name); +const char *EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER *cipher); +const char *EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER *cipher); +void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_ASYM_CIPHER *cipher, + void *arg), + void *arg); +int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *ciph); +const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *ciph); + +void EVP_KEM_free(EVP_KEM *wrap); +int EVP_KEM_up_ref(EVP_KEM *wrap); +OSSL_PROVIDER *EVP_KEM_get0_provider(const EVP_KEM *wrap); +EVP_KEM *EVP_KEM_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEM_is_a(const EVP_KEM *wrap, const char *name); +const char *EVP_KEM_get0_name(const EVP_KEM *wrap); +const char *EVP_KEM_get0_description(const EVP_KEM *wrap); +void EVP_KEM_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEM *wrap, void *arg), void *arg); +int EVP_KEM_names_do_all(const EVP_KEM *wrap, + void (*fn)(const char *name, void *data), void *data); +const OSSL_PARAM *EVP_KEM_gettable_ctx_params(const EVP_KEM *kem); +const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_sign_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_sign_message_init(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_sign_message_update(EVP_PKEY_CTX *ctx, + const unsigned char *in, size_t inlen); +int EVP_PKEY_sign_message_final(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_verify_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_message_init(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_verify_message_update(EVP_PKEY_CTX *ctx, + const unsigned char *in, size_t inlen); +int EVP_PKEY_verify_message_final(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX *ctx, + const OSSL_PARAM params[]); +int EVP_PKEY_verify_recover_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, + const OSSL_PARAM params[]); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer, + int validate_peer); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); +EVP_SKEY *EVP_PKEY_derive_SKEY(EVP_PKEY_CTX *ctx, EVP_SKEYMGMT *mgmt, + const char *key_type, const char *propquery, + size_t keylen, const OSSL_PARAM params[]); + +int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpriv, + const OSSL_PARAM params[]); +int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, + unsigned char *wrappedkey, size_t *wrappedkeylen, + unsigned char *genkey, size_t *genkeylen); +int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpub, + const OSSL_PARAM params[]); +int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, + unsigned char *unwrapped, size_t *unwrappedlen, + const unsigned char *wrapped, size_t wrappedlen); +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_fromdata(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, + OSSL_PARAM param[]); +const OSSL_PARAM *EVP_PKEY_fromdata_settable(EVP_PKEY_CTX *ctx, int selection); + +int EVP_PKEY_todata(const EVP_PKEY *pkey, int selection, OSSL_PARAM **params); +int EVP_PKEY_export(const EVP_PKEY *pkey, int selection, + OSSL_CALLBACK *export_cb, void *export_cbarg); + +const OSSL_PARAM *EVP_PKEY_gettable_params(const EVP_PKEY *pkey); +int EVP_PKEY_get_params(const EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_get_int_param(const EVP_PKEY *pkey, const char *key_name, + int *out); +int EVP_PKEY_get_size_t_param(const EVP_PKEY *pkey, const char *key_name, + size_t *out); +int EVP_PKEY_get_bn_param(const EVP_PKEY *pkey, const char *key_name, + BIGNUM **bn); +int EVP_PKEY_get_utf8_string_param(const EVP_PKEY *pkey, const char *key_name, + char *str, size_t max_buf_sz, size_t *out_sz); +int EVP_PKEY_get_octet_string_param(const EVP_PKEY *pkey, const char *key_name, + unsigned char *buf, size_t max_buf_sz, + size_t *out_sz); + +const OSSL_PARAM *EVP_PKEY_settable_params(const EVP_PKEY *pkey); +int EVP_PKEY_set_params(EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_set_int_param(EVP_PKEY *pkey, const char *key_name, int in); +int EVP_PKEY_set_size_t_param(EVP_PKEY *pkey, const char *key_name, size_t in); +int EVP_PKEY_set_bn_param(EVP_PKEY *pkey, const char *key_name, + const BIGNUM *bn); +int EVP_PKEY_set_utf8_string_param(EVP_PKEY *pkey, const char *key_name, + const char *str); +int EVP_PKEY_set_octet_string_param(EVP_PKEY *pkey, const char *key_name, + const unsigned char *buf, size_t bsize); + +int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY *pkey); +int EVP_PKEY_get_field_type(const EVP_PKEY *pkey); + +EVP_PKEY *EVP_PKEY_Q_keygen(OSSL_LIB_CTX *libctx, const char *propq, + const char *type, ...); +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_generate(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx); + +#define EVP_PKEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EVP_PKEY, l, p, newf, dupf, freef) +int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg); +void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, int (*copy)(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, void (*cleanup)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, int (*paramgen_init)(EVP_PKEY_CTX *ctx), + int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, int (*keygen_init)(EVP_PKEY_CTX *ctx), + int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, int (*sign_init)(EVP_PKEY_CTX *ctx), + int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, int (*verify_init)(EVP_PKEY_CTX *ctx), + int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, int (*verify_recover_init)(EVP_PKEY_CTX *ctx), + int (*verify_recover)(EVP_PKEY_CTX *ctx, unsigned char *sig, + size_t *siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, int (*encrypt_init)(EVP_PKEY_CTX *ctx), + int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, int (*decrypt_init)(EVP_PKEY_CTX *ctx), + int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, int (*derive_init)(EVP_PKEY_CTX *ctx), + int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), + int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign)(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify)(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, int (*digest_custom)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, int (**pinit)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, int (**pcopy)(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, void (**pcleanup)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD *pmeth, int (**pparamgen_init)(EVP_PKEY_CTX *ctx), + int (**pparamgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD *pmeth, int (**pkeygen_init)(EVP_PKEY_CTX *ctx), + int (**pkeygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD *pmeth, int (**psign_init)(EVP_PKEY_CTX *ctx), + int (**psign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD *pmeth, int (**pverify_init)(EVP_PKEY_CTX *ctx), + int (**pverify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init)(EVP_PKEY_CTX *ctx), + int (**pverify_recover)(EVP_PKEY_CTX *ctx, unsigned char *sig, + size_t *siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**psignctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**pverifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, + int siglen, EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD *pmeth, int (**pencrypt_init)(EVP_PKEY_CTX *ctx), + int (**pencryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD *pmeth, int (**pdecrypt_init)(EVP_PKEY_CTX *ctx), + int (**pdecrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD *pmeth, int (**pderive_init)(EVP_PKEY_CTX *ctx), + int (**pderive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, + int (**pctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), + int (**pctrl_str)(EVP_PKEY_CTX *ctx, const char *type, + const char *value)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestsign(const EVP_PKEY_METHOD *pmeth, + int (**digestsign)(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestverify(const EVP_PKEY_METHOD *pmeth, + int (**digestverify)(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digest_custom(const EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); +#endif + +void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange); +EVP_KEYEXCH *EVP_KEYEXCH_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +OSSL_PROVIDER *EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_is_a(const EVP_KEYEXCH *keyexch, const char *name); +const char *EVP_KEYEXCH_get0_name(const EVP_KEYEXCH *keyexch); +const char *EVP_KEYEXCH_get0_description(const EVP_KEYEXCH *keyexch); +void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYEXCH *keyexch, void *data), + void *data); +int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch); +const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch); + +void EVP_add_alg_module(void); + +int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX *ctx, const char *name); +int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX *ctx, char *name, size_t namelen); +int EVP_PKEY_get_group_name(const EVP_PKEY *pkey, char *name, size_t name_sz, + size_t *gname_len); + +OSSL_LIB_CTX *EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX *ctx); +const char *EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX *ctx); +const OSSL_PROVIDER *EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX *ctx); + +int EVP_SKEY_is_a(const EVP_SKEY *skey, const char *name); +EVP_SKEY *EVP_SKEY_import(OSSL_LIB_CTX *libctx, const char *skeymgmtname, const char *propquery, + int selection, const OSSL_PARAM *params); +EVP_SKEY *EVP_SKEY_generate(OSSL_LIB_CTX *libctx, const char *skeymgmtname, + const char *propquery, const OSSL_PARAM *params); +EVP_SKEY *EVP_SKEY_import_raw_key(OSSL_LIB_CTX *libctx, const char *skeymgmtname, + unsigned char *key, size_t keylen, + const char *propquery); +EVP_SKEY *EVP_SKEY_import_SKEYMGMT(OSSL_LIB_CTX *libctx, EVP_SKEYMGMT *skeymgmt, + int selection, const OSSL_PARAM *params); +int EVP_SKEY_get0_raw_key(const EVP_SKEY *skey, const unsigned char **key, + size_t *len); +const char *EVP_SKEY_get0_key_id(const EVP_SKEY *skey); +int EVP_SKEY_export(const EVP_SKEY *skey, int selection, + OSSL_CALLBACK *export_cb, void *export_cbarg); +int EVP_SKEY_up_ref(EVP_SKEY *skey); +void EVP_SKEY_free(EVP_SKEY *skey); +const char *EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY *skey); +const char *EVP_SKEY_get0_provider_name(const EVP_SKEY *skey); +EVP_SKEY *EVP_SKEY_to_provider(EVP_SKEY *skey, OSSL_LIB_CTX *libctx, + OSSL_PROVIDER *prov, const char *propquery); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/evperr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/evperr.h new file mode 100644 index 0000000..06dd95f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/evperr.h @@ -0,0 +1,146 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_EVPERR_H +#define OPENSSL_EVPERR_H +#pragma once + +#include +#include +#include + +/* + * EVP reason codes. + */ +#define EVP_R_AES_KEY_SETUP_FAILED 143 +#define EVP_R_ARIA_KEY_SETUP_FAILED 176 +#define EVP_R_BAD_ALGORITHM_NAME 200 +#define EVP_R_BAD_DECRYPT 100 +#define EVP_R_BAD_KEY_LENGTH 195 +#define EVP_R_BUFFER_TOO_SMALL 155 +#define EVP_R_CACHE_CONSTANTS_FAILED 225 +#define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +#define EVP_R_CANNOT_GET_PARAMETERS 197 +#define EVP_R_CANNOT_SET_PARAMETERS 198 +#define EVP_R_CIPHER_NOT_GCM_MODE 184 +#define EVP_R_CIPHER_PARAMETER_ERROR 122 +#define EVP_R_COMMAND_NOT_SUPPORTED 147 +#define EVP_R_CONFLICTING_ALGORITHM_NAME 201 +#define EVP_R_COPY_ERROR 173 +#define EVP_R_CTRL_NOT_IMPLEMENTED 132 +#define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +#define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +#define EVP_R_DECODE_ERROR 114 +#define EVP_R_DEFAULT_QUERY_PARSE_ERROR 210 +#define EVP_R_DIFFERENT_KEY_TYPES 101 +#define EVP_R_DIFFERENT_PARAMETERS 153 +#define EVP_R_ERROR_LOADING_SECTION 165 +#define EVP_R_EXPECTING_AN_HMAC_KEY 174 +#define EVP_R_EXPECTING_AN_RSA_KEY 127 +#define EVP_R_EXPECTING_A_DH_KEY 128 +#define EVP_R_EXPECTING_A_DSA_KEY 129 +#define EVP_R_EXPECTING_A_ECX_KEY 219 +#define EVP_R_EXPECTING_A_EC_KEY 142 +#define EVP_R_EXPECTING_A_POLY1305_KEY 164 +#define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +#define EVP_R_FINAL_ERROR 188 +#define EVP_R_GENERATE_ERROR 214 +#define EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED 229 +#define EVP_R_GET_RAW_KEY_FAILED 182 +#define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +#define EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS 204 +#define EVP_R_INACCESSIBLE_KEY 203 +#define EVP_R_INITIALIZATION_ERROR 134 +#define EVP_R_INPUT_NOT_INITIALIZED 111 +#define EVP_R_INVALID_CUSTOM_LENGTH 185 +#define EVP_R_INVALID_DIGEST 152 +#define EVP_R_INVALID_IV_LENGTH 194 +#define EVP_R_INVALID_KEY 163 +#define EVP_R_INVALID_KEY_LENGTH 130 +#define EVP_R_INVALID_LENGTH 221 +#define EVP_R_INVALID_NULL_ALGORITHM 218 +#define EVP_R_INVALID_OPERATION 148 +#define EVP_R_INVALID_PROVIDER_FUNCTIONS 193 +#define EVP_R_INVALID_SALT_LENGTH 186 +#define EVP_R_INVALID_SECRET_LENGTH 223 +#define EVP_R_INVALID_SEED_LENGTH 220 +#define EVP_R_INVALID_VALUE 222 +#define EVP_R_KEYMGMT_EXPORT_FAILURE 205 +#define EVP_R_KEY_SETUP_FAILED 180 +#define EVP_R_LOCKING_NOT_SUPPORTED 213 +#define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +#define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +#define EVP_R_METHOD_NOT_SUPPORTED 144 +#define EVP_R_MISSING_PARAMETERS 103 +#define EVP_R_NOT_ABLE_TO_COPY_CTX 190 +#define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +#define EVP_R_NO_CIPHER_SET 131 +#define EVP_R_NO_DEFAULT_DIGEST 158 +#define EVP_R_NO_DIGEST_SET 139 +#define EVP_R_NO_IMPORT_FUNCTION 206 +#define EVP_R_NO_KEYMGMT_AVAILABLE 199 +#define EVP_R_NO_KEYMGMT_PRESENT 196 +#define EVP_R_NO_KEY_SET 154 +#define EVP_R_NO_OPERATION_SET 149 +#define EVP_R_NULL_MAC_PKEY_CTX 208 +#define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +#define EVP_R_OPERATION_NOT_INITIALIZED 151 +#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE 226 +#define EVP_R_OUTPUT_WOULD_OVERFLOW 202 +#define EVP_R_PARAMETER_TOO_LARGE 187 +#define EVP_R_PARTIALLY_OVERLAPPING 162 +#define EVP_R_PBKDF2_ERROR 181 +#define EVP_R_PIPELINE_NOT_SUPPORTED 230 +#define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +#define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +#define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +#define EVP_R_PROVIDER_ASYM_CIPHER_FAILURE 232 +#define EVP_R_PROVIDER_ASYM_CIPHER_NOT_SUPPORTED 235 +#define EVP_R_PROVIDER_KEYMGMT_FAILURE 233 +#define EVP_R_PROVIDER_KEYMGMT_NOT_SUPPORTED 236 +#define EVP_R_PROVIDER_SIGNATURE_FAILURE 234 +#define EVP_R_PROVIDER_SIGNATURE_NOT_SUPPORTED 237 +#define EVP_R_PUBLIC_KEY_NOT_RSA 106 +#define EVP_R_SETTING_XOF_FAILED 227 +#define EVP_R_SET_DEFAULT_PROPERTY_FAILURE 209 +#define EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE 228 +#define EVP_R_TOO_MANY_PIPES 231 +#define EVP_R_TOO_MANY_RECORDS 183 +#define EVP_R_UNABLE_TO_ENABLE_LOCKING 212 +#define EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE 215 +#define EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH 216 +#define EVP_R_UNABLE_TO_LOCK_CONTEXT 211 +#define EVP_R_UNABLE_TO_SET_CALLBACKS 217 +#define EVP_R_UNKNOWN_BITS 166 +#define EVP_R_UNKNOWN_CIPHER 160 +#define EVP_R_UNKNOWN_DIGEST 161 +#define EVP_R_UNKNOWN_KEY_TYPE 207 +#define EVP_R_UNKNOWN_MAX_SIZE 167 +#define EVP_R_UNKNOWN_OPTION 169 +#define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +#define EVP_R_UNKNOWN_SECURITY_BITS 168 +#define EVP_R_UNSUPPORTED_ALGORITHM 156 +#define EVP_R_UNSUPPORTED_CIPHER 107 +#define EVP_R_UNSUPPORTED_KEYLENGTH 123 +#define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +#define EVP_R_UNSUPPORTED_KEY_SIZE 108 +#define EVP_R_UNSUPPORTED_KEY_TYPE 224 +#define EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS 135 +#define EVP_R_UNSUPPORTED_PRF 125 +#define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +#define EVP_R_UNSUPPORTED_SALT_TYPE 126 +#define EVP_R_UPDATE_ERROR 189 +#define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +#define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +#define EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE 191 +#define EVP_R_XTS_DUPLICATED_KEYS 192 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/fips_names.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/fips_names.h new file mode 100644 index 0000000..3e310bb --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/fips_names.h @@ -0,0 +1,50 @@ +/* + * Copyright 2019-2024 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_FIPS_NAMES_H +#define OPENSSL_FIPS_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Parameter names that the FIPS Provider defines + * All parameters are of type: OSSL_PARAM_UTF8_STRING + */ + +/* The following 4 Parameters are used for FIPS Self Testing */ + +/* The calculated MAC of the module file */ +#define OSSL_PROV_FIPS_PARAM_MODULE_MAC "module-mac" +/* The Version number for the fips install process */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_VERSION "install-version" +/* The calculated MAC of the install status indicator */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_MAC "install-mac" +/* The install status indicator */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_STATUS "install-status" + +/* + * A boolean that determines if the FIPS conditional test errors result in + * the module entering an error state. + * Type: OSSL_PARAM_UTF8_STRING + */ +#define OSSL_PROV_FIPS_PARAM_CONDITIONAL_ERRORS "conditional-errors" + +/* The following are provided for backwards compatibility */ +#define OSSL_PROV_FIPS_PARAM_SECURITY_CHECKS OSSL_PROV_PARAM_SECURITY_CHECKS +#define OSSL_PROV_FIPS_PARAM_TLS1_PRF_EMS_CHECK OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK +#define OSSL_PROV_FIPS_PARAM_DRBG_TRUNC_DIGEST OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_FIPS_NAMES_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/fipskey.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/fipskey.h new file mode 100644 index 0000000..072beca --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/fipskey.h @@ -0,0 +1,47 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/fipskey.h.in + * + * Copyright 2020-2024 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_FIPSKEY_H +#define OPENSSL_FIPSKEY_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The FIPS validation HMAC key, usable as an array initializer. + */ +/* clang-format off */ +#define FIPS_KEY_ELEMENTS \ + 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 +/* clang-format on */ + +/* + * The FIPS validation key, as a string. + */ +/* clang-format off */ +#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* clang-format on */ + +/* + * The FIPS provider vendor name, as a string. + */ +/* clang-format off */ +#define FIPS_VENDOR "OpenSSL non-compliant FIPS Provider" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/hmac.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/hmac.h new file mode 100644 index 0000000..cb866b2 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/hmac.h @@ -0,0 +1,62 @@ +/* + * 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_HMAC_H +#define OPENSSL_HMAC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_HMAC_H +#endif + +#include + +#include + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HMAC_MAX_MD_CBLOCK 200 /* Deprecated */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 size_t HMAC_size(const HMAC_CTX *e); +OSSL_DEPRECATEDIN_3_0 HMAC_CTX *HMAC_CTX_new(void); +OSSL_DEPRECATEDIN_3_0 int HMAC_CTX_reset(HMAC_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_free(HMAC_CTX *ctx); +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur int HMAC_Init(HMAC_CTX *ctx, + const void *key, int len, + const EVP_MD *md); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +OSSL_DEPRECATEDIN_3_0 int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +OSSL_DEPRECATEDIN_3_0 __owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); +#endif + +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *data, size_t data_len, + unsigned char *md, unsigned int *md_len); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/hpke.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/hpke.h new file mode 100644 index 0000000..12496ff --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/hpke.h @@ -0,0 +1,169 @@ +/* + * Copyright 2022-2024 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 + */ + +/* APIs and data structures for HPKE (RFC9180) */ +#ifndef OSSL_HPKE_H +#define OSSL_HPKE_H +#pragma once + +#include + +/* HPKE modes */ +#define OSSL_HPKE_MODE_BASE 0 /* Base mode */ +#define OSSL_HPKE_MODE_PSK 1 /* Pre-shared key mode */ +#define OSSL_HPKE_MODE_AUTH 2 /* Authenticated mode */ +#define OSSL_HPKE_MODE_PSKAUTH 3 /* PSK+authenticated mode */ + +/* + * Max for ikm, psk, pskid, info and exporter contexts. + * RFC9180, section 7.2.1 RECOMMENDS 64 octets but we have test vectors from + * Appendix A.6.1 with a 66 octet IKM so we'll allow that. + */ +#define OSSL_HPKE_MAX_PARMLEN 66 +#define OSSL_HPKE_MIN_PSKLEN 32 +#define OSSL_HPKE_MAX_INFOLEN 1024 + +/* + * The (16bit) HPKE algorithm ID IANA codepoints + * If/when new IANA codepoints are added there are tables in + * crypto/hpke/hpke_util.c that must also be updated. + */ +#define OSSL_HPKE_KEM_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_KEM_ID_P256 0x0010 /* NIST P-256 */ +#define OSSL_HPKE_KEM_ID_P384 0x0011 /* NIST P-384 */ +#define OSSL_HPKE_KEM_ID_P521 0x0012 /* NIST P-521 */ +#define OSSL_HPKE_KEM_ID_X25519 0x0020 /* Curve25519 */ +#define OSSL_HPKE_KEM_ID_X448 0x0021 /* Curve448 */ + +#define OSSL_HPKE_KDF_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA256 0x0001 /* HKDF-SHA256 */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA384 0x0002 /* HKDF-SHA384 */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA512 0x0003 /* HKDF-SHA512 */ + +#define OSSL_HPKE_AEAD_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_AEAD_ID_AES_GCM_128 0x0001 /* AES-GCM-128 */ +#define OSSL_HPKE_AEAD_ID_AES_GCM_256 0x0002 /* AES-GCM-256 */ +#define OSSL_HPKE_AEAD_ID_CHACHA_POLY1305 0x0003 /* Chacha20-Poly1305 */ +#define OSSL_HPKE_AEAD_ID_EXPORTONLY 0xFFFF /* export-only fake ID */ + +/* strings for suite components */ +#define OSSL_HPKE_KEMSTR_P256 "P-256" /* KEM id 0x10 */ +#define OSSL_HPKE_KEMSTR_P384 "P-384" /* KEM id 0x11 */ +#define OSSL_HPKE_KEMSTR_P521 "P-521" /* KEM id 0x12 */ +#define OSSL_HPKE_KEMSTR_X25519 "X25519" /* KEM id 0x20 */ +#define OSSL_HPKE_KEMSTR_X448 "X448" /* KEM id 0x21 */ +#define OSSL_HPKE_KDFSTR_256 "hkdf-sha256" /* KDF id 1 */ +#define OSSL_HPKE_KDFSTR_384 "hkdf-sha384" /* KDF id 2 */ +#define OSSL_HPKE_KDFSTR_512 "hkdf-sha512" /* KDF id 3 */ +#define OSSL_HPKE_AEADSTR_AES128GCM "aes-128-gcm" /* AEAD id 1 */ +#define OSSL_HPKE_AEADSTR_AES256GCM "aes-256-gcm" /* AEAD id 2 */ +#define OSSL_HPKE_AEADSTR_CP "chacha20-poly1305" /* AEAD id 3 */ +#define OSSL_HPKE_AEADSTR_EXP "exporter" /* AEAD id 0xff */ + +/* + * Roles for use in creating an OSSL_HPKE_CTX, most + * important use of this is to control nonce reuse. + */ +#define OSSL_HPKE_ROLE_SENDER 0 +#define OSSL_HPKE_ROLE_RECEIVER 1 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + uint16_t kem_id; /* Key Encapsulation Method id */ + uint16_t kdf_id; /* Key Derivation Function id */ + uint16_t aead_id; /* AEAD alg id */ +} OSSL_HPKE_SUITE; + +/** + * Suite constants, use this like: + * OSSL_HPKE_SUITE myvar = OSSL_HPKE_SUITE_DEFAULT; + */ +#ifndef OPENSSL_NO_ECX +#define OSSL_HPKE_SUITE_DEFAULT \ + { \ + OSSL_HPKE_KEM_ID_X25519, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#else +#define OSSL_HPKE_SUITE_DEFAULT \ + { \ + OSSL_HPKE_KEM_ID_P256, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#endif + +typedef struct ossl_hpke_ctx_st OSSL_HPKE_CTX; + +OSSL_HPKE_CTX *OSSL_HPKE_CTX_new(int mode, OSSL_HPKE_SUITE suite, int role, + OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_HPKE_CTX_free(OSSL_HPKE_CTX *ctx); + +int OSSL_HPKE_encap(OSSL_HPKE_CTX *ctx, + unsigned char *enc, size_t *enclen, + const unsigned char *pub, size_t publen, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_seal(OSSL_HPKE_CTX *ctx, + unsigned char *ct, size_t *ctlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *pt, size_t ptlen); + +int OSSL_HPKE_keygen(OSSL_HPKE_SUITE suite, + unsigned char *pub, size_t *publen, EVP_PKEY **priv, + const unsigned char *ikm, size_t ikmlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_decap(OSSL_HPKE_CTX *ctx, + const unsigned char *enc, size_t enclen, + EVP_PKEY *recippriv, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_open(OSSL_HPKE_CTX *ctx, + unsigned char *pt, size_t *ptlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *ct, size_t ctlen); + +int OSSL_HPKE_export(OSSL_HPKE_CTX *ctx, + unsigned char *secret, + size_t secretlen, + const unsigned char *label, + size_t labellen); + +int OSSL_HPKE_CTX_set1_authpriv(OSSL_HPKE_CTX *ctx, EVP_PKEY *priv); +int OSSL_HPKE_CTX_set1_authpub(OSSL_HPKE_CTX *ctx, + const unsigned char *pub, + size_t publen); +int OSSL_HPKE_CTX_set1_psk(OSSL_HPKE_CTX *ctx, + const char *pskid, + const unsigned char *psk, size_t psklen); + +int OSSL_HPKE_CTX_set1_ikme(OSSL_HPKE_CTX *ctx, + const unsigned char *ikme, size_t ikmelen); + +int OSSL_HPKE_CTX_set_seq(OSSL_HPKE_CTX *ctx, uint64_t seq); +int OSSL_HPKE_CTX_get_seq(OSSL_HPKE_CTX *ctx, uint64_t *seq); + +int OSSL_HPKE_suite_check(OSSL_HPKE_SUITE suite); +int OSSL_HPKE_get_grease_value(const OSSL_HPKE_SUITE *suite_in, + OSSL_HPKE_SUITE *suite, + unsigned char *enc, size_t *enclen, + unsigned char *ct, size_t ctlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_str2suite(const char *str, OSSL_HPKE_SUITE *suite); +size_t OSSL_HPKE_get_ciphertext_size(OSSL_HPKE_SUITE suite, size_t clearlen); +size_t OSSL_HPKE_get_public_encap_size(OSSL_HPKE_SUITE suite); +size_t OSSL_HPKE_get_recommended_ikmelen(OSSL_HPKE_SUITE suite); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/http.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/http.h new file mode 100644 index 0000000..91aa923 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/http.h @@ -0,0 +1,117 @@ +/* + * Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Siemens AG 2018-2020 + * + * 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_HTTP_H +#define OPENSSL_HTTP_H +#pragma once + +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_HTTP_NAME "http" +#define OSSL_HTTPS_NAME "https" +#define OSSL_HTTP_PREFIX OSSL_HTTP_NAME "://" +#define OSSL_HTTPS_PREFIX OSSL_HTTPS_NAME "://" +#define OSSL_HTTP_PORT "80" +#define OSSL_HTTPS_PORT "443" +#define OPENSSL_NO_PROXY "NO_PROXY" +#define OPENSSL_HTTP_PROXY "HTTP_PROXY" +#define OPENSSL_HTTPS_PROXY "HTTPS_PROXY" + +/* We want to have this even in case of OPENSSL_NO_HTTP */ +int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); + +#ifndef OPENSSL_NO_HTTP + +#define OSSL_HTTP_DEFAULT_MAX_LINE_LEN (4 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_RESP_LEN (100 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_CRL_LEN (32 * 1024 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_RESP_HDR_LINES 256 + +/* Low-level HTTP API */ +OSSL_HTTP_REQ_CTX *OSSL_HTTP_REQ_CTX_new(BIO *wbio, BIO *rbio, int buf_size); +void OSSL_HTTP_REQ_CTX_free(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_set_request_line(OSSL_HTTP_REQ_CTX *rctx, int method_POST, + const char *server, const char *port, + const char *path); +int OSSL_HTTP_REQ_CTX_add1_header(OSSL_HTTP_REQ_CTX *rctx, + const char *name, const char *value); +int OSSL_HTTP_REQ_CTX_set_expected(OSSL_HTTP_REQ_CTX *rctx, + const char *content_type, int asn1, + int timeout, int keep_alive); +int OSSL_HTTP_REQ_CTX_set1_req(OSSL_HTTP_REQ_CTX *rctx, const char *content_type, + const ASN1_ITEM *it, const ASN1_VALUE *req); +int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_nbio_d2i(OSSL_HTTP_REQ_CTX *rctx, + ASN1_VALUE **pval, const ASN1_ITEM *it); +BIO *OSSL_HTTP_REQ_CTX_exchange(OSSL_HTTP_REQ_CTX *rctx); +BIO *OSSL_HTTP_REQ_CTX_get0_mem_bio(const OSSL_HTTP_REQ_CTX *rctx); +size_t OSSL_HTTP_REQ_CTX_get_resp_len(const OSSL_HTTP_REQ_CTX *rctx); +void OSSL_HTTP_REQ_CTX_set_max_response_length(OSSL_HTTP_REQ_CTX *rctx, + unsigned long len); +void OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines(OSSL_HTTP_REQ_CTX *rctx, + size_t count); +int OSSL_HTTP_is_alive(const OSSL_HTTP_REQ_CTX *rctx); + +/* High-level HTTP API */ +typedef BIO *(*OSSL_HTTP_bio_cb_t)(BIO *bio, void *arg, int connect, int detail); +OSSL_HTTP_REQ_CTX *OSSL_HTTP_open(const char *server, const char *port, + const char *proxy, const char *no_proxy, + int use_ssl, BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, int overall_timeout); +int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port, + const char *proxyuser, const char *proxypass, + int timeout, BIO *bio_err, const char *prog); +int OSSL_HTTP_set1_request(OSSL_HTTP_REQ_CTX *rctx, const char *path, + const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +BIO *OSSL_HTTP_exchange(OSSL_HTTP_REQ_CTX *rctx, char **redirection_url); +BIO *OSSL_HTTP_get(const char *url, const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout); +BIO *OSSL_HTTP_transfer(OSSL_HTTP_REQ_CTX **prctx, + const char *server, const char *port, + const char *path, int use_ssl, + const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +int OSSL_HTTP_close(OSSL_HTTP_REQ_CTX *rctx, int ok); + +/* Auxiliary functions */ +int OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); +const char *OSSL_HTTP_adapt_proxy(const char *proxy, const char *no_proxy, + const char *server, int use_ssl); + +#endif /* !defined(OPENSSL_NO_HTTP) */ +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_HTTP_H) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/httperr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/httperr.h new file mode 100644 index 0000000..4c1cc6a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/httperr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2026 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_HTTPERR_H +#define OPENSSL_HTTPERR_H +#pragma once + +#include +#include +#include + +/* + * HTTP reason codes. + */ +#define HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN 108 +#define HTTP_R_CONNECT_FAILURE 100 +#define HTTP_R_CONTENT_TYPE_MISMATCH 131 +#define HTTP_R_ERROR_PARSING_ASN1_LENGTH 109 +#define HTTP_R_ERROR_PARSING_CONTENT_LENGTH 119 +#define HTTP_R_ERROR_PARSING_URL 101 +#define HTTP_R_ERROR_RECEIVING 103 +#define HTTP_R_ERROR_SENDING 102 +#define HTTP_R_FAILED_READING_DATA 128 +#define HTTP_R_HEADER_PARSE_ERROR 126 +#define HTTP_R_INCONSISTENT_CONTENT_LENGTH 120 +#define HTTP_R_INVALID_PORT_NUMBER 123 +#define HTTP_R_INVALID_URL_PATH 125 +#define HTTP_R_INVALID_URL_SCHEME 124 +#define HTTP_R_MAX_RESP_LEN_EXCEEDED 117 +#define HTTP_R_MISSING_ASN1_ENCODING 110 +#define HTTP_R_MISSING_CONTENT_TYPE 121 +#define HTTP_R_MISSING_REDIRECT_LOCATION 111 +#define HTTP_R_RECEIVED_ERROR 105 +#define HTTP_R_RECEIVED_WRONG_HTTP_VERSION 106 +#define HTTP_R_REDIRECTION_FROM_HTTPS_TO_HTTP 112 +#define HTTP_R_REDIRECTION_NOT_ENABLED 116 +#define HTTP_R_RESPONSE_LINE_TOO_LONG 113 +#define HTTP_R_RESPONSE_PARSE_ERROR 104 +#define HTTP_R_RESPONSE_TOO_MANY_HDRLINES 130 +#define HTTP_R_RETRY_TIMEOUT 129 +#define HTTP_R_SERVER_CANCELED_CONNECTION 127 +#define HTTP_R_SOCK_NOT_SUPPORTED 122 +#define HTTP_R_STATUS_CODE_UNSUPPORTED 114 +#define HTTP_R_TLS_NOT_ENABLED 107 +#define HTTP_R_TOO_MANY_REDIRECTIONS 115 +#define HTTP_R_UNEXPECTED_CONTENT_TYPE 118 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/idea.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/idea.h new file mode 100644 index 0000000..674a941 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/idea.h @@ -0,0 +1,82 @@ +/* + * 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_IDEA_H +#define OPENSSL_IDEA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_IDEA_H +#endif + +#include + +#ifndef OPENSSL_NO_IDEA +#ifdef __cplusplus +extern "C" { +#endif + +#define IDEA_BLOCK 8 +#define IDEA_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef unsigned int IDEA_INT; + +#define IDEA_ENCRYPT 1 +#define IDEA_DECRYPT 0 + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *IDEA_options(void); +OSSL_DEPRECATEDIN_3_0 void IDEA_ecb_encrypt(const unsigned char *in, + unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_encrypt_key(const unsigned char *key, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, + IDEA_KEY_SCHEDULE *dk); +OSSL_DEPRECATEDIN_3_0 void IDEA_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num); +OSSL_DEPRECATEDIN_3_0 void IDEA_encrypt(unsigned long *in, + IDEA_KEY_SCHEDULE *ks); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define idea_options IDEA_options +#define idea_ecb_encrypt IDEA_ecb_encrypt +#define idea_set_encrypt_key IDEA_set_encrypt_key +#define idea_set_decrypt_key IDEA_set_decrypt_key +#define idea_cbc_encrypt IDEA_cbc_encrypt +#define idea_cfb64_encrypt IDEA_cfb64_encrypt +#define idea_ofb64_encrypt IDEA_ofb64_encrypt +#define idea_encrypt IDEA_encrypt +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/indicator.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/indicator.h new file mode 100644 index 0000000..66d6f42 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/indicator.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024 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_INDICATOR_H +#define OPENSSL_INDICATOR_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef int(OSSL_INDICATOR_CALLBACK)(const char *type, const char *desc, + const OSSL_PARAM params[]); + +void OSSL_INDICATOR_set_callback(OSSL_LIB_CTX *libctx, + OSSL_INDICATOR_CALLBACK *cb); +void OSSL_INDICATOR_get_callback(OSSL_LIB_CTX *libctx, + OSSL_INDICATOR_CALLBACK **cb); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_INDICATOR_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/kdf.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/kdf.h new file mode 100644 index 0000000..f3267ea --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/kdf.h @@ -0,0 +1,141 @@ +/* + * Copyright 2016-2025 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_KDF_H +#define OPENSSL_KDF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_KDF_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int EVP_KDF_up_ref(EVP_KDF *kdf); +void EVP_KDF_free(EVP_KDF *kdf); +EVP_KDF *EVP_KDF_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); + +EVP_KDF_CTX *EVP_KDF_CTX_new(EVP_KDF *kdf); +void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx); +EVP_KDF_CTX *EVP_KDF_CTX_dup(const EVP_KDF_CTX *src); +const char *EVP_KDF_get0_description(const EVP_KDF *kdf); +int EVP_KDF_is_a(const EVP_KDF *kdf, const char *name); +const char *EVP_KDF_get0_name(const EVP_KDF *kdf); +const OSSL_PROVIDER *EVP_KDF_get0_provider(const EVP_KDF *kdf); +const EVP_KDF *EVP_KDF_CTX_kdf(EVP_KDF_CTX *ctx); + +void EVP_KDF_CTX_reset(EVP_KDF_CTX *ctx); +size_t EVP_KDF_CTX_get_kdf_size(EVP_KDF_CTX *ctx); +int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_KDF_CTX_set_SKEY(EVP_KDF_CTX *ctx, EVP_SKEY *key, const char *paramname); +EVP_SKEY *EVP_KDF_derive_SKEY(EVP_KDF_CTX *ctx, EVP_SKEYMGMT *mgmt, + const char *key_type, const char *propquery, + size_t keylen, const OSSL_PARAM params[]); +int EVP_KDF_get_params(EVP_KDF *kdf, OSSL_PARAM params[]); +int EVP_KDF_CTX_get_params(EVP_KDF_CTX *ctx, OSSL_PARAM params[]); +int EVP_KDF_CTX_set_params(EVP_KDF_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_KDF_gettable_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_gettable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_settable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_CTX_gettable_params(EVP_KDF_CTX *ctx); +const OSSL_PARAM *EVP_KDF_CTX_settable_params(EVP_KDF_CTX *ctx); + +void EVP_KDF_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KDF *kdf, void *arg), + void *arg); +int EVP_KDF_names_do_all(const EVP_KDF *kdf, + void (*fn)(const char *name, void *data), + void *data); + +#define EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND 0 +#define EVP_KDF_HKDF_MODE_EXTRACT_ONLY 1 +#define EVP_KDF_HKDF_MODE_EXPAND_ONLY 2 + +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV 65 +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_SRV_TO_CLI 66 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_CLI_TO_SRV 67 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_SRV_TO_CLI 68 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_CLI_TO_SRV 69 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_SRV_TO_CLI 70 + +/**** The legacy PKEY-based KDF API follows. ****/ + +#define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) +#define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_TLS_SEED (EVP_PKEY_ALG_CTRL + 2) +#define EVP_PKEY_CTRL_HKDF_MD (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_HKDF_SALT (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_HKDF_KEY (EVP_PKEY_ALG_CTRL + 5) +#define EVP_PKEY_CTRL_HKDF_INFO (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_HKDF_MODE (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_PASS (EVP_PKEY_ALG_CTRL + 8) +#define EVP_PKEY_CTRL_SCRYPT_SALT (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_SCRYPT_N (EVP_PKEY_ALG_CTRL + 10) +#define EVP_PKEY_CTRL_SCRYPT_R (EVP_PKEY_ALG_CTRL + 11) +#define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) +#define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) + +#define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND \ + EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND +#define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY \ + EVP_KDF_HKDF_MODE_EXTRACT_ONLY +#define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY \ + EVP_KDF_HKDF_MODE_EXPAND_ONLY + +int EVP_PKEY_CTX_set_tls1_prf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_tls1_prf_secret(EVP_PKEY_CTX *pctx, + const unsigned char *sec, int seclen); + +int EVP_PKEY_CTX_add1_tls1_prf_seed(EVP_PKEY_CTX *pctx, + const unsigned char *seed, int seedlen); + +int EVP_PKEY_CTX_set_hkdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_hkdf_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set1_hkdf_key(EVP_PKEY_CTX *ctx, + const unsigned char *key, int keylen); + +int EVP_PKEY_CTX_add1_hkdf_info(EVP_PKEY_CTX *ctx, + const unsigned char *info, int infolen); + +int EVP_PKEY_CTX_set_hkdf_mode(EVP_PKEY_CTX *ctx, int mode); +#define EVP_PKEY_CTX_hkdf_mode EVP_PKEY_CTX_set_hkdf_mode + +int EVP_PKEY_CTX_set1_pbe_pass(EVP_PKEY_CTX *ctx, const char *pass, + int passlen); + +int EVP_PKEY_CTX_set1_scrypt_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set_scrypt_N(EVP_PKEY_CTX *ctx, uint64_t n); + +int EVP_PKEY_CTX_set_scrypt_r(EVP_PKEY_CTX *ctx, uint64_t r); + +int EVP_PKEY_CTX_set_scrypt_p(EVP_PKEY_CTX *ctx, uint64_t p); + +int EVP_PKEY_CTX_set_scrypt_maxmem_bytes(EVP_PKEY_CTX *ctx, + uint64_t maxmem_bytes); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/kdferr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/kdferr.h new file mode 100644 index 0000000..a2c1f24 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/kdferr.h @@ -0,0 +1,16 @@ +/* + * 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_KDFERR_H +#define OPENSSL_KDFERR_H +#pragma once + +#include + +#endif /* !defined(OPENSSL_KDFERR_H) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/lhash.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/lhash.h new file mode 100644 index 0000000..dab9372 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/lhash.h @@ -0,0 +1,417 @@ +/* + * Copyright 1995-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef OPENSSL_LHASH_H +#define OPENSSL_LHASH_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_LHASH_H +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC)(const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK)(const void *, const void *, OPENSSL_LH_COMPFUNC cfn); +typedef unsigned long (*OPENSSL_LH_HASHFUNC)(const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK)(const void *, OPENSSL_LH_HASHFUNC hfn); +typedef void (*OPENSSL_LH_DOALL_FUNC)(void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK)(void *, OPENSSL_LH_DOALL_FUNC doall); +typedef void (*OPENSSL_LH_DOALL_FUNCARG)(void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK)(void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +#define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +#define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) \ + { \ + const o_type *a = arg; \ + return name##_hash(a); \ + } +#define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +#define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +#define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) \ + { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a, b); \ + } +#define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +#define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +#define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) \ + { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); \ + } +#define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + +#define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void OPENSSL_LH_flush(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +#ifndef OPENSSL_NO_STDIO +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _LHASH OPENSSL_LHASH +#define LHASH_NODE OPENSSL_LH_NODE +#define lh_error OPENSSL_LH_error +#define lh_new OPENSSL_LH_new +#define lh_free OPENSSL_LH_free +#define lh_insert OPENSSL_LH_insert +#define lh_delete OPENSSL_LH_delete +#define lh_retrieve OPENSSL_LH_retrieve +#define lh_doall OPENSSL_LH_doall +#define lh_doall_arg OPENSSL_LH_doall_arg +#define lh_strhash OPENSSL_LH_strhash +#define lh_num_items OPENSSL_LH_num_items +#ifndef OPENSSL_NO_STDIO +#define lh_stats OPENSSL_LH_stats +#define lh_node_stats OPENSSL_LH_node_stats +#define lh_node_usage_stats OPENSSL_LH_node_usage_stats +#endif +#define lh_stats_bio OPENSSL_LH_stats_bio +#define lh_node_stats_bio OPENSSL_LH_node_stats_bio +#define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +#endif + +/* Type checking... */ + +#define LHASH_OF(type) struct lhash_st_##type + +/* Helper macro for internal use */ +#define DEFINE_LHASH_OF_INTERNAL(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ + typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ + typedef void (*lh_##type##_doallfunc)(type * a); \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type * \ + ossl_check_##type##_lh_plain_type(type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + { \ + return (const OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + { \ + return (OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + { \ + return (OPENSSL_LH_COMPFUNC)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + { \ + return (OPENSSL_LH_HASHFUNC)hfn; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + { \ + return (OPENSSL_LH_DOALL_FUNC)dfn; \ + } \ + LHASH_OF(type) + +#ifndef OPENSSL_NO_DEPRECATED_3_1 +#define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +#else +#define DEFINE_LHASH_OF_DEPRECATED(type) +#endif + +#define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ + (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ + } \ + LHASH_OF(type) + +#define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ + } \ + LHASH_OF(type) + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) +#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) +#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) +DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) +#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) +#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/macros.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/macros.h new file mode 100644 index 0000000..598d3fc --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/macros.h @@ -0,0 +1,361 @@ +/* + * Copyright 2019-2026 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_MACROS_H +#define OPENSSL_MACROS_H +#pragma once + +#include +#include + +/* Helper macros for CPP string composition */ +#define OPENSSL_MSTR_HELPER(x) #x +#define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x) + +/* + * Sometimes OPENSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Generic deprecation macro + * + * If OPENSSL_SUPPRESS_DEPRECATED is defined, then OSSL_DEPRECATED and + * OSSL_DEPRECATED_FOR become no-ops + */ +#ifndef OSSL_DEPRECATED +#undef OSSL_DEPRECATED_FOR +#ifndef OPENSSL_SUPPRESS_DEPRECATED +#if defined(_MSC_VER) +/* + * MSVC supports __declspec(deprecated) since MSVC 2003 (13.10), + * and __declspec(deprecated(message)) since MSVC 2005 (14.00) + */ +#if _MSC_VER >= 1400 +#define OSSL_DEPRECATED(since) \ + __declspec(deprecated("Since OpenSSL " #since)) +#define OSSL_DEPRECATED_FOR(since, message) \ + __declspec(deprecated("Since OpenSSL " #since ";" message)) +#elif _MSC_VER >= 1310 +#define OSSL_DEPRECATED(since) __declspec(deprecated) +#define OSSL_DEPRECATED_FOR(since, message) __declspec(deprecated) +#endif +#elif defined(__GNUC__) +/* + * According to GCC documentation, deprecations with message appeared in + * GCC 4.5.0 + */ +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +#define OSSL_DEPRECATED(since) \ + __attribute__((deprecated("Since OpenSSL " #since))) +#define OSSL_DEPRECATED_FOR(since, message) \ + __attribute__((deprecated("Since OpenSSL " #since ";" message))) +#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +#define OSSL_DEPRECATED(since) __attribute__((deprecated)) +#define OSSL_DEPRECATED_FOR(since, message) __attribute__((deprecated)) +#endif +#elif defined(__SUNPRO_C) +#if (__SUNPRO_C >= 0x5130) +#define OSSL_DEPRECATED(since) __attribute__((deprecated)) +#define OSSL_DEPRECATED_FOR(since, message) __attribute__((deprecated)) +#endif +#endif +#endif +#endif + +/* + * Still not defined? Then define no-op macros. This means these macros + * are unsuitable for use in a typedef. + */ +#ifndef OSSL_DEPRECATED +#define OSSL_DEPRECATED(since) extern +#define OSSL_DEPRECATED_FOR(since, message) extern +#endif + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . If this is + * undefined, the value of the macro OPENSSL_CONFIGURED_API (defined in + * ) is the default. + * + * For any version number up until version 1.1.x, is expected to be + * the calculated version number 0xMNNFFPPSL. + * For version numbers 3.0 and on, is expected to be a computation + * of the major and minor numbers in decimal using this formula: + * + * MAJOR * 10000 + MINOR * 100 + * + * So version 3.0 becomes 30000, version 3.2 becomes 30200, etc. + */ + +/* + * We use the OPENSSL_API_COMPAT value to define API level macros. These + * macros are used to enable or disable features at that API version boundary. + */ + +#ifdef OPENSSL_API_LEVEL +#error "OPENSSL_API_LEVEL must not be defined by application" +#endif + +/* + * We figure out what API level was intended by simple numeric comparison. + * The lowest old style number we recognise is 0x00908000L, so we take some + * safety margin and assume that anything below 0x00900000L is a new style + * number. This allows new versions up to and including v943.71.83. + */ +#ifdef OPENSSL_API_COMPAT +#if OPENSSL_API_COMPAT < 0x900000L +#define OPENSSL_API_LEVEL (OPENSSL_API_COMPAT) +#else +#define OPENSSL_API_LEVEL \ + (((OPENSSL_API_COMPAT >> 28) & 0xF) * 10000 \ + + ((OPENSSL_API_COMPAT >> 20) & 0xFF) * 100 \ + + ((OPENSSL_API_COMPAT >> 12) & 0xFF)) +#endif +#endif + +/* + * If OPENSSL_API_COMPAT wasn't given, we use default numbers to set + * the API compatibility level. + */ +#ifndef OPENSSL_API_LEVEL +#if OPENSSL_CONFIGURED_API > 0 +#define OPENSSL_API_LEVEL (OPENSSL_CONFIGURED_API) +#else +#define OPENSSL_API_LEVEL \ + (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +#endif +#endif + +#if OPENSSL_API_LEVEL > OPENSSL_CONFIGURED_API +#error "The requested API level higher than the configured API compatibility level" +#endif + +/* + * Check of sane values. + */ +/* Can't go higher than the current version. */ +#if OPENSSL_API_LEVEL > (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif +/* OpenSSL will have no version 2.y.z */ +#if OPENSSL_API_LEVEL < 30000 && OPENSSL_API_LEVEL >= 20000 +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif +/* Below 0.9.8 is unacceptably low */ +#if OPENSSL_API_LEVEL < 908 +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif + +/* + * Define macros for deprecation and simulated removal purposes. + * + * The macros OSSL_DEPRECATEDIN_{major}_{minor} are always defined for + * all OpenSSL versions we care for. They can be used as attributes + * in function declarations where appropriate. + * + * The macros OPENSSL_NO_DEPRECATED_{major}_{minor} are defined for + * all OpenSSL versions up to or equal to the version given with + * OPENSSL_API_COMPAT. They are used as guards around anything that's + * deprecated up to that version, as an effect of the developer option + * 'no-deprecated'. + */ + +#undef OPENSSL_NO_DEPRECATED_3_6 +#undef OPENSSL_NO_DEPRECATED_3_5 +#undef OPENSSL_NO_DEPRECATED_3_4 +#undef OPENSSL_NO_DEPRECATED_3_1 +#undef OPENSSL_NO_DEPRECATED_3_0 +#undef OPENSSL_NO_DEPRECATED_1_1_1 +#undef OPENSSL_NO_DEPRECATED_1_1_0 +#undef OPENSSL_NO_DEPRECATED_1_0_2 +#undef OPENSSL_NO_DEPRECATED_1_0_1 +#undef OPENSSL_NO_DEPRECATED_1_0_0 +#undef OPENSSL_NO_DEPRECATED_0_9_8 + +#if OPENSSL_API_LEVEL >= 30600 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_6 OSSL_DEPRECATED(3.6) +#define OSSL_DEPRECATEDIN_3_6_FOR(msg) OSSL_DEPRECATED_FOR(3.6, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_6 +#endif +#else +#define OSSL_DEPRECATEDIN_3_6 +#define OSSL_DEPRECATEDIN_3_6_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30500 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_5 OSSL_DEPRECATED(3.5) +#define OSSL_DEPRECATEDIN_3_5_FOR(msg) OSSL_DEPRECATED_FOR(3.5, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_5 +#endif +#else +#define OSSL_DEPRECATEDIN_3_5 +#define OSSL_DEPRECATEDIN_3_5_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30400 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_4 OSSL_DEPRECATED(3.4) +#define OSSL_DEPRECATEDIN_3_4_FOR(msg) OSSL_DEPRECATED_FOR(3.4, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_4 +#endif +#else +#define OSSL_DEPRECATEDIN_3_4 +#define OSSL_DEPRECATEDIN_3_4_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30100 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_1 OSSL_DEPRECATED(3.1) +#define OSSL_DEPRECATEDIN_3_1_FOR(msg) OSSL_DEPRECATED_FOR(3.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_1 +#endif +#else +#define OSSL_DEPRECATEDIN_3_1 +#define OSSL_DEPRECATEDIN_3_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30000 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_0 OSSL_DEPRECATED(3.0) +#define OSSL_DEPRECATEDIN_3_0_FOR(msg) OSSL_DEPRECATED_FOR(3.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_0 +#endif +#else +#define OSSL_DEPRECATEDIN_3_0 +#define OSSL_DEPRECATEDIN_3_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10101 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_1_1 OSSL_DEPRECATED(1.1.1) +#define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) OSSL_DEPRECATED_FOR(1.1.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_1_1 +#endif +#else +#define OSSL_DEPRECATEDIN_1_1_1 +#define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10100 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_1_0 OSSL_DEPRECATED(1.1.0) +#define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) OSSL_DEPRECATED_FOR(1.1.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_1_0 +#endif +#else +#define OSSL_DEPRECATEDIN_1_1_0 +#define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10002 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_2 OSSL_DEPRECATED(1.0.2) +#define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) OSSL_DEPRECATED_FOR(1.0.2, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_2 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_2 +#define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10001 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_1 OSSL_DEPRECATED(1.0.1) +#define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) OSSL_DEPRECATED_FOR(1.0.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_1 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_1 +#define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10000 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_0 OSSL_DEPRECATED(1.0.0) +#define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) OSSL_DEPRECATED_FOR(1.0.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_0 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_0 +#define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 908 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_0_9_8 OSSL_DEPRECATED(0.9.8) +#define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) OSSL_DEPRECATED_FOR(0.9.8, msg) +#else +#define OPENSSL_NO_DEPRECATED_0_9_8 +#endif +#else +#define OSSL_DEPRECATEDIN_0_9_8 +#define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) +#endif + +/* + * Make our own variants of __FILE__ and __LINE__, depending on configuration + */ + +#ifndef OPENSSL_FILE +#ifdef OPENSSL_NO_FILENAMES +#define OPENSSL_FILE "" +#define OPENSSL_LINE 0 +#else +#define OPENSSL_FILE __FILE__ +#define OPENSSL_LINE __LINE__ +#endif +#endif + +/* + * __func__ was standardized in C99, so for any compiler that claims + * to implement that language level or newer, we assume we can safely + * use that symbol. + * + * GNU C also provides __FUNCTION__ since version 2, which predates + * C99. We can, however, only use this if __STDC_VERSION__ exists, + * as it's otherwise not allowed according to ISO C standards (C90). + * (compiling with GNU C's -pedantic tells us so) + * + * If none of the above applies, we check if the compiler is MSVC, + * and use __FUNCTION__ if that's the case. + */ +#ifndef OPENSSL_FUNC +#if defined(__STDC_VERSION__) +#if __STDC_VERSION__ >= 199901L +#define OPENSSL_FUNC __func__ +#elif defined(__GNUC__) && __GNUC__ >= 2 +#define OPENSSL_FUNC __FUNCTION__ +#endif +#elif defined(_MSC_VER) +#define OPENSSL_FUNC __FUNCTION__ +#endif +/* + * If all these possibilities are exhausted, we give up and use a + * static string. + */ +#ifndef OPENSSL_FUNC +#define OPENSSL_FUNC "(unknown function)" +#endif +#endif + +#ifndef OSSL_CRYPTO_ALLOC +#if defined(__GNUC__) +#define OSSL_CRYPTO_ALLOC __attribute__((__malloc__)) +#elif defined(_MSC_VER) +#define OSSL_CRYPTO_ALLOC __declspec(restrict) +#else +#define OSSL_CRYPTO_ALLOC +#endif +#endif + +#endif /* OPENSSL_MACROS_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md2.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md2.h new file mode 100644 index 0000000..10d9a0f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md2.h @@ -0,0 +1,56 @@ +/* + * 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_MD2_H +#define OPENSSL_MD2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD2_H +#endif + +#include + +#ifndef OPENSSL_NO_MD2 +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD2_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +typedef unsigned char MD2_INT; + +#define MD2_BLOCK 16 + +typedef struct MD2state_st { + unsigned int num; + unsigned char data[MD2_BLOCK]; + MD2_INT cksm[MD2_BLOCK]; + MD2_INT state[MD2_BLOCK]; +} MD2_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *MD2_options(void); +OSSL_DEPRECATEDIN_3_0 int MD2_Init(MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD2_Update(MD2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MD2_Final(unsigned char *md, MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD2(const unsigned char *d, size_t n, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md4.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md4.h new file mode 100644 index 0000000..d60fe4a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md4.h @@ -0,0 +1,63 @@ +/* + * 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_MD4_H +#define OPENSSL_MD4_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD4_H +#endif + +#include + +#ifndef OPENSSL_NO_MD4 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD4_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD4_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define MD4_LONG unsigned int + +#define MD4_CBLOCK 64 +#define MD4_LBLOCK (MD4_CBLOCK / 4) + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD4_Init(MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD4_Update(MD4_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD4_Final(unsigned char *md, MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD4(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD4_Transform(MD4_CTX *c, const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md5.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md5.h new file mode 100644 index 0000000..0ec3d1c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/md5.h @@ -0,0 +1,62 @@ +/* + * 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_MD5_H +#define OPENSSL_MD5_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD5_H +#endif + +#include + +#ifndef OPENSSL_NO_MD5 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD5_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD5_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define MD5_LONG unsigned int + +#define MD5_CBLOCK 64 +#define MD5_LBLOCK (MD5_CBLOCK / 4) + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD5_Init(MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD5_Update(MD5_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD5_Final(unsigned char *md, MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD5(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD5_Transform(MD5_CTX *c, const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/mdc2.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/mdc2.h new file mode 100644 index 0000000..46c9652 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/mdc2.h @@ -0,0 +1,55 @@ +/* + * 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_MDC2_H +#define OPENSSL_MDC2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MDC2_H +#endif + +#include + +#ifndef OPENSSL_NO_MDC2 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MDC2_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define MDC2_BLOCK 8 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + unsigned int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MDC2_Init(MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MDC2_Update(MDC2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MDC2_Final(unsigned char *md, MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MDC2(const unsigned char *d, size_t n, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ml_kem.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ml_kem.h new file mode 100644 index 0000000..fe5b0e2 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ml_kem.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024-2025 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_ML_KEM_H +#define OPENSSL_ML_KEM_H +#pragma once + +#define OSSL_ML_KEM_SHARED_SECRET_BYTES 32 + +#define OSSL_ML_KEM_512_BITS 512 +#define OSSL_ML_KEM_512_SECURITY_BITS 128 +#define OSSL_ML_KEM_512_CIPHERTEXT_BYTES 768 +#define OSSL_ML_KEM_512_PUBLIC_KEY_BYTES 800 + +#define OSSL_ML_KEM_768_BITS 768 +#define OSSL_ML_KEM_768_SECURITY_BITS 192 +#define OSSL_ML_KEM_768_CIPHERTEXT_BYTES 1088 +#define OSSL_ML_KEM_768_PUBLIC_KEY_BYTES 1184 + +#define OSSL_ML_KEM_1024_BITS 1024 +#define OSSL_ML_KEM_1024_SECURITY_BITS 256 +#define OSSL_ML_KEM_1024_CIPHERTEXT_BYTES 1568 +#define OSSL_ML_KEM_1024_PUBLIC_KEY_BYTES 1568 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/modes.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/modes.h new file mode 100644 index 0000000..df11114 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/modes.h @@ -0,0 +1,219 @@ +/* + * Copyright 2008-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_MODES_H +#define OPENSSL_MODES_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MODES_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +typedef void (*block128_f)(const unsigned char in[16], + unsigned char out[16], const void *key); + +typedef void (*cbc128_f)(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int enc); + +typedef void (*ecb128_f)(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + int enc); + +typedef void (*ctr128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16]); + +typedef void (*ccm128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16], + unsigned char cmac[16]); + +void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); +void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); + +void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], unsigned int *num, + block128_f block); + +void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], + unsigned int *num, ctr128_f ctr); + +void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + block128_f block); + +void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, + size_t bits, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); + +size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +typedef struct gcm128_context GCM128_CONTEXT; + +GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); +void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); +void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, + size_t len); +int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); + +typedef struct ccm128_context CCM128_CONTEXT; + +void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, + unsigned int M, unsigned int L, void *key, + block128_f block); +int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, + size_t nlen, size_t mlen); +void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, + size_t alen); +int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); + +typedef struct xts128_context XTS128_CONTEXT; + +int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + +size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); +size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); +size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); + +#ifndef OPENSSL_NO_OCB +typedef struct ocb128_context OCB128_CONTEXT; + +typedef void (*ocb128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + size_t start_block_num, + unsigned char offset_i[16], + const unsigned char L_[][16], + unsigned char checksum[16]); + +OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src, + void *keyenc, void *keydec); +int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv, + size_t len, size_t taglen); +int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx); +#endif /* OPENSSL_NO_OCB */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/obj_mac.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/obj_mac.h new file mode 100644 index 0000000..236e88f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/obj_mac.h @@ -0,0 +1,6695 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2025 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_OBJ_MAC_H +# define OPENSSL_OBJ_MAC_H +# pragma once + +#define SN_undef "UNDEF" +#define LN_undef "undefined" +#define NID_undef 0 +#define OBJ_undef 0L + +#define SN_itu_t "ITU-T" +#define LN_itu_t "itu-t" +#define NID_itu_t 645 +#define OBJ_itu_t 0L + +#define NID_ccitt 404 +#define OBJ_ccitt OBJ_itu_t + +#define SN_iso "ISO" +#define LN_iso "iso" +#define NID_iso 181 +#define OBJ_iso 1L + +#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" +#define LN_joint_iso_itu_t "joint-iso-itu-t" +#define NID_joint_iso_itu_t 646 +#define OBJ_joint_iso_itu_t 2L + +#define NID_joint_iso_ccitt 393 +#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t + +#define SN_member_body "member-body" +#define LN_member_body "ISO Member Body" +#define NID_member_body 182 +#define OBJ_member_body OBJ_iso,2L + +#define SN_identified_organization "identified-organization" +#define NID_identified_organization 676 +#define OBJ_identified_organization OBJ_iso,3L + +#define SN_gmac "GMAC" +#define LN_gmac "gmac" +#define NID_gmac 1195 +#define OBJ_gmac OBJ_iso,0L,9797L,3L,4L + +#define SN_hmac_md5 "HMAC-MD5" +#define LN_hmac_md5 "hmac-md5" +#define NID_hmac_md5 780 +#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L + +#define SN_hmac_sha1 "HMAC-SHA1" +#define LN_hmac_sha1 "hmac-sha1" +#define NID_hmac_sha1 781 +#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L + +#define SN_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#define SN_international_organizations "international-organizations" +#define LN_international_organizations "International Organizations" +#define NID_international_organizations 647 +#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L + +#define SN_wap "wap" +#define NID_wap 678 +#define OBJ_wap OBJ_international_organizations,43L + +#define SN_wap_wsg "wap-wsg" +#define NID_wap_wsg 679 +#define OBJ_wap_wsg OBJ_wap,1L + +#define SN_selected_attribute_types "selected-attribute-types" +#define LN_selected_attribute_types "Selected Attribute Types" +#define NID_selected_attribute_types 394 +#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L + +#define SN_clearance "clearance" +#define NID_clearance 395 +#define OBJ_clearance OBJ_selected_attribute_types,55L + +#define SN_ISO_US "ISO-US" +#define LN_ISO_US "ISO US Member Body" +#define NID_ISO_US 183 +#define OBJ_ISO_US OBJ_member_body,840L + +#define SN_X9_57 "X9-57" +#define LN_X9_57 "X9.57" +#define NID_X9_57 184 +#define OBJ_X9_57 OBJ_ISO_US,10040L + +#define SN_X9cm "X9cm" +#define LN_X9cm "X9.57 CM ?" +#define NID_X9cm 185 +#define OBJ_X9cm OBJ_X9_57,4L + +#define SN_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#define SN_dsa "DSA" +#define LN_dsa "dsaEncryption" +#define NID_dsa 116 +#define OBJ_dsa OBJ_X9cm,1L + +#define SN_dsaWithSHA1 "DSA-SHA1" +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define NID_dsaWithSHA1 113 +#define OBJ_dsaWithSHA1 OBJ_X9cm,3L + +#define SN_ansi_X9_62 "ansi-X9-62" +#define LN_ansi_X9_62 "ANSI X9.62" +#define NID_ansi_X9_62 405 +#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L + +#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L + +#define SN_X9_62_prime_field "prime-field" +#define NID_X9_62_prime_field 406 +#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L + +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_characteristic_two_field 407 +#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L + +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L + +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_onBasis 681 +#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L + +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_tpBasis 682 +#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L + +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_ppBasis 683 +#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L + +#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L + +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_id_ecPublicKey 408 +#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L + +#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L + +#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L + +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_c2pnb163v1 684 +#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L + +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v2 685 +#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L + +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v3 686 +#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L + +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb176v1 687 +#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L + +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2tnb191v1 688 +#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L + +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v2 689 +#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L + +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v3 690 +#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L + +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2onb191v4 691 +#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L + +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v5 692 +#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L + +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2pnb208w1 693 +#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L + +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2tnb239v1 694 +#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L + +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v2 695 +#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L + +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v3 696 +#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L + +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2onb239v4 697 +#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L + +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v5 698 +#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L + +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2pnb272w1 699 +#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L + +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb304w1 700 +#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L + +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2tnb359v1 701 +#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L + +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2pnb368w1 702 +#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L + +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2tnb431r1 703 +#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L + +#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L + +#define SN_X9_62_prime192v1 "prime192v1" +#define NID_X9_62_prime192v1 409 +#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L + +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v2 410 +#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L + +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v3 411 +#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L + +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime239v1 412 +#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L + +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v2 413 +#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L + +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v3 414 +#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L + +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_X9_62_prime256v1 415 +#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L + +#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L + +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_ecdsa_with_SHA1 416 +#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L + +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_Recommended 791 +#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L + +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Specified 792 +#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L + +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_SHA224 793 +#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L + +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA256 794 +#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L + +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA384 795 +#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L + +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA512 796 +#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L + +#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L + +#define SN_secp112r1 "secp112r1" +#define NID_secp112r1 704 +#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L + +#define SN_secp112r2 "secp112r2" +#define NID_secp112r2 705 +#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L + +#define SN_secp128r1 "secp128r1" +#define NID_secp128r1 706 +#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L + +#define SN_secp128r2 "secp128r2" +#define NID_secp128r2 707 +#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L + +#define SN_secp160k1 "secp160k1" +#define NID_secp160k1 708 +#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L + +#define SN_secp160r1 "secp160r1" +#define NID_secp160r1 709 +#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L + +#define SN_secp160r2 "secp160r2" +#define NID_secp160r2 710 +#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L + +#define SN_secp192k1 "secp192k1" +#define NID_secp192k1 711 +#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L + +#define SN_secp224k1 "secp224k1" +#define NID_secp224k1 712 +#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L + +#define SN_secp224r1 "secp224r1" +#define NID_secp224r1 713 +#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L + +#define SN_secp256k1 "secp256k1" +#define NID_secp256k1 714 +#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L + +#define SN_secp384r1 "secp384r1" +#define NID_secp384r1 715 +#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L + +#define SN_secp521r1 "secp521r1" +#define NID_secp521r1 716 +#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L + +#define SN_sect113r1 "sect113r1" +#define NID_sect113r1 717 +#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L + +#define SN_sect113r2 "sect113r2" +#define NID_sect113r2 718 +#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L + +#define SN_sect131r1 "sect131r1" +#define NID_sect131r1 719 +#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L + +#define SN_sect131r2 "sect131r2" +#define NID_sect131r2 720 +#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L + +#define SN_sect163k1 "sect163k1" +#define NID_sect163k1 721 +#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L + +#define SN_sect163r1 "sect163r1" +#define NID_sect163r1 722 +#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L + +#define SN_sect163r2 "sect163r2" +#define NID_sect163r2 723 +#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L + +#define SN_sect193r1 "sect193r1" +#define NID_sect193r1 724 +#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L + +#define SN_sect193r2 "sect193r2" +#define NID_sect193r2 725 +#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L + +#define SN_sect233k1 "sect233k1" +#define NID_sect233k1 726 +#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L + +#define SN_sect233r1 "sect233r1" +#define NID_sect233r1 727 +#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L + +#define SN_sect239k1 "sect239k1" +#define NID_sect239k1 728 +#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L + +#define SN_sect283k1 "sect283k1" +#define NID_sect283k1 729 +#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L + +#define SN_sect283r1 "sect283r1" +#define NID_sect283r1 730 +#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L + +#define SN_sect409k1 "sect409k1" +#define NID_sect409k1 731 +#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L + +#define SN_sect409r1 "sect409r1" +#define NID_sect409r1 732 +#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L + +#define SN_sect571k1 "sect571k1" +#define NID_sect571k1 733 +#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L + +#define SN_sect571r1 "sect571r1" +#define NID_sect571r1 734 +#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L + +#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L + +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L + +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L + +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L + +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L + +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L + +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L + +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L + +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L + +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L + +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L + +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L + +#define SN_cast5_cbc "CAST5-CBC" +#define LN_cast5_cbc "cast5-cbc" +#define NID_cast5_cbc 108 +#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L + +#define SN_cast5_ecb "CAST5-ECB" +#define LN_cast5_ecb "cast5-ecb" +#define NID_cast5_ecb 109 + +#define SN_cast5_cfb64 "CAST5-CFB" +#define LN_cast5_cfb64 "cast5-cfb" +#define NID_cast5_cfb64 110 + +#define SN_cast5_ofb64 "CAST5-OFB" +#define LN_cast5_ofb64 "cast5-ofb" +#define NID_cast5_ofb64 111 + +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L + +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define LN_id_PasswordBasedMAC "password based MAC" +#define NID_id_PasswordBasedMAC 782 +#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L + +#define SN_id_DHBasedMac "id-DHBasedMac" +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define NID_id_DHBasedMac 783 +#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L + +#define SN_rsadsi "rsadsi" +#define LN_rsadsi "RSA Data Security, Inc." +#define NID_rsadsi 1 +#define OBJ_rsadsi OBJ_ISO_US,113549L + +#define SN_pkcs "pkcs" +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define NID_pkcs 2 +#define OBJ_pkcs OBJ_rsadsi,1L + +#define SN_pkcs1 "pkcs1" +#define NID_pkcs1 186 +#define OBJ_pkcs1 OBJ_pkcs,1L + +#define LN_rsaEncryption "rsaEncryption" +#define NID_rsaEncryption 6 +#define OBJ_rsaEncryption OBJ_pkcs1,1L + +#define SN_md2WithRSAEncryption "RSA-MD2" +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define NID_md2WithRSAEncryption 7 +#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L + +#define SN_md4WithRSAEncryption "RSA-MD4" +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define NID_md4WithRSAEncryption 396 +#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L + +#define SN_md5WithRSAEncryption "RSA-MD5" +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define NID_md5WithRSAEncryption 8 +#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L + +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define NID_sha1WithRSAEncryption 65 +#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L + +#define SN_rsaesOaep "RSAES-OAEP" +#define LN_rsaesOaep "rsaesOaep" +#define NID_rsaesOaep 919 +#define OBJ_rsaesOaep OBJ_pkcs1,7L + +#define SN_mgf1 "MGF1" +#define LN_mgf1 "mgf1" +#define NID_mgf1 911 +#define OBJ_mgf1 OBJ_pkcs1,8L + +#define SN_pSpecified "PSPECIFIED" +#define LN_pSpecified "pSpecified" +#define NID_pSpecified 935 +#define OBJ_pSpecified OBJ_pkcs1,9L + +#define SN_rsassaPss "RSASSA-PSS" +#define LN_rsassaPss "rsassaPss" +#define NID_rsassaPss 912 +#define OBJ_rsassaPss OBJ_pkcs1,10L + +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define NID_sha256WithRSAEncryption 668 +#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L + +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define NID_sha384WithRSAEncryption 669 +#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L + +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define NID_sha512WithRSAEncryption 670 +#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L + +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define NID_sha224WithRSAEncryption 671 +#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L + +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#define SN_pkcs3 "pkcs3" +#define NID_pkcs3 27 +#define OBJ_pkcs3 OBJ_pkcs,3L + +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_dhKeyAgreement 28 +#define OBJ_dhKeyAgreement OBJ_pkcs3,1L + +#define SN_pkcs5 "pkcs5" +#define NID_pkcs5 187 +#define OBJ_pkcs5 OBJ_pkcs,5L + +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define NID_pbeWithMD2AndDES_CBC 9 +#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L + +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define NID_pbeWithMD5AndDES_CBC 10 +#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L + +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L + +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L + +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L + +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L + +#define LN_id_pbkdf2 "PBKDF2" +#define NID_id_pbkdf2 69 +#define OBJ_id_pbkdf2 OBJ_pkcs5,12L + +#define LN_pbes2 "PBES2" +#define NID_pbes2 161 +#define OBJ_pbes2 OBJ_pkcs5,13L + +#define LN_pbmac1 "PBMAC1" +#define NID_pbmac1 162 +#define OBJ_pbmac1 OBJ_pkcs5,14L + +#define SN_pkcs7 "pkcs7" +#define NID_pkcs7 20 +#define OBJ_pkcs7 OBJ_pkcs,7L + +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7_data 21 +#define OBJ_pkcs7_data OBJ_pkcs7,1L + +#define LN_pkcs7_signed "pkcs7-signedData" +#define NID_pkcs7_signed 22 +#define OBJ_pkcs7_signed OBJ_pkcs7,2L + +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define NID_pkcs7_enveloped 23 +#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L + +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_signedAndEnveloped 24 +#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L + +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_digest 25 +#define OBJ_pkcs7_digest OBJ_pkcs7,5L + +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_encrypted 26 +#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L + +#define SN_pkcs9 "pkcs9" +#define NID_pkcs9 47 +#define OBJ_pkcs9 OBJ_pkcs,9L + +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9_emailAddress 48 +#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L + +#define LN_pkcs9_unstructuredName "unstructuredName" +#define NID_pkcs9_unstructuredName 49 +#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L + +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_contentType 50 +#define OBJ_pkcs9_contentType OBJ_pkcs9,3L + +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_messageDigest 51 +#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L + +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_signingTime 52 +#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L + +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_countersignature 53 +#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L + +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_challengePassword 54 +#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L + +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_unstructuredAddress 55 +#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L + +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_extCertAttributes 56 +#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L + +#define SN_ext_req "extReq" +#define LN_ext_req "Extension Request" +#define NID_ext_req 172 +#define OBJ_ext_req OBJ_pkcs9,14L + +#define SN_SMIMECapabilities "SMIME-CAPS" +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define NID_SMIMECapabilities 167 +#define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +#define SN_SMIME "SMIME" +#define LN_SMIME "S/MIME" +#define NID_SMIME 188 +#define OBJ_SMIME OBJ_pkcs9,16L + +#define SN_id_smime_mod "id-smime-mod" +#define NID_id_smime_mod 189 +#define OBJ_id_smime_mod OBJ_SMIME,0L + +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_ct 190 +#define OBJ_id_smime_ct OBJ_SMIME,1L + +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_aa 191 +#define OBJ_id_smime_aa OBJ_SMIME,2L + +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_alg 192 +#define OBJ_id_smime_alg OBJ_SMIME,3L + +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_cd 193 +#define OBJ_id_smime_cd OBJ_SMIME,4L + +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_spq 194 +#define OBJ_id_smime_spq OBJ_SMIME,5L + +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_cti 195 +#define OBJ_id_smime_cti OBJ_SMIME,6L + +#define SN_id_smime_ori "id-smime-ori" +#define NID_id_smime_ori 1499 +#define OBJ_id_smime_ori OBJ_SMIME,13L + +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_mod_cms 196 +#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L + +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_ess 197 +#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L + +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_oid 198 +#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L + +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_msg_v3 199 +#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L + +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L + +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L + +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L + +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L + +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_ct_receipt 204 +#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L + +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_authData 205 +#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L + +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_publishCert 206 +#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L + +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L + +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L + +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_contentInfo 209 +#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L + +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L + +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L + +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_compressedData 786 +#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L + +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#define SN_id_ct_routeOriginAuthz "id-ct-routeOriginAuthz" +#define NID_id_ct_routeOriginAuthz 1234 +#define OBJ_id_ct_routeOriginAuthz OBJ_id_smime_ct,24L + +#define SN_id_ct_rpkiManifest "id-ct-rpkiManifest" +#define NID_id_ct_rpkiManifest 1235 +#define OBJ_id_ct_rpkiManifest OBJ_id_smime_ct,26L + +#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" +#define NID_id_ct_asciiTextWithCRLF 787 +#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L + +#define SN_id_ct_xml "id-ct-xml" +#define NID_id_ct_xml 1060 +#define OBJ_id_ct_xml OBJ_id_smime_ct,28L + +#define SN_id_ct_rpkiGhostbusters "id-ct-rpkiGhostbusters" +#define NID_id_ct_rpkiGhostbusters 1236 +#define OBJ_id_ct_rpkiGhostbusters OBJ_id_smime_ct,35L + +#define SN_id_ct_resourceTaggedAttest "id-ct-resourceTaggedAttest" +#define NID_id_ct_resourceTaggedAttest 1237 +#define OBJ_id_ct_resourceTaggedAttest OBJ_id_smime_ct,36L + +#define SN_id_ct_geofeedCSVwithCRLF "id-ct-geofeedCSVwithCRLF" +#define NID_id_ct_geofeedCSVwithCRLF 1246 +#define OBJ_id_ct_geofeedCSVwithCRLF OBJ_id_smime_ct,47L + +#define SN_id_ct_signedChecklist "id-ct-signedChecklist" +#define NID_id_ct_signedChecklist 1247 +#define OBJ_id_ct_signedChecklist OBJ_id_smime_ct,48L + +#define SN_id_ct_ASPA "id-ct-ASPA" +#define NID_id_ct_ASPA 1250 +#define OBJ_id_ct_ASPA OBJ_id_smime_ct,49L + +#define SN_id_ct_signedTAL "id-ct-signedTAL" +#define NID_id_ct_signedTAL 1284 +#define OBJ_id_ct_signedTAL OBJ_id_smime_ct,50L + +#define SN_id_ct_rpkiSignedPrefixList "id-ct-rpkiSignedPrefixList" +#define NID_id_ct_rpkiSignedPrefixList 1320 +#define OBJ_id_ct_rpkiSignedPrefixList OBJ_id_smime_ct,51L + +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_smime_aa_receiptRequest 212 +#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L + +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_securityLabel 213 +#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L + +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_mlExpandHistory 214 +#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L + +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_contentHint 215 +#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L + +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_msgSigDigest 216 +#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L + +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_encapContentType 217 +#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L + +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_contentIdentifier 218 +#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L + +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_macValue 219 +#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L + +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_equivalentLabels 220 +#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L + +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_contentReference 221 +#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L + +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_encrypKeyPref 222 +#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L + +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_signingCertificate 223 +#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L + +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L + +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_timeStampToken 225 +#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L + +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L + +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_commitmentType 227 +#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L + +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_signerLocation 228 +#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L + +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerAttr 229 +#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L + +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L + +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L + +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L + +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L + +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_certValues 234 +#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L + +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_revocationValues 235 +#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L + +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L + +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L + +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L + +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_signatureType 239 +#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L + +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_dvcs_dvc 240 +#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L + +#define SN_id_aa_ets_attrCertificateRefs "id-aa-ets-attrCertificateRefs" +#define NID_id_aa_ets_attrCertificateRefs 1261 +#define OBJ_id_aa_ets_attrCertificateRefs OBJ_id_smime_aa,44L + +#define SN_id_aa_ets_attrRevocationRefs "id-aa-ets-attrRevocationRefs" +#define NID_id_aa_ets_attrRevocationRefs 1262 +#define OBJ_id_aa_ets_attrRevocationRefs OBJ_id_smime_aa,45L + +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#define SN_id_aa_ets_archiveTimestampV2 "id-aa-ets-archiveTimestampV2" +#define NID_id_aa_ets_archiveTimestampV2 1280 +#define OBJ_id_aa_ets_archiveTimestampV2 OBJ_id_smime_aa,48L + +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L + +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L + +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_3DESwrap 243 +#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L + +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_RC2wrap 244 +#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L + +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_ESDH 245 +#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L + +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L + +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L + +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_alg_PWRI_KEK 893 +#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L + +#define SN_HKDF_SHA256 "id-alg-hkdf-with-sha256" +#define LN_HKDF_SHA256 "HKDF-SHA256" +#define NID_HKDF_SHA256 1496 +#define OBJ_HKDF_SHA256 OBJ_id_smime_alg,28L + +#define SN_HKDF_SHA384 "id-alg-hkdf-with-sha384" +#define LN_HKDF_SHA384 "HKDF-SHA384" +#define NID_HKDF_SHA384 1497 +#define OBJ_HKDF_SHA384 OBJ_id_smime_alg,29L + +#define SN_HKDF_SHA512 "id-alg-hkdf-with-sha512" +#define LN_HKDF_SHA512 "HKDF-SHA512" +#define NID_HKDF_SHA512 1498 +#define OBJ_HKDF_SHA512 OBJ_id_smime_alg,30L + +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_smime_cd_ldap 248 +#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L + +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L + +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L + +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L + +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L + +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L + +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L + +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L + +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L + +#define SN_id_smime_ori_kem "id-smime-ori-kem" +#define NID_id_smime_ori_kem 1500 +#define OBJ_id_smime_ori_kem OBJ_id_smime_ori,3L + +#define LN_friendlyName "friendlyName" +#define NID_friendlyName 156 +#define OBJ_friendlyName OBJ_pkcs9,20L + +#define LN_localKeyID "localKeyID" +#define NID_localKeyID 157 +#define OBJ_localKeyID OBJ_pkcs9,21L + +#define OBJ_ms_corp 1L,3L,6L,1L,4L,1L,311L + +#define SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name OBJ_ms_corp,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet OBJ_ms_corp,17L,2L + +#define OBJ_certTypes OBJ_pkcs9,22L + +#define LN_x509Certificate "x509Certificate" +#define NID_x509Certificate 158 +#define OBJ_x509Certificate OBJ_certTypes,1L + +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_sdsiCertificate 159 +#define OBJ_sdsiCertificate OBJ_certTypes,2L + +#define OBJ_crlTypes OBJ_pkcs9,23L + +#define LN_x509Crl "x509Crl" +#define NID_x509Crl 160 +#define OBJ_x509Crl OBJ_crlTypes,1L + +#define SN_id_aa_CMSAlgorithmProtection "id-aa-CMSAlgorithmProtection" +#define NID_id_aa_CMSAlgorithmProtection 1263 +#define OBJ_id_aa_CMSAlgorithmProtection OBJ_pkcs9,52L + +#define OBJ_pkcs12 OBJ_pkcs,12L + +#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L + +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L + +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L + +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L + +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L + +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L + +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L + +#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L + +#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L + +#define LN_keyBag "keyBag" +#define NID_keyBag 150 +#define OBJ_keyBag OBJ_pkcs12_BagIds,1L + +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L + +#define LN_certBag "certBag" +#define NID_certBag 152 +#define OBJ_certBag OBJ_pkcs12_BagIds,3L + +#define LN_crlBag "crlBag" +#define NID_crlBag 153 +#define OBJ_crlBag OBJ_pkcs12_BagIds,4L + +#define LN_secretBag "secretBag" +#define NID_secretBag 154 +#define OBJ_secretBag OBJ_pkcs12_BagIds,5L + +#define LN_safeContentsBag "safeContentsBag" +#define NID_safeContentsBag 155 +#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L + +#define SN_md2 "MD2" +#define LN_md2 "md2" +#define NID_md2 3 +#define OBJ_md2 OBJ_rsadsi,2L,2L + +#define SN_md4 "MD4" +#define LN_md4 "md4" +#define NID_md4 257 +#define OBJ_md4 OBJ_rsadsi,2L,4L + +#define SN_md5 "MD5" +#define LN_md5 "md5" +#define NID_md5 4 +#define OBJ_md5 OBJ_rsadsi,2L,5L + +#define SN_md5_sha1 "MD5-SHA1" +#define LN_md5_sha1 "md5-sha1" +#define NID_md5_sha1 114 + +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_hmacWithMD5 797 +#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L + +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithSHA1 163 +#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +#define SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#define SN_SM2_with_SM3 "SM2-SM3" +#define LN_SM2_with_SM3 "SM2-with-SM3" +#define NID_SM2_with_SM3 1204 +#define OBJ_SM2_with_SM3 OBJ_sm_scheme,501L + +#define LN_hmacWithSM3 "hmacWithSM3" +#define NID_hmacWithSM3 1281 +#define OBJ_hmacWithSM3 OBJ_sm3,3L,1L + +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSHA224 798 +#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L + +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA256 799 +#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L + +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA384 800 +#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L + +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA512 801 +#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L + +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#define SN_rc2_cbc "RC2-CBC" +#define LN_rc2_cbc "rc2-cbc" +#define NID_rc2_cbc 37 +#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L + +#define SN_rc2_ecb "RC2-ECB" +#define LN_rc2_ecb "rc2-ecb" +#define NID_rc2_ecb 38 + +#define SN_rc2_cfb64 "RC2-CFB" +#define LN_rc2_cfb64 "rc2-cfb" +#define NID_rc2_cfb64 39 + +#define SN_rc2_ofb64 "RC2-OFB" +#define LN_rc2_ofb64 "rc2-ofb" +#define NID_rc2_ofb64 40 + +#define SN_rc2_40_cbc "RC2-40-CBC" +#define LN_rc2_40_cbc "rc2-40-cbc" +#define NID_rc2_40_cbc 98 + +#define SN_rc2_64_cbc "RC2-64-CBC" +#define LN_rc2_64_cbc "rc2-64-cbc" +#define NID_rc2_64_cbc 166 + +#define SN_rc4 "RC4" +#define LN_rc4 "rc4" +#define NID_rc4 5 +#define OBJ_rc4 OBJ_rsadsi,3L,4L + +#define SN_rc4_40 "RC4-40" +#define LN_rc4_40 "rc4-40" +#define NID_rc4_40 97 + +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define LN_des_ede3_cbc "des-ede3-cbc" +#define NID_des_ede3_cbc 44 +#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L + +#define SN_rc5_cbc "RC5-CBC" +#define LN_rc5_cbc "rc5-cbc" +#define NID_rc5_cbc 120 +#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L + +#define SN_rc5_ecb "RC5-ECB" +#define LN_rc5_ecb "rc5-ecb" +#define NID_rc5_ecb 121 + +#define SN_rc5_cfb64 "RC5-CFB" +#define LN_rc5_cfb64 "rc5-cfb" +#define NID_rc5_cfb64 122 + +#define SN_rc5_ofb64 "RC5-OFB" +#define LN_rc5_ofb64 "rc5-ofb" +#define NID_rc5_ofb64 123 + +#define SN_ms_ext_req "msExtReq" +#define LN_ms_ext_req "Microsoft Extension Request" +#define NID_ms_ext_req 171 +#define OBJ_ms_ext_req OBJ_ms_corp,2L,1L,14L + +#define SN_ms_code_ind "msCodeInd" +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define NID_ms_code_ind 134 +#define OBJ_ms_code_ind OBJ_ms_corp,2L,1L,21L + +#define SN_ms_code_com "msCodeCom" +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define NID_ms_code_com 135 +#define OBJ_ms_code_com OBJ_ms_corp,2L,1L,22L + +#define SN_ms_ctl_sign "msCTLSign" +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define NID_ms_ctl_sign 136 +#define OBJ_ms_ctl_sign OBJ_ms_corp,10L,3L,1L + +#define SN_ms_sgc "msSGC" +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define NID_ms_sgc 137 +#define OBJ_ms_sgc OBJ_ms_corp,10L,3L,3L + +#define SN_ms_efs "msEFS" +#define LN_ms_efs "Microsoft Encrypted File System" +#define NID_ms_efs 138 +#define OBJ_ms_efs OBJ_ms_corp,10L,3L,4L + +#define SN_ms_smartcard_login "msSmartcardLogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define NID_ms_smartcard_login 648 +#define OBJ_ms_smartcard_login OBJ_ms_corp,20L,2L,2L + +#define SN_ms_upn "msUPN" +#define LN_ms_upn "Microsoft User Principal Name" +#define NID_ms_upn 649 +#define OBJ_ms_upn OBJ_ms_corp,20L,2L,3L + +#define SN_ms_ntds_sec_ext "ms-ntds-sec-ext" +#define LN_ms_ntds_sec_ext "Microsoft NTDS CA Extension" +#define NID_ms_ntds_sec_ext 1292 +#define OBJ_ms_ntds_sec_ext OBJ_ms_corp,25L,2L + +#define SN_ms_ntds_obj_sid "ms-ntds-obj-sid" +#define LN_ms_ntds_obj_sid "Microsoft NTDS AD objectSid" +#define NID_ms_ntds_obj_sid 1291 +#define OBJ_ms_ntds_obj_sid OBJ_ms_corp,25L,2L,1L + +#define SN_ms_cert_templ "ms-cert-templ" +#define LN_ms_cert_templ "Microsoft certificate template" +#define NID_ms_cert_templ 1293 +#define OBJ_ms_cert_templ OBJ_ms_corp,21L,7L + +#define SN_ms_app_policies "ms-app-policies" +#define LN_ms_app_policies "Microsoft Application Policies Extension" +#define NID_ms_app_policies 1294 +#define OBJ_ms_app_policies OBJ_ms_corp,21L,10L + +#define SN_idea_cbc "IDEA-CBC" +#define LN_idea_cbc "idea-cbc" +#define NID_idea_cbc 34 +#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L + +#define SN_idea_ecb "IDEA-ECB" +#define LN_idea_ecb "idea-ecb" +#define NID_idea_ecb 36 + +#define SN_idea_cfb64 "IDEA-CFB" +#define LN_idea_cfb64 "idea-cfb" +#define NID_idea_cfb64 35 + +#define SN_idea_ofb64 "IDEA-OFB" +#define LN_idea_ofb64 "idea-ofb" +#define NID_idea_ofb64 46 + +#define SN_bf_cbc "BF-CBC" +#define LN_bf_cbc "bf-cbc" +#define NID_bf_cbc 91 +#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L + +#define SN_bf_ecb "BF-ECB" +#define LN_bf_ecb "bf-ecb" +#define NID_bf_ecb 92 + +#define SN_bf_cfb64 "BF-CFB" +#define LN_bf_cfb64 "bf-cfb" +#define NID_bf_cfb64 93 + +#define SN_bf_ofb64 "BF-OFB" +#define LN_bf_ofb64 "bf-ofb" +#define NID_bf_ofb64 94 + +#define SN_id_pkix "PKIX" +#define NID_id_pkix 127 +#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix_mod 258 +#define OBJ_id_pkix_mod OBJ_id_pkix,0L + +#define SN_id_pe "id-pe" +#define NID_id_pe 175 +#define OBJ_id_pe OBJ_id_pkix,1L + +#define SN_id_qt "id-qt" +#define NID_id_qt 259 +#define OBJ_id_qt OBJ_id_pkix,2L + +#define SN_id_kp "id-kp" +#define NID_id_kp 128 +#define OBJ_id_kp OBJ_id_pkix,3L + +#define SN_id_it "id-it" +#define NID_id_it 260 +#define OBJ_id_it OBJ_id_pkix,4L + +#define SN_id_pkip "id-pkip" +#define NID_id_pkip 261 +#define OBJ_id_pkip OBJ_id_pkix,5L + +#define SN_id_alg "id-alg" +#define NID_id_alg 262 +#define OBJ_id_alg OBJ_id_pkix,6L + +#define SN_id_cmc "id-cmc" +#define NID_id_cmc 263 +#define OBJ_id_cmc OBJ_id_pkix,7L + +#define SN_id_on "id-on" +#define NID_id_on 264 +#define OBJ_id_on OBJ_id_pkix,8L + +#define SN_id_pda "id-pda" +#define NID_id_pda 265 +#define OBJ_id_pda OBJ_id_pkix,9L + +#define SN_id_aca "id-aca" +#define NID_id_aca 266 +#define OBJ_id_aca OBJ_id_pkix,10L + +#define SN_id_qcs "id-qcs" +#define NID_id_qcs 267 +#define OBJ_id_qcs OBJ_id_pkix,11L + +#define SN_id_cp "id-cp" +#define NID_id_cp 1238 +#define OBJ_id_cp OBJ_id_pkix,14L + +#define SN_id_cct "id-cct" +#define NID_id_cct 268 +#define OBJ_id_cct OBJ_id_pkix,12L + +#define SN_id_ppl "id-ppl" +#define NID_id_ppl 662 +#define OBJ_id_ppl OBJ_id_pkix,21L + +#define SN_id_ad "id-ad" +#define NID_id_ad 176 +#define OBJ_id_ad OBJ_id_pkix,48L + +#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" +#define NID_id_pkix1_explicit_88 269 +#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L + +#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" +#define NID_id_pkix1_implicit_88 270 +#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L + +#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" +#define NID_id_pkix1_explicit_93 271 +#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L + +#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" +#define NID_id_pkix1_implicit_93 272 +#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L + +#define SN_id_mod_crmf "id-mod-crmf" +#define NID_id_mod_crmf 273 +#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L + +#define SN_id_mod_cmc "id-mod-cmc" +#define NID_id_mod_cmc 274 +#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L + +#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" +#define NID_id_mod_kea_profile_88 275 +#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L + +#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" +#define NID_id_mod_kea_profile_93 276 +#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L + +#define SN_id_mod_cmp "id-mod-cmp" +#define NID_id_mod_cmp 277 +#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L + +#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" +#define NID_id_mod_qualified_cert_88 278 +#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L + +#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" +#define NID_id_mod_qualified_cert_93 279 +#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L + +#define SN_id_mod_attribute_cert "id-mod-attribute-cert" +#define NID_id_mod_attribute_cert 280 +#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L + +#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" +#define NID_id_mod_timestamp_protocol 281 +#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L + +#define SN_id_mod_ocsp "id-mod-ocsp" +#define NID_id_mod_ocsp 282 +#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L + +#define SN_id_mod_dvcs "id-mod-dvcs" +#define NID_id_mod_dvcs 283 +#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L + +#define SN_id_mod_cmp2000 "id-mod-cmp2000" +#define NID_id_mod_cmp2000 284 +#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L + +#define SN_id_mod_cmp2000_02 "id-mod-cmp2000-02" +#define NID_id_mod_cmp2000_02 1251 +#define OBJ_id_mod_cmp2000_02 OBJ_id_pkix_mod,50L + +#define SN_id_mod_cmp2021_88 "id-mod-cmp2021-88" +#define NID_id_mod_cmp2021_88 1252 +#define OBJ_id_mod_cmp2021_88 OBJ_id_pkix_mod,99L + +#define SN_id_mod_cmp2021_02 "id-mod-cmp2021-02" +#define NID_id_mod_cmp2021_02 1253 +#define OBJ_id_mod_cmp2021_02 OBJ_id_pkix_mod,100L + +#define SN_info_access "authorityInfoAccess" +#define LN_info_access "Authority Information Access" +#define NID_info_access 177 +#define OBJ_info_access OBJ_id_pe,1L + +#define SN_biometricInfo "biometricInfo" +#define LN_biometricInfo "Biometric Info" +#define NID_biometricInfo 285 +#define OBJ_biometricInfo OBJ_id_pe,2L + +#define SN_qcStatements "qcStatements" +#define NID_qcStatements 286 +#define OBJ_qcStatements OBJ_id_pe,3L + +#define SN_ac_auditIdentity "ac-auditIdentity" +#define LN_ac_auditIdentity "X509v3 Audit Identity" +#define NID_ac_auditIdentity 287 +#define OBJ_ac_auditIdentity OBJ_id_pe,4L + +#define NID_ac_auditEntity 1323 +#define OBJ_ac_auditEntity OBJ_ac_auditIdentity + +#define SN_ac_targeting "ac-targeting" +#define NID_ac_targeting 288 +#define OBJ_ac_targeting OBJ_id_pe,5L + +#define SN_aaControls "aaControls" +#define NID_aaControls 289 +#define OBJ_aaControls OBJ_id_pe,6L + +#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" +#define NID_sbgp_ipAddrBlock 290 +#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L + +#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" +#define NID_sbgp_autonomousSysNum 291 +#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L + +#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" +#define NID_sbgp_routerIdentifier 292 +#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L + +#define SN_ac_proxying "ac-proxying" +#define NID_ac_proxying 397 +#define OBJ_ac_proxying OBJ_id_pe,10L + +#define SN_sinfo_access "subjectInfoAccess" +#define LN_sinfo_access "Subject Information Access" +#define NID_sinfo_access 398 +#define OBJ_sinfo_access OBJ_id_pe,11L + +#define SN_proxyCertInfo "proxyCertInfo" +#define LN_proxyCertInfo "Proxy Certificate Information" +#define NID_proxyCertInfo 663 +#define OBJ_proxyCertInfo OBJ_id_pe,14L + +#define SN_tlsfeature "tlsfeature" +#define LN_tlsfeature "TLS Feature" +#define NID_tlsfeature 1020 +#define OBJ_tlsfeature OBJ_id_pe,24L + +#define SN_sbgp_ipAddrBlockv2 "sbgp-ipAddrBlockv2" +#define NID_sbgp_ipAddrBlockv2 1239 +#define OBJ_sbgp_ipAddrBlockv2 OBJ_id_pe,28L + +#define SN_sbgp_autonomousSysNumv2 "sbgp-autonomousSysNumv2" +#define NID_sbgp_autonomousSysNumv2 1240 +#define OBJ_sbgp_autonomousSysNumv2 OBJ_id_pe,29L + +#define SN_id_qt_cps "id-qt-cps" +#define LN_id_qt_cps "Policy Qualifier CPS" +#define NID_id_qt_cps 164 +#define OBJ_id_qt_cps OBJ_id_qt,1L + +#define SN_id_qt_unotice "id-qt-unotice" +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define NID_id_qt_unotice 165 +#define OBJ_id_qt_unotice OBJ_id_qt,2L + +#define SN_textNotice "textNotice" +#define NID_textNotice 293 +#define OBJ_textNotice OBJ_id_qt,3L + +#define SN_server_auth "serverAuth" +#define LN_server_auth "TLS Web Server Authentication" +#define NID_server_auth 129 +#define OBJ_server_auth OBJ_id_kp,1L + +#define SN_client_auth "clientAuth" +#define LN_client_auth "TLS Web Client Authentication" +#define NID_client_auth 130 +#define OBJ_client_auth OBJ_id_kp,2L + +#define SN_code_sign "codeSigning" +#define LN_code_sign "Code Signing" +#define NID_code_sign 131 +#define OBJ_code_sign OBJ_id_kp,3L + +#define SN_email_protect "emailProtection" +#define LN_email_protect "E-mail Protection" +#define NID_email_protect 132 +#define OBJ_email_protect OBJ_id_kp,4L + +#define SN_ipsecEndSystem "ipsecEndSystem" +#define LN_ipsecEndSystem "IPSec End System" +#define NID_ipsecEndSystem 294 +#define OBJ_ipsecEndSystem OBJ_id_kp,5L + +#define SN_ipsecTunnel "ipsecTunnel" +#define LN_ipsecTunnel "IPSec Tunnel" +#define NID_ipsecTunnel 295 +#define OBJ_ipsecTunnel OBJ_id_kp,6L + +#define SN_ipsecUser "ipsecUser" +#define LN_ipsecUser "IPSec User" +#define NID_ipsecUser 296 +#define OBJ_ipsecUser OBJ_id_kp,7L + +#define SN_time_stamp "timeStamping" +#define LN_time_stamp "Time Stamping" +#define NID_time_stamp 133 +#define OBJ_time_stamp OBJ_id_kp,8L + +#define SN_OCSP_sign "OCSPSigning" +#define LN_OCSP_sign "OCSP Signing" +#define NID_OCSP_sign 180 +#define OBJ_OCSP_sign OBJ_id_kp,9L + +#define SN_dvcs "DVCS" +#define LN_dvcs "dvcs" +#define NID_dvcs 297 +#define OBJ_dvcs OBJ_id_kp,10L + +#define SN_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#define SN_cmcArchive "cmcArchive" +#define LN_cmcArchive "CMC Archive Server" +#define NID_cmcArchive 1219 +#define OBJ_cmcArchive OBJ_id_kp,29L + +#define SN_id_kp_bgpsec_router "id-kp-bgpsec-router" +#define LN_id_kp_bgpsec_router "BGPsec Router" +#define NID_id_kp_bgpsec_router 1220 +#define OBJ_id_kp_bgpsec_router OBJ_id_kp,30L + +#define SN_id_kp_BrandIndicatorforMessageIdentification "id-kp-BrandIndicatorforMessageIdentification" +#define LN_id_kp_BrandIndicatorforMessageIdentification "Brand Indicator for Message Identification" +#define NID_id_kp_BrandIndicatorforMessageIdentification 1221 +#define OBJ_id_kp_BrandIndicatorforMessageIdentification OBJ_id_kp,31L + +#define SN_cmKGA "cmKGA" +#define LN_cmKGA "Certificate Management Key Generation Authority" +#define NID_cmKGA 1222 +#define OBJ_cmKGA OBJ_id_kp,32L + +#define SN_id_it_caProtEncCert "id-it-caProtEncCert" +#define NID_id_it_caProtEncCert 298 +#define OBJ_id_it_caProtEncCert OBJ_id_it,1L + +#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" +#define NID_id_it_signKeyPairTypes 299 +#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L + +#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" +#define NID_id_it_encKeyPairTypes 300 +#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L + +#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" +#define NID_id_it_preferredSymmAlg 301 +#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L + +#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" +#define NID_id_it_caKeyUpdateInfo 302 +#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L + +#define SN_id_it_currentCRL "id-it-currentCRL" +#define NID_id_it_currentCRL 303 +#define OBJ_id_it_currentCRL OBJ_id_it,6L + +#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" +#define NID_id_it_unsupportedOIDs 304 +#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L + +#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" +#define NID_id_it_subscriptionRequest 305 +#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L + +#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" +#define NID_id_it_subscriptionResponse 306 +#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L + +#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" +#define NID_id_it_keyPairParamReq 307 +#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L + +#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" +#define NID_id_it_keyPairParamRep 308 +#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L + +#define SN_id_it_revPassphrase "id-it-revPassphrase" +#define NID_id_it_revPassphrase 309 +#define OBJ_id_it_revPassphrase OBJ_id_it,12L + +#define SN_id_it_implicitConfirm "id-it-implicitConfirm" +#define NID_id_it_implicitConfirm 310 +#define OBJ_id_it_implicitConfirm OBJ_id_it,13L + +#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" +#define NID_id_it_confirmWaitTime 311 +#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L + +#define SN_id_it_origPKIMessage "id-it-origPKIMessage" +#define NID_id_it_origPKIMessage 312 +#define OBJ_id_it_origPKIMessage OBJ_id_it,15L + +#define SN_id_it_suppLangTags "id-it-suppLangTags" +#define NID_id_it_suppLangTags 784 +#define OBJ_id_it_suppLangTags OBJ_id_it,16L + +#define SN_id_it_caCerts "id-it-caCerts" +#define NID_id_it_caCerts 1223 +#define OBJ_id_it_caCerts OBJ_id_it,17L + +#define SN_id_it_rootCaKeyUpdate "id-it-rootCaKeyUpdate" +#define NID_id_it_rootCaKeyUpdate 1224 +#define OBJ_id_it_rootCaKeyUpdate OBJ_id_it,18L + +#define SN_id_it_certReqTemplate "id-it-certReqTemplate" +#define NID_id_it_certReqTemplate 1225 +#define OBJ_id_it_certReqTemplate OBJ_id_it,19L + +#define SN_id_it_rootCaCert "id-it-rootCaCert" +#define NID_id_it_rootCaCert 1254 +#define OBJ_id_it_rootCaCert OBJ_id_it,20L + +#define SN_id_it_certProfile "id-it-certProfile" +#define NID_id_it_certProfile 1255 +#define OBJ_id_it_certProfile OBJ_id_it,21L + +#define SN_id_it_crlStatusList "id-it-crlStatusList" +#define NID_id_it_crlStatusList 1256 +#define OBJ_id_it_crlStatusList OBJ_id_it,22L + +#define SN_id_it_crls "id-it-crls" +#define NID_id_it_crls 1257 +#define OBJ_id_it_crls OBJ_id_it,23L + +#define SN_id_regCtrl "id-regCtrl" +#define NID_id_regCtrl 313 +#define OBJ_id_regCtrl OBJ_id_pkip,1L + +#define SN_id_regInfo "id-regInfo" +#define NID_id_regInfo 314 +#define OBJ_id_regInfo OBJ_id_pkip,2L + +#define SN_id_regCtrl_regToken "id-regCtrl-regToken" +#define NID_id_regCtrl_regToken 315 +#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L + +#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" +#define NID_id_regCtrl_authenticator 316 +#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L + +#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" +#define NID_id_regCtrl_pkiPublicationInfo 317 +#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L + +#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" +#define NID_id_regCtrl_pkiArchiveOptions 318 +#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L + +#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" +#define NID_id_regCtrl_oldCertID 319 +#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L + +#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" +#define NID_id_regCtrl_protocolEncrKey 320 +#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L + +#define SN_id_regCtrl_altCertTemplate "id-regCtrl-altCertTemplate" +#define NID_id_regCtrl_altCertTemplate 1258 +#define OBJ_id_regCtrl_altCertTemplate OBJ_id_regCtrl,7L + +#define SN_id_regCtrl_algId "id-regCtrl-algId" +#define NID_id_regCtrl_algId 1259 +#define OBJ_id_regCtrl_algId OBJ_id_regCtrl,11L + +#define SN_id_regCtrl_rsaKeyLen "id-regCtrl-rsaKeyLen" +#define NID_id_regCtrl_rsaKeyLen 1260 +#define OBJ_id_regCtrl_rsaKeyLen OBJ_id_regCtrl,12L + +#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" +#define NID_id_regInfo_utf8Pairs 321 +#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L + +#define SN_id_regInfo_certReq "id-regInfo-certReq" +#define NID_id_regInfo_certReq 322 +#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L + +#define SN_id_alg_des40 "id-alg-des40" +#define NID_id_alg_des40 323 +#define OBJ_id_alg_des40 OBJ_id_alg,1L + +#define SN_id_alg_noSignature "id-alg-noSignature" +#define NID_id_alg_noSignature 324 +#define OBJ_id_alg_noSignature OBJ_id_alg,2L + +#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" +#define NID_id_alg_dh_sig_hmac_sha1 325 +#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L + +#define SN_id_alg_dh_pop "id-alg-dh-pop" +#define NID_id_alg_dh_pop 326 +#define OBJ_id_alg_dh_pop OBJ_id_alg,4L + +#define SN_id_cmc_statusInfo "id-cmc-statusInfo" +#define NID_id_cmc_statusInfo 327 +#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L + +#define SN_id_cmc_identification "id-cmc-identification" +#define NID_id_cmc_identification 328 +#define OBJ_id_cmc_identification OBJ_id_cmc,2L + +#define SN_id_cmc_identityProof "id-cmc-identityProof" +#define NID_id_cmc_identityProof 329 +#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L + +#define SN_id_cmc_dataReturn "id-cmc-dataReturn" +#define NID_id_cmc_dataReturn 330 +#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L + +#define SN_id_cmc_transactionId "id-cmc-transactionId" +#define NID_id_cmc_transactionId 331 +#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L + +#define SN_id_cmc_senderNonce "id-cmc-senderNonce" +#define NID_id_cmc_senderNonce 332 +#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L + +#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" +#define NID_id_cmc_recipientNonce 333 +#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L + +#define SN_id_cmc_addExtensions "id-cmc-addExtensions" +#define NID_id_cmc_addExtensions 334 +#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L + +#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" +#define NID_id_cmc_encryptedPOP 335 +#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L + +#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" +#define NID_id_cmc_decryptedPOP 336 +#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L + +#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" +#define NID_id_cmc_lraPOPWitness 337 +#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L + +#define SN_id_cmc_getCert "id-cmc-getCert" +#define NID_id_cmc_getCert 338 +#define OBJ_id_cmc_getCert OBJ_id_cmc,15L + +#define SN_id_cmc_getCRL "id-cmc-getCRL" +#define NID_id_cmc_getCRL 339 +#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L + +#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" +#define NID_id_cmc_revokeRequest 340 +#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L + +#define SN_id_cmc_regInfo "id-cmc-regInfo" +#define NID_id_cmc_regInfo 341 +#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L + +#define SN_id_cmc_responseInfo "id-cmc-responseInfo" +#define NID_id_cmc_responseInfo 342 +#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L + +#define SN_id_cmc_queryPending "id-cmc-queryPending" +#define NID_id_cmc_queryPending 343 +#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L + +#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" +#define NID_id_cmc_popLinkRandom 344 +#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L + +#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" +#define NID_id_cmc_popLinkWitness 345 +#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L + +#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" +#define NID_id_cmc_confirmCertAcceptance 346 +#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L + +#define SN_id_on_personalData "id-on-personalData" +#define NID_id_on_personalData 347 +#define OBJ_id_on_personalData OBJ_id_on,1L + +#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" +#define LN_id_on_permanentIdentifier "Permanent Identifier" +#define NID_id_on_permanentIdentifier 858 +#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L + +#define SN_id_on_hardwareModuleName "id-on-hardwareModuleName" +#define LN_id_on_hardwareModuleName "Hardware Module Name" +#define NID_id_on_hardwareModuleName 1321 +#define OBJ_id_on_hardwareModuleName OBJ_id_on,4L + +#define SN_XmppAddr "id-on-xmppAddr" +#define LN_XmppAddr "XmppAddr" +#define NID_XmppAddr 1209 +#define OBJ_XmppAddr OBJ_id_on,5L + +#define SN_SRVName "id-on-dnsSRV" +#define LN_SRVName "SRVName" +#define NID_SRVName 1210 +#define OBJ_SRVName OBJ_id_on,7L + +#define SN_NAIRealm "id-on-NAIRealm" +#define LN_NAIRealm "NAIRealm" +#define NID_NAIRealm 1211 +#define OBJ_NAIRealm OBJ_id_on,8L + +#define SN_id_on_SmtpUTF8Mailbox "id-on-SmtpUTF8Mailbox" +#define LN_id_on_SmtpUTF8Mailbox "Smtp UTF8 Mailbox" +#define NID_id_on_SmtpUTF8Mailbox 1208 +#define OBJ_id_on_SmtpUTF8Mailbox OBJ_id_on,9L + +#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" +#define NID_id_pda_dateOfBirth 348 +#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L + +#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" +#define NID_id_pda_placeOfBirth 349 +#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L + +#define SN_id_pda_gender "id-pda-gender" +#define NID_id_pda_gender 351 +#define OBJ_id_pda_gender OBJ_id_pda,3L + +#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" +#define NID_id_pda_countryOfCitizenship 352 +#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L + +#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" +#define NID_id_pda_countryOfResidence 353 +#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L + +#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" +#define NID_id_aca_authenticationInfo 354 +#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L + +#define SN_id_aca_accessIdentity "id-aca-accessIdentity" +#define NID_id_aca_accessIdentity 355 +#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L + +#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" +#define NID_id_aca_chargingIdentity 356 +#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L + +#define SN_id_aca_group "id-aca-group" +#define NID_id_aca_group 357 +#define OBJ_id_aca_group OBJ_id_aca,4L + +#define SN_id_aca_role "id-aca-role" +#define NID_id_aca_role 358 +#define OBJ_id_aca_role OBJ_id_aca,5L + +#define SN_id_aca_encAttrs "id-aca-encAttrs" +#define NID_id_aca_encAttrs 399 +#define OBJ_id_aca_encAttrs OBJ_id_aca,6L + +#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" +#define NID_id_qcs_pkixQCSyntax_v1 359 +#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L + +#define SN_ipAddr_asNumber "ipAddr-asNumber" +#define NID_ipAddr_asNumber 1241 +#define OBJ_ipAddr_asNumber OBJ_id_cp,2L + +#define SN_ipAddr_asNumberv2 "ipAddr-asNumberv2" +#define NID_ipAddr_asNumberv2 1242 +#define OBJ_ipAddr_asNumberv2 OBJ_id_cp,3L + +#define SN_id_cct_crs "id-cct-crs" +#define NID_id_cct_crs 360 +#define OBJ_id_cct_crs OBJ_id_cct,1L + +#define SN_id_cct_PKIData "id-cct-PKIData" +#define NID_id_cct_PKIData 361 +#define OBJ_id_cct_PKIData OBJ_id_cct,2L + +#define SN_id_cct_PKIResponse "id-cct-PKIResponse" +#define NID_id_cct_PKIResponse 362 +#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L + +#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" +#define LN_id_ppl_anyLanguage "Any language" +#define NID_id_ppl_anyLanguage 664 +#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L + +#define SN_id_ppl_inheritAll "id-ppl-inheritAll" +#define LN_id_ppl_inheritAll "Inherit all" +#define NID_id_ppl_inheritAll 665 +#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L + +#define SN_Independent "id-ppl-independent" +#define LN_Independent "Independent" +#define NID_Independent 667 +#define OBJ_Independent OBJ_id_ppl,2L + +#define SN_ad_OCSP "OCSP" +#define LN_ad_OCSP "OCSP" +#define NID_ad_OCSP 178 +#define OBJ_ad_OCSP OBJ_id_ad,1L + +#define SN_ad_ca_issuers "caIssuers" +#define LN_ad_ca_issuers "CA Issuers" +#define NID_ad_ca_issuers 179 +#define OBJ_ad_ca_issuers OBJ_id_ad,2L + +#define SN_ad_timeStamping "ad_timestamping" +#define LN_ad_timeStamping "AD Time Stamping" +#define NID_ad_timeStamping 363 +#define OBJ_ad_timeStamping OBJ_id_ad,3L + +#define SN_ad_dvcs "AD_DVCS" +#define LN_ad_dvcs "ad dvcs" +#define NID_ad_dvcs 364 +#define OBJ_ad_dvcs OBJ_id_ad,4L + +#define SN_caRepository "caRepository" +#define LN_caRepository "CA Repository" +#define NID_caRepository 785 +#define OBJ_caRepository OBJ_id_ad,5L + +#define SN_rpkiManifest "rpkiManifest" +#define LN_rpkiManifest "RPKI Manifest" +#define NID_rpkiManifest 1243 +#define OBJ_rpkiManifest OBJ_id_ad,10L + +#define SN_signedObject "signedObject" +#define LN_signedObject "Signed Object" +#define NID_signedObject 1244 +#define OBJ_signedObject OBJ_id_ad,11L + +#define SN_rpkiNotify "rpkiNotify" +#define LN_rpkiNotify "RPKI Notify" +#define NID_rpkiNotify 1245 +#define OBJ_rpkiNotify OBJ_id_ad,13L + +#define OBJ_id_pkix_OCSP OBJ_ad_OCSP + +#define SN_id_pkix_OCSP_basic "basicOCSPResponse" +#define LN_id_pkix_OCSP_basic "Basic OCSP Response" +#define NID_id_pkix_OCSP_basic 365 +#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L + +#define SN_id_pkix_OCSP_Nonce "Nonce" +#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" +#define NID_id_pkix_OCSP_Nonce 366 +#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L + +#define SN_id_pkix_OCSP_CrlID "CrlID" +#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" +#define NID_id_pkix_OCSP_CrlID 367 +#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L + +#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" +#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" +#define NID_id_pkix_OCSP_acceptableResponses 368 +#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L + +#define SN_id_pkix_OCSP_noCheck "noCheck" +#define LN_id_pkix_OCSP_noCheck "OCSP No Check" +#define NID_id_pkix_OCSP_noCheck 369 +#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L + +#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" +#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" +#define NID_id_pkix_OCSP_archiveCutoff 370 +#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L + +#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" +#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" +#define NID_id_pkix_OCSP_serviceLocator 371 +#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L + +#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" +#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" +#define NID_id_pkix_OCSP_extendedStatus 372 +#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L + +#define SN_id_pkix_OCSP_valid "valid" +#define NID_id_pkix_OCSP_valid 373 +#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L + +#define SN_id_pkix_OCSP_path "path" +#define NID_id_pkix_OCSP_path 374 +#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L + +#define SN_id_pkix_OCSP_trustRoot "trustRoot" +#define LN_id_pkix_OCSP_trustRoot "Trust Root" +#define NID_id_pkix_OCSP_trustRoot 375 +#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L + +#define SN_algorithm "algorithm" +#define LN_algorithm "algorithm" +#define NID_algorithm 376 +#define OBJ_algorithm 1L,3L,14L,3L,2L + +#define SN_md5WithRSA "RSA-NP-MD5" +#define LN_md5WithRSA "md5WithRSA" +#define NID_md5WithRSA 104 +#define OBJ_md5WithRSA OBJ_algorithm,3L + +#define SN_des_ecb "DES-ECB" +#define LN_des_ecb "des-ecb" +#define NID_des_ecb 29 +#define OBJ_des_ecb OBJ_algorithm,6L + +#define SN_des_cbc "DES-CBC" +#define LN_des_cbc "des-cbc" +#define NID_des_cbc 31 +#define OBJ_des_cbc OBJ_algorithm,7L + +#define SN_des_ofb64 "DES-OFB" +#define LN_des_ofb64 "des-ofb" +#define NID_des_ofb64 45 +#define OBJ_des_ofb64 OBJ_algorithm,8L + +#define SN_des_cfb64 "DES-CFB" +#define LN_des_cfb64 "des-cfb" +#define NID_des_cfb64 30 +#define OBJ_des_cfb64 OBJ_algorithm,9L + +#define SN_rsaSignature "rsaSignature" +#define NID_rsaSignature 377 +#define OBJ_rsaSignature OBJ_algorithm,11L + +#define SN_dsa_2 "DSA-old" +#define LN_dsa_2 "dsaEncryption-old" +#define NID_dsa_2 67 +#define OBJ_dsa_2 OBJ_algorithm,12L + +#define SN_dsaWithSHA "DSA-SHA" +#define LN_dsaWithSHA "dsaWithSHA" +#define NID_dsaWithSHA 66 +#define OBJ_dsaWithSHA OBJ_algorithm,13L + +#define SN_shaWithRSAEncryption "RSA-SHA" +#define LN_shaWithRSAEncryption "shaWithRSAEncryption" +#define NID_shaWithRSAEncryption 42 +#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L + +#define SN_des_ede_ecb "DES-EDE" +#define LN_des_ede_ecb "des-ede" +#define NID_des_ede_ecb 32 +#define OBJ_des_ede_ecb OBJ_algorithm,17L + +#define SN_des_ede3_ecb "DES-EDE3" +#define LN_des_ede3_ecb "des-ede3" +#define NID_des_ede3_ecb 33 + +#define SN_des_ede_cbc "DES-EDE-CBC" +#define LN_des_ede_cbc "des-ede-cbc" +#define NID_des_ede_cbc 43 + +#define SN_des_ede_cfb64 "DES-EDE-CFB" +#define LN_des_ede_cfb64 "des-ede-cfb" +#define NID_des_ede_cfb64 60 + +#define SN_des_ede3_cfb64 "DES-EDE3-CFB" +#define LN_des_ede3_cfb64 "des-ede3-cfb" +#define NID_des_ede3_cfb64 61 + +#define SN_des_ede_ofb64 "DES-EDE-OFB" +#define LN_des_ede_ofb64 "des-ede-ofb" +#define NID_des_ede_ofb64 62 + +#define SN_des_ede3_ofb64 "DES-EDE3-OFB" +#define LN_des_ede3_ofb64 "des-ede3-ofb" +#define NID_des_ede3_ofb64 63 + +#define SN_desx_cbc "DESX-CBC" +#define LN_desx_cbc "desx-cbc" +#define NID_desx_cbc 80 + +#define SN_sha "SHA" +#define LN_sha "sha" +#define NID_sha 41 +#define OBJ_sha OBJ_algorithm,18L + +#define SN_sha1 "SHA1" +#define LN_sha1 "sha1" +#define NID_sha1 64 +#define OBJ_sha1 OBJ_algorithm,26L + +#define SN_dsaWithSHA1_2 "DSA-SHA1-old" +#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +#define NID_dsaWithSHA1_2 70 +#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L + +#define SN_sha1WithRSA "RSA-SHA1-2" +#define LN_sha1WithRSA "sha1WithRSA" +#define NID_sha1WithRSA 115 +#define OBJ_sha1WithRSA OBJ_algorithm,29L + +#define SN_ripemd160 "RIPEMD160" +#define LN_ripemd160 "ripemd160" +#define NID_ripemd160 117 +#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L + +#define SN_ripemd160WithRSA "RSA-RIPEMD160" +#define LN_ripemd160WithRSA "ripemd160WithRSA" +#define NID_ripemd160WithRSA 119 +#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L + +#define SN_blake2bmac "BLAKE2BMAC" +#define LN_blake2bmac "blake2bmac" +#define NID_blake2bmac 1201 +#define OBJ_blake2bmac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L + +#define SN_blake2smac "BLAKE2SMAC" +#define LN_blake2smac "blake2smac" +#define NID_blake2smac 1202 +#define OBJ_blake2smac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L + +#define SN_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 OBJ_blake2bmac,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 OBJ_blake2smac,8L + +#define SN_sxnet "SXNetID" +#define LN_sxnet "Strong Extranet ID" +#define NID_sxnet 143 +#define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +#define SN_X500 "X500" +#define LN_X500 "directory services (X.500)" +#define NID_X500 11 +#define OBJ_X500 2L,5L + +#define SN_X509 "X509" +#define NID_X509 12 +#define OBJ_X509 OBJ_X500,4L + +#define SN_commonName "CN" +#define LN_commonName "commonName" +#define NID_commonName 13 +#define OBJ_commonName OBJ_X509,3L + +#define SN_surname "SN" +#define LN_surname "surname" +#define NID_surname 100 +#define OBJ_surname OBJ_X509,4L + +#define LN_serialNumber "serialNumber" +#define NID_serialNumber 105 +#define OBJ_serialNumber OBJ_X509,5L + +#define SN_countryName "C" +#define LN_countryName "countryName" +#define NID_countryName 14 +#define OBJ_countryName OBJ_X509,6L + +#define SN_localityName "L" +#define LN_localityName "localityName" +#define NID_localityName 15 +#define OBJ_localityName OBJ_X509,7L + +#define SN_stateOrProvinceName "ST" +#define LN_stateOrProvinceName "stateOrProvinceName" +#define NID_stateOrProvinceName 16 +#define OBJ_stateOrProvinceName OBJ_X509,8L + +#define SN_streetAddress "street" +#define LN_streetAddress "streetAddress" +#define NID_streetAddress 660 +#define OBJ_streetAddress OBJ_X509,9L + +#define SN_organizationName "O" +#define LN_organizationName "organizationName" +#define NID_organizationName 17 +#define OBJ_organizationName OBJ_X509,10L + +#define SN_organizationalUnitName "OU" +#define LN_organizationalUnitName "organizationalUnitName" +#define NID_organizationalUnitName 18 +#define OBJ_organizationalUnitName OBJ_X509,11L + +#define SN_title "title" +#define LN_title "title" +#define NID_title 106 +#define OBJ_title OBJ_X509,12L + +#define LN_description "description" +#define NID_description 107 +#define OBJ_description OBJ_X509,13L + +#define LN_searchGuide "searchGuide" +#define NID_searchGuide 859 +#define OBJ_searchGuide OBJ_X509,14L + +#define LN_businessCategory "businessCategory" +#define NID_businessCategory 860 +#define OBJ_businessCategory OBJ_X509,15L + +#define LN_postalAddress "postalAddress" +#define NID_postalAddress 861 +#define OBJ_postalAddress OBJ_X509,16L + +#define LN_postalCode "postalCode" +#define NID_postalCode 661 +#define OBJ_postalCode OBJ_X509,17L + +#define LN_postOfficeBox "postOfficeBox" +#define NID_postOfficeBox 862 +#define OBJ_postOfficeBox OBJ_X509,18L + +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_physicalDeliveryOfficeName 863 +#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L + +#define LN_telephoneNumber "telephoneNumber" +#define NID_telephoneNumber 864 +#define OBJ_telephoneNumber OBJ_X509,20L + +#define LN_telexNumber "telexNumber" +#define NID_telexNumber 865 +#define OBJ_telexNumber OBJ_X509,21L + +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_teletexTerminalIdentifier 866 +#define OBJ_teletexTerminalIdentifier OBJ_X509,22L + +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_facsimileTelephoneNumber 867 +#define OBJ_facsimileTelephoneNumber OBJ_X509,23L + +#define LN_x121Address "x121Address" +#define NID_x121Address 868 +#define OBJ_x121Address OBJ_X509,24L + +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_internationaliSDNNumber 869 +#define OBJ_internationaliSDNNumber OBJ_X509,25L + +#define LN_registeredAddress "registeredAddress" +#define NID_registeredAddress 870 +#define OBJ_registeredAddress OBJ_X509,26L + +#define LN_destinationIndicator "destinationIndicator" +#define NID_destinationIndicator 871 +#define OBJ_destinationIndicator OBJ_X509,27L + +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_preferredDeliveryMethod 872 +#define OBJ_preferredDeliveryMethod OBJ_X509,28L + +#define LN_presentationAddress "presentationAddress" +#define NID_presentationAddress 873 +#define OBJ_presentationAddress OBJ_X509,29L + +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_supportedApplicationContext 874 +#define OBJ_supportedApplicationContext OBJ_X509,30L + +#define SN_member "member" +#define NID_member 875 +#define OBJ_member OBJ_X509,31L + +#define SN_owner "owner" +#define NID_owner 876 +#define OBJ_owner OBJ_X509,32L + +#define LN_roleOccupant "roleOccupant" +#define NID_roleOccupant 877 +#define OBJ_roleOccupant OBJ_X509,33L + +#define SN_seeAlso "seeAlso" +#define NID_seeAlso 878 +#define OBJ_seeAlso OBJ_X509,34L + +#define LN_userPassword "userPassword" +#define NID_userPassword 879 +#define OBJ_userPassword OBJ_X509,35L + +#define LN_userCertificate "userCertificate" +#define NID_userCertificate 880 +#define OBJ_userCertificate OBJ_X509,36L + +#define LN_cACertificate "cACertificate" +#define NID_cACertificate 881 +#define OBJ_cACertificate OBJ_X509,37L + +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_authorityRevocationList 882 +#define OBJ_authorityRevocationList OBJ_X509,38L + +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_certificateRevocationList 883 +#define OBJ_certificateRevocationList OBJ_X509,39L + +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_crossCertificatePair 884 +#define OBJ_crossCertificatePair OBJ_X509,40L + +#define SN_name "name" +#define LN_name "name" +#define NID_name 173 +#define OBJ_name OBJ_X509,41L + +#define SN_givenName "GN" +#define LN_givenName "givenName" +#define NID_givenName 99 +#define OBJ_givenName OBJ_X509,42L + +#define SN_initials "initials" +#define LN_initials "initials" +#define NID_initials 101 +#define OBJ_initials OBJ_X509,43L + +#define LN_generationQualifier "generationQualifier" +#define NID_generationQualifier 509 +#define OBJ_generationQualifier OBJ_X509,44L + +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_x500UniqueIdentifier 503 +#define OBJ_x500UniqueIdentifier OBJ_X509,45L + +#define SN_dnQualifier "dnQualifier" +#define LN_dnQualifier "dnQualifier" +#define NID_dnQualifier 174 +#define OBJ_dnQualifier OBJ_X509,46L + +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_enhancedSearchGuide 885 +#define OBJ_enhancedSearchGuide OBJ_X509,47L + +#define LN_protocolInformation "protocolInformation" +#define NID_protocolInformation 886 +#define OBJ_protocolInformation OBJ_X509,48L + +#define LN_distinguishedName "distinguishedName" +#define NID_distinguishedName 887 +#define OBJ_distinguishedName OBJ_X509,49L + +#define LN_uniqueMember "uniqueMember" +#define NID_uniqueMember 888 +#define OBJ_uniqueMember OBJ_X509,50L + +#define LN_houseIdentifier "houseIdentifier" +#define NID_houseIdentifier 889 +#define OBJ_houseIdentifier OBJ_X509,51L + +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_supportedAlgorithms 890 +#define OBJ_supportedAlgorithms OBJ_X509,52L + +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_deltaRevocationList 891 +#define OBJ_deltaRevocationList OBJ_X509,53L + +#define SN_dmdName "dmdName" +#define NID_dmdName 892 +#define OBJ_dmdName OBJ_X509,54L + +#define LN_pseudonym "pseudonym" +#define NID_pseudonym 510 +#define OBJ_pseudonym OBJ_X509,65L + +#define SN_role "role" +#define LN_role "role" +#define NID_role 400 +#define OBJ_role OBJ_X509,72L + +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#define SN_X500algorithms "X500algorithms" +#define LN_X500algorithms "directory services - algorithms" +#define NID_X500algorithms 378 +#define OBJ_X500algorithms OBJ_X500,8L + +#define SN_rsa "RSA" +#define LN_rsa "rsa" +#define NID_rsa 19 +#define OBJ_rsa OBJ_X500algorithms,1L,1L + +#define SN_mdc2WithRSA "RSA-MDC2" +#define LN_mdc2WithRSA "mdc2WithRSA" +#define NID_mdc2WithRSA 96 +#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L + +#define SN_mdc2 "MDC2" +#define LN_mdc2 "mdc2" +#define NID_mdc2 95 +#define OBJ_mdc2 OBJ_X500algorithms,3L,101L + +#define SN_id_ce "id-ce" +#define NID_id_ce 81 +#define OBJ_id_ce OBJ_X500,29L + +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define NID_subject_directory_attributes 769 +#define OBJ_subject_directory_attributes OBJ_id_ce,9L + +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define NID_subject_key_identifier 82 +#define OBJ_subject_key_identifier OBJ_id_ce,14L + +#define SN_key_usage "keyUsage" +#define LN_key_usage "X509v3 Key Usage" +#define NID_key_usage 83 +#define OBJ_key_usage OBJ_id_ce,15L + +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define NID_private_key_usage_period 84 +#define OBJ_private_key_usage_period OBJ_id_ce,16L + +#define SN_subject_alt_name "subjectAltName" +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define NID_subject_alt_name 85 +#define OBJ_subject_alt_name OBJ_id_ce,17L + +#define SN_issuer_alt_name "issuerAltName" +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define NID_issuer_alt_name 86 +#define OBJ_issuer_alt_name OBJ_id_ce,18L + +#define SN_basic_constraints "basicConstraints" +#define LN_basic_constraints "X509v3 Basic Constraints" +#define NID_basic_constraints 87 +#define OBJ_basic_constraints OBJ_id_ce,19L + +#define SN_crl_number "crlNumber" +#define LN_crl_number "X509v3 CRL Number" +#define NID_crl_number 88 +#define OBJ_crl_number OBJ_id_ce,20L + +#define SN_crl_reason "CRLReason" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define NID_crl_reason 141 +#define OBJ_crl_reason OBJ_id_ce,21L + +#define SN_invalidity_date "invalidityDate" +#define LN_invalidity_date "Invalidity Date" +#define NID_invalidity_date 142 +#define OBJ_invalidity_date OBJ_id_ce,24L + +#define SN_delta_crl "deltaCRL" +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define NID_delta_crl 140 +#define OBJ_delta_crl OBJ_id_ce,27L + +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define NID_issuing_distribution_point 770 +#define OBJ_issuing_distribution_point OBJ_id_ce,28L + +#define SN_certificate_issuer "certificateIssuer" +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define NID_certificate_issuer 771 +#define OBJ_certificate_issuer OBJ_id_ce,29L + +#define SN_name_constraints "nameConstraints" +#define LN_name_constraints "X509v3 Name Constraints" +#define NID_name_constraints 666 +#define OBJ_name_constraints OBJ_id_ce,30L + +#define SN_crl_distribution_points "crlDistributionPoints" +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define NID_crl_distribution_points 103 +#define OBJ_crl_distribution_points OBJ_id_ce,31L + +#define SN_certificate_policies "certificatePolicies" +#define LN_certificate_policies "X509v3 Certificate Policies" +#define NID_certificate_policies 89 +#define OBJ_certificate_policies OBJ_id_ce,32L + +#define SN_any_policy "anyPolicy" +#define LN_any_policy "X509v3 Any Policy" +#define NID_any_policy 746 +#define OBJ_any_policy OBJ_certificate_policies,0L + +#define SN_policy_mappings "policyMappings" +#define LN_policy_mappings "X509v3 Policy Mappings" +#define NID_policy_mappings 747 +#define OBJ_policy_mappings OBJ_id_ce,33L + +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define NID_authority_key_identifier 90 +#define OBJ_authority_key_identifier OBJ_id_ce,35L + +#define SN_policy_constraints "policyConstraints" +#define LN_policy_constraints "X509v3 Policy Constraints" +#define NID_policy_constraints 401 +#define OBJ_policy_constraints OBJ_id_ce,36L + +#define SN_ext_key_usage "extendedKeyUsage" +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define NID_ext_key_usage 126 +#define OBJ_ext_key_usage OBJ_id_ce,37L + +#define SN_authority_attribute_identifier "authorityAttributeIdentifier" +#define LN_authority_attribute_identifier "X509v3 Authority Attribute Identifier" +#define NID_authority_attribute_identifier 1295 +#define OBJ_authority_attribute_identifier OBJ_id_ce,38L + +#define SN_role_spec_cert_identifier "roleSpecCertIdentifier" +#define LN_role_spec_cert_identifier "X509v3 Role Specification Certificate Identifier" +#define NID_role_spec_cert_identifier 1296 +#define OBJ_role_spec_cert_identifier OBJ_id_ce,39L + +#define SN_basic_att_constraints "basicAttConstraints" +#define LN_basic_att_constraints "X509v3 Basic Attribute Certificate Constraints" +#define NID_basic_att_constraints 1297 +#define OBJ_basic_att_constraints OBJ_id_ce,41L + +#define SN_delegated_name_constraints "delegatedNameConstraints" +#define LN_delegated_name_constraints "X509v3 Delegated Name Constraints" +#define NID_delegated_name_constraints 1298 +#define OBJ_delegated_name_constraints OBJ_id_ce,42L + +#define SN_time_specification "timeSpecification" +#define LN_time_specification "X509v3 Time Specification" +#define NID_time_specification 1299 +#define OBJ_time_specification OBJ_id_ce,43L + +#define SN_freshest_crl "freshestCRL" +#define LN_freshest_crl "X509v3 Freshest CRL" +#define NID_freshest_crl 857 +#define OBJ_freshest_crl OBJ_id_ce,46L + +#define SN_attribute_descriptor "attributeDescriptor" +#define LN_attribute_descriptor "X509v3 Attribute Descriptor" +#define NID_attribute_descriptor 1300 +#define OBJ_attribute_descriptor OBJ_id_ce,48L + +#define SN_user_notice "userNotice" +#define LN_user_notice "X509v3 User Notice" +#define NID_user_notice 1301 +#define OBJ_user_notice OBJ_id_ce,49L + +#define SN_soa_identifier "sOAIdentifier" +#define LN_soa_identifier "X509v3 Source of Authority Identifier" +#define NID_soa_identifier 1302 +#define OBJ_soa_identifier OBJ_id_ce,50L + +#define SN_acceptable_cert_policies "acceptableCertPolicies" +#define LN_acceptable_cert_policies "X509v3 Acceptable Certification Policies" +#define NID_acceptable_cert_policies 1303 +#define OBJ_acceptable_cert_policies OBJ_id_ce,52L + +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define NID_inhibit_any_policy 748 +#define OBJ_inhibit_any_policy OBJ_id_ce,54L + +#define SN_target_information "targetInformation" +#define LN_target_information "X509v3 AC Targeting" +#define NID_target_information 402 +#define OBJ_target_information OBJ_id_ce,55L + +#define SN_no_rev_avail "noRevAvail" +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define NID_no_rev_avail 403 +#define OBJ_no_rev_avail OBJ_id_ce,56L + +#define SN_acceptable_privilege_policies "acceptablePrivPolicies" +#define LN_acceptable_privilege_policies "X509v3 Acceptable Privilege Policies" +#define NID_acceptable_privilege_policies 1304 +#define OBJ_acceptable_privilege_policies OBJ_id_ce,57L + +#define SN_indirect_issuer "indirectIssuer" +#define LN_indirect_issuer "X509v3 Indirect Issuer" +#define NID_indirect_issuer 1305 +#define OBJ_indirect_issuer OBJ_id_ce,61L + +#define SN_no_assertion "noAssertion" +#define LN_no_assertion "X509v3 No Assertion" +#define NID_no_assertion 1306 +#define OBJ_no_assertion OBJ_id_ce,62L + +#define SN_id_aa_issuing_distribution_point "aAissuingDistributionPoint" +#define LN_id_aa_issuing_distribution_point "X509v3 Attribute Authority Issuing Distribution Point" +#define NID_id_aa_issuing_distribution_point 1307 +#define OBJ_id_aa_issuing_distribution_point OBJ_id_ce,63L + +#define SN_issued_on_behalf_of "issuedOnBehalfOf" +#define LN_issued_on_behalf_of "X509v3 Issued On Behalf Of" +#define NID_issued_on_behalf_of 1308 +#define OBJ_issued_on_behalf_of OBJ_id_ce,64L + +#define SN_single_use "singleUse" +#define LN_single_use "X509v3 Single Use" +#define NID_single_use 1309 +#define OBJ_single_use OBJ_id_ce,65L + +#define SN_group_ac "groupAC" +#define LN_group_ac "X509v3 Group Attribute Certificate" +#define NID_group_ac 1310 +#define OBJ_group_ac OBJ_id_ce,66L + +#define SN_allowed_attribute_assignments "allowedAttributeAssignments" +#define LN_allowed_attribute_assignments "X509v3 Allowed Attribute Assignments" +#define NID_allowed_attribute_assignments 1311 +#define OBJ_allowed_attribute_assignments OBJ_id_ce,67L + +#define SN_attribute_mappings "attributeMappings" +#define LN_attribute_mappings "X509v3 Attribute Mappings" +#define NID_attribute_mappings 1312 +#define OBJ_attribute_mappings OBJ_id_ce,68L + +#define SN_holder_name_constraints "holderNameConstraints" +#define LN_holder_name_constraints "X509v3 Holder Name Constraints" +#define NID_holder_name_constraints 1313 +#define OBJ_holder_name_constraints OBJ_id_ce,69L + +#define SN_authorization_validation "authorizationValidation" +#define LN_authorization_validation "X509v3 Authorization Validation" +#define NID_authorization_validation 1314 +#define OBJ_authorization_validation OBJ_id_ce,70L + +#define SN_prot_restrict "protRestrict" +#define LN_prot_restrict "X509v3 Protocol Restriction" +#define NID_prot_restrict 1315 +#define OBJ_prot_restrict OBJ_id_ce,71L + +#define SN_subject_alt_public_key_info "subjectAltPublicKeyInfo" +#define LN_subject_alt_public_key_info "X509v3 Subject Alternative Public Key Info" +#define NID_subject_alt_public_key_info 1316 +#define OBJ_subject_alt_public_key_info OBJ_id_ce,72L + +#define SN_alt_signature_algorithm "altSignatureAlgorithm" +#define LN_alt_signature_algorithm "X509v3 Alternative Signature Algorithm" +#define NID_alt_signature_algorithm 1317 +#define OBJ_alt_signature_algorithm OBJ_id_ce,73L + +#define SN_alt_signature_value "altSignatureValue" +#define LN_alt_signature_value "X509v3 Alternative Signature Value" +#define NID_alt_signature_value 1318 +#define OBJ_alt_signature_value OBJ_id_ce,74L + +#define SN_associated_information "associatedInformation" +#define LN_associated_information "X509v3 Associated Information" +#define NID_associated_information 1319 +#define OBJ_associated_information OBJ_id_ce,75L + +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define NID_anyExtendedKeyUsage 910 +#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L + +#define SN_netscape "Netscape" +#define LN_netscape "Netscape Communications Corp." +#define NID_netscape 57 +#define OBJ_netscape 2L,16L,840L,1L,113730L + +#define SN_netscape_cert_extension "nsCertExt" +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define NID_netscape_cert_extension 58 +#define OBJ_netscape_cert_extension OBJ_netscape,1L + +#define SN_netscape_data_type "nsDataType" +#define LN_netscape_data_type "Netscape Data Type" +#define NID_netscape_data_type 59 +#define OBJ_netscape_data_type OBJ_netscape,2L + +#define SN_netscape_cert_type "nsCertType" +#define LN_netscape_cert_type "Netscape Cert Type" +#define NID_netscape_cert_type 71 +#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L + +#define SN_netscape_base_url "nsBaseUrl" +#define LN_netscape_base_url "Netscape Base Url" +#define NID_netscape_base_url 72 +#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L + +#define SN_netscape_revocation_url "nsRevocationUrl" +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define NID_netscape_revocation_url 73 +#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L + +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define NID_netscape_ca_revocation_url 74 +#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L + +#define SN_netscape_renewal_url "nsRenewalUrl" +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define NID_netscape_renewal_url 75 +#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L + +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define NID_netscape_ca_policy_url 76 +#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L + +#define SN_netscape_ssl_server_name "nsSslServerName" +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define NID_netscape_ssl_server_name 77 +#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L + +#define SN_netscape_comment "nsComment" +#define LN_netscape_comment "Netscape Comment" +#define NID_netscape_comment 78 +#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L + +#define SN_netscape_cert_sequence "nsCertSequence" +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define NID_netscape_cert_sequence 79 +#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L + +#define SN_ns_sgc "nsSGC" +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define NID_ns_sgc 139 +#define OBJ_ns_sgc OBJ_netscape,4L,1L + +#define SN_org "ORG" +#define LN_org "org" +#define NID_org 379 +#define OBJ_org OBJ_iso,3L + +#define SN_dod "DOD" +#define LN_dod "dod" +#define NID_dod 380 +#define OBJ_dod OBJ_org,6L + +#define SN_iana "IANA" +#define LN_iana "iana" +#define NID_iana 381 +#define OBJ_iana OBJ_dod,1L + +#define OBJ_internet OBJ_iana + +#define SN_Directory "directory" +#define LN_Directory "Directory" +#define NID_Directory 382 +#define OBJ_Directory OBJ_internet,1L + +#define SN_Management "mgmt" +#define LN_Management "Management" +#define NID_Management 383 +#define OBJ_Management OBJ_internet,2L + +#define SN_Experimental "experimental" +#define LN_Experimental "Experimental" +#define NID_Experimental 384 +#define OBJ_Experimental OBJ_internet,3L + +#define SN_Private "private" +#define LN_Private "Private" +#define NID_Private 385 +#define OBJ_Private OBJ_internet,4L + +#define SN_Security "security" +#define LN_Security "Security" +#define NID_Security 386 +#define OBJ_Security OBJ_internet,5L + +#define SN_SNMPv2 "snmpv2" +#define LN_SNMPv2 "SNMPv2" +#define NID_SNMPv2 387 +#define OBJ_SNMPv2 OBJ_internet,6L + +#define LN_Mail "Mail" +#define NID_Mail 388 +#define OBJ_Mail OBJ_internet,7L + +#define SN_Enterprises "enterprises" +#define LN_Enterprises "Enterprises" +#define NID_Enterprises 389 +#define OBJ_Enterprises OBJ_Private,1L + +#define SN_dcObject "dcobject" +#define LN_dcObject "dcObject" +#define NID_dcObject 390 +#define OBJ_dcObject OBJ_Enterprises,1466L,344L + +#define SN_id_kp_wisun_fan_device "id-kp-wisun-fan-device" +#define LN_id_kp_wisun_fan_device "Wi-SUN Alliance Field Area Network (FAN)" +#define NID_id_kp_wisun_fan_device 1322 +#define OBJ_id_kp_wisun_fan_device OBJ_Enterprises,45605L,1L + +#define SN_mime_mhs "mime-mhs" +#define LN_mime_mhs "MIME MHS" +#define NID_mime_mhs 504 +#define OBJ_mime_mhs OBJ_Mail,1L + +#define SN_mime_mhs_headings "mime-mhs-headings" +#define LN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs_headings 505 +#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L + +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_bodies 506 +#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L + +#define SN_id_hex_partial_message "id-hex-partial-message" +#define LN_id_hex_partial_message "id-hex-partial-message" +#define NID_id_hex_partial_message 507 +#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L + +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_multipart_message 508 +#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L + +#define SN_zlib_compression "ZLIB" +#define LN_zlib_compression "zlib compression" +#define NID_zlib_compression 125 +#define OBJ_zlib_compression OBJ_id_smime_alg,8L + +#define OBJ_csor 2L,16L,840L,1L,101L,3L + +#define OBJ_nistAlgorithms OBJ_csor,4L + +#define OBJ_aes OBJ_nistAlgorithms,1L + +#define SN_aes_128_ecb "AES-128-ECB" +#define LN_aes_128_ecb "aes-128-ecb" +#define NID_aes_128_ecb 418 +#define OBJ_aes_128_ecb OBJ_aes,1L + +#define SN_aes_128_cbc "AES-128-CBC" +#define LN_aes_128_cbc "aes-128-cbc" +#define NID_aes_128_cbc 419 +#define OBJ_aes_128_cbc OBJ_aes,2L + +#define SN_aes_128_ofb128 "AES-128-OFB" +#define LN_aes_128_ofb128 "aes-128-ofb" +#define NID_aes_128_ofb128 420 +#define OBJ_aes_128_ofb128 OBJ_aes,3L + +#define SN_aes_128_cfb128 "AES-128-CFB" +#define LN_aes_128_cfb128 "aes-128-cfb" +#define NID_aes_128_cfb128 421 +#define OBJ_aes_128_cfb128 OBJ_aes,4L + +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_id_aes128_wrap 788 +#define OBJ_id_aes128_wrap OBJ_aes,5L + +#define SN_aes_128_gcm "id-aes128-GCM" +#define LN_aes_128_gcm "aes-128-gcm" +#define NID_aes_128_gcm 895 +#define OBJ_aes_128_gcm OBJ_aes,6L + +#define SN_aes_128_ccm "id-aes128-CCM" +#define LN_aes_128_ccm "aes-128-ccm" +#define NID_aes_128_ccm 896 +#define OBJ_aes_128_ccm OBJ_aes,7L + +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_id_aes128_wrap_pad 897 +#define OBJ_id_aes128_wrap_pad OBJ_aes,8L + +#define SN_aes_192_ecb "AES-192-ECB" +#define LN_aes_192_ecb "aes-192-ecb" +#define NID_aes_192_ecb 422 +#define OBJ_aes_192_ecb OBJ_aes,21L + +#define SN_aes_192_cbc "AES-192-CBC" +#define LN_aes_192_cbc "aes-192-cbc" +#define NID_aes_192_cbc 423 +#define OBJ_aes_192_cbc OBJ_aes,22L + +#define SN_aes_192_ofb128 "AES-192-OFB" +#define LN_aes_192_ofb128 "aes-192-ofb" +#define NID_aes_192_ofb128 424 +#define OBJ_aes_192_ofb128 OBJ_aes,23L + +#define SN_aes_192_cfb128 "AES-192-CFB" +#define LN_aes_192_cfb128 "aes-192-cfb" +#define NID_aes_192_cfb128 425 +#define OBJ_aes_192_cfb128 OBJ_aes,24L + +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_id_aes192_wrap 789 +#define OBJ_id_aes192_wrap OBJ_aes,25L + +#define SN_aes_192_gcm "id-aes192-GCM" +#define LN_aes_192_gcm "aes-192-gcm" +#define NID_aes_192_gcm 898 +#define OBJ_aes_192_gcm OBJ_aes,26L + +#define SN_aes_192_ccm "id-aes192-CCM" +#define LN_aes_192_ccm "aes-192-ccm" +#define NID_aes_192_ccm 899 +#define OBJ_aes_192_ccm OBJ_aes,27L + +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_id_aes192_wrap_pad 900 +#define OBJ_id_aes192_wrap_pad OBJ_aes,28L + +#define SN_aes_256_ecb "AES-256-ECB" +#define LN_aes_256_ecb "aes-256-ecb" +#define NID_aes_256_ecb 426 +#define OBJ_aes_256_ecb OBJ_aes,41L + +#define SN_aes_256_cbc "AES-256-CBC" +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_cbc 427 +#define OBJ_aes_256_cbc OBJ_aes,42L + +#define SN_aes_256_ofb128 "AES-256-OFB" +#define LN_aes_256_ofb128 "aes-256-ofb" +#define NID_aes_256_ofb128 428 +#define OBJ_aes_256_ofb128 OBJ_aes,43L + +#define SN_aes_256_cfb128 "AES-256-CFB" +#define LN_aes_256_cfb128 "aes-256-cfb" +#define NID_aes_256_cfb128 429 +#define OBJ_aes_256_cfb128 OBJ_aes,44L + +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_id_aes256_wrap 790 +#define OBJ_id_aes256_wrap OBJ_aes,45L + +#define SN_aes_256_gcm "id-aes256-GCM" +#define LN_aes_256_gcm "aes-256-gcm" +#define NID_aes_256_gcm 901 +#define OBJ_aes_256_gcm OBJ_aes,46L + +#define SN_aes_256_ccm "id-aes256-CCM" +#define LN_aes_256_ccm "aes-256-ccm" +#define NID_aes_256_ccm 902 +#define OBJ_aes_256_ccm OBJ_aes,47L + +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_id_aes256_wrap_pad 903 +#define OBJ_id_aes256_wrap_pad OBJ_aes,48L + +#define SN_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define NID_aes_128_cfb1 650 + +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define NID_aes_192_cfb1 651 + +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define NID_aes_256_cfb1 652 + +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define NID_aes_128_cfb8 653 + +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define NID_aes_192_cfb8 654 + +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define NID_aes_256_cfb8 655 + +#define SN_aes_128_ctr "AES-128-CTR" +#define LN_aes_128_ctr "aes-128-ctr" +#define NID_aes_128_ctr 904 + +#define SN_aes_192_ctr "AES-192-CTR" +#define LN_aes_192_ctr "aes-192-ctr" +#define NID_aes_192_ctr 905 + +#define SN_aes_256_ctr "AES-256-CTR" +#define LN_aes_256_ctr "aes-256-ctr" +#define NID_aes_256_ctr 906 + +#define SN_aes_128_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#define SN_des_cfb1 "DES-CFB1" +#define LN_des_cfb1 "des-cfb1" +#define NID_des_cfb1 656 + +#define SN_des_cfb8 "DES-CFB8" +#define LN_des_cfb8 "des-cfb8" +#define NID_des_cfb8 657 + +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define NID_des_ede3_cfb1 658 + +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define NID_des_ede3_cfb8 659 + +#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L + +#define SN_sha256 "SHA256" +#define LN_sha256 "sha256" +#define NID_sha256 672 +#define OBJ_sha256 OBJ_nist_hashalgs,1L + +#define SN_sha384 "SHA384" +#define LN_sha384 "sha384" +#define NID_sha384 673 +#define OBJ_sha384 OBJ_nist_hashalgs,2L + +#define SN_sha512 "SHA512" +#define LN_sha512 "sha512" +#define NID_sha512 674 +#define OBJ_sha512 OBJ_nist_hashalgs,3L + +#define SN_sha224 "SHA224" +#define LN_sha224 "sha224" +#define NID_sha224 675 +#define OBJ_sha224 OBJ_nist_hashalgs,4L + +#define SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#define SN_kmac128 "KMAC128" +#define LN_kmac128 "kmac128" +#define NID_kmac128 1196 +#define OBJ_kmac128 OBJ_nist_hashalgs,19L + +#define SN_kmac256 "KMAC256" +#define LN_kmac256 "kmac256" +#define NID_kmac256 1197 +#define OBJ_kmac256 OBJ_nist_hashalgs,20L + +#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_dsa_with_SHA224 802 +#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L + +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA256 803 +#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L + +#define OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#define SN_ML_DSA_44 "id-ml-dsa-44" +#define LN_ML_DSA_44 "ML-DSA-44" +#define NID_ML_DSA_44 1457 +#define OBJ_ML_DSA_44 OBJ_sigAlgs,17L + +#define SN_ML_DSA_65 "id-ml-dsa-65" +#define LN_ML_DSA_65 "ML-DSA-65" +#define NID_ML_DSA_65 1458 +#define OBJ_ML_DSA_65 OBJ_sigAlgs,18L + +#define SN_ML_DSA_87 "id-ml-dsa-87" +#define LN_ML_DSA_87 "ML-DSA-87" +#define NID_ML_DSA_87 1459 +#define OBJ_ML_DSA_87 OBJ_sigAlgs,19L + +#define SN_SLH_DSA_SHA2_128s "id-slh-dsa-sha2-128s" +#define LN_SLH_DSA_SHA2_128s "SLH-DSA-SHA2-128s" +#define NID_SLH_DSA_SHA2_128s 1460 +#define OBJ_SLH_DSA_SHA2_128s OBJ_sigAlgs,20L + +#define SN_SLH_DSA_SHA2_128f "id-slh-dsa-sha2-128f" +#define LN_SLH_DSA_SHA2_128f "SLH-DSA-SHA2-128f" +#define NID_SLH_DSA_SHA2_128f 1461 +#define OBJ_SLH_DSA_SHA2_128f OBJ_sigAlgs,21L + +#define SN_SLH_DSA_SHA2_192s "id-slh-dsa-sha2-192s" +#define LN_SLH_DSA_SHA2_192s "SLH-DSA-SHA2-192s" +#define NID_SLH_DSA_SHA2_192s 1462 +#define OBJ_SLH_DSA_SHA2_192s OBJ_sigAlgs,22L + +#define SN_SLH_DSA_SHA2_192f "id-slh-dsa-sha2-192f" +#define LN_SLH_DSA_SHA2_192f "SLH-DSA-SHA2-192f" +#define NID_SLH_DSA_SHA2_192f 1463 +#define OBJ_SLH_DSA_SHA2_192f OBJ_sigAlgs,23L + +#define SN_SLH_DSA_SHA2_256s "id-slh-dsa-sha2-256s" +#define LN_SLH_DSA_SHA2_256s "SLH-DSA-SHA2-256s" +#define NID_SLH_DSA_SHA2_256s 1464 +#define OBJ_SLH_DSA_SHA2_256s OBJ_sigAlgs,24L + +#define SN_SLH_DSA_SHA2_256f "id-slh-dsa-sha2-256f" +#define LN_SLH_DSA_SHA2_256f "SLH-DSA-SHA2-256f" +#define NID_SLH_DSA_SHA2_256f 1465 +#define OBJ_SLH_DSA_SHA2_256f OBJ_sigAlgs,25L + +#define SN_SLH_DSA_SHAKE_128s "id-slh-dsa-shake-128s" +#define LN_SLH_DSA_SHAKE_128s "SLH-DSA-SHAKE-128s" +#define NID_SLH_DSA_SHAKE_128s 1466 +#define OBJ_SLH_DSA_SHAKE_128s OBJ_sigAlgs,26L + +#define SN_SLH_DSA_SHAKE_128f "id-slh-dsa-shake-128f" +#define LN_SLH_DSA_SHAKE_128f "SLH-DSA-SHAKE-128f" +#define NID_SLH_DSA_SHAKE_128f 1467 +#define OBJ_SLH_DSA_SHAKE_128f OBJ_sigAlgs,27L + +#define SN_SLH_DSA_SHAKE_192s "id-slh-dsa-shake-192s" +#define LN_SLH_DSA_SHAKE_192s "SLH-DSA-SHAKE-192s" +#define NID_SLH_DSA_SHAKE_192s 1468 +#define OBJ_SLH_DSA_SHAKE_192s OBJ_sigAlgs,28L + +#define SN_SLH_DSA_SHAKE_192f "id-slh-dsa-shake-192f" +#define LN_SLH_DSA_SHAKE_192f "SLH-DSA-SHAKE-192f" +#define NID_SLH_DSA_SHAKE_192f 1469 +#define OBJ_SLH_DSA_SHAKE_192f OBJ_sigAlgs,29L + +#define SN_SLH_DSA_SHAKE_256s "id-slh-dsa-shake-256s" +#define LN_SLH_DSA_SHAKE_256s "SLH-DSA-SHAKE-256s" +#define NID_SLH_DSA_SHAKE_256s 1470 +#define OBJ_SLH_DSA_SHAKE_256s OBJ_sigAlgs,30L + +#define SN_SLH_DSA_SHAKE_256f "id-slh-dsa-shake-256f" +#define LN_SLH_DSA_SHAKE_256f "SLH-DSA-SHAKE-256f" +#define NID_SLH_DSA_SHAKE_256f 1471 +#define OBJ_SLH_DSA_SHAKE_256f OBJ_sigAlgs,31L + +#define SN_HASH_ML_DSA_44_WITH_SHA512 "id-hash-ml-dsa-44-with-sha512" +#define LN_HASH_ML_DSA_44_WITH_SHA512 "HASH-ML-DSA-44-WITH-SHA512" +#define NID_HASH_ML_DSA_44_WITH_SHA512 1472 +#define OBJ_HASH_ML_DSA_44_WITH_SHA512 OBJ_sigAlgs,32L + +#define SN_HASH_ML_DSA_65_WITH_SHA512 "id-hash-ml-dsa-65-with-sha512" +#define LN_HASH_ML_DSA_65_WITH_SHA512 "HASH-ML-DSA-65-WITH-SHA512" +#define NID_HASH_ML_DSA_65_WITH_SHA512 1473 +#define OBJ_HASH_ML_DSA_65_WITH_SHA512 OBJ_sigAlgs,33L + +#define SN_HASH_ML_DSA_87_WITH_SHA512 "id-hash-ml-dsa-87-with-sha512" +#define LN_HASH_ML_DSA_87_WITH_SHA512 "HASH-ML-DSA-87-WITH-SHA512" +#define NID_HASH_ML_DSA_87_WITH_SHA512 1474 +#define OBJ_HASH_ML_DSA_87_WITH_SHA512 OBJ_sigAlgs,34L + +#define SN_SLH_DSA_SHA2_128s_WITH_SHA256 "id-hash-slh-dsa-sha2-128s-with-sha256" +#define LN_SLH_DSA_SHA2_128s_WITH_SHA256 "SLH-DSA-SHA2-128s-WITH-SHA256" +#define NID_SLH_DSA_SHA2_128s_WITH_SHA256 1475 +#define OBJ_SLH_DSA_SHA2_128s_WITH_SHA256 OBJ_sigAlgs,35L + +#define SN_SLH_DSA_SHA2_128f_WITH_SHA256 "id-hash-slh-dsa-sha2-128f-with-sha256" +#define LN_SLH_DSA_SHA2_128f_WITH_SHA256 "SLH-DSA-SHA2-128f-WITH-SHA256" +#define NID_SLH_DSA_SHA2_128f_WITH_SHA256 1476 +#define OBJ_SLH_DSA_SHA2_128f_WITH_SHA256 OBJ_sigAlgs,36L + +#define SN_SLH_DSA_SHA2_192s_WITH_SHA512 "id-hash-slh-dsa-sha2-192s-with-sha512" +#define LN_SLH_DSA_SHA2_192s_WITH_SHA512 "SLH-DSA-SHA2-192s-WITH-SHA512" +#define NID_SLH_DSA_SHA2_192s_WITH_SHA512 1477 +#define OBJ_SLH_DSA_SHA2_192s_WITH_SHA512 OBJ_sigAlgs,37L + +#define SN_SLH_DSA_SHA2_192f_WITH_SHA512 "id-hash-slh-dsa-sha2-192f-with-sha512" +#define LN_SLH_DSA_SHA2_192f_WITH_SHA512 "SLH-DSA-SHA2-192f-WITH-SHA512" +#define NID_SLH_DSA_SHA2_192f_WITH_SHA512 1478 +#define OBJ_SLH_DSA_SHA2_192f_WITH_SHA512 OBJ_sigAlgs,38L + +#define SN_SLH_DSA_SHA2_256s_WITH_SHA512 "id-hash-slh-dsa-sha2-256s-with-sha512" +#define LN_SLH_DSA_SHA2_256s_WITH_SHA512 "SLH-DSA-SHA2-256s-WITH-SHA512" +#define NID_SLH_DSA_SHA2_256s_WITH_SHA512 1479 +#define OBJ_SLH_DSA_SHA2_256s_WITH_SHA512 OBJ_sigAlgs,39L + +#define SN_SLH_DSA_SHA2_256f_WITH_SHA512 "id-hash-slh-dsa-sha2-256f-with-sha512" +#define LN_SLH_DSA_SHA2_256f_WITH_SHA512 "SLH-DSA-SHA2-256f-WITH-SHA512" +#define NID_SLH_DSA_SHA2_256f_WITH_SHA512 1480 +#define OBJ_SLH_DSA_SHA2_256f_WITH_SHA512 OBJ_sigAlgs,40L + +#define SN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "id-hash-slh-dsa-shake-128s-with-shake128" +#define LN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "SLH-DSA-SHAKE-128s-WITH-SHAKE128" +#define NID_SLH_DSA_SHAKE_128s_WITH_SHAKE128 1481 +#define OBJ_SLH_DSA_SHAKE_128s_WITH_SHAKE128 OBJ_sigAlgs,41L + +#define SN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "id-hash-slh-dsa-shake-128f-with-shake128" +#define LN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "SLH-DSA-SHAKE-128f-WITH-SHAKE128" +#define NID_SLH_DSA_SHAKE_128f_WITH_SHAKE128 1482 +#define OBJ_SLH_DSA_SHAKE_128f_WITH_SHAKE128 OBJ_sigAlgs,42L + +#define SN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "id-hash-slh-dsa-shake-192s-with-shake256" +#define LN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "SLH-DSA-SHAKE-192s-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_192s_WITH_SHAKE256 1483 +#define OBJ_SLH_DSA_SHAKE_192s_WITH_SHAKE256 OBJ_sigAlgs,43L + +#define SN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "id-hash-slh-dsa-shake-192f-with-shake256" +#define LN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "SLH-DSA-SHAKE-192f-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_192f_WITH_SHAKE256 1484 +#define OBJ_SLH_DSA_SHAKE_192f_WITH_SHAKE256 OBJ_sigAlgs,44L + +#define SN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "id-hash-slh-dsa-shake-256s-with-shake256" +#define LN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "SLH-DSA-SHAKE-256s-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_256s_WITH_SHAKE256 1485 +#define OBJ_SLH_DSA_SHAKE_256s_WITH_SHAKE256 OBJ_sigAlgs,45L + +#define SN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "id-hash-slh-dsa-shake-256f-with-shake256" +#define LN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "SLH-DSA-SHAKE-256f-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_256f_WITH_SHAKE256 1486 +#define OBJ_SLH_DSA_SHAKE_256f_WITH_SHAKE256 OBJ_sigAlgs,46L + +#define SN_hold_instruction_code "holdInstructionCode" +#define LN_hold_instruction_code "Hold Instruction Code" +#define NID_hold_instruction_code 430 +#define OBJ_hold_instruction_code OBJ_id_ce,23L + +#define OBJ_holdInstruction OBJ_X9_57,2L + +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_none "Hold Instruction None" +#define NID_hold_instruction_none 431 +#define OBJ_hold_instruction_none OBJ_holdInstruction,1L + +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define NID_hold_instruction_call_issuer 432 +#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L + +#define SN_hold_instruction_reject "holdInstructionReject" +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define NID_hold_instruction_reject 433 +#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L + +#define SN_itu_t_identified_organization "itu-t-identified-organization" +#define NID_itu_t_identified_organization 1264 +#define OBJ_itu_t_identified_organization OBJ_itu_t,4L + +#define SN_etsi "etsi" +#define NID_etsi 1265 +#define OBJ_etsi OBJ_itu_t_identified_organization,0L + +#define SN_electronic_signature_standard "electronic-signature-standard" +#define NID_electronic_signature_standard 1266 +#define OBJ_electronic_signature_standard OBJ_etsi,1733L + +#define SN_ess_attributes "ess-attributes" +#define NID_ess_attributes 1267 +#define OBJ_ess_attributes OBJ_electronic_signature_standard,2L + +#define SN_id_aa_ets_mimeType "id-aa-ets-mimeType" +#define NID_id_aa_ets_mimeType 1268 +#define OBJ_id_aa_ets_mimeType OBJ_ess_attributes,1L + +#define SN_id_aa_ets_longTermValidation "id-aa-ets-longTermValidation" +#define NID_id_aa_ets_longTermValidation 1269 +#define OBJ_id_aa_ets_longTermValidation OBJ_ess_attributes,2L + +#define SN_id_aa_ets_SignaturePolicyDocument "id-aa-ets-SignaturePolicyDocument" +#define NID_id_aa_ets_SignaturePolicyDocument 1270 +#define OBJ_id_aa_ets_SignaturePolicyDocument OBJ_ess_attributes,3L + +#define SN_id_aa_ets_archiveTimestampV3 "id-aa-ets-archiveTimestampV3" +#define NID_id_aa_ets_archiveTimestampV3 1271 +#define OBJ_id_aa_ets_archiveTimestampV3 OBJ_ess_attributes,4L + +#define SN_id_aa_ATSHashIndex "id-aa-ATSHashIndex" +#define NID_id_aa_ATSHashIndex 1272 +#define OBJ_id_aa_ATSHashIndex OBJ_ess_attributes,5L + +#define SN_cades "cades" +#define NID_cades 1273 +#define OBJ_cades OBJ_etsi,19122L + +#define SN_cades_attributes "cades-attributes" +#define NID_cades_attributes 1274 +#define OBJ_cades_attributes OBJ_cades,1L + +#define SN_id_aa_ets_signerAttrV2 "id-aa-ets-signerAttrV2" +#define NID_id_aa_ets_signerAttrV2 1275 +#define OBJ_id_aa_ets_signerAttrV2 OBJ_cades_attributes,1L + +#define SN_id_aa_ets_sigPolicyStore "id-aa-ets-sigPolicyStore" +#define NID_id_aa_ets_sigPolicyStore 1276 +#define OBJ_id_aa_ets_sigPolicyStore OBJ_cades_attributes,3L + +#define SN_id_aa_ATSHashIndex_v2 "id-aa-ATSHashIndex-v2" +#define NID_id_aa_ATSHashIndex_v2 1277 +#define OBJ_id_aa_ATSHashIndex_v2 OBJ_cades_attributes,4L + +#define SN_id_aa_ATSHashIndex_v3 "id-aa-ATSHashIndex-v3" +#define NID_id_aa_ATSHashIndex_v3 1278 +#define OBJ_id_aa_ATSHashIndex_v3 OBJ_cades_attributes,5L + +#define SN_signedAssertion "signedAssertion" +#define NID_signedAssertion 1279 +#define OBJ_signedAssertion OBJ_cades_attributes,6L + +#define SN_data "data" +#define NID_data 434 +#define OBJ_data OBJ_itu_t,9L + +#define SN_pss "pss" +#define NID_pss 435 +#define OBJ_pss OBJ_data,2342L + +#define SN_ucl "ucl" +#define NID_ucl 436 +#define OBJ_ucl OBJ_pss,19200300L + +#define SN_pilot "pilot" +#define NID_pilot 437 +#define OBJ_pilot OBJ_ucl,100L + +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilotAttributeType 438 +#define OBJ_pilotAttributeType OBJ_pilot,1L + +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeSyntax 439 +#define OBJ_pilotAttributeSyntax OBJ_pilot,3L + +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotObjectClass 440 +#define OBJ_pilotObjectClass OBJ_pilot,4L + +#define LN_pilotGroups "pilotGroups" +#define NID_pilotGroups 441 +#define OBJ_pilotGroups OBJ_pilot,10L + +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L + +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_caseIgnoreIA5StringSyntax 443 +#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L + +#define LN_pilotObject "pilotObject" +#define NID_pilotObject 444 +#define OBJ_pilotObject OBJ_pilotObjectClass,3L + +#define LN_pilotPerson "pilotPerson" +#define NID_pilotPerson 445 +#define OBJ_pilotPerson OBJ_pilotObjectClass,4L + +#define SN_account "account" +#define NID_account 446 +#define OBJ_account OBJ_pilotObjectClass,5L + +#define SN_document "document" +#define NID_document 447 +#define OBJ_document OBJ_pilotObjectClass,6L + +#define SN_room "room" +#define NID_room 448 +#define OBJ_room OBJ_pilotObjectClass,7L + +#define LN_documentSeries "documentSeries" +#define NID_documentSeries 449 +#define OBJ_documentSeries OBJ_pilotObjectClass,9L + +#define SN_Domain "domain" +#define LN_Domain "Domain" +#define NID_Domain 392 +#define OBJ_Domain OBJ_pilotObjectClass,13L + +#define LN_rFC822localPart "rFC822localPart" +#define NID_rFC822localPart 450 +#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L + +#define LN_dNSDomain "dNSDomain" +#define NID_dNSDomain 451 +#define OBJ_dNSDomain OBJ_pilotObjectClass,15L + +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_domainRelatedObject 452 +#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L + +#define LN_friendlyCountry "friendlyCountry" +#define NID_friendlyCountry 453 +#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L + +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_simpleSecurityObject 454 +#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L + +#define LN_pilotOrganization "pilotOrganization" +#define NID_pilotOrganization 455 +#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L + +#define LN_pilotDSA "pilotDSA" +#define NID_pilotDSA 456 +#define OBJ_pilotDSA OBJ_pilotObjectClass,21L + +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_qualityLabelledData 457 +#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L + +#define SN_userId "UID" +#define LN_userId "userId" +#define NID_userId 458 +#define OBJ_userId OBJ_pilotAttributeType,1L + +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_textEncodedORAddress 459 +#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L + +#define SN_rfc822Mailbox "mail" +#define LN_rfc822Mailbox "rfc822Mailbox" +#define NID_rfc822Mailbox 460 +#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L + +#define SN_info "info" +#define NID_info 461 +#define OBJ_info OBJ_pilotAttributeType,4L + +#define LN_favouriteDrink "favouriteDrink" +#define NID_favouriteDrink 462 +#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L + +#define LN_roomNumber "roomNumber" +#define NID_roomNumber 463 +#define OBJ_roomNumber OBJ_pilotAttributeType,6L + +#define SN_photo "photo" +#define NID_photo 464 +#define OBJ_photo OBJ_pilotAttributeType,7L + +#define LN_userClass "userClass" +#define NID_userClass 465 +#define OBJ_userClass OBJ_pilotAttributeType,8L + +#define SN_host "host" +#define NID_host 466 +#define OBJ_host OBJ_pilotAttributeType,9L + +#define SN_manager "manager" +#define NID_manager 467 +#define OBJ_manager OBJ_pilotAttributeType,10L + +#define LN_documentIdentifier "documentIdentifier" +#define NID_documentIdentifier 468 +#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L + +#define LN_documentTitle "documentTitle" +#define NID_documentTitle 469 +#define OBJ_documentTitle OBJ_pilotAttributeType,12L + +#define LN_documentVersion "documentVersion" +#define NID_documentVersion 470 +#define OBJ_documentVersion OBJ_pilotAttributeType,13L + +#define LN_documentAuthor "documentAuthor" +#define NID_documentAuthor 471 +#define OBJ_documentAuthor OBJ_pilotAttributeType,14L + +#define LN_documentLocation "documentLocation" +#define NID_documentLocation 472 +#define OBJ_documentLocation OBJ_pilotAttributeType,15L + +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_homeTelephoneNumber 473 +#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L + +#define SN_secretary "secretary" +#define NID_secretary 474 +#define OBJ_secretary OBJ_pilotAttributeType,21L + +#define LN_otherMailbox "otherMailbox" +#define NID_otherMailbox 475 +#define OBJ_otherMailbox OBJ_pilotAttributeType,22L + +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_lastModifiedTime 476 +#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L + +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedBy 477 +#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L + +#define SN_domainComponent "DC" +#define LN_domainComponent "domainComponent" +#define NID_domainComponent 391 +#define OBJ_domainComponent OBJ_pilotAttributeType,25L + +#define LN_aRecord "aRecord" +#define NID_aRecord 478 +#define OBJ_aRecord OBJ_pilotAttributeType,26L + +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_pilotAttributeType27 479 +#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L + +#define LN_mXRecord "mXRecord" +#define NID_mXRecord 480 +#define OBJ_mXRecord OBJ_pilotAttributeType,28L + +#define LN_nSRecord "nSRecord" +#define NID_nSRecord 481 +#define OBJ_nSRecord OBJ_pilotAttributeType,29L + +#define LN_sOARecord "sOARecord" +#define NID_sOARecord 482 +#define OBJ_sOARecord OBJ_pilotAttributeType,30L + +#define LN_cNAMERecord "cNAMERecord" +#define NID_cNAMERecord 483 +#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L + +#define LN_associatedDomain "associatedDomain" +#define NID_associatedDomain 484 +#define OBJ_associatedDomain OBJ_pilotAttributeType,37L + +#define LN_associatedName "associatedName" +#define NID_associatedName 485 +#define OBJ_associatedName OBJ_pilotAttributeType,38L + +#define LN_homePostalAddress "homePostalAddress" +#define NID_homePostalAddress 486 +#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L + +#define LN_personalTitle "personalTitle" +#define NID_personalTitle 487 +#define OBJ_personalTitle OBJ_pilotAttributeType,40L + +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L + +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_pagerTelephoneNumber 489 +#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L + +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_friendlyCountryName 490 +#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L + +#define SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#define LN_organizationalStatus "organizationalStatus" +#define NID_organizationalStatus 491 +#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L + +#define LN_janetMailbox "janetMailbox" +#define NID_janetMailbox 492 +#define OBJ_janetMailbox OBJ_pilotAttributeType,46L + +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_mailPreferenceOption 493 +#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L + +#define LN_buildingName "buildingName" +#define NID_buildingName 494 +#define OBJ_buildingName OBJ_pilotAttributeType,48L + +#define LN_dSAQuality "dSAQuality" +#define NID_dSAQuality 495 +#define OBJ_dSAQuality OBJ_pilotAttributeType,49L + +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_singleLevelQuality 496 +#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L + +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_subtreeMinimumQuality 497 +#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L + +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMaximumQuality 498 +#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L + +#define LN_personalSignature "personalSignature" +#define NID_personalSignature 499 +#define OBJ_personalSignature OBJ_pilotAttributeType,53L + +#define LN_dITRedirect "dITRedirect" +#define NID_dITRedirect 500 +#define OBJ_dITRedirect OBJ_pilotAttributeType,54L + +#define SN_audio "audio" +#define NID_audio 501 +#define OBJ_audio OBJ_pilotAttributeType,55L + +#define LN_documentPublisher "documentPublisher" +#define NID_documentPublisher 502 +#define OBJ_documentPublisher OBJ_pilotAttributeType,56L + +#define SN_id_set "id-set" +#define LN_id_set "Secure Electronic Transactions" +#define NID_id_set 512 +#define OBJ_id_set OBJ_international_organizations,42L + +#define SN_set_ctype "set-ctype" +#define LN_set_ctype "content types" +#define NID_set_ctype 513 +#define OBJ_set_ctype OBJ_id_set,0L + +#define SN_set_msgExt "set-msgExt" +#define LN_set_msgExt "message extensions" +#define NID_set_msgExt 514 +#define OBJ_set_msgExt OBJ_id_set,1L + +#define SN_set_attr "set-attr" +#define NID_set_attr 515 +#define OBJ_set_attr OBJ_id_set,3L + +#define SN_set_policy "set-policy" +#define NID_set_policy 516 +#define OBJ_set_policy OBJ_id_set,5L + +#define SN_set_certExt "set-certExt" +#define LN_set_certExt "certificate extensions" +#define NID_set_certExt 517 +#define OBJ_set_certExt OBJ_id_set,7L + +#define SN_set_brand "set-brand" +#define NID_set_brand 518 +#define OBJ_set_brand OBJ_id_set,8L + +#define SN_setct_PANData "setct-PANData" +#define NID_setct_PANData 519 +#define OBJ_setct_PANData OBJ_set_ctype,0L + +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANToken 520 +#define OBJ_setct_PANToken OBJ_set_ctype,1L + +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANOnly 521 +#define OBJ_setct_PANOnly OBJ_set_ctype,2L + +#define SN_setct_OIData "setct-OIData" +#define NID_setct_OIData 522 +#define OBJ_setct_OIData OBJ_set_ctype,3L + +#define SN_setct_PI "setct-PI" +#define NID_setct_PI 523 +#define OBJ_setct_PI OBJ_set_ctype,4L + +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PIData 524 +#define OBJ_setct_PIData OBJ_set_ctype,5L + +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIDataUnsigned 525 +#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L + +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_HODInput 526 +#define OBJ_setct_HODInput OBJ_set_ctype,7L + +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_AuthResBaggage 527 +#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L + +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L + +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevResBaggage 529 +#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L + +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_CapTokenSeq 530 +#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L + +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_PInitResData 531 +#define OBJ_setct_PInitResData OBJ_set_ctype,12L + +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PI_TBS 532 +#define OBJ_setct_PI_TBS OBJ_set_ctype,13L + +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PResData 533 +#define OBJ_setct_PResData OBJ_set_ctype,14L + +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_AuthReqTBS 534 +#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L + +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthResTBS 535 +#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L + +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBSX 536 +#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L + +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthTokenTBS 537 +#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L + +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_CapTokenData 538 +#define OBJ_setct_CapTokenData OBJ_set_ctype,20L + +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenTBS 539 +#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L + +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_AcqCardCodeMsg 540 +#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L + +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AuthRevReqTBS 541 +#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L + +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevResData 542 +#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L + +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResTBS 543 +#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L + +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_CapReqTBS 544 +#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L + +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBSX 545 +#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L + +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapResData 546 +#define OBJ_setct_CapResData OBJ_set_ctype,28L + +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapRevReqTBS 547 +#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L + +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBSX 548 +#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L + +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevResData 549 +#define OBJ_setct_CapRevResData OBJ_set_ctype,31L + +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CredReqTBS 550 +#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L + +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBSX 551 +#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L + +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredResData 552 +#define OBJ_setct_CredResData OBJ_set_ctype,34L + +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredRevReqTBS 553 +#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L + +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBSX 554 +#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L + +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevResData 555 +#define OBJ_setct_CredRevResData OBJ_set_ctype,37L + +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_PCertReqData 556 +#define OBJ_setct_PCertReqData OBJ_set_ctype,38L + +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertResTBS 557 +#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L + +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_BatchAdminReqData 558 +#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L + +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminResData 559 +#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L + +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L + +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L + +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_RegFormResTBS 562 +#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L + +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_CertReqData 563 +#define OBJ_setct_CertReqData OBJ_set_ctype,45L + +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqTBS 564 +#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L + +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertResData 565 +#define OBJ_setct_CertResData OBJ_set_ctype,47L + +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertInqReqTBS 566 +#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L + +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_ErrorTBS 567 +#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L + +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L + +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIUnsignedTBE 569 +#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L + +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_AuthReqTBE 570 +#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L + +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthResTBE 571 +#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L + +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBEX 572 +#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L + +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L + +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_CapTokenTBE 574 +#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L + +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBEX 575 +#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L + +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L + +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AuthRevReqTBE 577 +#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L + +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevResTBE 578 +#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L + +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBEB 579 +#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L + +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_CapReqTBE 580 +#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L + +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBEX 581 +#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L + +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapResTBE 582 +#define OBJ_setct_CapResTBE OBJ_set_ctype,64L + +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapRevReqTBE 583 +#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L + +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBEX 584 +#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L + +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevResTBE 585 +#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L + +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CredReqTBE 586 +#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L + +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBEX 587 +#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L + +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredResTBE 588 +#define OBJ_setct_CredResTBE OBJ_set_ctype,70L + +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredRevReqTBE 589 +#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L + +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBEX 590 +#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L + +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevResTBE 591 +#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L + +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L + +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminResTBE 593 +#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L + +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L + +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_CertReqTBE 595 +#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L + +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBEX 596 +#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L + +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertResTBE 597 +#define OBJ_setct_CertResTBE OBJ_set_ctype,79L + +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CRLNotificationTBS 598 +#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L + +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L + +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_BCIDistributionTBS 600 +#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L + +#define SN_setext_genCrypt "setext-genCrypt" +#define LN_setext_genCrypt "generic cryptogram" +#define NID_setext_genCrypt 601 +#define OBJ_setext_genCrypt OBJ_set_msgExt,1L + +#define SN_setext_miAuth "setext-miAuth" +#define LN_setext_miAuth "merchant initiated auth" +#define NID_setext_miAuth 602 +#define OBJ_setext_miAuth OBJ_set_msgExt,3L + +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_pinSecure 603 +#define OBJ_setext_pinSecure OBJ_set_msgExt,4L + +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinAny 604 +#define OBJ_setext_pinAny OBJ_set_msgExt,5L + +#define SN_setext_track2 "setext-track2" +#define NID_setext_track2 605 +#define OBJ_setext_track2 OBJ_set_msgExt,7L + +#define SN_setext_cv "setext-cv" +#define LN_setext_cv "additional verification" +#define NID_setext_cv 606 +#define OBJ_setext_cv OBJ_set_msgExt,8L + +#define SN_set_policy_root "set-policy-root" +#define NID_set_policy_root 607 +#define OBJ_set_policy_root OBJ_set_policy,0L + +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_setCext_hashedRoot 608 +#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L + +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_certType 609 +#define OBJ_setCext_certType OBJ_set_certExt,1L + +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_merchData 610 +#define OBJ_setCext_merchData OBJ_set_certExt,2L + +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_cCertRequired 611 +#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L + +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_tunneling 612 +#define OBJ_setCext_tunneling OBJ_set_certExt,4L + +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_setExt 613 +#define OBJ_setCext_setExt OBJ_set_certExt,5L + +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setQualf 614 +#define OBJ_setCext_setQualf OBJ_set_certExt,6L + +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_PGWYcapabilities 615 +#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L + +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_TokenIdentifier 616 +#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L + +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_Track2Data 617 +#define OBJ_setCext_Track2Data OBJ_set_certExt,9L + +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_TokenType 618 +#define OBJ_setCext_TokenType OBJ_set_certExt,10L + +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_IssuerCapabilities 619 +#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L + +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setAttr_Cert 620 +#define OBJ_setAttr_Cert OBJ_set_attr,0L + +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define NID_setAttr_PGWYcap 621 +#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L + +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_TokenType 622 +#define OBJ_setAttr_TokenType OBJ_set_attr,2L + +#define SN_setAttr_IssCap "setAttr-IssCap" +#define LN_setAttr_IssCap "issuer capabilities" +#define NID_setAttr_IssCap 623 +#define OBJ_setAttr_IssCap OBJ_set_attr,3L + +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_set_rootKeyThumb 624 +#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L + +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_addPolicy 625 +#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L + +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_setAttr_Token_EMV 626 +#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L + +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_B0Prime 627 +#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L + +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_IssCap_CVM 628 +#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L + +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_T2 629 +#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L + +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_Sig 630 +#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L + +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define NID_setAttr_GenCryptgrm 631 +#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L + +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define LN_setAttr_T2Enc "encrypted track 2" +#define NID_setAttr_T2Enc 632 +#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L + +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define NID_setAttr_T2cleartxt 633 +#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L + +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define LN_setAttr_TokICCsig "ICC or token signature" +#define NID_setAttr_TokICCsig 634 +#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L + +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define LN_setAttr_SecDevSig "secure device signature" +#define NID_setAttr_SecDevSig 635 +#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L + +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_set_brand_IATA_ATA 636 +#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L + +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_Diners 637 +#define OBJ_set_brand_Diners OBJ_set_brand,30L + +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_AmericanExpress 638 +#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L + +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_JCB 639 +#define OBJ_set_brand_JCB OBJ_set_brand,35L + +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_Visa 640 +#define OBJ_set_brand_Visa OBJ_set_brand,4L + +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_MasterCard 641 +#define OBJ_set_brand_MasterCard OBJ_set_brand,5L + +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_Novus 642 +#define OBJ_set_brand_Novus OBJ_set_brand,6011L + +#define SN_des_cdmf "DES-CDMF" +#define LN_des_cdmf "des-cdmf" +#define NID_des_cdmf 643 +#define OBJ_des_cdmf OBJ_rsadsi,3L,10L + +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_rsaOAEPEncryptionSET 644 +#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L + +#define SN_ipsec3 "Oakley-EC2N-3" +#define LN_ipsec3 "ipsec3" +#define NID_ipsec3 749 + +#define SN_ipsec4 "Oakley-EC2N-4" +#define LN_ipsec4 "ipsec4" +#define NID_ipsec4 750 + +#define SN_whirlpool "whirlpool" +#define NID_whirlpool 804 +#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L + +#define SN_cryptopro "cryptopro" +#define NID_cryptopro 805 +#define OBJ_cryptopro OBJ_member_body,643L,2L,2L + +#define SN_cryptocom "cryptocom" +#define NID_cryptocom 806 +#define OBJ_cryptocom OBJ_member_body,643L,2L,9L + +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L + +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L + +#define SN_id_GostR3411_94 "md_gost94" +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define NID_id_GostR3411_94 809 +#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L + +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define NID_id_HMACGostR3411_94 810 +#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L + +#define SN_id_GostR3410_2001 "gost2001" +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define NID_id_GostR3410_2001 811 +#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L + +#define SN_id_GostR3410_94 "gost94" +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define NID_id_GostR3410_94 812 +#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L + +#define SN_id_Gost28147_89 "gost89" +#define LN_id_Gost28147_89 "GOST 28147-89" +#define NID_id_Gost28147_89 813 +#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L + +#define SN_gost89_cnt "gost89-cnt" +#define NID_gost89_cnt 814 + +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#define SN_id_Gost28147_89_MAC "gost-mac" +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define NID_id_Gost28147_89_MAC 815 +#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L + +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define NID_id_GostR3411_94_prf 816 +#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L + +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define NID_id_GostR3410_2001DH 817 +#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L + +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define NID_id_GostR3410_94DH 818 +#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L + +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L + +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L + +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L + +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L + +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L + +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L + +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L + +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L + +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L + +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L + +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L + +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L + +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L + +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L + +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L + +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L + +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L + +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L + +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L + +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L + +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L + +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L + +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L + +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L + +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_94_a 845 +#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L + +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_aBis 846 +#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L + +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_b 847 +#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L + +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_bBis 848 +#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L + +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define NID_id_Gost28147_89_cc 849 +#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L + +#define SN_id_GostR3410_94_cc "gost94cc" +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define NID_id_GostR3410_94_cc 850 +#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L + +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define NID_id_GostR3410_2001_cc 851 +#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L + +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L + +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L + +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L + +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_magma_ctr_acpkm "magma-ctr-acpkm" +#define NID_magma_ctr_acpkm 1174 +#define OBJ_magma_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_magma_ctr_acpkm_omac "magma-ctr-acpkm-omac" +#define NID_magma_ctr_acpkm_omac 1175 +#define OBJ_magma_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_kuznyechik_ctr_acpkm "kuznyechik-ctr-acpkm" +#define NID_kuznyechik_ctr_acpkm 1177 +#define OBJ_kuznyechik_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_kuznyechik_ctr_acpkm_omac "kuznyechik-ctr-acpkm-omac" +#define NID_kuznyechik_ctr_acpkm_omac 1178 +#define OBJ_kuznyechik_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_magma_kexp15 "magma-kexp15" +#define NID_magma_kexp15 1181 +#define OBJ_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_kuznyechik_kexp15 "kuznyechik-kexp15" +#define NID_kuznyechik_kexp15 1183 +#define OBJ_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_OGRNIP "OGRNIP" +#define LN_OGRNIP "OGRNIP" +#define NID_OGRNIP 1226 +#define OBJ_OGRNIP OBJ_member_body,643L,100L,5L + +#define SN_subjectSignTool "subjectSignTool" +#define LN_subjectSignTool "Signing Tool of Subject" +#define NID_subjectSignTool 1007 +#define OBJ_subjectSignTool OBJ_member_body,643L,100L,111L + +#define SN_issuerSignTool "issuerSignTool" +#define LN_issuerSignTool "Signing Tool of Issuer" +#define NID_issuerSignTool 1008 +#define OBJ_issuerSignTool OBJ_member_body,643L,100L,112L + +#define SN_classSignTool "classSignTool" +#define LN_classSignTool "Class of Signing Tool" +#define NID_classSignTool 1227 +#define OBJ_classSignTool OBJ_member_body,643L,100L,113L + +#define SN_classSignToolKC1 "classSignToolKC1" +#define LN_classSignToolKC1 "Class of Signing Tool KC1" +#define NID_classSignToolKC1 1228 +#define OBJ_classSignToolKC1 OBJ_member_body,643L,100L,113L,1L + +#define SN_classSignToolKC2 "classSignToolKC2" +#define LN_classSignToolKC2 "Class of Signing Tool KC2" +#define NID_classSignToolKC2 1229 +#define OBJ_classSignToolKC2 OBJ_member_body,643L,100L,113L,2L + +#define SN_classSignToolKC3 "classSignToolKC3" +#define LN_classSignToolKC3 "Class of Signing Tool KC3" +#define NID_classSignToolKC3 1230 +#define OBJ_classSignToolKC3 OBJ_member_body,643L,100L,113L,3L + +#define SN_classSignToolKB1 "classSignToolKB1" +#define LN_classSignToolKB1 "Class of Signing Tool KB1" +#define NID_classSignToolKB1 1231 +#define OBJ_classSignToolKB1 OBJ_member_body,643L,100L,113L,4L + +#define SN_classSignToolKB2 "classSignToolKB2" +#define LN_classSignToolKB2 "Class of Signing Tool KB2" +#define NID_classSignToolKB2 1232 +#define OBJ_classSignToolKB2 OBJ_member_body,643L,100L,113L,5L + +#define SN_classSignToolKA1 "classSignToolKA1" +#define LN_classSignToolKA1 "Class of Signing Tool KA1" +#define NID_classSignToolKA1 1233 +#define OBJ_classSignToolKA1 OBJ_member_body,643L,100L,113L,6L + +#define SN_kuznyechik_ecb "kuznyechik-ecb" +#define NID_kuznyechik_ecb 1012 + +#define SN_kuznyechik_ctr "kuznyechik-ctr" +#define NID_kuznyechik_ctr 1013 + +#define SN_kuznyechik_ofb "kuznyechik-ofb" +#define NID_kuznyechik_ofb 1014 + +#define SN_kuznyechik_cbc "kuznyechik-cbc" +#define NID_kuznyechik_cbc 1015 + +#define SN_kuznyechik_cfb "kuznyechik-cfb" +#define NID_kuznyechik_cfb 1016 + +#define SN_kuznyechik_mac "kuznyechik-mac" +#define NID_kuznyechik_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define LN_camellia_128_cbc "camellia-128-cbc" +#define NID_camellia_128_cbc 751 +#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L + +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define LN_camellia_192_cbc "camellia-192-cbc" +#define NID_camellia_192_cbc 752 +#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L + +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define LN_camellia_256_cbc "camellia-256-cbc" +#define NID_camellia_256_cbc 753 +#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L + +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_id_camellia128_wrap 907 +#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L + +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia192_wrap 908 +#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L + +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia256_wrap 909 +#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L + +#define OBJ_ntt_ds 0L,3L,4401L,5L + +#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L + +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define LN_camellia_128_ecb "camellia-128-ecb" +#define NID_camellia_128_ecb 754 +#define OBJ_camellia_128_ecb OBJ_camellia,1L + +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define NID_camellia_128_ofb128 766 +#define OBJ_camellia_128_ofb128 OBJ_camellia,3L + +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define NID_camellia_128_cfb128 757 +#define OBJ_camellia_128_cfb128 OBJ_camellia,4L + +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define LN_camellia_192_ecb "camellia-192-ecb" +#define NID_camellia_192_ecb 755 +#define OBJ_camellia_192_ecb OBJ_camellia,21L + +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define NID_camellia_192_ofb128 767 +#define OBJ_camellia_192_ofb128 OBJ_camellia,23L + +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define NID_camellia_192_cfb128 758 +#define OBJ_camellia_192_cfb128 OBJ_camellia,24L + +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define LN_camellia_256_ecb "camellia-256-ecb" +#define NID_camellia_256_ecb 756 +#define OBJ_camellia_256_ecb OBJ_camellia,41L + +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define NID_camellia_256_ofb128 768 +#define OBJ_camellia_256_ofb128 OBJ_camellia,43L + +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define NID_camellia_256_cfb128 759 +#define OBJ_camellia_256_cfb128 OBJ_camellia,44L + +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define NID_camellia_128_cfb1 760 + +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define NID_camellia_192_cfb1 761 + +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define NID_camellia_256_cfb1 762 + +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define NID_camellia_128_cfb8 763 + +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define NID_camellia_192_cfb8 764 + +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define NID_camellia_256_cfb8 765 + +#define OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#define SN_kisa "KISA" +#define LN_kisa "kisa" +#define NID_kisa 773 +#define OBJ_kisa OBJ_member_body,410L,200004L + +#define SN_seed_ecb "SEED-ECB" +#define LN_seed_ecb "seed-ecb" +#define NID_seed_ecb 776 +#define OBJ_seed_ecb OBJ_kisa,1L,3L + +#define SN_seed_cbc "SEED-CBC" +#define LN_seed_cbc "seed-cbc" +#define NID_seed_cbc 777 +#define OBJ_seed_cbc OBJ_kisa,1L,4L + +#define SN_seed_cfb128 "SEED-CFB" +#define LN_seed_cfb128 "seed-cfb" +#define NID_seed_cfb128 779 +#define OBJ_seed_cfb128 OBJ_kisa,1L,5L + +#define SN_seed_ofb128 "SEED-OFB" +#define LN_seed_ofb128 "seed-ofb" +#define NID_seed_ofb128 778 +#define OBJ_seed_ofb128 OBJ_kisa,1L,6L + +#define SN_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#define SN_sm4_gcm "SM4-GCM" +#define LN_sm4_gcm "sm4-gcm" +#define NID_sm4_gcm 1248 +#define OBJ_sm4_gcm OBJ_sm_scheme,104L,8L + +#define SN_sm4_ccm "SM4-CCM" +#define LN_sm4_ccm "sm4-ccm" +#define NID_sm4_ccm 1249 +#define OBJ_sm4_ccm OBJ_sm_scheme,104L,9L + +#define SN_sm4_xts "SM4-XTS" +#define LN_sm4_xts "sm4-xts" +#define NID_sm4_xts 1290 +#define OBJ_sm4_xts OBJ_sm_scheme,104L,10L + +#define SN_hmac "HMAC" +#define LN_hmac "hmac" +#define NID_hmac 855 + +#define SN_cmac "CMAC" +#define LN_cmac "cmac" +#define NID_cmac 894 + +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define NID_rc4_hmac_md5 915 + +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define NID_aes_128_cbc_hmac_sha1 916 + +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define NID_aes_192_cbc_hmac_sha1 917 + +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define NID_aes_256_cbc_hmac_sha1 918 + +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define NID_aes_128_cbc_hmac_sha256 948 + +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define NID_aes_192_cbc_hmac_sha256 949 + +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define NID_aes_256_cbc_hmac_sha256 950 + +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#define SN_aes_128_cbc_hmac_sha1_etm "AES-128-CBC-HMAC-SHA1-ETM" +#define LN_aes_128_cbc_hmac_sha1_etm "aes-128-cbc-hmac-sha1-etm" +#define NID_aes_128_cbc_hmac_sha1_etm 1487 + +#define SN_aes_192_cbc_hmac_sha1_etm "AES-192-CBC-HMAC-SHA1-ETM" +#define LN_aes_192_cbc_hmac_sha1_etm "aes-192-cbc-hmac-sha1-etm" +#define NID_aes_192_cbc_hmac_sha1_etm 1488 + +#define SN_aes_256_cbc_hmac_sha1_etm "AES-256-CBC-HMAC-SHA1-ETM" +#define LN_aes_256_cbc_hmac_sha1_etm "aes-256-cbc-hmac-sha1-etm" +#define NID_aes_256_cbc_hmac_sha1_etm 1489 + +#define SN_aes_128_cbc_hmac_sha256_etm "AES-128-CBC-HMAC-SHA256-ETM" +#define LN_aes_128_cbc_hmac_sha256_etm "aes-128-cbc-hmac-sha256-etm" +#define NID_aes_128_cbc_hmac_sha256_etm 1490 + +#define SN_aes_192_cbc_hmac_sha256_etm "AES-192-CBC-HMAC-SHA256-ETM" +#define LN_aes_192_cbc_hmac_sha256_etm "aes-192-cbc-hmac-sha256-etm" +#define NID_aes_192_cbc_hmac_sha256_etm 1491 + +#define SN_aes_256_cbc_hmac_sha256_etm "AES-256-CBC-HMAC-SHA256-ETM" +#define LN_aes_256_cbc_hmac_sha256_etm "aes-256-cbc-hmac-sha256-etm" +#define NID_aes_256_cbc_hmac_sha256_etm 1492 + +#define SN_aes_128_cbc_hmac_sha512_etm "AES-128-CBC-HMAC-SHA512-ETM" +#define LN_aes_128_cbc_hmac_sha512_etm "aes-128-cbc-hmac-sha512-etm" +#define NID_aes_128_cbc_hmac_sha512_etm 1493 + +#define SN_aes_192_cbc_hmac_sha512_etm "AES-192-CBC-HMAC-SHA512-ETM" +#define LN_aes_192_cbc_hmac_sha512_etm "aes-192-cbc-hmac-sha512-etm" +#define NID_aes_192_cbc_hmac_sha512_etm 1494 + +#define SN_aes_256_cbc_hmac_sha512_etm "AES-256-CBC-HMAC-SHA512-ETM" +#define LN_aes_256_cbc_hmac_sha512_etm "aes-256-cbc-hmac-sha512-etm" +#define NID_aes_256_cbc_hmac_sha512_etm 1495 + +#define SN_dhpublicnumber "dhpublicnumber" +#define LN_dhpublicnumber "X9.42 DH" +#define NID_dhpublicnumber 920 +#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L + +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_brainpoolP160r1 921 +#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L + +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160t1 922 +#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L + +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP192r1 923 +#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L + +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192t1 924 +#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L + +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP224r1 925 +#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L + +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224t1 926 +#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L + +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP256r1 927 +#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L + +#define SN_brainpoolP256r1tls13 "brainpoolP256r1tls13" +#define NID_brainpoolP256r1tls13 1285 + +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256t1 928 +#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L + +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP320r1 929 +#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L + +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320t1 930 +#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L + +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP384r1 931 +#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L + +#define SN_brainpoolP384r1tls13 "brainpoolP384r1tls13" +#define NID_brainpoolP384r1tls13 1286 + +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384t1 932 +#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L + +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP512r1 933 +#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L + +#define SN_brainpoolP512r1tls13 "brainpoolP512r1tls13" +#define NID_brainpoolP512r1tls13 1287 + +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512t1 934 +#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L + +#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L + +#define OBJ_secg_scheme OBJ_certicom_arc,1L + +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L + +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L + +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L + +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L + +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L + +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L + +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L + +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L + +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L + +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L + +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dh_std_kdf 946 + +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_cofactor_kdf 947 + +#define SN_ct_precert_scts "ct_precert_scts" +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define NID_ct_precert_scts 951 +#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L + +#define SN_ct_precert_poison "ct_precert_poison" +#define LN_ct_precert_poison "CT Precertificate Poison" +#define NID_ct_precert_poison 952 +#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L + +#define SN_ct_precert_signer "ct_precert_signer" +#define LN_ct_precert_signer "CT Precertificate Signer" +#define NID_ct_precert_signer 953 +#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L + +#define SN_ct_cert_scts "ct_cert_scts" +#define LN_ct_cert_scts "CT Certificate SCTs" +#define NID_ct_cert_scts 954 +#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L + +#define SN_jurisdictionLocalityName "jurisdictionL" +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define NID_jurisdictionLocalityName 955 +#define OBJ_jurisdictionLocalityName OBJ_ms_corp,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName OBJ_ms_corp,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName OBJ_ms_corp,60L,2L,1L,3L + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_sshkdf "SSHKDF" +#define LN_sshkdf "sshkdf" +#define NID_sshkdf 1203 + +#define SN_sskdf "SSKDF" +#define LN_sskdf "sskdf" +#define NID_sskdf 1205 + +#define SN_x942kdf "X942KDF" +#define LN_x942kdf "x942kdf" +#define NID_x942kdf 1207 + +#define SN_x963kdf "X963KDF" +#define LN_x963kdf "x963kdf" +#define NID_x963kdf 1206 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_gost18 "KxGOST18" +#define LN_kx_gost18 "kx-gost18" +#define NID_kx_gost18 1218 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_modp_1536 "modp_1536" +#define NID_modp_1536 1212 + +#define SN_modp_2048 "modp_2048" +#define NID_modp_2048 1213 + +#define SN_modp_3072 "modp_3072" +#define NID_modp_3072 1214 + +#define SN_modp_4096 "modp_4096" +#define NID_modp_4096 1215 + +#define SN_modp_6144 "modp_6144" +#define NID_modp_6144 1216 + +#define SN_modp_8192 "modp_8192" +#define NID_modp_8192 1217 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L + +#define SN_aes_128_siv "AES-128-SIV" +#define LN_aes_128_siv "aes-128-siv" +#define NID_aes_128_siv 1198 + +#define SN_aes_192_siv "AES-192-SIV" +#define LN_aes_192_siv "aes-192-siv" +#define NID_aes_192_siv 1199 + +#define SN_aes_256_siv "AES-256-SIV" +#define LN_aes_256_siv "aes-256-siv" +#define NID_aes_256_siv 1200 + +#define SN_oracle "oracle-organization" +#define LN_oracle "Oracle organization" +#define NID_oracle 1282 +#define OBJ_oracle OBJ_joint_iso_itu_t,16L,840L,1L,113894L + +#define SN_oracle_jdk_trustedkeyusage "oracle-jdk-trustedkeyusage" +#define LN_oracle_jdk_trustedkeyusage "Trusted key usage (Oracle)" +#define NID_oracle_jdk_trustedkeyusage 1283 +#define OBJ_oracle_jdk_trustedkeyusage OBJ_oracle,746875L,1L,1L + +#define SN_brotli "brotli" +#define LN_brotli "Brotli compression" +#define NID_brotli 1288 + +#define SN_zstd "zstd" +#define LN_zstd "Zstandard compression" +#define NID_zstd 1289 + +#define SN_tcg "tcg" +#define LN_tcg "Trusted Computing Group" +#define NID_tcg 1324 +#define OBJ_tcg 2L,23L,133L + +#define SN_tcg_tcpaSpecVersion "tcg-tcpaSpecVersion" +#define NID_tcg_tcpaSpecVersion 1325 +#define OBJ_tcg_tcpaSpecVersion OBJ_tcg,1L + +#define SN_tcg_attribute "tcg-attribute" +#define LN_tcg_attribute "Trusted Computing Group Attributes" +#define NID_tcg_attribute 1326 +#define OBJ_tcg_attribute OBJ_tcg,2L + +#define SN_tcg_protocol "tcg-protocol" +#define LN_tcg_protocol "Trusted Computing Group Protocols" +#define NID_tcg_protocol 1327 +#define OBJ_tcg_protocol OBJ_tcg,3L + +#define SN_tcg_algorithm "tcg-algorithm" +#define LN_tcg_algorithm "Trusted Computing Group Algorithms" +#define NID_tcg_algorithm 1328 +#define OBJ_tcg_algorithm OBJ_tcg,4L + +#define SN_tcg_platformClass "tcg-platformClass" +#define LN_tcg_platformClass "Trusted Computing Group Platform Classes" +#define NID_tcg_platformClass 1329 +#define OBJ_tcg_platformClass OBJ_tcg,5L + +#define SN_tcg_ce "tcg-ce" +#define LN_tcg_ce "Trusted Computing Group Certificate Extensions" +#define NID_tcg_ce 1330 +#define OBJ_tcg_ce OBJ_tcg,6L + +#define SN_tcg_kp "tcg-kp" +#define LN_tcg_kp "Trusted Computing Group Key Purposes" +#define NID_tcg_kp 1331 +#define OBJ_tcg_kp OBJ_tcg,8L + +#define SN_tcg_ca "tcg-ca" +#define LN_tcg_ca "Trusted Computing Group Certificate Policies" +#define NID_tcg_ca 1332 +#define OBJ_tcg_ca OBJ_tcg,11L + +#define SN_tcg_address "tcg-address" +#define LN_tcg_address "Trusted Computing Group Address Formats" +#define NID_tcg_address 1333 +#define OBJ_tcg_address OBJ_tcg,17L + +#define SN_tcg_registry "tcg-registry" +#define LN_tcg_registry "Trusted Computing Group Registry" +#define NID_tcg_registry 1334 +#define OBJ_tcg_registry OBJ_tcg,18L + +#define SN_tcg_traits "tcg-traits" +#define LN_tcg_traits "Trusted Computing Group Traits" +#define NID_tcg_traits 1335 +#define OBJ_tcg_traits OBJ_tcg,19L + +#define SN_tcg_common "tcg-common" +#define LN_tcg_common "Trusted Computing Group Common" +#define NID_tcg_common 1336 +#define OBJ_tcg_common OBJ_tcg_platformClass,1L + +#define SN_tcg_at_platformManufacturerStr "tcg-at-platformManufacturerStr" +#define LN_tcg_at_platformManufacturerStr "TCG Platform Manufacturer String" +#define NID_tcg_at_platformManufacturerStr 1337 +#define OBJ_tcg_at_platformManufacturerStr OBJ_tcg_common,1L + +#define SN_tcg_at_platformManufacturerId "tcg-at-platformManufacturerId" +#define LN_tcg_at_platformManufacturerId "TCG Platform Manufacturer ID" +#define NID_tcg_at_platformManufacturerId 1338 +#define OBJ_tcg_at_platformManufacturerId OBJ_tcg_common,2L + +#define SN_tcg_at_platformConfigUri "tcg-at-platformConfigUri" +#define LN_tcg_at_platformConfigUri "TCG Platform Configuration URI" +#define NID_tcg_at_platformConfigUri 1339 +#define OBJ_tcg_at_platformConfigUri OBJ_tcg_common,3L + +#define SN_tcg_at_platformModel "tcg-at-platformModel" +#define LN_tcg_at_platformModel "TCG Platform Model" +#define NID_tcg_at_platformModel 1340 +#define OBJ_tcg_at_platformModel OBJ_tcg_common,4L + +#define SN_tcg_at_platformVersion "tcg-at-platformVersion" +#define LN_tcg_at_platformVersion "TCG Platform Version" +#define NID_tcg_at_platformVersion 1341 +#define OBJ_tcg_at_platformVersion OBJ_tcg_common,5L + +#define SN_tcg_at_platformSerial "tcg-at-platformSerial" +#define LN_tcg_at_platformSerial "TCG Platform Serial Number" +#define NID_tcg_at_platformSerial 1342 +#define OBJ_tcg_at_platformSerial OBJ_tcg_common,6L + +#define SN_tcg_at_platformConfiguration "tcg-at-platformConfiguration" +#define LN_tcg_at_platformConfiguration "TCG Platform Configuration" +#define NID_tcg_at_platformConfiguration 1343 +#define OBJ_tcg_at_platformConfiguration OBJ_tcg_common,7L + +#define SN_tcg_at_platformIdentifier "tcg-at-platformIdentifier" +#define LN_tcg_at_platformIdentifier "TCG Platform Identifier" +#define NID_tcg_at_platformIdentifier 1344 +#define OBJ_tcg_at_platformIdentifier OBJ_tcg_common,8L + +#define SN_tcg_at_tpmManufacturer "tcg-at-tpmManufacturer" +#define LN_tcg_at_tpmManufacturer "TPM Manufacturer" +#define NID_tcg_at_tpmManufacturer 1345 +#define OBJ_tcg_at_tpmManufacturer OBJ_tcg_attribute,1L + +#define SN_tcg_at_tpmModel "tcg-at-tpmModel" +#define LN_tcg_at_tpmModel "TPM Model" +#define NID_tcg_at_tpmModel 1346 +#define OBJ_tcg_at_tpmModel OBJ_tcg_attribute,2L + +#define SN_tcg_at_tpmVersion "tcg-at-tpmVersion" +#define LN_tcg_at_tpmVersion "TPM Version" +#define NID_tcg_at_tpmVersion 1347 +#define OBJ_tcg_at_tpmVersion OBJ_tcg_attribute,3L + +#define SN_tcg_at_securityQualities "tcg-at-securityQualities" +#define LN_tcg_at_securityQualities "Security Qualities" +#define NID_tcg_at_securityQualities 1348 +#define OBJ_tcg_at_securityQualities OBJ_tcg_attribute,10L + +#define SN_tcg_at_tpmProtectionProfile "tcg-at-tpmProtectionProfile" +#define LN_tcg_at_tpmProtectionProfile "TPM Protection Profile" +#define NID_tcg_at_tpmProtectionProfile 1349 +#define OBJ_tcg_at_tpmProtectionProfile OBJ_tcg_attribute,11L + +#define SN_tcg_at_tpmSecurityTarget "tcg-at-tpmSecurityTarget" +#define LN_tcg_at_tpmSecurityTarget "TPM Security Target" +#define NID_tcg_at_tpmSecurityTarget 1350 +#define OBJ_tcg_at_tpmSecurityTarget OBJ_tcg_attribute,12L + +#define SN_tcg_at_tbbProtectionProfile "tcg-at-tbbProtectionProfile" +#define LN_tcg_at_tbbProtectionProfile "TBB Protection Profile" +#define NID_tcg_at_tbbProtectionProfile 1351 +#define OBJ_tcg_at_tbbProtectionProfile OBJ_tcg_attribute,13L + +#define SN_tcg_at_tbbSecurityTarget "tcg-at-tbbSecurityTarget" +#define LN_tcg_at_tbbSecurityTarget "TBB Security Target" +#define NID_tcg_at_tbbSecurityTarget 1352 +#define OBJ_tcg_at_tbbSecurityTarget OBJ_tcg_attribute,14L + +#define SN_tcg_at_tpmIdLabel "tcg-at-tpmIdLabel" +#define LN_tcg_at_tpmIdLabel "TPM ID Label" +#define NID_tcg_at_tpmIdLabel 1353 +#define OBJ_tcg_at_tpmIdLabel OBJ_tcg_attribute,15L + +#define SN_tcg_at_tpmSpecification "tcg-at-tpmSpecification" +#define LN_tcg_at_tpmSpecification "TPM Specification" +#define NID_tcg_at_tpmSpecification 1354 +#define OBJ_tcg_at_tpmSpecification OBJ_tcg_attribute,16L + +#define SN_tcg_at_tcgPlatformSpecification "tcg-at-tcgPlatformSpecification" +#define LN_tcg_at_tcgPlatformSpecification "TPM Platform Specification" +#define NID_tcg_at_tcgPlatformSpecification 1355 +#define OBJ_tcg_at_tcgPlatformSpecification OBJ_tcg_attribute,17L + +#define SN_tcg_at_tpmSecurityAssertions "tcg-at-tpmSecurityAssertions" +#define LN_tcg_at_tpmSecurityAssertions "TPM Security Assertions" +#define NID_tcg_at_tpmSecurityAssertions 1356 +#define OBJ_tcg_at_tpmSecurityAssertions OBJ_tcg_attribute,18L + +#define SN_tcg_at_tbbSecurityAssertions "tcg-at-tbbSecurityAssertions" +#define LN_tcg_at_tbbSecurityAssertions "TBB Security Assertions" +#define NID_tcg_at_tbbSecurityAssertions 1357 +#define OBJ_tcg_at_tbbSecurityAssertions OBJ_tcg_attribute,19L + +#define SN_tcg_at_tcgCredentialSpecification "tcg-at-tcgCredentialSpecification" +#define LN_tcg_at_tcgCredentialSpecification "TCG Credential Specification" +#define NID_tcg_at_tcgCredentialSpecification 1358 +#define OBJ_tcg_at_tcgCredentialSpecification OBJ_tcg_attribute,23L + +#define SN_tcg_at_tcgCredentialType "tcg-at-tcgCredentialType" +#define LN_tcg_at_tcgCredentialType "TCG Credential Type" +#define NID_tcg_at_tcgCredentialType 1359 +#define OBJ_tcg_at_tcgCredentialType OBJ_tcg_attribute,25L + +#define SN_tcg_at_previousPlatformCertificates "tcg-at-previousPlatformCertificates" +#define LN_tcg_at_previousPlatformCertificates "TCG Previous Platform Certificates" +#define NID_tcg_at_previousPlatformCertificates 1360 +#define OBJ_tcg_at_previousPlatformCertificates OBJ_tcg_attribute,26L + +#define SN_tcg_at_tbbSecurityAssertions_v3 "tcg-at-tbbSecurityAssertions-v3" +#define LN_tcg_at_tbbSecurityAssertions_v3 "TCG TBB Security Assertions V3" +#define NID_tcg_at_tbbSecurityAssertions_v3 1361 +#define OBJ_tcg_at_tbbSecurityAssertions_v3 OBJ_tcg_attribute,27L + +#define SN_tcg_at_cryptographicAnchors "tcg-at-cryptographicAnchors" +#define LN_tcg_at_cryptographicAnchors "TCG Cryptographic Anchors" +#define NID_tcg_at_cryptographicAnchors 1362 +#define OBJ_tcg_at_cryptographicAnchors OBJ_tcg_attribute,28L + +#define SN_tcg_at_platformConfiguration_v1 "tcg-at-platformConfiguration-v1" +#define LN_tcg_at_platformConfiguration_v1 "Platform Configuration Version 1" +#define NID_tcg_at_platformConfiguration_v1 1363 +#define OBJ_tcg_at_platformConfiguration_v1 OBJ_tcg_at_platformConfiguration,1L + +#define SN_tcg_at_platformConfiguration_v2 "tcg-at-platformConfiguration-v2" +#define LN_tcg_at_platformConfiguration_v2 "Platform Configuration Version 2" +#define NID_tcg_at_platformConfiguration_v2 1364 +#define OBJ_tcg_at_platformConfiguration_v2 OBJ_tcg_at_platformConfiguration,2L + +#define SN_tcg_at_platformConfiguration_v3 "tcg-at-platformConfiguration-v3" +#define LN_tcg_at_platformConfiguration_v3 "Platform Configuration Version 3" +#define NID_tcg_at_platformConfiguration_v3 1365 +#define OBJ_tcg_at_platformConfiguration_v3 OBJ_tcg_at_platformConfiguration,3L + +#define SN_tcg_at_platformConfigUri_v3 "tcg-at-platformConfigUri-v3" +#define LN_tcg_at_platformConfigUri_v3 "Platform Configuration URI Version 3" +#define NID_tcg_at_platformConfigUri_v3 1366 +#define OBJ_tcg_at_platformConfigUri_v3 OBJ_tcg_at_platformConfiguration,4L + +#define SN_tcg_algorithm_null "tcg-algorithm-null" +#define LN_tcg_algorithm_null "TCG NULL Algorithm" +#define NID_tcg_algorithm_null 1367 +#define OBJ_tcg_algorithm_null OBJ_tcg_algorithm,1L + +#define SN_tcg_kp_EKCertificate "tcg-kp-EKCertificate" +#define LN_tcg_kp_EKCertificate "Endorsement Key Certificate" +#define NID_tcg_kp_EKCertificate 1368 +#define OBJ_tcg_kp_EKCertificate OBJ_tcg_kp,1L + +#define SN_tcg_kp_PlatformAttributeCertificate "tcg-kp-PlatformAttributeCertificate" +#define LN_tcg_kp_PlatformAttributeCertificate "Platform Attribute Certificate" +#define NID_tcg_kp_PlatformAttributeCertificate 1369 +#define OBJ_tcg_kp_PlatformAttributeCertificate OBJ_tcg_kp,2L + +#define SN_tcg_kp_AIKCertificate "tcg-kp-AIKCertificate" +#define LN_tcg_kp_AIKCertificate "Attestation Identity Key Certificate" +#define NID_tcg_kp_AIKCertificate 1370 +#define OBJ_tcg_kp_AIKCertificate OBJ_tcg_kp,3L + +#define SN_tcg_kp_PlatformKeyCertificate "tcg-kp-PlatformKeyCertificate" +#define LN_tcg_kp_PlatformKeyCertificate "Platform Key Certificate" +#define NID_tcg_kp_PlatformKeyCertificate 1371 +#define OBJ_tcg_kp_PlatformKeyCertificate OBJ_tcg_kp,4L + +#define SN_tcg_kp_DeltaPlatformAttributeCertificate "tcg-kp-DeltaPlatformAttributeCertificate" +#define LN_tcg_kp_DeltaPlatformAttributeCertificate "Delta Platform Attribute Certificate" +#define NID_tcg_kp_DeltaPlatformAttributeCertificate 1372 +#define OBJ_tcg_kp_DeltaPlatformAttributeCertificate OBJ_tcg_kp,5L + +#define SN_tcg_kp_DeltaPlatformKeyCertificate "tcg-kp-DeltaPlatformKeyCertificate" +#define LN_tcg_kp_DeltaPlatformKeyCertificate "Delta Platform Key Certificate" +#define NID_tcg_kp_DeltaPlatformKeyCertificate 1373 +#define OBJ_tcg_kp_DeltaPlatformKeyCertificate OBJ_tcg_kp,6L + +#define SN_tcg_kp_AdditionalPlatformAttributeCertificate "tcg-kp-AdditionalPlatformAttributeCertificate" +#define LN_tcg_kp_AdditionalPlatformAttributeCertificate "Additional Platform Attribute Certificate" +#define NID_tcg_kp_AdditionalPlatformAttributeCertificate 1374 +#define OBJ_tcg_kp_AdditionalPlatformAttributeCertificate OBJ_tcg_kp,7L + +#define SN_tcg_kp_AdditionalPlatformKeyCertificate "tcg-kp-AdditionalPlatformKeyCertificate" +#define LN_tcg_kp_AdditionalPlatformKeyCertificate "Additional Platform Key Certificate" +#define NID_tcg_kp_AdditionalPlatformKeyCertificate 1375 +#define OBJ_tcg_kp_AdditionalPlatformKeyCertificate OBJ_tcg_kp,8L + +#define SN_tcg_ce_relevantCredentials "tcg-ce-relevantCredentials" +#define LN_tcg_ce_relevantCredentials "Relevant Credentials" +#define NID_tcg_ce_relevantCredentials 1376 +#define OBJ_tcg_ce_relevantCredentials OBJ_tcg_ce,2L + +#define SN_tcg_ce_relevantManifests "tcg-ce-relevantManifests" +#define LN_tcg_ce_relevantManifests "Relevant Manifests" +#define NID_tcg_ce_relevantManifests 1377 +#define OBJ_tcg_ce_relevantManifests OBJ_tcg_ce,3L + +#define SN_tcg_ce_virtualPlatformAttestationService "tcg-ce-virtualPlatformAttestationService" +#define LN_tcg_ce_virtualPlatformAttestationService "Virtual Platform Attestation Service" +#define NID_tcg_ce_virtualPlatformAttestationService 1378 +#define OBJ_tcg_ce_virtualPlatformAttestationService OBJ_tcg_ce,4L + +#define SN_tcg_ce_migrationControllerAttestationService "tcg-ce-migrationControllerAttestationService" +#define LN_tcg_ce_migrationControllerAttestationService "Migration Controller Attestation Service" +#define NID_tcg_ce_migrationControllerAttestationService 1379 +#define OBJ_tcg_ce_migrationControllerAttestationService OBJ_tcg_ce,5L + +#define SN_tcg_ce_migrationControllerRegistrationService "tcg-ce-migrationControllerRegistrationService" +#define LN_tcg_ce_migrationControllerRegistrationService "Migration Controller Registration Service" +#define NID_tcg_ce_migrationControllerRegistrationService 1380 +#define OBJ_tcg_ce_migrationControllerRegistrationService OBJ_tcg_ce,6L + +#define SN_tcg_ce_virtualPlatformBackupService "tcg-ce-virtualPlatformBackupService" +#define LN_tcg_ce_virtualPlatformBackupService "Virtual Platform Backup Service" +#define NID_tcg_ce_virtualPlatformBackupService 1381 +#define OBJ_tcg_ce_virtualPlatformBackupService OBJ_tcg_ce,7L + +#define SN_tcg_prt_tpmIdProtocol "tcg-prt-tpmIdProtocol" +#define LN_tcg_prt_tpmIdProtocol "TCG TPM Protocol" +#define NID_tcg_prt_tpmIdProtocol 1382 +#define OBJ_tcg_prt_tpmIdProtocol OBJ_tcg_protocol,1L + +#define SN_tcg_address_ethernetmac "tcg-address-ethernetmac" +#define LN_tcg_address_ethernetmac "Ethernet MAC Address" +#define NID_tcg_address_ethernetmac 1383 +#define OBJ_tcg_address_ethernetmac OBJ_tcg_address,1L + +#define SN_tcg_address_wlanmac "tcg-address-wlanmac" +#define LN_tcg_address_wlanmac "WLAN MAC Address" +#define NID_tcg_address_wlanmac 1384 +#define OBJ_tcg_address_wlanmac OBJ_tcg_address,2L + +#define SN_tcg_address_bluetoothmac "tcg-address-bluetoothmac" +#define LN_tcg_address_bluetoothmac "Bluetooth MAC Address" +#define NID_tcg_address_bluetoothmac 1385 +#define OBJ_tcg_address_bluetoothmac OBJ_tcg_address,3L + +#define SN_tcg_registry_componentClass "tcg-registry-componentClass" +#define LN_tcg_registry_componentClass "TCG Component Class" +#define NID_tcg_registry_componentClass 1386 +#define OBJ_tcg_registry_componentClass OBJ_tcg_registry,3L + +#define SN_tcg_registry_componentClass_tcg "tcg-registry-componentClass-tcg" +#define LN_tcg_registry_componentClass_tcg "Trusted Computed Group Registry" +#define NID_tcg_registry_componentClass_tcg 1387 +#define OBJ_tcg_registry_componentClass_tcg OBJ_tcg_registry_componentClass,1L + +#define SN_tcg_registry_componentClass_ietf "tcg-registry-componentClass-ietf" +#define LN_tcg_registry_componentClass_ietf "Internet Engineering Task Force Registry" +#define NID_tcg_registry_componentClass_ietf 1388 +#define OBJ_tcg_registry_componentClass_ietf OBJ_tcg_registry_componentClass,2L + +#define SN_tcg_registry_componentClass_dmtf "tcg-registry-componentClass-dmtf" +#define LN_tcg_registry_componentClass_dmtf "Distributed Management Task Force Registry" +#define NID_tcg_registry_componentClass_dmtf 1389 +#define OBJ_tcg_registry_componentClass_dmtf OBJ_tcg_registry_componentClass,3L + +#define SN_tcg_registry_componentClass_pcie "tcg-registry-componentClass-pcie" +#define LN_tcg_registry_componentClass_pcie "PCIE Component Class" +#define NID_tcg_registry_componentClass_pcie 1390 +#define OBJ_tcg_registry_componentClass_pcie OBJ_tcg_registry_componentClass,4L + +#define SN_tcg_registry_componentClass_disk "tcg-registry-componentClass-disk" +#define LN_tcg_registry_componentClass_disk "Disk Component Class" +#define NID_tcg_registry_componentClass_disk 1391 +#define OBJ_tcg_registry_componentClass_disk OBJ_tcg_registry_componentClass,5L + +#define SN_tcg_cap_verifiedPlatformCertificate "tcg-cap-verifiedPlatformCertificate" +#define LN_tcg_cap_verifiedPlatformCertificate "TCG Verified Platform Certificate CA Policy" +#define NID_tcg_cap_verifiedPlatformCertificate 1392 +#define OBJ_tcg_cap_verifiedPlatformCertificate OBJ_tcg_ca,4L + +#define SN_tcg_tr_ID "tcg-tr-ID" +#define LN_tcg_tr_ID "TCG Trait Identifiers" +#define NID_tcg_tr_ID 1393 +#define OBJ_tcg_tr_ID OBJ_tcg_traits,1L + +#define SN_tcg_tr_category "tcg-tr-category" +#define LN_tcg_tr_category "TCG Trait Categories" +#define NID_tcg_tr_category 1394 +#define OBJ_tcg_tr_category OBJ_tcg_traits,2L + +#define SN_tcg_tr_registry "tcg-tr-registry" +#define LN_tcg_tr_registry "TCG Trait Registries" +#define NID_tcg_tr_registry 1395 +#define OBJ_tcg_tr_registry OBJ_tcg_traits,3L + +#define SN_tcg_tr_ID_Boolean "tcg-tr-ID-Boolean" +#define LN_tcg_tr_ID_Boolean "Boolean Trait" +#define NID_tcg_tr_ID_Boolean 1396 +#define OBJ_tcg_tr_ID_Boolean OBJ_tcg_tr_ID,1L + +#define SN_tcg_tr_ID_CertificateIdentifier "tcg-tr-ID-CertificateIdentifier" +#define LN_tcg_tr_ID_CertificateIdentifier "Certificate Identifier Trait" +#define NID_tcg_tr_ID_CertificateIdentifier 1397 +#define OBJ_tcg_tr_ID_CertificateIdentifier OBJ_tcg_tr_ID,2L + +#define SN_tcg_tr_ID_CommonCriteria "tcg-tr-ID-CommonCriteria" +#define LN_tcg_tr_ID_CommonCriteria "Common Criteria Trait" +#define NID_tcg_tr_ID_CommonCriteria 1398 +#define OBJ_tcg_tr_ID_CommonCriteria OBJ_tcg_tr_ID,3L + +#define SN_tcg_tr_ID_componentClass "tcg-tr-ID-componentClass" +#define LN_tcg_tr_ID_componentClass "Component Class Trait" +#define NID_tcg_tr_ID_componentClass 1399 +#define OBJ_tcg_tr_ID_componentClass OBJ_tcg_tr_ID,4L + +#define SN_tcg_tr_ID_componentIdentifierV11 "tcg-tr-ID-componentIdentifierV11" +#define LN_tcg_tr_ID_componentIdentifierV11 "Component Identifier V1.1 Trait" +#define NID_tcg_tr_ID_componentIdentifierV11 1400 +#define OBJ_tcg_tr_ID_componentIdentifierV11 OBJ_tcg_tr_ID,5L + +#define SN_tcg_tr_ID_FIPSLevel "tcg-tr-ID-FIPSLevel" +#define LN_tcg_tr_ID_FIPSLevel "FIPS Level Trait" +#define NID_tcg_tr_ID_FIPSLevel 1401 +#define OBJ_tcg_tr_ID_FIPSLevel OBJ_tcg_tr_ID,6L + +#define SN_tcg_tr_ID_ISO9000Level "tcg-tr-ID-ISO9000Level" +#define LN_tcg_tr_ID_ISO9000Level "ISO 9000 Level Trait" +#define NID_tcg_tr_ID_ISO9000Level 1402 +#define OBJ_tcg_tr_ID_ISO9000Level OBJ_tcg_tr_ID,7L + +#define SN_tcg_tr_ID_networkMAC "tcg-tr-ID-networkMAC" +#define LN_tcg_tr_ID_networkMAC "Network MAC Trait" +#define NID_tcg_tr_ID_networkMAC 1403 +#define OBJ_tcg_tr_ID_networkMAC OBJ_tcg_tr_ID,8L + +#define SN_tcg_tr_ID_OID "tcg-tr-ID-OID" +#define LN_tcg_tr_ID_OID "Object Identifier Trait" +#define NID_tcg_tr_ID_OID 1404 +#define OBJ_tcg_tr_ID_OID OBJ_tcg_tr_ID,9L + +#define SN_tcg_tr_ID_PEN "tcg-tr-ID-PEN" +#define LN_tcg_tr_ID_PEN "Private Enterprise Number Trait" +#define NID_tcg_tr_ID_PEN 1405 +#define OBJ_tcg_tr_ID_PEN OBJ_tcg_tr_ID,10L + +#define SN_tcg_tr_ID_platformFirmwareCapabilities "tcg-tr-ID-platformFirmwareCapabilities" +#define LN_tcg_tr_ID_platformFirmwareCapabilities "Platform Firmware Capabilities Trait" +#define NID_tcg_tr_ID_platformFirmwareCapabilities 1406 +#define OBJ_tcg_tr_ID_platformFirmwareCapabilities OBJ_tcg_tr_ID,11L + +#define SN_tcg_tr_ID_platformFirmwareSignatureVerification "tcg-tr-ID-platformFirmwareSignatureVerification" +#define LN_tcg_tr_ID_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait" +#define NID_tcg_tr_ID_platformFirmwareSignatureVerification 1407 +#define OBJ_tcg_tr_ID_platformFirmwareSignatureVerification OBJ_tcg_tr_ID,12L + +#define SN_tcg_tr_ID_platformFirmwareUpdateCompliance "tcg-tr-ID-platformFirmwareUpdateCompliance" +#define LN_tcg_tr_ID_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait" +#define NID_tcg_tr_ID_platformFirmwareUpdateCompliance 1408 +#define OBJ_tcg_tr_ID_platformFirmwareUpdateCompliance OBJ_tcg_tr_ID,13L + +#define SN_tcg_tr_ID_platformHardwareCapabilities "tcg-tr-ID-platformHardwareCapabilities" +#define LN_tcg_tr_ID_platformHardwareCapabilities "Platform Hardware Capabilities Trait" +#define NID_tcg_tr_ID_platformHardwareCapabilities 1409 +#define OBJ_tcg_tr_ID_platformHardwareCapabilities OBJ_tcg_tr_ID,14L + +#define SN_tcg_tr_ID_RTM "tcg-tr-ID-RTM" +#define LN_tcg_tr_ID_RTM "Root of Trust for Measurement Trait" +#define NID_tcg_tr_ID_RTM 1410 +#define OBJ_tcg_tr_ID_RTM OBJ_tcg_tr_ID,15L + +#define SN_tcg_tr_ID_status "tcg-tr-ID-status" +#define LN_tcg_tr_ID_status "Attribute Status Trait" +#define NID_tcg_tr_ID_status 1411 +#define OBJ_tcg_tr_ID_status OBJ_tcg_tr_ID,16L + +#define SN_tcg_tr_ID_URI "tcg-tr-ID-URI" +#define LN_tcg_tr_ID_URI "Uniform Resource Identifier Trait" +#define NID_tcg_tr_ID_URI 1412 +#define OBJ_tcg_tr_ID_URI OBJ_tcg_tr_ID,17L + +#define SN_tcg_tr_ID_UTF8String "tcg-tr-ID-UTF8String" +#define LN_tcg_tr_ID_UTF8String "UTF8String Trait" +#define NID_tcg_tr_ID_UTF8String 1413 +#define OBJ_tcg_tr_ID_UTF8String OBJ_tcg_tr_ID,18L + +#define SN_tcg_tr_ID_IA5String "tcg-tr-ID-IA5String" +#define LN_tcg_tr_ID_IA5String "IA5String Trait" +#define NID_tcg_tr_ID_IA5String 1414 +#define OBJ_tcg_tr_ID_IA5String OBJ_tcg_tr_ID,19L + +#define SN_tcg_tr_ID_PEMCertString "tcg-tr-ID-PEMCertString" +#define LN_tcg_tr_ID_PEMCertString "PEM-Encoded Certificate String Trait" +#define NID_tcg_tr_ID_PEMCertString 1415 +#define OBJ_tcg_tr_ID_PEMCertString OBJ_tcg_tr_ID,20L + +#define SN_tcg_tr_ID_PublicKey "tcg-tr-ID-PublicKey" +#define LN_tcg_tr_ID_PublicKey "Public Key Trait" +#define NID_tcg_tr_ID_PublicKey 1416 +#define OBJ_tcg_tr_ID_PublicKey OBJ_tcg_tr_ID,21L + +#define SN_tcg_tr_cat_platformManufacturer "tcg-tr-cat-platformManufacturer" +#define LN_tcg_tr_cat_platformManufacturer "Platform Manufacturer Trait Category" +#define NID_tcg_tr_cat_platformManufacturer 1417 +#define OBJ_tcg_tr_cat_platformManufacturer OBJ_tcg_tr_category,1L + +#define SN_tcg_tr_cat_platformModel "tcg-tr-cat-platformModel" +#define LN_tcg_tr_cat_platformModel "Platform Model Trait Category" +#define NID_tcg_tr_cat_platformModel 1418 +#define OBJ_tcg_tr_cat_platformModel OBJ_tcg_tr_category,2L + +#define SN_tcg_tr_cat_platformVersion "tcg-tr-cat-platformVersion" +#define LN_tcg_tr_cat_platformVersion "Platform Version Trait Category" +#define NID_tcg_tr_cat_platformVersion 1419 +#define OBJ_tcg_tr_cat_platformVersion OBJ_tcg_tr_category,3L + +#define SN_tcg_tr_cat_platformSerial "tcg-tr-cat-platformSerial" +#define LN_tcg_tr_cat_platformSerial "Platform Serial Trait Category" +#define NID_tcg_tr_cat_platformSerial 1420 +#define OBJ_tcg_tr_cat_platformSerial OBJ_tcg_tr_category,4L + +#define SN_tcg_tr_cat_platformManufacturerIdentifier "tcg-tr-cat-platformManufacturerIdentifier" +#define LN_tcg_tr_cat_platformManufacturerIdentifier "Platform Manufacturer Identifier Trait Category" +#define NID_tcg_tr_cat_platformManufacturerIdentifier 1421 +#define OBJ_tcg_tr_cat_platformManufacturerIdentifier OBJ_tcg_tr_category,5L + +#define SN_tcg_tr_cat_platformOwnership "tcg-tr-cat-platformOwnership" +#define LN_tcg_tr_cat_platformOwnership "Platform Ownership Trait Category" +#define NID_tcg_tr_cat_platformOwnership 1422 +#define OBJ_tcg_tr_cat_platformOwnership OBJ_tcg_tr_category,6L + +#define SN_tcg_tr_cat_componentClass "tcg-tr-cat-componentClass" +#define LN_tcg_tr_cat_componentClass "Component Class Trait Category" +#define NID_tcg_tr_cat_componentClass 1423 +#define OBJ_tcg_tr_cat_componentClass OBJ_tcg_tr_category,7L + +#define SN_tcg_tr_cat_componentManufacturer "tcg-tr-cat-componentManufacturer" +#define LN_tcg_tr_cat_componentManufacturer "Component Manufacturer Trait Category" +#define NID_tcg_tr_cat_componentManufacturer 1424 +#define OBJ_tcg_tr_cat_componentManufacturer OBJ_tcg_tr_category,8L + +#define SN_tcg_tr_cat_componentModel "tcg-tr-cat-componentModel" +#define LN_tcg_tr_cat_componentModel "Component Model Trait Category" +#define NID_tcg_tr_cat_componentModel 1425 +#define OBJ_tcg_tr_cat_componentModel OBJ_tcg_tr_category,9L + +#define SN_tcg_tr_cat_componentSerial "tcg-tr-cat-componentSerial" +#define LN_tcg_tr_cat_componentSerial "Component Serial Trait Category" +#define NID_tcg_tr_cat_componentSerial 1426 +#define OBJ_tcg_tr_cat_componentSerial OBJ_tcg_tr_category,10L + +#define SN_tcg_tr_cat_componentStatus "tcg-tr-cat-componentStatus" +#define LN_tcg_tr_cat_componentStatus "Component Status Trait Category" +#define NID_tcg_tr_cat_componentStatus 1427 +#define OBJ_tcg_tr_cat_componentStatus OBJ_tcg_tr_category,11L + +#define SN_tcg_tr_cat_componentLocation "tcg-tr-cat-componentLocation" +#define LN_tcg_tr_cat_componentLocation "Component Location Trait Category" +#define NID_tcg_tr_cat_componentLocation 1428 +#define OBJ_tcg_tr_cat_componentLocation OBJ_tcg_tr_category,12L + +#define SN_tcg_tr_cat_componentRevision "tcg-tr-cat-componentRevision" +#define LN_tcg_tr_cat_componentRevision "Component Revision Trait Category" +#define NID_tcg_tr_cat_componentRevision 1429 +#define OBJ_tcg_tr_cat_componentRevision OBJ_tcg_tr_category,13L + +#define SN_tcg_tr_cat_componentFieldReplaceable "tcg-tr-cat-componentFieldReplaceable" +#define LN_tcg_tr_cat_componentFieldReplaceable "Component Field Replaceable Trait Category" +#define NID_tcg_tr_cat_componentFieldReplaceable 1430 +#define OBJ_tcg_tr_cat_componentFieldReplaceable OBJ_tcg_tr_category,14L + +#define SN_tcg_tr_cat_EKCertificate "tcg-tr-cat-EKCertificate" +#define LN_tcg_tr_cat_EKCertificate "EK Certificate Trait Category" +#define NID_tcg_tr_cat_EKCertificate 1431 +#define OBJ_tcg_tr_cat_EKCertificate OBJ_tcg_tr_category,15L + +#define SN_tcg_tr_cat_IAKCertificate "tcg-tr-cat-IAKCertificate" +#define LN_tcg_tr_cat_IAKCertificate "IAK Certificate Trait Category" +#define NID_tcg_tr_cat_IAKCertificate 1432 +#define OBJ_tcg_tr_cat_IAKCertificate OBJ_tcg_tr_category,16L + +#define SN_tcg_tr_cat_IDevIDCertificate "tcg-tr-cat-IDevIDCertificate" +#define LN_tcg_tr_cat_IDevIDCertificate "IDevID Certificate Trait Category" +#define NID_tcg_tr_cat_IDevIDCertificate 1433 +#define OBJ_tcg_tr_cat_IDevIDCertificate OBJ_tcg_tr_category,17L + +#define SN_tcg_tr_cat_DICECertificate "tcg-tr-cat-DICECertificate" +#define LN_tcg_tr_cat_DICECertificate "DICE Certificate Trait Category" +#define NID_tcg_tr_cat_DICECertificate 1434 +#define OBJ_tcg_tr_cat_DICECertificate OBJ_tcg_tr_category,18L + +#define SN_tcg_tr_cat_SPDMCertificate "tcg-tr-cat-SPDMCertificate" +#define LN_tcg_tr_cat_SPDMCertificate "SPDM Certificate Trait Category" +#define NID_tcg_tr_cat_SPDMCertificate 1435 +#define OBJ_tcg_tr_cat_SPDMCertificate OBJ_tcg_tr_category,19L + +#define SN_tcg_tr_cat_PEMCertificate "tcg-tr-cat-PEMCertificate" +#define LN_tcg_tr_cat_PEMCertificate "PEM Certificate Trait Category" +#define NID_tcg_tr_cat_PEMCertificate 1436 +#define OBJ_tcg_tr_cat_PEMCertificate OBJ_tcg_tr_category,20L + +#define SN_tcg_tr_cat_PlatformCertificate "tcg-tr-cat-PlatformCertificate" +#define LN_tcg_tr_cat_PlatformCertificate "Platform Certificate Trait Category" +#define NID_tcg_tr_cat_PlatformCertificate 1437 +#define OBJ_tcg_tr_cat_PlatformCertificate OBJ_tcg_tr_category,21L + +#define SN_tcg_tr_cat_DeltaPlatformCertificate "tcg-tr-cat-DeltaPlatformCertificate" +#define LN_tcg_tr_cat_DeltaPlatformCertificate "Delta Platform Certificate Trait Category" +#define NID_tcg_tr_cat_DeltaPlatformCertificate 1438 +#define OBJ_tcg_tr_cat_DeltaPlatformCertificate OBJ_tcg_tr_category,22L + +#define SN_tcg_tr_cat_RebasePlatformCertificate "tcg-tr-cat-RebasePlatformCertificate" +#define LN_tcg_tr_cat_RebasePlatformCertificate "Rebase Platform Certificate Trait Category" +#define NID_tcg_tr_cat_RebasePlatformCertificate 1439 +#define OBJ_tcg_tr_cat_RebasePlatformCertificate OBJ_tcg_tr_category,23L + +#define SN_tcg_tr_cat_genericCertificate "tcg-tr-cat-genericCertificate" +#define LN_tcg_tr_cat_genericCertificate "Generic Certificate Trait Category" +#define NID_tcg_tr_cat_genericCertificate 1440 +#define OBJ_tcg_tr_cat_genericCertificate OBJ_tcg_tr_category,24L + +#define SN_tcg_tr_cat_CommonCriteria "tcg-tr-cat-CommonCriteria" +#define LN_tcg_tr_cat_CommonCriteria "Common Criteria Trait Category" +#define NID_tcg_tr_cat_CommonCriteria 1441 +#define OBJ_tcg_tr_cat_CommonCriteria OBJ_tcg_tr_category,25L + +#define SN_tcg_tr_cat_componentIdentifierV11 "tcg-tr-cat-componentIdentifierV11" +#define LN_tcg_tr_cat_componentIdentifierV11 "Component Identifier V1.1 Trait Category" +#define NID_tcg_tr_cat_componentIdentifierV11 1442 +#define OBJ_tcg_tr_cat_componentIdentifierV11 OBJ_tcg_tr_category,26L + +#define SN_tcg_tr_cat_FIPSLevel "tcg-tr-cat-FIPSLevel" +#define LN_tcg_tr_cat_FIPSLevel "FIPS Level Trait Category" +#define NID_tcg_tr_cat_FIPSLevel 1443 +#define OBJ_tcg_tr_cat_FIPSLevel OBJ_tcg_tr_category,27L + +#define SN_tcg_tr_cat_ISO9000 "tcg-tr-cat-ISO9000" +#define LN_tcg_tr_cat_ISO9000 "ISO 9000 Trait Category" +#define NID_tcg_tr_cat_ISO9000 1444 +#define OBJ_tcg_tr_cat_ISO9000 OBJ_tcg_tr_category,28L + +#define SN_tcg_tr_cat_networkMAC "tcg-tr-cat-networkMAC" +#define LN_tcg_tr_cat_networkMAC "Network MAC Trait Category" +#define NID_tcg_tr_cat_networkMAC 1445 +#define OBJ_tcg_tr_cat_networkMAC OBJ_tcg_tr_category,29L + +#define SN_tcg_tr_cat_attestationProtocol "tcg-tr-cat-attestationProtocol" +#define LN_tcg_tr_cat_attestationProtocol "Attestation Protocol Trait Category" +#define NID_tcg_tr_cat_attestationProtocol 1446 +#define OBJ_tcg_tr_cat_attestationProtocol OBJ_tcg_tr_category,30L + +#define SN_tcg_tr_cat_PEN "tcg-tr-cat-PEN" +#define LN_tcg_tr_cat_PEN "Private Enterprise Number Trait Category" +#define NID_tcg_tr_cat_PEN 1447 +#define OBJ_tcg_tr_cat_PEN OBJ_tcg_tr_category,31L + +#define SN_tcg_tr_cat_platformFirmwareCapabilities "tcg-tr-cat-platformFirmwareCapabilities" +#define LN_tcg_tr_cat_platformFirmwareCapabilities "Platform Firmware Capabilities Trait Category" +#define NID_tcg_tr_cat_platformFirmwareCapabilities 1448 +#define OBJ_tcg_tr_cat_platformFirmwareCapabilities OBJ_tcg_tr_category,32L + +#define SN_tcg_tr_cat_platformHardwareCapabilities "tcg-tr-cat-platformHardwareCapabilities" +#define LN_tcg_tr_cat_platformHardwareCapabilities "Platform Hardware Capabilities Trait Category" +#define NID_tcg_tr_cat_platformHardwareCapabilities 1449 +#define OBJ_tcg_tr_cat_platformHardwareCapabilities OBJ_tcg_tr_category,33L + +#define SN_tcg_tr_cat_platformFirmwareSignatureVerification "tcg-tr-cat-platformFirmwareSignatureVerification" +#define LN_tcg_tr_cat_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait Category" +#define NID_tcg_tr_cat_platformFirmwareSignatureVerification 1450 +#define OBJ_tcg_tr_cat_platformFirmwareSignatureVerification OBJ_tcg_tr_category,34L + +#define SN_tcg_tr_cat_platformFirmwareUpdateCompliance "tcg-tr-cat-platformFirmwareUpdateCompliance" +#define LN_tcg_tr_cat_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait Category" +#define NID_tcg_tr_cat_platformFirmwareUpdateCompliance 1451 +#define OBJ_tcg_tr_cat_platformFirmwareUpdateCompliance OBJ_tcg_tr_category,35L + +#define SN_tcg_tr_cat_RTM "tcg-tr-cat-RTM" +#define LN_tcg_tr_cat_RTM "Root of Trust of Measurement Trait Category" +#define NID_tcg_tr_cat_RTM 1452 +#define OBJ_tcg_tr_cat_RTM OBJ_tcg_tr_category,36L + +#define SN_tcg_tr_cat_PublicKey "tcg-tr-cat-PublicKey" +#define LN_tcg_tr_cat_PublicKey "Public Key Trait Category" +#define NID_tcg_tr_cat_PublicKey 1453 +#define OBJ_tcg_tr_cat_PublicKey OBJ_tcg_tr_category,37L + +#define OBJ_nistKems OBJ_nistAlgorithms,4L + +#define SN_ML_KEM_512 "id-alg-ml-kem-512" +#define LN_ML_KEM_512 "ML-KEM-512" +#define NID_ML_KEM_512 1454 +#define OBJ_ML_KEM_512 OBJ_nistKems,1L + +#define SN_ML_KEM_768 "id-alg-ml-kem-768" +#define LN_ML_KEM_768 "ML-KEM-768" +#define NID_ML_KEM_768 1455 +#define OBJ_ML_KEM_768 OBJ_nistKems,2L + +#define SN_ML_KEM_1024 "id-alg-ml-kem-1024" +#define LN_ML_KEM_1024 "ML-KEM-1024" +#define NID_ML_KEM_1024 1456 +#define OBJ_ML_KEM_1024 OBJ_nistKems,3L + +#endif /* OPENSSL_OBJ_MAC_H */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm SN_magma_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm NID_magma_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_magma_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac SN_magma_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac NID_magma_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_magma_ctr_acpkm_omac + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm SN_kuznyechik_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm NID_kuznyechik_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_kuznyechik_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac SN_kuznyechik_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac NID_kuznyechik_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_kuznyechik_ctr_acpkm_omac + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 SN_magma_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 NID_magma_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_magma_kexp15 + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 SN_kuznyechik_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 NID_kuznyechik_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_kuznyechik_kexp15 + +#define SN_grasshopper_ecb SN_kuznyechik_ecb +#define NID_grasshopper_ecb NID_kuznyechik_ecb + +#define SN_grasshopper_ctr SN_kuznyechik_ctr +#define NID_grasshopper_ctr NID_kuznyechik_ctr + +#define SN_grasshopper_ofb SN_kuznyechik_ofb +#define NID_grasshopper_ofb NID_kuznyechik_ofb + +#define SN_grasshopper_cbc SN_kuznyechik_cbc +#define NID_grasshopper_cbc NID_kuznyechik_cbc + +#define SN_grasshopper_cfb SN_kuznyechik_cfb +#define NID_grasshopper_cfb NID_kuznyechik_cfb + +#define SN_grasshopper_mac SN_kuznyechik_mac +#define NID_grasshopper_mac NID_kuznyechik_mac + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/objects.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/objects.h new file mode 100644 index 0000000..de1f1db --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/objects.h @@ -0,0 +1,186 @@ +/* + * Copyright 1995-2024 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_OBJECTS_H +#define OPENSSL_OBJECTS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OBJECTS_H +#endif + +#include +#include +#include +#include + +#define OBJ_NAME_TYPE_UNDEF 0x00 +#define OBJ_NAME_TYPE_MD_METH 0x01 +#define OBJ_NAME_TYPE_CIPHER_METH 0x02 +#define OBJ_NAME_TYPE_PKEY_METH 0x03 +#define OBJ_NAME_TYPE_COMP_METH 0x04 +#define OBJ_NAME_TYPE_MAC_METH 0x05 +#define OBJ_NAME_TYPE_KDF_METH 0x06 +#define OBJ_NAME_TYPE_NUM 0x07 + +#define OBJ_NAME_ALIAS 0x8000 + +#define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 +#define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct obj_name_st { + int type; + int alias; + const char *name; + const char *data; +} OBJ_NAME; + +#define OBJ_create_and_add_object(a, b, c) OBJ_create(a, b, c) + +int OBJ_NAME_init(void); +int OBJ_NAME_new_index(unsigned long (*hash_func)(const char *), + int (*cmp_func)(const char *, const char *), + void (*free_func)(const char *, int, const char *)); +const char *OBJ_NAME_get(const char *name, int type); +int OBJ_NAME_add(const char *name, int type, const char *data); +int OBJ_NAME_remove(const char *name, int type); +void OBJ_NAME_cleanup(int type); /* -1 for everything */ +void OBJ_NAME_do_all(int type, void (*fn)(const OBJ_NAME *, void *arg), + void *arg); +void OBJ_NAME_do_all_sorted(int type, + void (*fn)(const OBJ_NAME *, void *arg), + void *arg); + +DECLARE_ASN1_DUP_FUNCTION_name(ASN1_OBJECT, OBJ) +ASN1_OBJECT *OBJ_nid2obj(int n); +const char *OBJ_nid2ln(int n); +const char *OBJ_nid2sn(int n); +int OBJ_obj2nid(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); +int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); +int OBJ_txt2nid(const char *s); +int OBJ_ln2nid(const char *s); +int OBJ_sn2nid(const char *s); +int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); +const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, + int (*cmp)(const void *, const void *)); +const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, + int size, + int (*cmp)(const void *, const void *), + int flags); + +#define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ + static int nm##_cmp(type1 const *, type2 const *); \ + scope type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +#define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ + _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) +#define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +/*- + * Unsolved problem: if a type is actually a pointer type, like + * nid_triple is, then its impossible to get a const where you need + * it. Consider: + * + * typedef int nid_triple[3]; + * const void *a_; + * const nid_triple const *a = a_; + * + * The assignment discards a const because what you really want is: + * + * const int const * const *a = a_; + * + * But if you do that, you lose the fact that a is an array of 3 ints, + * which breaks comparison functions. + * + * Thus we end up having to cast, sadly, or unpack the + * declarations. Or, as I finally did in this case, declare nid_triple + * to be a struct, which it should have been in the first place. + * + * Ben, August 2008. + * + * Also, strictly speaking not all types need be const, but handling + * the non-constness means a lot of complication, and in practice + * comparison routines do always not touch their arguments. + */ + +#define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a, b); \ + } \ + static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +#define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a, b); \ + } \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +#define OBJ_bsearch(type1, key, type2, base, num, cmp) \ + ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1, key), CHECKED_PTR_OF(type2, base), \ + num, sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1, cmp##_type_1), \ + (void)CHECKED_PTR_OF(type2, cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN))) + +#define OBJ_bsearch_ex(type1, key, type2, base, num, cmp, flags) \ + ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1, key), CHECKED_PTR_OF(type2, base), \ + num, sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1, cmp##_type_1), \ + (void)type_2 = CHECKED_PTR_OF(type2, cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN)), \ + flags) + +int OBJ_new_nid(int num); +int OBJ_add_object(const ASN1_OBJECT *obj); +int OBJ_create(const char *oid, const char *sn, const char *ln); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OBJ_cleanup() \ + while (0) \ + continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); +int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); +int OBJ_add_sigid(int signid, int dig_id, int pkey_id); +void OBJ_sigid_free(void); + +#define SN_ac_auditEntity SN_ac_auditIdentity + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/objectserr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/objectserr.h new file mode 100644 index 0000000..2927561 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/objectserr.h @@ -0,0 +1,26 @@ +/* + * 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_OBJECTSERR_H +#define OPENSSL_OBJECTSERR_H +#pragma once + +#include +#include +#include + +/* + * OBJ reason codes. + */ +#define OBJ_R_OID_EXISTS 102 +#define OBJ_R_UNKNOWN_NID 101 +#define OBJ_R_UNKNOWN_OBJECT_NAME 103 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ocsp.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ocsp.h new file mode 100644 index 0000000..5959099 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ocsp.h @@ -0,0 +1,487 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ocsp.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_OCSP_H +#define OPENSSL_OCSP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OCSP_H +#endif + +#include +#include +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * -- value 7 is not used + * removeFromCRL (8), + * privilegeWithdrawn (9), + * aACompromise (10) } + */ +#define OCSP_REVOKED_STATUS_NOSTATUS -1 +#define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +#define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +#define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +#define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +#define OCSP_REVOKED_STATUS_SUPERSEDED 4 +#define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +#define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +#define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 +#define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 +#define OCSP_REVOKED_STATUS_AACOMPROMISE 10 + +#ifndef OPENSSL_NO_OCSP + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +#define OCSP_DEFAULT_NONCE_LENGTH 16 + +#define OCSP_NOCERTS 0x1 +#define OCSP_NOINTERN 0x2 +#define OCSP_NOSIGS 0x4 +#define OCSP_NOCHAIN 0x8 +#define OCSP_NOVERIFY 0x10 +#define OCSP_NOEXPLICIT 0x20 +#define OCSP_NOCASIGN 0x40 +#define OCSP_NODELEGATED 0x80 +#define OCSP_NOCHECKS 0x100 +#define OCSP_TRUSTOTHER 0x200 +#define OCSP_RESPID_KEY 0x400 +#define OCSP_NOTIME 0x800 +#define OCSP_PARTIAL_CHAIN 0x1000 + +typedef struct ocsp_cert_id_st OCSP_CERTID; +typedef struct ocsp_one_request_st OCSP_ONEREQ; +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) +#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) +#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) +#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) +#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) +#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) +#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_freefunc_type(freefunc)) +#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) +#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) +#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) +#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) +#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) +#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) +#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) +#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) +#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) +#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) +#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) +#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) +#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) +#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) +#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) + +/* clang-format on */ + +#define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +#define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +#define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +#define OCSP_RESPONSE_STATUS_TRYLATER 3 +#define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +#define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +#define V_OCSP_RESPID_NAME 0 +#define V_OCSP_RESPID_KEY 1 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) +#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) +#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) +#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) +#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) +#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) +#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_freefunc_type(freefunc)) +#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) +#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) +#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) +#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +#define V_OCSP_CERTSTATUS_GOOD 0 +#define V_OCSP_CERTSTATUS_REVOKED 1 +#define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) +#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) +#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) +#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) +#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) +#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) +#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) +#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) +#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) +#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) +#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) +#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +#define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +#define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +#define d2i_OCSP_REQUEST_bio(bp, p) ASN1_d2i_bio_of(OCSP_REQUEST, OCSP_REQUEST_new, d2i_OCSP_REQUEST, bp, p) + +#define d2i_OCSP_RESPONSE_bio(bp, p) ASN1_d2i_bio_of(OCSP_RESPONSE, OCSP_RESPONSE_new, d2i_OCSP_RESPONSE, bp, p) + +#define PEM_read_bio_OCSP_REQUEST(bp, x, cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char **)(x), cb, NULL) + +#define PEM_read_bio_OCSP_RESPONSE(bp, x, cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char **)(x), cb, NULL) + +#define PEM_write_bio_OCSP_REQUEST(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define PEM_write_bio_OCSP_RESPONSE(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define i2d_OCSP_RESPONSE_bio(bp, o) ASN1_i2d_bio_of(OCSP_RESPONSE, i2d_OCSP_RESPONSE, bp, o) + +#define i2d_OCSP_REQUEST_bio(bp, o) ASN1_i2d_bio_of(OCSP_REQUEST, i2d_OCSP_REQUEST, bp, o) + +#define ASN1_BIT_STRING_digest(data, type, md, len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING), type, data, md, len) + +#define OCSP_CERTSTATUS_dup(cs) \ + (OCSP_CERTSTATUS *)ASN1_dup((i2d_of_void *)i2d_OCSP_CERTSTATUS, \ + (d2i_of_void *)d2i_OCSP_CERTSTATUS, (char *)(cs)) + +DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) + +OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, + const OCSP_REQUEST *req, int buf_size); +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; +#define OCSP_REQ_CTX_new(io, buf_size) \ + OSSL_HTTP_REQ_CTX_new(io, io, buf_size) +#define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free +#define OCSP_REQ_CTX_http(rctx, op, path) \ + (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, NULL, NULL, path)) +#define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header +#define OCSP_REQ_CTX_i2d(r, it, req) \ + OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) +#define OCSP_REQ_CTX_set1_req(r, req) \ + OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) +#define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio +#define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i +#define OCSP_sendreq_nbio(p, r) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ + ASN1_ITEM_rptr(OCSP_RESPONSE)) +#define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio +#define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length +#endif + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, const X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP *bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +#define OCSP_parse_url(url, host, port, path, ssl) \ + OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key_ex(OCSP_RESPID *respid, X509 *cert, + OSSL_LIB_CTX *libctx, const char *propq); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, + const char *propq); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(const X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_OCSP) */ +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ocsperr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ocsperr.h new file mode 100644 index 0000000..18e035e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ocsperr.h @@ -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_OCSPERR_H +#define OPENSSL_OCSPERR_H +#pragma once + +#include +#include +#include + +#ifndef OPENSSL_NO_OCSP + +/* + * OCSP reason codes. + */ +#define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +#define OCSP_R_DIGEST_ERR 102 +#define OCSP_R_DIGEST_NAME_ERR 106 +#define OCSP_R_DIGEST_SIZE_ERR 107 +#define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +#define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +#define OCSP_R_MISSING_OCSPSIGNING_USAGE 103 +#define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE 124 +#define OCSP_R_NOT_BASIC_RESPONSE 104 +#define OCSP_R_NO_CERTIFICATES_IN_CHAIN 105 +#define OCSP_R_NO_RESPONSE_DATA 108 +#define OCSP_R_NO_REVOKED_TIME 109 +#define OCSP_R_NO_SIGNER_KEY 130 +#define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 110 +#define OCSP_R_REQUEST_NOT_SIGNED 128 +#define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA 111 +#define OCSP_R_ROOT_CA_NOT_TRUSTED 112 +#define OCSP_R_SIGNATURE_FAILURE 117 +#define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND 118 +#define OCSP_R_STATUS_EXPIRED 125 +#define OCSP_R_STATUS_NOT_YET_VALID 126 +#define OCSP_R_STATUS_TOO_OLD 127 +#define OCSP_R_UNKNOWN_MESSAGE_DIGEST 119 +#define OCSP_R_UNKNOWN_NID 120 +#define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE 129 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/opensslconf.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/opensslconf.h new file mode 100644 index 0000000..4a8d78e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/opensslconf.h @@ -0,0 +1,17 @@ +/* + * 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_OPENSSLCONF_H +#define OPENSSL_OPENSSLCONF_H +#pragma once + +#include +#include + +#endif /* OPENSSL_OPENSSLCONF_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/opensslv.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/opensslv.h new file mode 100644 index 0000000..6b468fd --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/opensslv.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/opensslv.h.in + * + * Copyright 1999-2025 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_OPENSSLV_H +#define OPENSSL_OPENSSLV_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SECTION 1: VERSION DATA. These will change for each release + */ + +/* + * Base version macros + * + * These macros express version number MAJOR.MINOR.PATCH exactly + */ +/* clang-format off */ +# define OPENSSL_VERSION_MAJOR 3 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_MINOR 6 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_PATCH 2 +/* clang-format on */ + +/* + * Additional version information + * + * These are also part of the new version scheme, but aren't part + * of the version number itself. + */ + +/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_PRE_RELEASE "" +/* clang-format on */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_BUILD_METADATA "" +/* clang-format on */ + +/* + * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA + * to be anything but the empty string. Its use is entirely reserved for + * others + */ + +/* + * Shared library version + * + * This is strictly to express ABI version, which may or may not + * be related to the API version expressed with the macros above. + * This is defined in free form. + */ +/* clang-format off */ +# define OPENSSL_SHLIB_VERSION 3 +/* clang-format on */ + +/* + * SECTION 2: USEFUL MACROS + */ + +/* For checking general API compatibility when preprocessing */ +#define OPENSSL_VERSION_PREREQ(maj, min) \ + ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) + +/* + * Macros to get the version in easily digested string form, both the short + * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced + * with the values from the corresponding OPENSSL_VERSION_ macros) and the + * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and + * OPENSSL_VERSION_BUILD_METADATA_STR appended. + */ +/* clang-format off */ +# define OPENSSL_VERSION_STR "3.6.2" +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_FULL_VERSION_STR "3.6.2" +/* clang-format on */ + +/* + * SECTION 3: ADDITIONAL METADATA + * + * These strings are defined separately to allow them to be parsable. + */ +/* clang-format off */ +# define OPENSSL_RELEASE_DATE "7 Apr 2026" +/* clang-format on */ + +/* + * SECTION 4: BACKWARD COMPATIBILITY + */ + +/* clang-format off */ +# define OPENSSL_VERSION_TEXT "OpenSSL 3.6.2 7 Apr 2026" +/* clang-format on */ + +/* clang-format off */ +/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PP0L */ +# define OPENSSL_VERSION_NUMBER \ + ( (OPENSSL_VERSION_MAJOR<<28) \ + |(OPENSSL_VERSION_MINOR<<20) \ + |(OPENSSL_VERSION_PATCH<<4) \ + |0x0L ) +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OPENSSLV_H +#endif + +#endif /* OPENSSL_OPENSSLV_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ossl_typ.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ossl_typ.h new file mode 100644 index 0000000..a562299 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ossl_typ.h @@ -0,0 +1,16 @@ +/* + * Copyright 2019 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 + */ + +/* + * The original was renamed to + * + * This header file only exists for compatibility reasons with older + * applications which #include . + */ +#include diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/param_build.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/param_build.h new file mode 100644 index 0000000..be6a025 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/param_build.h @@ -0,0 +1,63 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, 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_PARAM_BUILD_H +#define OPENSSL_PARAM_BUILD_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +OSSL_PARAM_BLD *OSSL_PARAM_BLD_new(void); +OSSL_PARAM *OSSL_PARAM_BLD_to_param(OSSL_PARAM_BLD *bld); +void OSSL_PARAM_BLD_free(OSSL_PARAM_BLD *bld); + +int OSSL_PARAM_BLD_push_int(OSSL_PARAM_BLD *bld, const char *key, int val); +int OSSL_PARAM_BLD_push_uint(OSSL_PARAM_BLD *bld, const char *key, + unsigned int val); +int OSSL_PARAM_BLD_push_long(OSSL_PARAM_BLD *bld, const char *key, + long int val); +int OSSL_PARAM_BLD_push_ulong(OSSL_PARAM_BLD *bld, const char *key, + unsigned long int val); +int OSSL_PARAM_BLD_push_int32(OSSL_PARAM_BLD *bld, const char *key, + int32_t val); +int OSSL_PARAM_BLD_push_uint32(OSSL_PARAM_BLD *bld, const char *key, + uint32_t val); +int OSSL_PARAM_BLD_push_int64(OSSL_PARAM_BLD *bld, const char *key, + int64_t val); +int OSSL_PARAM_BLD_push_uint64(OSSL_PARAM_BLD *bld, const char *key, + uint64_t val); +int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key, + size_t val); +int OSSL_PARAM_BLD_push_time_t(OSSL_PARAM_BLD *bld, const char *key, + time_t val); +int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key, + double val); +int OSSL_PARAM_BLD_push_BN(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn); +int OSSL_PARAM_BLD_push_BN_pad(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn, size_t sz); +int OSSL_PARAM_BLD_push_utf8_string(OSSL_PARAM_BLD *bld, const char *key, + const char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_utf8_ptr(OSSL_PARAM_BLD *bld, const char *key, + char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_string(OSSL_PARAM_BLD *bld, const char *key, + const void *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_ptr(OSSL_PARAM_BLD *bld, const char *key, + void *buf, size_t bsize); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_PARAM_BUILD_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/params.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/params.h new file mode 100644 index 0000000..6772c40 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/params.h @@ -0,0 +1,166 @@ +/* + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, 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_PARAMS_H +#define OPENSSL_PARAMS_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_PARAM_UNMODIFIED ((size_t)-1) + +#define OSSL_PARAM_END \ + { NULL, 0, NULL, 0, 0 } + +#define OSSL_PARAM_DEFN(key, type, addr, sz) \ + { (key), (type), (addr), (sz), OSSL_PARAM_UNMODIFIED } + +/* Basic parameter types without return sizes */ +#define OSSL_PARAM_int(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int)) +#define OSSL_PARAM_uint(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned int)) +#define OSSL_PARAM_long(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(long int)) +#define OSSL_PARAM_ulong(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned long int)) +#define OSSL_PARAM_int32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int32_t)) +#define OSSL_PARAM_uint32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint32_t)) +#define OSSL_PARAM_int64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int64_t)) +#define OSSL_PARAM_uint64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint64_t)) +#define OSSL_PARAM_size_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), sizeof(size_t)) +#define OSSL_PARAM_time_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(time_t)) +#define OSSL_PARAM_double(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_REAL, (addr), sizeof(double)) + +#define OSSL_PARAM_BN(key, bn, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (bn), (sz)) +#define OSSL_PARAM_utf8_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_STRING, (addr), sz) +#define OSSL_PARAM_octet_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_STRING, (addr), sz) + +#define OSSL_PARAM_utf8_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_PTR, (addr), sz) +#define OSSL_PARAM_octet_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_PTR, (addr), sz) + +/* Search an OSSL_PARAM array for a matching name */ +OSSL_PARAM *OSSL_PARAM_locate(OSSL_PARAM *p, const char *key); +const OSSL_PARAM *OSSL_PARAM_locate_const(const OSSL_PARAM *p, const char *key); + +/* Basic parameter type run-time construction */ +OSSL_PARAM OSSL_PARAM_construct_int(const char *key, int *buf); +OSSL_PARAM OSSL_PARAM_construct_uint(const char *key, unsigned int *buf); +OSSL_PARAM OSSL_PARAM_construct_long(const char *key, long int *buf); +OSSL_PARAM OSSL_PARAM_construct_ulong(const char *key, unsigned long int *buf); +OSSL_PARAM OSSL_PARAM_construct_int32(const char *key, int32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint32(const char *key, uint32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_int64(const char *key, int64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint64(const char *key, uint64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_size_t(const char *key, size_t *buf); +OSSL_PARAM OSSL_PARAM_construct_time_t(const char *key, time_t *buf); +OSSL_PARAM OSSL_PARAM_construct_BN(const char *key, unsigned char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_double(const char *key, double *buf); +OSSL_PARAM OSSL_PARAM_construct_utf8_string(const char *key, char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_string(const char *key, void *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_ptr(const char *key, void **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_end(void); + +int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to, + const OSSL_PARAM *paramdefs, + const char *key, const char *value, + size_t value_n, int *found); + +int OSSL_PARAM_print_to_bio(const OSSL_PARAM *params, BIO *bio, + int print_values); + +int OSSL_PARAM_get_int(const OSSL_PARAM *p, int *val); +int OSSL_PARAM_get_uint(const OSSL_PARAM *p, unsigned int *val); +int OSSL_PARAM_get_long(const OSSL_PARAM *p, long int *val); +int OSSL_PARAM_get_ulong(const OSSL_PARAM *p, unsigned long int *val); +int OSSL_PARAM_get_int32(const OSSL_PARAM *p, int32_t *val); +int OSSL_PARAM_get_uint32(const OSSL_PARAM *p, uint32_t *val); +int OSSL_PARAM_get_int64(const OSSL_PARAM *p, int64_t *val); +int OSSL_PARAM_get_uint64(const OSSL_PARAM *p, uint64_t *val); +int OSSL_PARAM_get_size_t(const OSSL_PARAM *p, size_t *val); +int OSSL_PARAM_get_time_t(const OSSL_PARAM *p, time_t *val); + +int OSSL_PARAM_set_int(OSSL_PARAM *p, int val); +int OSSL_PARAM_set_uint(OSSL_PARAM *p, unsigned int val); +int OSSL_PARAM_set_long(OSSL_PARAM *p, long int val); +int OSSL_PARAM_set_ulong(OSSL_PARAM *p, unsigned long int val); +int OSSL_PARAM_set_int32(OSSL_PARAM *p, int32_t val); +int OSSL_PARAM_set_uint32(OSSL_PARAM *p, uint32_t val); +int OSSL_PARAM_set_int64(OSSL_PARAM *p, int64_t val); +int OSSL_PARAM_set_uint64(OSSL_PARAM *p, uint64_t val); +int OSSL_PARAM_set_size_t(OSSL_PARAM *p, size_t val); +int OSSL_PARAM_set_time_t(OSSL_PARAM *p, time_t val); + +int OSSL_PARAM_get_double(const OSSL_PARAM *p, double *val); +int OSSL_PARAM_set_double(OSSL_PARAM *p, double val); + +int OSSL_PARAM_get_BN(const OSSL_PARAM *p, BIGNUM **val); +int OSSL_PARAM_set_BN(OSSL_PARAM *p, const BIGNUM *val); + +int OSSL_PARAM_get_utf8_string(const OSSL_PARAM *p, char **val, size_t max_len); +int OSSL_PARAM_set_utf8_string(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_string(const OSSL_PARAM *p, void **val, size_t max_len, + size_t *used_len); +int OSSL_PARAM_set_octet_string(OSSL_PARAM *p, const void *val, size_t len); + +int OSSL_PARAM_get_utf8_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_set_utf8_ptr(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); +int OSSL_PARAM_set_octet_ptr(OSSL_PARAM *p, const void *val, + size_t used_len); + +int OSSL_PARAM_get_utf8_string_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_get_octet_string_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); + +int OSSL_PARAM_modified(const OSSL_PARAM *p); +void OSSL_PARAM_set_all_unmodified(OSSL_PARAM *p); + +OSSL_PARAM *OSSL_PARAM_dup(const OSSL_PARAM *p); +OSSL_PARAM *OSSL_PARAM_merge(const OSSL_PARAM *p1, const OSSL_PARAM *p2); +void OSSL_PARAM_free(OSSL_PARAM *p); + +int OSSL_PARAM_set_octet_string_or_ptr(OSSL_PARAM *p, const void *val, + size_t len); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pem.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pem.h new file mode 100644 index 0000000..fa64aaf --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pem.h @@ -0,0 +1,548 @@ +/* + * Copyright 1995-2025 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_PEM_H +#define OPENSSL_PEM_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PEM_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PEM_BUFSIZE 1024 + +#define PEM_STRING_X509_OLD "X509 CERTIFICATE" +#define PEM_STRING_X509 "CERTIFICATE" +#define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +#define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +#define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +#define PEM_STRING_X509_CRL "X509 CRL" +#define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +#define PEM_STRING_PUBLIC "PUBLIC KEY" +#define PEM_STRING_RSA "RSA PRIVATE KEY" +#define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +#define PEM_STRING_DSA "DSA PRIVATE KEY" +#define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +#define PEM_STRING_PKCS7 "PKCS7" +#define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +#define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +#define PEM_STRING_PKCS8INF "PRIVATE KEY" +#define PEM_STRING_DHPARAMS "DH PARAMETERS" +#define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +#define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +#define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +#define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +#define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +#define PEM_STRING_PARAMETERS "PARAMETERS" +#define PEM_STRING_CMS "CMS" +#define PEM_STRING_SM2PRIVATEKEY "SM2 PRIVATE KEY" +#define PEM_STRING_SM2PARAMETERS "SM2 PARAMETERS" +#define PEM_STRING_ACERT "ATTRIBUTE CERTIFICATE" + +#define PEM_TYPE_ENCRYPTED 10 +#define PEM_TYPE_MIC_ONLY 20 +#define PEM_TYPE_MIC_CLEAR 30 +#define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +#define PEM_read_cb_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u) +#define PEM_read_cb_ex_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name##_ex(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +#define PEM_write_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x) +#define PEM_write_cb_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u) +#define PEM_write_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) +#define PEM_write_cb_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +#ifdef OPENSSL_NO_STDIO + +#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +#endif +#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +#endif +#else + +#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str, fp, \ + (void **)x, cb, u); \ + } + +#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ + PEM_write_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) +#endif +#endif + +#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + type *PEM_read_bio_##name(BIO *bp, type **x, \ + pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str, bp, \ + (void **)x, cb, u); \ + } + +#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + PEM_write_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +#define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +/* + * 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. + */ +#if defined(OPENSSL_NO_STDIO) + +#define DECLARE_PEM_read_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_read_fp_ex_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_fp_ex_attr(attr, name, type) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const_attr(attr, name, type) /**/ +#endif +#define DECLARE_PEM_write_cb_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) /**/ + +#else + +#define DECLARE_PEM_read_fp_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); +#define DECLARE_PEM_read_fp_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); \ + attr PEM_read_cb_ex_fnsig(name, type, FILE, read); + +#define DECLARE_PEM_write_fp_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +#define DECLARE_PEM_write_fp_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); \ + attr PEM_write_ex_fnsig(name, type, FILE, write); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +#endif +#define DECLARE_PEM_write_cb_fp_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); +#define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); \ + attr PEM_write_cb_ex_fnsig(name, type, FILE, write); + +#endif + +#define DECLARE_PEM_read_fp(name, type) \ + DECLARE_PEM_read_fp_attr(extern, name, type) +#define DECLARE_PEM_write_fp(name, type) \ + DECLARE_PEM_write_fp_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const(name, type) \ + DECLARE_PEM_write_fp_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_write_cb_fp(name, type) \ + DECLARE_PEM_write_cb_fp_attr(extern, name, type) + +#define DECLARE_PEM_read_bio_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); +#define DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); \ + attr PEM_read_cb_ex_fnsig(name, type, BIO, read_bio); +#define DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_bio_attr(extern, name, type) +#define DECLARE_PEM_read_bio_ex(name, type) \ + DECLARE_PEM_read_bio_ex_attr(extern, name, type) + +#define DECLARE_PEM_write_bio_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_ex_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_bio_attr(extern, name, type) +#define DECLARE_PEM_write_bio_ex(name, type) \ + DECLARE_PEM_write_bio_ex_attr(extern, name, type) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_bio_const_attr(extern, name, type) +#endif + +#define DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_cb_ex_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_bio_attr(extern, name, type) +#define DECLARE_PEM_write_cb_ex_bio(name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(extern, name, type) + +#define DECLARE_PEM_write_attr(attr, name, type) \ + DECLARE_PEM_write_bio_attr(attr, name, type) \ + DECLARE_PEM_write_fp_attr(attr, name, type) +#define DECLARE_PEM_write_ex_attr(attr, name, type) \ + DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_attr(extern, name, type) +#define DECLARE_PEM_write_ex(name, type) \ + DECLARE_PEM_write_ex_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_const_attr(attr, name, type) \ + DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + DECLARE_PEM_write_fp_const_attr(attr, name, type) +#define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_write_cb_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_attr(attr, name, type) +#define DECLARE_PEM_write_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_attr(extern, name, type) +#define DECLARE_PEM_write_cb_ex(name, type) \ + DECLARE_PEM_write_cb_ex_attr(extern, name, type) +#define DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_read_bio_attr(attr, name, type) \ + DECLARE_PEM_read_fp_attr(attr, name, type) +#define DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_read_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_attr(extern, name, type) +#define DECLARE_PEM_read_ex(name, type) \ + DECLARE_PEM_read_ex_attr(extern, name, type) +#define DECLARE_PEM_rw_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_attr(attr, name, type) +#define DECLARE_PEM_rw_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_ex_attr(attr, name, type) +#define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_rw_attr(extern, name, type) +#define DECLARE_PEM_rw_ex(name, type) \ + DECLARE_PEM_rw_ex_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_rw_const_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_const_attr(attr, name, type) +#define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_rw_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_rw_cb_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_cb_attr(attr, name, type) +#define DECLARE_PEM_rw_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_ex_attr(attr, name, type) +#define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_rw_cb_attr(extern, name, type) +#define DECLARE_PEM_rw_cb_ex(name, type) \ + DECLARE_PEM_rw_cb_ex_attr(extern, name, type) + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +#define PEM_FLAG_SECURE 0x1 +#define PEM_FLAG_EAY_COMPATIBLE 0x2 +#define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio_ctx(OSSL_i2d_of_void_ctx *i2d, void *vctx, + const char *name, BIO *bp, const void *x, + const EVP_CIPHER *enc, const unsigned char *kstr, + int klen, pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_bio_ex(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, + const char *propq); + +int PEM_X509_INFO_write_bio(BIO *bp, const X509_INFO *xi, EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +#ifndef OPENSSL_NO_STDIO +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_ex(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, + void *u, OSSL_LIB_CTX *libctx, const char *propq); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, const unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, const char *str); + +#include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(X509_PUBKEY, X509_PUBKEY) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSAPublicKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSA_PUBKEY, RSA) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSA_PUBKEY, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSAparams, DSA) +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, ECPrivateKey, EC_KEY) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, EC_PUBKEY, EC_KEY) +#endif +#endif + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH) +DECLARE_PEM_write_attr(OSSL_DEPRECATEDIN_3_0, DHxparams, DH) +#endif +#endif +DECLARE_PEM_rw_cb_ex(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw_ex(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, const EVP_PKEY *x, + const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +/* Why do these take a signed char *kstr? */ +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, const EVP_PKEY *, const EVP_CIPHER *, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_bio(BIO *bp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS8PrivateKey_fp(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cd, void *u); +#endif +EVP_PKEY *PEM_read_bio_Parameters_ex(BIO *bp, EVP_PKEY **x, + OSSL_LIB_CTX *libctx, const char *propq); +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, const EVP_PKEY *x); + +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, const EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, const EVP_PKEY *pk); +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); +int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pem2.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pem2.h new file mode 100644 index 0000000..6d3ab2a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pem2.h @@ -0,0 +1,19 @@ +/* + * Copyright 1999-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_PEM2_H +#define OPENSSL_PEM2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PEM2_H +#endif +#include +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pemerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pemerr.h new file mode 100644 index 0000000..eb3c9a1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pemerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_PEMERR_H +#define OPENSSL_PEMERR_H +#pragma once + +#include +#include +#include + +/* + * PEM reason codes. + */ +#define PEM_R_BAD_BASE64_DECODE 100 +#define PEM_R_BAD_DECRYPT 101 +#define PEM_R_BAD_END_LINE 102 +#define PEM_R_BAD_IV_CHARS 103 +#define PEM_R_BAD_MAGIC_NUMBER 116 +#define PEM_R_BAD_PASSWORD_READ 104 +#define PEM_R_BAD_VERSION_NUMBER 117 +#define PEM_R_BIO_WRITE_FAILURE 118 +#define PEM_R_CIPHER_IS_NULL 127 +#define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +#define PEM_R_EXPECTING_DSS_KEY_BLOB 131 +#define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +#define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +#define PEM_R_EXPECTING_RSA_KEY_BLOB 132 +#define PEM_R_HEADER_TOO_LONG 128 +#define PEM_R_INCONSISTENT_HEADER 121 +#define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +#define PEM_R_KEYBLOB_TOO_SHORT 123 +#define PEM_R_MISSING_DEK_IV 129 +#define PEM_R_NOT_DEK_INFO 105 +#define PEM_R_NOT_ENCRYPTED 106 +#define PEM_R_NOT_PROC_TYPE 107 +#define PEM_R_NO_START_LINE 108 +#define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +#define PEM_R_PVK_DATA_TOO_SHORT 124 +#define PEM_R_PVK_TOO_SHORT 125 +#define PEM_R_READ_KEY 111 +#define PEM_R_SHORT_HEADER 112 +#define PEM_R_UNEXPECTED_DEK_IV 130 +#define PEM_R_UNSUPPORTED_CIPHER 113 +#define PEM_R_UNSUPPORTED_ENCRYPTION 114 +#define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +#define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 +#define PEM_R_UNSUPPORTED_PVK_KEY_TYPE 133 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12.h new file mode 100644 index 0000000..7990d25 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12.h @@ -0,0 +1,376 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/pkcs12.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS12_H +#define OPENSSL_PKCS12_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS12_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PKCS12_KEY_ID 1 +#define PKCS12_IV_ID 2 +#define PKCS12_MAC_ID 3 + +/* Default iteration count */ +#ifndef PKCS12_DEFAULT_ITER +#define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +#endif + +#define PKCS12_MAC_KEY_LENGTH 20 + +/* + * The macro is expected to be used only internally. Kept for + * backwards compatibility. NIST requires 16, previous value was + * 8. Allow to override this at compile time. + */ +#ifndef PKCS12_SALT_LEN +#define PKCS12_SALT_LEN 16 +#endif + +/* It's not clear if these are actually needed... */ +#define PKCS12_key_gen PKCS12_key_gen_utf8 +#define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +#define KEY_EX 0x10 +#define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) +#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) +#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) +#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) +#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) +#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) +#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) +#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) +#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) +#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) +#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) +#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +#define PKCS12_ERROR 0 +#define PKCS12_OK 1 + +/* Compatibility macros */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 + +#define M_PKCS12_bag_type PKCS12_bag_type +#define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +#define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +#define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +#define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +#define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +#define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +#define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +#define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +#define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +#define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +#endif + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); +const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_secret(int type, int vtype, const unsigned char *value, int len); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf, + OSSL_LIB_CTX *ctx, + const char *propq); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, + int passlen, OSSL_LIB_CTX *ctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen, + OSSL_LIB_CTX *ctx, + const char *propq); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +X509_SIG *PKCS8_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, + OSSL_LIB_CTX *ctx, const char *propq); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags, + OSSL_LIB_CTX *ctx, const char *propq); + +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, + const unsigned char *bytes, int len); +int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, + const unsigned char *bytes, int len); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf); +void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf, + OSSL_LIB_CTX *libctx, + const char *propq); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf, + OSSL_LIB_CTX *ctx, + const char *propq); +PKCS12 *PKCS12_init(int mode); +PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_asc_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); +PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype); +PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass); +PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, + int nid_type, const unsigned char *value, int len); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); +PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, + OSSL_LIB_CTX *ctx, const char *propq); + +int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, const PKCS12 *p12); +#endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +#ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +#endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12err.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12err.h new file mode 100644 index 0000000..2ad38f8 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs12err.h @@ -0,0 +1,44 @@ +/* + * 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_PKCS12ERR_H +#define OPENSSL_PKCS12ERR_H +#pragma once + +#include +#include +#include + +/* + * PKCS12 reason codes. + */ +#define PKCS12_R_CALLBACK_FAILED 115 +#define PKCS12_R_CANT_PACK_STRUCTURE 100 +#define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 +#define PKCS12_R_DECODE_ERROR 101 +#define PKCS12_R_ENCODE_ERROR 102 +#define PKCS12_R_ENCRYPT_ERROR 103 +#define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 +#define PKCS12_R_INVALID_NULL_ARGUMENT 104 +#define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 +#define PKCS12_R_INVALID_TYPE 112 +#define PKCS12_R_IV_GEN_ERROR 106 +#define PKCS12_R_KEY_GEN_ERROR 107 +#define PKCS12_R_MAC_ABSENT 108 +#define PKCS12_R_MAC_GENERATION_ERROR 109 +#define PKCS12_R_MAC_SETUP_ERROR 110 +#define PKCS12_R_MAC_STRING_SET_ERROR 111 +#define PKCS12_R_MAC_VERIFY_FAILURE 113 +#define PKCS12_R_PARSE_ERROR 114 +#define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 +#define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +#define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7.h new file mode 100644 index 0000000..e8a41b4 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7.h @@ -0,0 +1,435 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/pkcs7.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS7_H +#define OPENSSL_PKCS7_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS7_H +#endif + +#include +#include +#include + +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct PKCS7_CTX_st { + OSSL_LIB_CTX *libctx; + char *propq; +} PKCS7_CTX; + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; /* confusing name, actually used for signing */ + ASN1_OCTET_STRING *enc_digest; /* confusing name, actually signature */ + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; + const PKCS7_CTX *ctx; +} PKCS7_SIGNER_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) +#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) +#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) +#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) +#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) +#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) +#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ + const PKCS7_CTX *ctx; +} PKCS7_RECIP_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) +#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) +#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) +#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) +#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) +#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) +#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; + const PKCS7_CTX *ctx; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +#define PKCS7_S_HEADER 0 +#define PKCS7_S_BODY 1 +#define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; + PKCS7_CTX ctx; +} PKCS7; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) +#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) +#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) +#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) +#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) +#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) +#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_freefunc_type(freefunc)) +#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) +#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) +#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) +#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) +#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) + +/* clang-format on */ + +#define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +#define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +#define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +#define PKCS7_get_attributes(si) ((si)->unauth_attr) + +#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +#define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +#define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +#define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +#define PKCS7_set_detached(p, v) \ + PKCS7_ctrl(p, PKCS7_OP_SET_DETACHED_SIGNATURE, v, NULL) +#define PKCS7_get_detached(p) \ + PKCS7_ctrl(p, PKCS7_OP_GET_DETACHED_SIGNATURE, 0, NULL) + +#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +#define PKCS7_TEXT 0x1 +#define PKCS7_NOCERTS 0x2 +#define PKCS7_NOSIGS 0x4 +#define PKCS7_NOCHAIN 0x8 +#define PKCS7_NOINTERN 0x10 +#define PKCS7_NOVERIFY 0x20 +#define PKCS7_DETACHED 0x40 +#define PKCS7_BINARY 0x80 +#define PKCS7_NOATTR 0x100 +#define PKCS7_NOSMIMECAP 0x200 +#define PKCS7_NOOLDMIMETYPE 0x400 +#define PKCS7_CRLFEOL 0x800 +#define PKCS7_STREAM 0x1000 +#define PKCS7_NOCRL 0x2000 +#define PKCS7_PARTIAL 0x4000 +#define PKCS7_REUSE_DIGEST 0x8000 +#define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +#define SMIME_TEXT PKCS7_TEXT +#define SMIME_NOCERTS PKCS7_NOCERTS +#define SMIME_NOSIGS PKCS7_NOSIGS +#define SMIME_NOCHAIN PKCS7_NOCHAIN +#define SMIME_NOINTERN PKCS7_NOINTERN +#define SMIME_NOVERIFY PKCS7_NOVERIFY +#define SMIME_DETACHED PKCS7_DETACHED +#define SMIME_BINARY PKCS7_BINARY +#define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +#define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +#ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, const PKCS7 *p7); +#endif +DECLARE_ASN1_DUP_FUNCTION(PKCS7) +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, const PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) +PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_type_is_other(PKCS7 *p7); +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *signer); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_get_octet_string(PKCS7 *p7); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(const PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(const PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); +PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, int flags, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7_ex(BIO *bio, BIO **bcont, PKCS7 **p7); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7err.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7err.h new file mode 100644 index 0000000..358fe10 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/pkcs7err.h @@ -0,0 +1,61 @@ +/* + * 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_PKCS7ERR_H +#define OPENSSL_PKCS7ERR_H +#pragma once + +#include +#include +#include + +/* + * PKCS7 reason codes. + */ +#define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 +#define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 +#define PKCS7_R_CIPHER_NOT_INITIALIZED 116 +#define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 +#define PKCS7_R_CTRL_ERROR 152 +#define PKCS7_R_DECRYPT_ERROR 119 +#define PKCS7_R_DIGEST_FAILURE 101 +#define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 +#define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 +#define PKCS7_R_ERROR_ADDING_RECIPIENT 120 +#define PKCS7_R_ERROR_SETTING_CIPHER 121 +#define PKCS7_R_INVALID_NULL_POINTER 143 +#define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +#define PKCS7_R_NO_CONTENT 122 +#define PKCS7_R_NO_DEFAULT_DIGEST 151 +#define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +#define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +#define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +#define PKCS7_R_NO_SIGNERS 142 +#define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 +#define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 +#define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 +#define PKCS7_R_PKCS7_DATASIGN 145 +#define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 +#define PKCS7_R_SIGNATURE_FAILURE 105 +#define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 +#define PKCS7_R_SIGNING_CTRL_FAILURE 147 +#define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 +#define PKCS7_R_SMIME_TEXT_ERROR 129 +#define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 +#define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 +#define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 +#define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 +#define PKCS7_R_UNKNOWN_OPERATION 110 +#define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 +#define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 +#define PKCS7_R_WRONG_CONTENT_TYPE 113 +#define PKCS7_R_WRONG_PKCS7_TYPE 114 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/prov_ssl.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/prov_ssl.h new file mode 100644 index 0000000..269c3b8 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/prov_ssl.h @@ -0,0 +1,38 @@ +/* + * Copyright 2021-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_PROV_SSL_H +#define OPENSSL_PROV_SSL_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* SSL/TLS related defines useful to providers */ + +#define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* SSL/TLS uses a 2 byte unsigned version number */ +#define SSL3_VERSION 0x0300 +#define TLS1_VERSION 0x0301 +#define TLS1_1_VERSION 0x0302 +#define TLS1_2_VERSION 0x0303 +#define TLS1_3_VERSION 0x0304 +#define DTLS1_VERSION 0xFEFF +#define DTLS1_2_VERSION 0xFEFD +#define DTLS1_BAD_VER 0x0100 + +/* QUIC uses a 4 byte unsigned version number */ +#define OSSL_QUIC1_VERSION 0x0000001 + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_PROV_SSL_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/proverr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/proverr.h new file mode 100644 index 0000000..a82b8e4 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/proverr.h @@ -0,0 +1,169 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_PROVERR_H +#define OPENSSL_PROVERR_H +#pragma once + +#include +#include +#include + +/* + * PROV reason codes. + */ +#define PROV_R_ADDITIONAL_INPUT_TOO_LONG 184 +#define PROV_R_ALGORITHM_MISMATCH 173 +#define PROV_R_ALREADY_INSTANTIATED 185 +#define PROV_R_BAD_DECRYPT 100 +#define PROV_R_BAD_ENCODING 141 +#define PROV_R_BAD_LENGTH 142 +#define PROV_R_BAD_TLS_CLIENT_VERSION 161 +#define PROV_R_BN_ERROR 160 +#define PROV_R_CIPHER_OPERATION_FAILED 102 +#define PROV_R_COFACTOR_REQUIRED 236 +#define PROV_R_DERIVATION_FUNCTION_INIT_FAILED 205 +#define PROV_R_DIGEST_NOT_ALLOWED 174 +#define PROV_R_EMS_NOT_ENABLED 233 +#define PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS 244 +#define PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK 186 +#define PROV_R_ERROR_INSTANTIATING_DRBG 188 +#define PROV_R_ERROR_RETRIEVING_ENTROPY 189 +#define PROV_R_ERROR_RETRIEVING_NONCE 190 +#define PROV_R_FAILED_DURING_DERIVATION 164 +#define PROV_R_FAILED_TO_CREATE_LOCK 180 +#define PROV_R_FAILED_TO_DECRYPT 162 +#define PROV_R_FAILED_TO_GENERATE_KEY 121 +#define PROV_R_FAILED_TO_GET_PARAMETER 103 +#define PROV_R_FAILED_TO_SET_PARAMETER 104 +#define PROV_R_FAILED_TO_SIGN 175 +#define PROV_R_FINAL_CALL_OUT_OF_ORDER 237 +#define PROV_R_FIPS_MODULE_CONDITIONAL_ERROR 227 +#define PROV_R_FIPS_MODULE_ENTERING_ERROR_STATE 224 +#define PROV_R_FIPS_MODULE_IMPORT_PCT_ERROR 253 +#define PROV_R_FIPS_MODULE_IN_ERROR_STATE 225 +#define PROV_R_GENERATE_ERROR 191 +#define PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 165 +#define PROV_R_INDICATOR_INTEGRITY_FAILURE 210 +#define PROV_R_INIT_CALL_OUT_OF_ORDER 238 +#define PROV_R_INSUFFICIENT_DRBG_STRENGTH 181 +#define PROV_R_INVALID_AAD 108 +#define PROV_R_INVALID_AEAD 231 +#define PROV_R_INVALID_CONFIG_DATA 211 +#define PROV_R_INVALID_CONSTANT_LENGTH 157 +#define PROV_R_INVALID_CURVE 176 +#define PROV_R_INVALID_CUSTOM_LENGTH 111 +#define PROV_R_INVALID_DATA 115 +#define PROV_R_INVALID_DIGEST 122 +#define PROV_R_INVALID_DIGEST_LENGTH 166 +#define PROV_R_INVALID_DIGEST_SIZE 218 +#define PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION 243 +#define PROV_R_INVALID_INPUT_LENGTH 230 +#define PROV_R_INVALID_ITERATION_COUNT 123 +#define PROV_R_INVALID_IV_LENGTH 109 +#define PROV_R_INVALID_KDF 232 +#define PROV_R_INVALID_KEY 158 +#define PROV_R_INVALID_KEY_LENGTH 105 +#define PROV_R_INVALID_MAC 151 +#define PROV_R_INVALID_MEMORY_SIZE 235 +#define PROV_R_INVALID_MGF1_MD 167 +#define PROV_R_INVALID_MODE 125 +#define PROV_R_INVALID_OUTPUT_LENGTH 217 +#define PROV_R_INVALID_PADDING_MODE 168 +#define PROV_R_INVALID_PREHASHED_DIGEST_LENGTH 241 +#define PROV_R_INVALID_PUBINFO 198 +#define PROV_R_INVALID_SALT_LENGTH 112 +#define PROV_R_INVALID_SEED_LENGTH 154 +#define PROV_R_INVALID_SIGNATURE_SIZE 179 +#define PROV_R_INVALID_STATE 212 +#define PROV_R_INVALID_TAG 110 +#define PROV_R_INVALID_TAG_LENGTH 118 +#define PROV_R_INVALID_THREAD_POOL_SIZE 234 +#define PROV_R_INVALID_UKM_LENGTH 200 +#define PROV_R_INVALID_X931_DIGEST 170 +#define PROV_R_IN_ERROR_STATE 192 +#define PROV_R_KEY_SETUP_FAILED 101 +#define PROV_R_KEY_SIZE_TOO_SMALL 171 +#define PROV_R_LENGTH_TOO_LARGE 202 +#define PROV_R_MISMATCHING_DOMAIN_PARAMETERS 203 +#define PROV_R_MISSING_CEK_ALG 144 +#define PROV_R_MISSING_CIPHER 155 +#define PROV_R_MISSING_CONFIG_DATA 213 +#define PROV_R_MISSING_CONSTANT 156 +#define PROV_R_MISSING_KEY 128 +#define PROV_R_MISSING_MAC 150 +#define PROV_R_MISSING_MESSAGE_DIGEST 129 +#define PROV_R_MISSING_OID 209 +#define PROV_R_MISSING_PASS 130 +#define PROV_R_MISSING_SALT 131 +#define PROV_R_MISSING_SECRET 132 +#define PROV_R_MISSING_SEED 140 +#define PROV_R_MISSING_SESSION_ID 133 +#define PROV_R_MISSING_TYPE 134 +#define PROV_R_MISSING_XCGHASH 135 +#define PROV_R_ML_DSA_NO_FORMAT 245 +#define PROV_R_ML_KEM_NO_FORMAT 246 +#define PROV_R_MODULE_INTEGRITY_FAILURE 214 +#define PROV_R_NOT_A_PRIVATE_KEY 221 +#define PROV_R_NOT_A_PUBLIC_KEY 220 +#define PROV_R_NOT_INSTANTIATED 193 +#define PROV_R_NOT_PARAMETERS 226 +#define PROV_R_NOT_SUPPORTED 136 +#define PROV_R_NOT_XOF_OR_INVALID_LENGTH 113 +#define PROV_R_NO_INSTANCE_ALLOWED 242 +#define PROV_R_NO_KEY_SET 114 +#define PROV_R_NO_PARAMETERS_SET 177 +#define PROV_R_NULL_LENGTH_POINTER 247 +#define PROV_R_NULL_OUTPUT_BUFFER 248 +#define PROV_R_ONESHOT_CALL_OUT_OF_ORDER 239 +#define PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 178 +#define PROV_R_OUTPUT_BUFFER_TOO_SMALL 106 +#define PROV_R_PARENT_CANNOT_GENERATE_RANDOM_NUMBERS 228 +#define PROV_R_PARENT_CANNOT_SUPPLY_ENTROPY_SEED 187 +#define PROV_R_PARENT_LOCKING_NOT_ENABLED 182 +#define PROV_R_PARENT_STRENGTH_TOO_WEAK 194 +#define PROV_R_PATH_MUST_BE_ABSOLUTE 219 +#define PROV_R_PERSONALISATION_STRING_TOO_LONG 195 +#define PROV_R_PSS_SALTLEN_TOO_SMALL 172 +#define PROV_R_REPEATED_PARAMETER 252 +#define PROV_R_REQUEST_TOO_LARGE_FOR_DRBG 196 +#define PROV_R_REQUIRE_CTR_MODE_CIPHER 206 +#define PROV_R_RESEED_ERROR 197 +#define PROV_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 222 +#define PROV_R_SEED_SOURCES_MUST_NOT_HAVE_A_PARENT 229 +#define PROV_R_SELF_TEST_KAT_FAILURE 215 +#define PROV_R_SELF_TEST_POST_FAILURE 216 +#define PROV_R_TAG_NOT_NEEDED 120 +#define PROV_R_TAG_NOT_SET 119 +#define PROV_R_TOO_MANY_RECORDS 126 +#define PROV_R_UNABLE_TO_FIND_CIPHERS 207 +#define PROV_R_UNABLE_TO_GET_PARENT_STRENGTH 199 +#define PROV_R_UNABLE_TO_GET_PASSPHRASE 159 +#define PROV_R_UNABLE_TO_INITIALISE_CIPHERS 208 +#define PROV_R_UNABLE_TO_LOAD_SHA256 147 +#define PROV_R_UNABLE_TO_LOCK_PARENT 201 +#define PROV_R_UNABLE_TO_RESEED 204 +#define PROV_R_UNEXPECTED_KEY_PARAMETERS 249 +#define PROV_R_UNSUPPORTED_CEK_ALG 145 +#define PROV_R_UNSUPPORTED_KEY_SIZE 153 +#define PROV_R_UNSUPPORTED_MAC_TYPE 137 +#define PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS 152 +#define PROV_R_UNSUPPORTED_SELECTION 250 +#define PROV_R_UPDATE_CALL_OUT_OF_ORDER 240 +#define PROV_R_URI_AUTHORITY_UNSUPPORTED 223 +#define PROV_R_VALUE_ERROR 138 +#define PROV_R_WRONG_CIPHERTEXT_SIZE 251 +#define PROV_R_WRONG_FINAL_BLOCK_LENGTH 107 +#define PROV_R_WRONG_OUTPUT_BUFFER_SIZE 139 +#define PROV_R_XOF_DIGESTS_NOT_ALLOWED 183 +#define PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE 148 +#define PROV_R_XTS_DUPLICATED_KEYS 149 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/provider.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/provider.h new file mode 100644 index 0000000..c34beea --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/provider.h @@ -0,0 +1,94 @@ +/* + * Copyright 2019-2025 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_PROVIDER_H +#define OPENSSL_PROVIDER_H +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Set and Get a library context search path */ +int OSSL_PROVIDER_set_default_search_path(OSSL_LIB_CTX *, const char *path); +const char *OSSL_PROVIDER_get0_default_search_path(OSSL_LIB_CTX *libctx); + +/* Load and unload a provider */ +OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *, const char *name); +OSSL_PROVIDER *OSSL_PROVIDER_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params); +OSSL_PROVIDER *OSSL_PROVIDER_try_load(OSSL_LIB_CTX *, const char *name, + int retain_fallbacks); +OSSL_PROVIDER *OSSL_PROVIDER_try_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params, + int retain_fallbacks); +int OSSL_PROVIDER_unload(OSSL_PROVIDER *prov); +int OSSL_PROVIDER_available(OSSL_LIB_CTX *, const char *name); +int OSSL_PROVIDER_do_all(OSSL_LIB_CTX *ctx, + int (*cb)(OSSL_PROVIDER *provider, void *cbdata), + void *cbdata); + +const OSSL_PARAM *OSSL_PROVIDER_gettable_params(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_params(const OSSL_PROVIDER *prov, OSSL_PARAM params[]); +int OSSL_PROVIDER_self_test(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_capabilities(const OSSL_PROVIDER *prov, + const char *capability, + OSSL_CALLBACK *cb, + void *arg); + +/*- + * Provider configuration parameters are normally set in the configuration file, + * but can also be set early in the main program before a provider is in use by + * multiple threads. + * + * Only UTF8-string values are supported. + */ +int OSSL_PROVIDER_add_conf_parameter(OSSL_PROVIDER *prov, const char *name, + const char *value); +/* + * Retrieves any of the requested configuration parameters for the given + * provider that were set in the configuration file or via the above + * OSSL_PROVIDER_add_parameter() function. + * + * The |params| array elements MUST have type OSSL_PARAM_UTF8_PTR, values are + * returned by reference, not as copies. + */ +int OSSL_PROVIDER_get_conf_parameters(const OSSL_PROVIDER *prov, + OSSL_PARAM params[]); +/* + * Parse a provider configuration parameter as a boolean value, + * or return a default value if unable to retrieve the parameter. + * Values like "1", "yes", "true", ... are true (nonzero). + * Values like "0", "no", "false", ... are false (zero). + */ +int OSSL_PROVIDER_conf_get_bool(const OSSL_PROVIDER *prov, + const char *name, int defval); + +const OSSL_ALGORITHM *OSSL_PROVIDER_query_operation(const OSSL_PROVIDER *prov, + int operation_id, + int *no_cache); +void OSSL_PROVIDER_unquery_operation(const OSSL_PROVIDER *prov, + int operation_id, const OSSL_ALGORITHM *algs); +void *OSSL_PROVIDER_get0_provider_ctx(const OSSL_PROVIDER *prov); +const OSSL_DISPATCH *OSSL_PROVIDER_get0_dispatch(const OSSL_PROVIDER *prov); + +/* Add a built in providers */ +int OSSL_PROVIDER_add_builtin(OSSL_LIB_CTX *, const char *name, + OSSL_provider_init_fn *init_fn); + +/* Information */ +const char *OSSL_PROVIDER_get0_name(const OSSL_PROVIDER *prov); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/quic.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/quic.h new file mode 100644 index 0000000..657969b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/quic.h @@ -0,0 +1,75 @@ +/* + * Copyright 2022-2025 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_QUIC_H +#define OPENSSL_QUIC_H +#pragma once + +#include +#include + +#ifndef OPENSSL_NO_QUIC + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Method used for non-thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_method(void); + +/* + * Method used for thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_thread_method(void); + +/* + * QUIC transport error codes (RFC 9000 s. 20.1) + */ +#define OSSL_QUIC_ERR_NO_ERROR 0x00 +#define OSSL_QUIC_ERR_INTERNAL_ERROR 0x01 +#define OSSL_QUIC_ERR_CONNECTION_REFUSED 0x02 +#define OSSL_QUIC_ERR_FLOW_CONTROL_ERROR 0x03 +#define OSSL_QUIC_ERR_STREAM_LIMIT_ERROR 0x04 +#define OSSL_QUIC_ERR_STREAM_STATE_ERROR 0x05 +#define OSSL_QUIC_ERR_FINAL_SIZE_ERROR 0x06 +#define OSSL_QUIC_ERR_FRAME_ENCODING_ERROR 0x07 +#define OSSL_QUIC_ERR_TRANSPORT_PARAMETER_ERROR 0x08 +#define OSSL_QUIC_ERR_CONNECTION_ID_LIMIT_ERROR 0x09 +#define OSSL_QUIC_ERR_PROTOCOL_VIOLATION 0x0A +#define OSSL_QUIC_ERR_INVALID_TOKEN 0x0B +#define OSSL_QUIC_ERR_APPLICATION_ERROR 0x0C +#define OSSL_QUIC_ERR_CRYPTO_BUFFER_EXCEEDED 0x0D +#define OSSL_QUIC_ERR_KEY_UPDATE_ERROR 0x0E +#define OSSL_QUIC_ERR_AEAD_LIMIT_REACHED 0x0F +#define OSSL_QUIC_ERR_NO_VIABLE_PATH 0x10 + +/* Inclusive range for handshake-specific errors. */ +#define OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN 0x0100 +#define OSSL_QUIC_ERR_CRYPTO_ERR_END 0x01FF + +#define OSSL_QUIC_ERR_CRYPTO_ERR(X) \ + (OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN + (X)) + +/* Local errors. */ +#define OSSL_QUIC_LOCAL_ERR_IDLE_TIMEOUT \ + ((uint64_t)0xFFFFFFFFFFFFFFFFULL) + +/* + * Method used for QUIC server operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_server_method(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_NO_QUIC */ +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rand.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rand.h new file mode 100644 index 0000000..7272309 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rand.h @@ -0,0 +1,133 @@ +/* + * Copyright 1995-2025 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_RAND_H +#define OPENSSL_RAND_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RAND_H +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Default security strength (in the sense of [NIST SP 800-90Ar1]) + * + * NIST SP 800-90Ar1 supports the strength of the DRBG being smaller than that + * of the cipher by collecting less entropy. The current DRBG implementation + * does not take RAND_DRBG_STRENGTH into account and sets the strength of the + * DRBG to that of the cipher. + */ +#define RAND_DRBG_STRENGTH 256 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +struct rand_meth_st { + int (*seed)(const void *buf, int num); + int (*bytes)(unsigned char *buf, int num); + void (*cleanup)(void); + int (*add)(const void *buf, int num, double randomness); + int (*pseudorand)(unsigned char *buf, int num); + int (*status)(void); +}; + +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_method(const RAND_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RAND_METHOD *RAND_get_rand_method(void); +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_engine(ENGINE *engine); +#endif + +OSSL_DEPRECATEDIN_3_0 RAND_METHOD *RAND_OpenSSL(void); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define RAND_cleanup() \ + while (0) \ + continue +#endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); + +/* + * Equivalent of RAND_priv_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_priv_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +/* + * Equivalent of RAND_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 int RAND_pseudo_bytes(unsigned char *buf, int num); +#endif + +EVP_RAND_CTX *RAND_get0_primary(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_public(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_private(OSSL_LIB_CTX *ctx); +int RAND_set0_public(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); +int RAND_set0_private(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); + +int RAND_set_DRBG_type(OSSL_LIB_CTX *ctx, const char *drbg, const char *propq, + const char *cipher, const char *digest); +int RAND_set_seed_source_type(OSSL_LIB_CTX *ctx, const char *seed, + const char *propq); + +void RAND_seed(const void *buf, int num); +void RAND_keep_random_devices_open(int keep); + +#if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +#endif + void RAND_add(const void *buf, int num, double randomness); +int RAND_load_file(const char *file, long max_bytes); +int RAND_write_file(const char *file); +const char *RAND_file_name(char *file, size_t num); +int RAND_status(void); + +#ifndef OPENSSL_NO_EGD +int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); +int RAND_egd(const char *path); +int RAND_egd_bytes(const char *path, int bytes); +#endif + +int RAND_poll(void); + +#if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H)) +/* application has to include in order to use these */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void RAND_screen(void); +OSSL_DEPRECATEDIN_1_1_0 int RAND_event(UINT, WPARAM, LPARAM); +#endif +#endif + +int RAND_set1_random_provider(OSSL_LIB_CTX *ctx, OSSL_PROVIDER *p); + +/* Which parameter to provider_random call */ +#define OSSL_PROV_RANDOM_PUBLIC 0 +#define OSSL_PROV_RANDOM_PRIVATE 1 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/randerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/randerr.h new file mode 100644 index 0000000..6107cdd --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/randerr.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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_RANDERR_H +#define OPENSSL_RANDERR_H +#pragma once + +#include +#include +#include + +/* + * RAND reason codes. + */ +#define RAND_R_ADDITIONAL_INPUT_TOO_LONG 102 +#define RAND_R_ALREADY_INSTANTIATED 103 +#define RAND_R_ARGUMENT_OUT_OF_RANGE 105 +#define RAND_R_CANNOT_OPEN_FILE 121 +#define RAND_R_DRBG_ALREADY_INITIALIZED 129 +#define RAND_R_DRBG_NOT_INITIALISED 104 +#define RAND_R_ENTROPY_INPUT_TOO_LONG 106 +#define RAND_R_ENTROPY_OUT_OF_RANGE 124 +#define RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED 127 +#define RAND_R_ERROR_INITIALISING_DRBG 107 +#define RAND_R_ERROR_INSTANTIATING_DRBG 108 +#define RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 109 +#define RAND_R_ERROR_RETRIEVING_ENTROPY 110 +#define RAND_R_ERROR_RETRIEVING_NONCE 111 +#define RAND_R_FAILED_TO_CREATE_LOCK 126 +#define RAND_R_FUNC_NOT_IMPLEMENTED 101 +#define RAND_R_FWRITE_ERROR 123 +#define RAND_R_GENERATE_ERROR 112 +#define RAND_R_INSUFFICIENT_DRBG_STRENGTH 139 +#define RAND_R_INTERNAL_ERROR 113 +#define RAND_R_INVALID_PROPERTY_QUERY 137 +#define RAND_R_IN_ERROR_STATE 114 +#define RAND_R_NOT_A_REGULAR_FILE 122 +#define RAND_R_NOT_INSTANTIATED 115 +#define RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED 128 +#define RAND_R_PARENT_LOCKING_NOT_ENABLED 130 +#define RAND_R_PARENT_STRENGTH_TOO_WEAK 131 +#define RAND_R_PERSONALISATION_STRING_TOO_LONG 116 +#define RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED 133 +#define RAND_R_PRNG_NOT_SEEDED 100 +#define RAND_R_RANDOM_POOL_IS_EMPTY 142 +#define RAND_R_RANDOM_POOL_OVERFLOW 125 +#define RAND_R_RANDOM_POOL_UNDERFLOW 134 +#define RAND_R_REQUEST_TOO_LARGE_FOR_DRBG 117 +#define RAND_R_RESEED_ERROR 118 +#define RAND_R_SELFTEST_FAILURE 119 +#define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135 +#define RAND_R_TOO_MUCH_NONCE_REQUESTED 136 +#define RAND_R_UNABLE_TO_CREATE_DRBG 143 +#define RAND_R_UNABLE_TO_FETCH_DRBG 144 +#define RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER 141 +#define RAND_R_UNABLE_TO_GET_PARENT_STRENGTH 138 +#define RAND_R_UNABLE_TO_LOCK_PARENT 140 +#define RAND_R_UNSUPPORTED_DRBG_FLAGS 132 +#define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc2.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc2.h new file mode 100644 index 0000000..7da28f7 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc2.h @@ -0,0 +1,68 @@ +/* + * 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_RC2_H +#define OPENSSL_RC2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC2_H +#endif + +#include + +#ifndef OPENSSL_NO_RC2 +#ifdef __cplusplus +extern "C" { +#endif + +#define RC2_BLOCK 8 +#define RC2_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef unsigned int RC2_INT; + +#define RC2_ENCRYPT 1 +#define RC2_DECRYPT 0 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void RC2_set_key(RC2_KEY *key, int len, + const unsigned char *data, int bits); +OSSL_DEPRECATEDIN_3_0 void RC2_ecb_encrypt(const unsigned char *in, + unsigned char *out, RC2_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_encrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_decrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num, int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc4.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc4.h new file mode 100644 index 0000000..92dce0c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc4.h @@ -0,0 +1,47 @@ +/* + * 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_RC4_H +#define OPENSSL_RC4_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC4_H +#endif + +#include + +#ifndef OPENSSL_NO_RC4 +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *RC4_options(void); +OSSL_DEPRECATEDIN_3_0 void RC4_set_key(RC4_KEY *key, int len, + const unsigned char *data); +OSSL_DEPRECATEDIN_3_0 void RC4(RC4_KEY *key, size_t len, + const unsigned char *indata, + unsigned char *outdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc5.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc5.h new file mode 100644 index 0000000..2e91e98 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rc5.h @@ -0,0 +1,79 @@ +/* + * 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_RC5_H +#define OPENSSL_RC5_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC5_H +#endif + +#include + +#ifndef OPENSSL_NO_RC5 +#ifdef __cplusplus +extern "C" { +#endif + +#define RC5_32_BLOCK 8 +#define RC5_32_KEY_LENGTH 16 /* This is a default, max is 255 */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define RC5_ENCRYPT 1 +#define RC5_DECRYPT 0 + +#define RC5_32_INT unsigned int + +/* + * This are the only values supported. Tweak the code if you want more The + * most supported modes will be RC5-32/12/16 RC5-32/16/8 + */ +#define RC5_8_ROUNDS 8 +#define RC5_12_ROUNDS 12 +#define RC5_16_ROUNDS 16 + +typedef struct rc5_key_st { + /* Number of rounds */ + int rounds; + RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)]; +} RC5_32_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RC5_32_set_key(RC5_32_KEY *key, int len, + const unsigned char *data, + int rounds); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ecb_encrypt(const unsigned char *in, + unsigned char *out, + RC5_32_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *schedule, + unsigned char *ivec, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *schedule, + unsigned char *ivec, int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ripemd.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ripemd.h new file mode 100644 index 0000000..a72d1da --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ripemd.h @@ -0,0 +1,59 @@ +/* + * 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_RIPEMD_H +#define OPENSSL_RIPEMD_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RIPEMD_H +#endif + +#include + +#ifndef OPENSSL_NO_RMD160 +#include +#include + +#define RIPEMD160_DIGEST_LENGTH 20 + +#ifdef __cplusplus +extern "C" { +#endif +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define RIPEMD160_LONG unsigned int + +#define RIPEMD160_CBLOCK 64 +#define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK / 4) + +typedef struct RIPEMD160state_st { + RIPEMD160_LONG A, B, C, D, E; + RIPEMD160_LONG Nl, Nh; + RIPEMD160_LONG data[RIPEMD160_LBLOCK]; + unsigned int num; +} RIPEMD160_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Init(RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *RIPEMD160(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void RIPEMD160_Transform(RIPEMD160_CTX *c, + const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rsa.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rsa.h new file mode 100644 index 0000000..08335e0 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rsa.h @@ -0,0 +1,614 @@ +/* + * Copyright 1995-2026 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_RSA_H +#define OPENSSL_RSA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RSA_H +#endif + +#include + +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_RSA_MAX_MODULUS_BITS +#define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +#endif + +#define RSA_3 0x3L +#define RSA_F4 0x10001L + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +#define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 2048 + +#ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +#define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +#endif + +/* exponent limit enforced for "large" modulus only */ +#ifndef OPENSSL_RSA_MAX_PUBEXP_BITS +#define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +#endif +/* based on RFC 8017 appendix A.1.2 */ +#define RSA_ASN1_VERSION_DEFAULT 0 +#define RSA_ASN1_VERSION_MULTI 1 + +#define RSA_DEFAULT_PRIME_NUM 2 + +#define RSA_METHOD_FLAG_NO_CHECK 0x0001 +#define RSA_FLAG_CACHE_PUBLIC 0x0002 +#define RSA_FLAG_CACHE_PRIVATE 0x0004 +#define RSA_FLAG_BLINDING 0x0008 +#define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +#define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +#define RSA_FLAG_NO_BLINDING 0x0080 +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define RSA_FLAG_NO_CONSTTIME 0x0000 +#endif +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +#ifndef OPENSSL_NO_DEPRECATED_0_9_8 +#define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +#endif + +/*- + * New with 3.0: use part of the flags to denote exact type of RSA key, + * some of which are limited to specific signature and encryption schemes. + * These different types share the same RSA structure, but indicate the + * use of certain fields in that structure. + * Currently known are: + * RSA - this is the "normal" unlimited RSA structure (typenum 0) + * RSASSA-PSS - indicates that the PSS parameters are used. + * RSAES-OAEP - no specific field used for the moment, but OAEP padding + * is expected. (currently unused) + * + * 4 bits allow for 16 types + */ +#define RSA_FLAG_TYPE_MASK 0xF000 +#define RSA_FLAG_TYPE_RSA 0x0000 +#define RSA_FLAG_TYPE_RSASSAPSS 0x1000 +#define RSA_FLAG_TYPE_RSAESOAEP 0x2000 + +int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad_mode); +int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad_mode); + +int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen); + +int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int bits); +int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes); +int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +#endif + +/* Salt length matches digest */ +#define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +#define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +#define RSA_PSS_SALTLEN_MAX -3 +/* Auto-detect on verify, set salt length to min(maximum possible, digest + * length) on sign */ +#define RSA_PSS_SALTLEN_AUTO_DIGEST_MAX -4 +/* Old compatible max salt length for sign only */ +#define RSA_PSS_SALTLEN_MAX_SIGN -2 + +int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md_name(EVP_PKEY_CTX *ctx, + const char *mdname); + +int EVP_PKEY_CTX_set_rsa_pss_keygen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_md_name(EVP_PKEY_CTX *ctx, + const char *mdname, + const char *mdprops); + +int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, void *label, int llen); +int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); + +#define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +#define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +#define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +#define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +#define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +#define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +#define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +#define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14) + +#define RSA_PKCS1_PADDING 1 +#define RSA_NO_PADDING 3 +#define RSA_PKCS1_OAEP_PADDING 4 +#define RSA_X931_PADDING 5 + +/* EVP_PKEY_ only */ +#define RSA_PKCS1_PSS_PADDING 6 +#define RSA_PKCS1_WITH_TLS_PADDING 7 + +/* internal RSA_ only */ +#define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 + +#define RSA_PKCS1_PADDING_SIZE 11 + +#define RSA_set_app_data(s, arg) RSA_set_ex_data(s, 0, arg) +#define RSA_get_app_data(s) RSA_get_ex_data(s, 0) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new(void); +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new_method(ENGINE *engine); +OSSL_DEPRECATEDIN_3_0 int RSA_bits(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_security_bits(const RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_crt_params(RSA *r, + BIGNUM *dmp1, BIGNUM *dmq1, + BIGNUM *iqmp); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_multi_prime_params(RSA *r, + BIGNUM *primes[], + BIGNUM *exps[], + BIGNUM *coeffs[], + int pnum); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, + const BIGNUM **d); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_factors(const RSA *r, + const BIGNUM **p, const BIGNUM **q); +OSSL_DEPRECATEDIN_3_0 int RSA_get_multi_prime_extra_count(const RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_get0_multi_prime_factors(const RSA *r, + const BIGNUM *primes[]); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, + const BIGNUM **dmq1, + const BIGNUM **iqmp); +OSSL_DEPRECATEDIN_3_0 +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_n(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_e(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_d(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_p(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_q(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmp1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmq1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_iqmp(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +OSSL_DEPRECATEDIN_3_0 void RSA_clear_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_test_flags(const RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_set_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_get_version(RSA *r); +OSSL_DEPRECATEDIN_3_0 ENGINE *RSA_get0_engine(const RSA *r); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +#define EVP_RSA_gen(bits) \ + EVP_PKEY_Q_keygen(NULL, NULL, "RSA", (size_t)(0 + (bits))) + +/* Deprecated version */ +#ifndef OPENSSL_NO_DEPRECATED_0_9_8 +OSSL_DEPRECATEDIN_0_9_8 RSA *RSA_generate_key(int bits, unsigned long e, void (*callback)(int, int, void *), + void *cb_arg); +#endif + +/* New version */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb); +/* Multi-prime version */ +OSSL_DEPRECATEDIN_3_0 int RSA_generate_multi_prime_key(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, + BIGNUM *q1, BIGNUM *q2, + const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, + const BIGNUM *Xq2, const BIGNUM *Xq, + const BIGNUM *e, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_generate_key_ex(RSA *rsa, int bits, + const BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 int RSA_check_key(const RSA *); +OSSL_DEPRECATEDIN_3_0 int RSA_check_key_ex(const RSA *, BN_GENCB *cb); +/* next 4 return -1 on error */ +OSSL_DEPRECATEDIN_3_0 +int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +OSSL_DEPRECATEDIN_3_0 int RSA_up_ref(RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_flags(const RSA *r); + +OSSL_DEPRECATEDIN_3_0 void RSA_set_default_method(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_null_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_method(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPrivateKey) +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) +DECLARE_ASN1_DUP_FUNCTION(RSA_PSS_PARAMS) + +struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int RSA_print_fp(FILE *fp, const RSA *r, int offset); +#endif + +OSSL_DEPRECATEDIN_3_0 int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_verify(int type, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ +OSSL_DEPRECATEDIN_3_0 +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigbuf, unsigned int siglen, + RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void RSA_blinding_off(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int PKCS1_MGF1(unsigned char *mask, long len, + const unsigned char *seed, long seedlen, + const EVP_MD *dgst); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_none(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_hash_id(int nid); + +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +#define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +OSSL_DEPRECATEDIN_3_0 int RSA_set_ex_data(RSA *r, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *RSA_get_ex_data(const RSA *r, int idx); + +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPublicKey) +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPrivateKey) + +/* + * If this flag is set the RSA 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 RSA_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 RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +#define RSA_FLAG_CHECKED 0x0800 + +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_new(const char *name, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_meth_free(RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const char *RSA_meth_get0_name(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set1_name(RSA_METHOD *meth, + const char *name); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_get_flags(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +OSSL_DEPRECATEDIN_3_0 void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set0_app_data(RSA_METHOD *meth, + void *app_data); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth))(BIGNUM *r0, + const BIGNUM *i, + RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp)(BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth))(BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp)(BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_init(const RSA_METHOD *meth))(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init)(RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_finish(const RSA_METHOD *meth))(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish)(RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_sign(const RSA_METHOD *meth))(int type, + const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, + unsigned int *siglen, + const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign)(int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_verify(const RSA_METHOD *meth))(int dtype, + const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, + const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify)(int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_keygen(const RSA_METHOD *meth))(RSA *rsa, int bits, + BIGNUM *e, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen)(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth))(RSA *rsa, + int bits, + int primes, + BIGNUM *e, + BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen)(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rsaerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rsaerr.h new file mode 100644 index 0000000..8432f5f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/rsaerr.h @@ -0,0 +1,105 @@ +/* + * 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_RSAERR_H +#define OPENSSL_RSAERR_H +#pragma once + +#include +#include +#include + +/* + * RSA reason codes. + */ +#define RSA_R_ALGORITHM_MISMATCH 100 +#define RSA_R_BAD_E_VALUE 101 +#define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 +#define RSA_R_BAD_PAD_BYTE_COUNT 103 +#define RSA_R_BAD_SIGNATURE 104 +#define RSA_R_BLOCK_TYPE_IS_NOT_01 106 +#define RSA_R_BLOCK_TYPE_IS_NOT_02 107 +#define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 +#define RSA_R_DATA_TOO_LARGE 109 +#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 +#define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 +#define RSA_R_DATA_TOO_SMALL 111 +#define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 +#define RSA_R_DIGEST_DOES_NOT_MATCH 158 +#define RSA_R_DIGEST_NOT_ALLOWED 145 +#define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 +#define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 +#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 +#define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 +#define RSA_R_FIRST_OCTET_INVALID 133 +#define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 +#define RSA_R_INVALID_DIGEST 157 +#define RSA_R_INVALID_DIGEST_LENGTH 143 +#define RSA_R_INVALID_HEADER 137 +#define RSA_R_INVALID_KEYPAIR 171 +#define RSA_R_INVALID_KEY_LENGTH 173 +#define RSA_R_INVALID_LABEL 160 +#define RSA_R_INVALID_LENGTH 181 +#define RSA_R_INVALID_MESSAGE_LENGTH 131 +#define RSA_R_INVALID_MGF1_MD 156 +#define RSA_R_INVALID_MODULUS 174 +#define RSA_R_INVALID_MULTI_PRIME_KEY 167 +#define RSA_R_INVALID_OAEP_PARAMETERS 161 +#define RSA_R_INVALID_PADDING 138 +#define RSA_R_INVALID_PADDING_MODE 141 +#define RSA_R_INVALID_PSS_PARAMETERS 149 +#define RSA_R_INVALID_PSS_SALTLEN 146 +#define RSA_R_INVALID_REQUEST 175 +#define RSA_R_INVALID_SALT_LENGTH 150 +#define RSA_R_INVALID_STRENGTH 176 +#define RSA_R_INVALID_TRAILER 139 +#define RSA_R_INVALID_X931_DIGEST 142 +#define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 +#define RSA_R_KEY_PRIME_NUM_INVALID 165 +#define RSA_R_KEY_SIZE_TOO_SMALL 120 +#define RSA_R_LAST_OCTET_INVALID 134 +#define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +#define RSA_R_MISSING_PRIVATE_KEY 179 +#define RSA_R_MODULUS_TOO_LARGE 105 +#define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +#define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +#define RSA_R_MP_R_NOT_PRIME 170 +#define RSA_R_NO_PUBLIC_EXPONENT 140 +#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +#define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +#define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +#define RSA_R_OAEP_DECODING_ERROR 121 +#define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 +#define RSA_R_PADDING_CHECK_FAILED 114 +#define RSA_R_PAIRWISE_TEST_FAILURE 177 +#define RSA_R_PKCS_DECODING_ERROR 159 +#define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +#define RSA_R_PUB_EXPONENT_OUT_OF_RANGE 178 +#define RSA_R_P_NOT_PRIME 128 +#define RSA_R_Q_NOT_PRIME 129 +#define RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT 180 +#define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 +#define RSA_R_SLEN_CHECK_FAILED 136 +#define RSA_R_SLEN_RECOVERY_FAILED 135 +#define RSA_R_SSLV3_ROLLBACK_ATTACK 115 +#define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 +#define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 +#define RSA_R_UNKNOWN_DIGEST 166 +#define RSA_R_UNKNOWN_MASK_DIGEST 151 +#define RSA_R_UNKNOWN_PADDING_TYPE 118 +#define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +#define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +#define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 +#define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 +#define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 +#define RSA_R_VALUE_MISSING 147 +#define RSA_R_WRONG_SIGNATURE_LENGTH 119 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/safestack.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/safestack.h new file mode 100644 index 0000000..d31854d --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/safestack.h @@ -0,0 +1,326 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/safestack.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SAFESTACK_H +#define OPENSSL_SAFESTACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SAFESTACK_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define STACK_OF(type) struct stack_st_##type + +/* Helper macro for internal use */ +#define SKM_DEFINE_STACK_OF_INTERNAL(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_inline void sk_##t1##_freefunc_thunk(OPENSSL_sk_freefunc freefunc_arg, void *ptr) \ + { \ + sk_##t1##_freefunc freefunc = (sk_##t1##_freefunc)freefunc_arg; \ + freefunc((t3 *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *ossl_check_##t1##_type(t2 *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ + { \ + return (const OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ + { \ + return (OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ + { \ + return (OPENSSL_sk_compfunc)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ + { \ + return (OPENSSL_sk_copyfunc)cpy; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ + { \ + return (OPENSSL_sk_freefunc)fr; \ + } + +#define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_inline void sk_##t1##_freefunc_thunk(OPENSSL_sk_freefunc freefunc_arg, void *ptr) \ + { \ + sk_##t1##_freefunc freefunc = (sk_##t1##_freefunc)freefunc_arg; \ + freefunc((t3 *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + OPENSSL_STACK *ret = OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + OPENSSL_STACK *ret = OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + sk = (STACK_OF(t1) *)OPENSSL_sk_set_thunks((OPENSSL_STACK *)sk, f_thunk); \ + \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ + { \ + return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +#define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +#define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) +#define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +#define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) +#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) +#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) +#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) +#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) +#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) +#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) +#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) +#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) +#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) +#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) +#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) +#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) +#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) +#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) +#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) +#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) +#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) +#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) +#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) +#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) +#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) +#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) +#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) +#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) +#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) +#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) +#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) + +/* clang-format on */ +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/seed.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/seed.h new file mode 100644 index 0000000..8c2b20a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/seed.h @@ -0,0 +1,112 @@ +/* + * Copyright 2007-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 + */ + +/* + * Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Neither the name of author nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef OPENSSL_SEED_H +#define OPENSSL_SEED_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SEED_H +#endif + +#include + +#ifndef OPENSSL_NO_SEED +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SEED_BLOCK_SIZE 16 +#define SEED_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* look whether we need 'long' to get 32 bits */ +#ifdef AES_LONG +#ifndef SEED_LONG +#define SEED_LONG 1 +#endif +#endif + +typedef struct seed_key_st { +#ifdef SEED_LONG + unsigned long data[32]; +#else + unsigned int data[32]; +#endif +} SEED_KEY_SCHEDULE; +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_ecb_encrypt(const unsigned char *in, + unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int *num, int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/self_test.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/self_test.h new file mode 100644 index 0000000..6e671c1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/self_test.h @@ -0,0 +1,116 @@ +/* + * Copyright 2019-2025 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_SELF_TEST_H +#define OPENSSL_SELF_TEST_H +#pragma once + +#include /* OSSL_CALLBACK */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* The test event phases */ +#define OSSL_SELF_TEST_PHASE_NONE "None" +#define OSSL_SELF_TEST_PHASE_START "Start" +#define OSSL_SELF_TEST_PHASE_CORRUPT "Corrupt" +#define OSSL_SELF_TEST_PHASE_PASS "Pass" +#define OSSL_SELF_TEST_PHASE_FAIL "Fail" + +/* Test event categories */ +#define OSSL_SELF_TEST_TYPE_NONE "None" +#define OSSL_SELF_TEST_TYPE_MODULE_INTEGRITY "Module_Integrity" +#define OSSL_SELF_TEST_TYPE_INSTALL_INTEGRITY "Install_Integrity" +#define OSSL_SELF_TEST_TYPE_CRNG "Continuous_RNG_Test" +#define OSSL_SELF_TEST_TYPE_PCT "Conditional_PCT" +#define OSSL_SELF_TEST_TYPE_PCT_KAT "Conditional_KAT" +#define OSSL_SELF_TEST_TYPE_PCT_IMPORT "Import_PCT" +#define OSSL_SELF_TEST_TYPE_KAT_INTEGRITY "KAT_Integrity" +#define OSSL_SELF_TEST_TYPE_KAT_CIPHER "KAT_Cipher" +#define OSSL_SELF_TEST_TYPE_KAT_ASYM_CIPHER "KAT_AsymmetricCipher" +#define OSSL_SELF_TEST_TYPE_KAT_ASYM_KEYGEN "KAT_AsymmetricKeyGeneration" +#define OSSL_SELF_TEST_TYPE_KAT_KEM "KAT_KEM" +#define OSSL_SELF_TEST_TYPE_KAT_DIGEST "KAT_Digest" +#define OSSL_SELF_TEST_TYPE_KAT_SIGNATURE "KAT_Signature" +#define OSSL_SELF_TEST_TYPE_PCT_SIGNATURE "PCT_Signature" +#define OSSL_SELF_TEST_TYPE_KAT_KDF "KAT_KDF" +#define OSSL_SELF_TEST_TYPE_KAT_KA "KAT_KA" +#define OSSL_SELF_TEST_TYPE_DRBG "DRBG" + +/* Test event sub categories */ +#define OSSL_SELF_TEST_DESC_NONE "None" +#define OSSL_SELF_TEST_DESC_INTEGRITY_HMAC "HMAC" +#define OSSL_SELF_TEST_DESC_PCT_RSA "RSA" +#define OSSL_SELF_TEST_DESC_PCT_RSA_PKCS1 "RSA" +#define OSSL_SELF_TEST_DESC_PCT_ECDSA "ECDSA" +#define OSSL_SELF_TEST_DESC_PCT_EDDSA "EDDSA" +#define OSSL_SELF_TEST_DESC_PCT_DH "DH" +#define OSSL_SELF_TEST_DESC_PCT_DSA "DSA" +#define OSSL_SELF_TEST_DESC_PCT_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_PCT_ML_KEM "ML-KEM" +#define OSSL_SELF_TEST_DESC_PCT_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_CIPHER_AES_GCM "AES_GCM" +#define OSSL_SELF_TEST_DESC_CIPHER_AES_ECB "AES_ECB_Decrypt" +#define OSSL_SELF_TEST_DESC_CIPHER_TDES "TDES" +#define OSSL_SELF_TEST_DESC_ASYM_RSA_ENC "RSA_Encrypt" +#define OSSL_SELF_TEST_DESC_ASYM_RSA_DEC "RSA_Decrypt" +#define OSSL_SELF_TEST_DESC_MD_SHA1 "SHA1" +#define OSSL_SELF_TEST_DESC_MD_SHA2 "SHA2" +#define OSSL_SELF_TEST_DESC_MD_SHA3 "SHA3" +#define OSSL_SELF_TEST_DESC_SIGN_DSA "DSA" +#define OSSL_SELF_TEST_DESC_SIGN_RSA "RSA" +#define OSSL_SELF_TEST_DESC_SIGN_ECDSA "ECDSA" +#define OSSL_SELF_TEST_DESC_SIGN_DetECDSA "DetECDSA" +#define OSSL_SELF_TEST_DESC_SIGN_EDDSA "EDDSA" +#define OSSL_SELF_TEST_DESC_SIGN_LMS "LMS" +#define OSSL_SELF_TEST_DESC_SIGN_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_SIGN_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_KEM "KEM" +#define OSSL_SELF_TEST_DESC_DRBG_CTR "CTR" +#define OSSL_SELF_TEST_DESC_DRBG_HASH "HASH" +#define OSSL_SELF_TEST_DESC_DRBG_HMAC "HMAC" +#define OSSL_SELF_TEST_DESC_KA_DH "DH" +#define OSSL_SELF_TEST_DESC_KA_ECDH "ECDH" +#define OSSL_SELF_TEST_DESC_KDF_HKDF "HKDF" +#define OSSL_SELF_TEST_DESC_KDF_SSKDF "SSKDF" +#define OSSL_SELF_TEST_DESC_KDF_X963KDF "X963KDF" +#define OSSL_SELF_TEST_DESC_KDF_X942KDF "X942KDF" +#define OSSL_SELF_TEST_DESC_KDF_PBKDF2 "PBKDF2" +#define OSSL_SELF_TEST_DESC_KDF_SSHKDF "SSHKDF" +#define OSSL_SELF_TEST_DESC_KDF_TLS12_PRF "TLS12_PRF" +#define OSSL_SELF_TEST_DESC_KDF_KBKDF "KBKDF" +#define OSSL_SELF_TEST_DESC_KDF_KBKDF_KMAC "KBKDF_KMAC" +#define OSSL_SELF_TEST_DESC_KDF_TLS13_EXTRACT "TLS13_KDF_EXTRACT" +#define OSSL_SELF_TEST_DESC_KDF_TLS13_EXPAND "TLS13_KDF_EXPAND" +#define OSSL_SELF_TEST_DESC_RNG "RNG" +#define OSSL_SELF_TEST_DESC_KEYGEN_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_KEYGEN_ML_KEM "ML-KEM" +#define OSSL_SELF_TEST_DESC_KEYGEN_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_ENCAP_KEM "KEM_Encap" +#define OSSL_SELF_TEST_DESC_DECAP_KEM "KEM_Decap" +#define OSSL_SELF_TEST_DESC_DECAP_KEM_FAIL "KEM_Decap_Reject" + +void OSSL_SELF_TEST_set_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK *cb, + void *cbarg); +void OSSL_SELF_TEST_get_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK **cb, + void **cbarg); + +OSSL_SELF_TEST *OSSL_SELF_TEST_new(OSSL_CALLBACK *cb, void *cbarg); +void OSSL_SELF_TEST_free(OSSL_SELF_TEST *st); + +void OSSL_SELF_TEST_onbegin(OSSL_SELF_TEST *st, const char *type, + const char *desc); +int OSSL_SELF_TEST_oncorrupt_byte(OSSL_SELF_TEST *st, unsigned char *bytes); +void OSSL_SELF_TEST_onend(OSSL_SELF_TEST *st, int ret); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_SELF_TEST_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sha.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sha.h new file mode 100644 index 0000000..52b0266 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sha.h @@ -0,0 +1,139 @@ +/* + * 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_SHA_H +#define OPENSSL_SHA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SHA_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SHA_DIGEST_LENGTH 20 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! SHA_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define SHA_LONG unsigned int + +#define SHA_LBLOCK 16 +#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a \ + * contiguous array of 32 bit wide \ + * big-endian values. */ +#define SHA_LAST_BLOCK (SHA_CBLOCK - 8) + +typedef struct SHAstate_st { + SHA_LONG h0, h1, h2, h3, h4; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num; +} SHA_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA1_Init(SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA1_Final(unsigned char *md, SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA1_Transform(SHA_CTX *c, const unsigned char *data); +#endif + +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SHA256_CBLOCK (SHA_LBLOCK * 4) /* SHA-256 treats input data as a \ + * contiguous array of 32 bit wide \ + * big-endian values. */ + +typedef struct SHA256state_st { + SHA_LONG h[8]; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num, md_len; +} SHA256_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA224_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA224_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA224_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA256_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA256_Transform(SHA256_CTX *c, + const unsigned char *data); +#endif + +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); + +#define SHA256_192_DIGEST_LENGTH 24 +#define SHA224_DIGEST_LENGTH 28 +#define SHA256_DIGEST_LENGTH 32 +#define SHA384_DIGEST_LENGTH 48 +#define SHA512_DIGEST_LENGTH 64 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 + * being exactly 64-bit wide. See Implementation Notes in sha512.c + * for further details. + */ +/* + * SHA-512 treats input data as a + * contiguous array of 64 bit + * wide big-endian values. + */ +#define SHA512_CBLOCK (SHA_LBLOCK * 8) +#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) +#define SHA_LONG64 unsigned __int64 +#elif defined(__arch64__) +#define SHA_LONG64 unsigned long +#else +#define SHA_LONG64 unsigned long long +#endif + +typedef struct SHA512state_st { + SHA_LONG64 h[8]; + SHA_LONG64 Nl, Nh; + union { + SHA_LONG64 d[SHA_LBLOCK]; + unsigned char p[SHA512_CBLOCK]; + } u; + unsigned int num, md_len; +} SHA512_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA384_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA384_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA384_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA512_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA512_Transform(SHA512_CTX *c, + const unsigned char *data); +#endif + +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/srp.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/srp.h new file mode 100644 index 0000000..eac3cdb --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/srp.h @@ -0,0 +1,291 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/srp.h.in + * + * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. 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 + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SRP_H +#define OPENSSL_SRP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SRP_H +#endif + +#include + +#ifndef OPENSSL_NO_SRP +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) +#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) +#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) +#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) +#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) +#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) +#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_freefunc_type(freefunc)) +#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) +#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) +#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) +#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) +#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) +#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) +#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) +#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) +#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) +#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) +#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_freefunc_type(freefunc)) +#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) +#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) +#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) +#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_user_pwd_new(void); +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, + const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, + const char *info); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; + /* to simulate a user */ + char *seed_key; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) +#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) +#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) +#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) +#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) +#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) +#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_freefunc_type(freefunc)) +#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) +#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) +#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) +#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_VBASE *SRP_VBASE_new(char *seed_key); +OSSL_DEPRECATEDIN_3_0 +void SRP_VBASE_free(SRP_VBASE *vb); +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); + +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g, OSSL_LIB_CTX *libctx, + const char *propq); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g); + +#define SRP_NO_ERROR 0 +#define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +#define SRP_ERR_VBASE_BN_LIB 2 +#define SRP_ERR_OPEN_FILE 3 +#define SRP_ERR_MEMORY 4 + +#define DB_srptype 0 +#define DB_srpverifier 1 +#define DB_srpsalt 2 +#define DB_srpid 3 +#define DB_srpgN 4 +#define DB_srpinfo 5 +#undef DB_NUMBER +#define DB_NUMBER 6 + +#define DB_SRP_INDEX 'I' +#define DB_SRP_VALID 'V' +#define DB_SRP_REVOKED 'R' +#define DB_SRP_MODIF 'v' + +/* see srp.c */ +OSSL_DEPRECATEDIN_3_0 +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); + +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ + +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +#define SRP_MINIMAL_N 1024 + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/* This method ignores the configured seed and fails for an unknown user. */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 +SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/srtp.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/srtp.h new file mode 100644 index 0000000..3b716e1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/srtp.h @@ -0,0 +1,68 @@ +/* + * Copyright 2011-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 + */ + +/* + * DTLS code by Eric Rescorla + * + * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. + */ + +#ifndef OPENSSL_SRTP_H +#define OPENSSL_SRTP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_D1_SRTP_H +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SRTP_AES128_CM_SHA1_80 0x0001 +#define SRTP_AES128_CM_SHA1_32 0x0002 +#define SRTP_AES128_F8_SHA1_80 0x0003 +#define SRTP_AES128_F8_SHA1_32 0x0004 +#define SRTP_NULL_SHA1_80 0x0005 +#define SRTP_NULL_SHA1_32 0x0006 + +/* AEAD SRTP protection profiles from RFC 7714 */ +#define SRTP_AEAD_AES_128_GCM 0x0007 +#define SRTP_AEAD_AES_256_GCM 0x0008 + +/* DOUBLE AEAD SRTP protection profiles from RFC 8723 */ +#define SRTP_DOUBLE_AEAD_AES_128_GCM_AEAD_AES_128_GCM 0x0009 +#define SRTP_DOUBLE_AEAD_AES_256_GCM_AEAD_AES_256_GCM 0x000A + +/* ARIA SRTP protection profiles from RFC 8269 */ +#define SRTP_ARIA_128_CTR_HMAC_SHA1_80 0x000B +#define SRTP_ARIA_128_CTR_HMAC_SHA1_32 0x000C +#define SRTP_ARIA_256_CTR_HMAC_SHA1_80 0x000D +#define SRTP_ARIA_256_CTR_HMAC_SHA1_32 0x000E +#define SRTP_AEAD_ARIA_128_GCM 0x000F +#define SRTP_AEAD_ARIA_256_GCM 0x0010 + +#ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl.h new file mode 100644 index 0000000..e318ffc --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl.h @@ -0,0 +1,2947 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ssl.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SSL_H +#define OPENSSL_SSL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL_H +#endif + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +#define SSL_SESSION_ASN1_VERSION 0x0001 + +#define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +#define SSL_MAX_SID_CTX_LENGTH 32 + +#define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512 / 8) +#define SSL_MAX_KEY_ARG_LENGTH 8 +/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ + +/* The maximum number of encrypt/decrypt pipelines we can support */ +#define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +#define SSL_TXT_LOW "LOW" +#define SSL_TXT_MEDIUM "MEDIUM" +#define SSL_TXT_HIGH "HIGH" +#define SSL_TXT_FIPS "FIPS" + +#define SSL_TXT_aNULL "aNULL" +#define SSL_TXT_eNULL "eNULL" +#define SSL_TXT_NULL "NULL" + +#define SSL_TXT_kRSA "kRSA" +#define SSL_TXT_kDHr "kDHr" /* this cipher class has been removed */ +#define SSL_TXT_kDHd "kDHd" /* this cipher class has been removed */ +#define SSL_TXT_kDH "kDH" /* this cipher class has been removed */ +#define SSL_TXT_kEDH "kEDH" /* alias for kDHE */ +#define SSL_TXT_kDHE "kDHE" +#define SSL_TXT_kECDHr "kECDHr" /* this cipher class has been removed */ +#define SSL_TXT_kECDHe "kECDHe" /* this cipher class has been removed */ +#define SSL_TXT_kECDH "kECDH" /* this cipher class has been removed */ +#define SSL_TXT_kEECDH "kEECDH" /* alias for kECDHE */ +#define SSL_TXT_kECDHE "kECDHE" +#define SSL_TXT_kPSK "kPSK" +#define SSL_TXT_kRSAPSK "kRSAPSK" +#define SSL_TXT_kECDHEPSK "kECDHEPSK" +#define SSL_TXT_kDHEPSK "kDHEPSK" +#define SSL_TXT_kGOST "kGOST" +#define SSL_TXT_kGOST18 "kGOST18" +#define SSL_TXT_kSRP "kSRP" + +#define SSL_TXT_aRSA "aRSA" +#define SSL_TXT_aDSS "aDSS" +#define SSL_TXT_aDH "aDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDH "aECDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDSA "aECDSA" +#define SSL_TXT_aPSK "aPSK" +#define SSL_TXT_aGOST94 "aGOST94" +#define SSL_TXT_aGOST01 "aGOST01" +#define SSL_TXT_aGOST12 "aGOST12" +#define SSL_TXT_aGOST "aGOST" +#define SSL_TXT_aSRP "aSRP" + +#define SSL_TXT_DSS "DSS" +#define SSL_TXT_DH "DH" +#define SSL_TXT_DHE "DHE" /* same as "kDHE:-ADH" */ +#define SSL_TXT_EDH "EDH" /* alias for DHE */ +#define SSL_TXT_ADH "ADH" +#define SSL_TXT_RSA "RSA" +#define SSL_TXT_ECDH "ECDH" +#define SSL_TXT_EECDH "EECDH" /* alias for ECDHE" */ +#define SSL_TXT_ECDHE "ECDHE" /* same as "kECDHE:-AECDH" */ +#define SSL_TXT_AECDH "AECDH" +#define SSL_TXT_ECDSA "ECDSA" +#define SSL_TXT_PSK "PSK" +#define SSL_TXT_SRP "SRP" + +#define SSL_TXT_DES "DES" +#define SSL_TXT_3DES "3DES" +#define SSL_TXT_RC4 "RC4" +#define SSL_TXT_RC2 "RC2" +#define SSL_TXT_IDEA "IDEA" +#define SSL_TXT_SEED "SEED" +#define SSL_TXT_AES128 "AES128" +#define SSL_TXT_AES256 "AES256" +#define SSL_TXT_AES "AES" +#define SSL_TXT_AES_GCM "AESGCM" +#define SSL_TXT_AES_CCM "AESCCM" +#define SSL_TXT_AES_CCM_8 "AESCCM8" +#define SSL_TXT_CAMELLIA128 "CAMELLIA128" +#define SSL_TXT_CAMELLIA256 "CAMELLIA256" +#define SSL_TXT_CAMELLIA "CAMELLIA" +#define SSL_TXT_CHACHA20 "CHACHA20" +#define SSL_TXT_GOST "GOST89" +#define SSL_TXT_ARIA "ARIA" +#define SSL_TXT_ARIA_GCM "ARIAGCM" +#define SSL_TXT_ARIA128 "ARIA128" +#define SSL_TXT_ARIA256 "ARIA256" +#define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" +#define SSL_TXT_CBC "CBC" + +#define SSL_TXT_MD5 "MD5" +#define SSL_TXT_SHA1 "SHA1" +#define SSL_TXT_SHA "SHA" /* same as "SHA1" */ +#define SSL_TXT_GOST94 "GOST94" +#define SSL_TXT_GOST89MAC "GOST89MAC" +#define SSL_TXT_GOST12 "GOST12" +#define SSL_TXT_GOST89MAC12 "GOST89MAC12" +#define SSL_TXT_SHA256 "SHA256" +#define SSL_TXT_SHA384 "SHA384" + +#define SSL_TXT_SSLV3 "SSLv3" +#define SSL_TXT_TLSV1 "TLSv1" +#define SSL_TXT_TLSV1_1 "TLSv1.1" +#define SSL_TXT_TLSV1_2 "TLSv1.2" + +#define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +#define SSL_TXT_CMPALL "COMPLEMENTOFALL" +#define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() + * Update both macro and function simultaneously + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* + * This is the default set of TLSv1.3 ciphersuites + * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() + * Update both macro and function simultaneously + */ +#define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +#define SSL_SENT_SHUTDOWN 1 +#define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +#define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; + +STACK_OF(SSL_CIPHER); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) +#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) +#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) +#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) +#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) +#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) +#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) +#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) +#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) +#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) +#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) +#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x00001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x00002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x00008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x00020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* Typedef for SSL async callback */ +typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); + +#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) + +/* + * SSL/TLS connection options. + */ +/* Disable Extended master secret */ +#define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) +/* Cleanse plaintext copies of data delivered to the application */ +#define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) +/* Allow initial connection to servers that don't support RI */ +#define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) +/* Enable support for Kernel TLS */ +#define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) +#define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) +#define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) +#define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) +#define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) +#define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +#define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added + * in OpenSSL 0.9.6d. Usually (depending on the application protocol) + * the workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it + * in SSL_OP_ALL. Added in 0.9.6e + */ +#define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS SSL_OP_BIT(11) +/* DTLS options */ +#define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) +/* Turn on Cookie Exchange (on relevant for servers) */ +#define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) +/* Don't use RFC4507 ticket extension */ +#define SSL_OP_NO_TICKET SSL_OP_BIT(14) +#ifndef OPENSSL_NO_DTLS1_METHOD +/* + * Use Cisco's version identifier of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) + */ +#define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) +#endif +/* As server, disallow session resumption on renegotiation */ +#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) +/* Don't use compression even if supported */ +#define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) +/* Permit unsafe legacy renegotiation */ +#define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) +/* Disable encrypt-then-mac */ +#define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future + * version of OpenSSL may have this disabled by default. + */ +#define SSL_OP_ENABLE_MIDDLEBOX_COMPAT SSL_OP_BIT(20) +/* + * Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_SERVER_PREFERENCE + */ +#define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) +/* + * Set on servers to choose cipher, curve or group according to server's + * preferences. + */ +#define SSL_OP_SERVER_PREFERENCE SSL_OP_BIT(22) +/* Equivalent definition for backwards compatibility: */ +#define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_SERVER_PREFERENCE +/* + * If set, a server will allow a client to issue an SSLv3.0 version + * number as latest version supported in the premaster secret, even when + * TLSv1.0 (version 3.1) was announced in the client hello. Normally + * this is forbidden to prevent version rollback attacks. + */ +#define SSL_OP_TLS_ROLLBACK_BUG SSL_OP_BIT(23) +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. + * This is a server-side option only (no effect on the client). + */ +#define SSL_OP_NO_ANTI_REPLAY SSL_OP_BIT(24) +#define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) +#define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) +#define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) +#define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) +#define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) +/* Disallow all renegotiation */ +#define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) +/* + * Make server add server-hello extension from early version of + * cryptopro draft, when GOST ciphersuite is negotiated. Required for + * interoperability with CryptoPro CSP 3.x + */ +#define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +#define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +#define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) +/* Enable KTLS TX zerocopy on Linux */ +#define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) +#define SSL_OP_LEGACY_EC_POINT_FORMATS SSL_OP_BIT(36) + +/* + * Option "collections." + */ +#define SSL_OP_NO_SSL_MASK \ + (SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \ + | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3) +#define SSL_OP_NO_DTLS_MASK \ + (SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2) + +/* Various bug workarounds that should be rather harmless. */ +#define SSL_OP_ALL \ + (SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ + | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* + * OBSOLETE OPTIONS retained for compatibility + */ + +#define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +#define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +#define SSL_OP_TLS_D5_BUG 0x0 +#define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +#define SSL_OP_SINGLE_ECDH_USE 0x0 +#define SSL_OP_SINGLE_DH_USE 0x0 +#define SSL_OP_EPHEMERAL_RSA 0x0 +#define SSL_OP_NO_SSLv2 0x0 +#define SSL_OP_PKCS1_CHECK_1 0x0 +#define SSL_OP_PKCS1_CHECK_2 0x0 +#define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +#define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +#define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +#define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +#define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +#define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +#define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +#define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +#define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +#define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +#define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +#define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +#define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +#define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +#define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +#define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +#define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +#define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +#define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +#define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +#define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +#define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +#define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +#define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +#define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +#define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +#define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +#define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +#define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +#define CERT_PKEY_RPK 0x1000 + +#define SSL_CONF_FLAG_CMDLINE 0x1 +#define SSL_CONF_FLAG_FILE 0x2 +#define SSL_CONF_FLAG_CLIENT 0x4 +#define SSL_CONF_FLAG_SERVER 0x8 +#define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +#define SSL_CONF_FLAG_CERTIFICATE 0x20 +#define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +#define SSL_CONF_TYPE_UNKNOWN 0x0 +#define SSL_CONF_TYPE_STRING 0x1 +#define SSL_CONF_TYPE_FILE 0x2 +#define SSL_CONF_TYPE_DIR 0x3 +#define SSL_CONF_TYPE_NONE 0x4 +#define SSL_CONF_TYPE_STORE 0x5 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +#define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); +uint64_t SSL_get_options(const SSL *s); +uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_clear_options(SSL *s, uint64_t op); +uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_set_options(SSL *s, uint64_t op); + +#define SSL_CTX_set_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, (op), NULL) +#define SSL_CTX_clear_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, 0, NULL) +#define SSL_clear_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_set_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, (op), NULL) +#define SSL_get_mode(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, 0, NULL) +#define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl), SSL_CTRL_SET_MTU, (mtu), NULL) +#define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl), DTLS_CTRL_SET_LINK_MTU, (mtu), NULL) +#define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl), DTLS_CTRL_GET_LINK_MIN_MTU, 0, NULL) + +#define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +#define SSL_CTX_set_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_set_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_CTX_clear_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) +#define SSL_clear_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +#define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +#define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +#define SSL_get_extms_support(s) \ + SSL_ctrl((s), SSL_CTRL_GET_EXTMS_SUPPORT, 0, NULL) + +#ifndef OPENSSL_NO_SRP +/* see tls_srp.c */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, + int *ad); +OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); +#endif +#endif + +/* 100k max cert list */ +#define SSL_MAX_CERT_LIST_DEFAULT (1024 * 100) + +#define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024 * 20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB)(SSL *ssl, unsigned char *id, + unsigned int *id_len); + +#define SSL_SESS_CACHE_OFF 0x0000 +#define SSL_SESS_CACHE_CLIENT 0x0001 +#define SSL_SESS_CACHE_SERVER 0x0002 +#define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_SERVER) +#define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +#define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +#define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +#define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP | SSL_SESS_CACHE_NO_INTERNAL_STORE) +#define SSL_SESS_CACHE_UPDATE_TIME 0x0400 + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +#define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_NUMBER, 0, NULL) +#define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT, 0, NULL) +#define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_GOOD, 0, NULL) +#define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT, 0, NULL) +#define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_GOOD, 0, NULL) +#define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_HIT, 0, NULL) +#define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CB_HIT, 0, NULL) +#define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_MISSES, 0, NULL) +#define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_TIMEOUTS, 0, NULL) +#define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CACHE_FULL, 0, NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb)(struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb)(struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb)(struct ssl_st + *ssl, + const unsigned char + *data, + int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb)(SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +#ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +#endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb)(SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb)(SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +#ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +#define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +#endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *server, unsigned int server_len, + const unsigned char *client, + unsigned int client_len); + +#define OPENSSL_NPN_UNSUPPORTED 0 +#define OPENSSL_NPN_NEGOTIATED 1 +#define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +#ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +#define PSK_MAX_IDENTITY_LEN 256 +#define PSK_MAX_PSK_LEN 512 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +#endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +#define SSL_NOTHING 1 +#define SSL_WRITING 2 +#define SSL_READING 3 +#define SSL_X509_LOOKUP 4 +#define SSL_ASYNC_PAUSED 5 +#define SSL_ASYNC_NO_JOBS 6 +#define SSL_CLIENT_HELLO_CB 7 +#define SSL_RETRY_VERIFY 8 + +/* These will only be used when doing non-blocking IO */ +#define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +#define SSL_want_read(s) (SSL_want(s) == SSL_READING) +#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +#define SSL_want_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) +#define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +#define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +#define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +#define SSL_MAC_FLAG_READ_MAC_STREAM 1 +#define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 +#define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 +#define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +#include +#include +#include /* This is mostly sslv3 with a few tweaks */ +#include /* Datagram TLS */ +#include /* Support for the use_srtp extension */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) +#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) +#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) +#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) +#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) +#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) +#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) +#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_freefunc_type(freefunc)) +#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) +#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) +#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) +#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) + +/* clang-format on */ + +/* compatibility */ +#define SSL_set_app_data(s, arg) (SSL_set_ex_data(s, 0, (char *)(arg))) +#define SSL_get_app_data(s) (SSL_get_ex_data(s, 0)) +#define SSL_SESSION_set_app_data(s, a) (SSL_SESSION_set_ex_data(s, 0, \ + (char *)(a))) +#define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s, 0)) +#define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx, 0)) +#define SSL_CTX_set_app_data(ctx, arg) (SSL_CTX_set_ex_data(ctx, 0, \ + (char *)(arg))) +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); +#endif + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +#define SSL_ST_CONNECT 0x1000 +#define SSL_ST_ACCEPT 0x2000 + +#define SSL_ST_MASK 0x0FFF + +#define SSL_CB_LOOP 0x01 +#define SSL_CB_EXIT 0x02 +#define SSL_CB_READ 0x04 +#define SSL_CB_WRITE 0x08 +#define SSL_CB_ALERT 0x4000 /* used in callback */ +#define SSL_CB_READ_ALERT (SSL_CB_ALERT | SSL_CB_READ) +#define SSL_CB_WRITE_ALERT (SSL_CB_ALERT | SSL_CB_WRITE) +#define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT | SSL_CB_LOOP) +#define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT | SSL_CB_EXIT) +#define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT | SSL_CB_LOOP) +#define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT | SSL_CB_EXIT) +#define SSL_CB_HANDSHAKE_START 0x10 +#define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +#define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +#define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +#define SSL_ST_READ_HEADER 0xF0 +#define SSL_ST_READ_BODY 0xF1 +#define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +#define SSL_VERIFY_NONE 0x00 +#define SSL_VERIFY_PEER 0x01 +#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +#define SSL_VERIFY_CLIENT_ONCE 0x04 +#define SSL_VERIFY_POST_HANDSHAKE 0x08 + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OpenSSL_add_ssl_algorithms() SSL_library_init() +#define SSLeay_add_ssl_algorithms() SSL_library_init() +#endif + +/* More backward compatibility */ +#define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_cipher_bits(s, np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s), np) +#define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +#define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_time(a) SSL_SESSION_get_time(a) +#define SSL_set_time(a, b) SSL_SESSION_set_time((a), (b)) +#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +#define SSL_set_timeout(a, b) SSL_SESSION_set_timeout((a), (b)) + +#define d2i_SSL_SESSION_bio(bp, s_id) ASN1_d2i_bio_of(SSL_SESSION, SSL_SESSION_new, d2i_SSL_SESSION, bp, s_id) +#define i2d_SSL_SESSION_bio(bp, s_id) ASN1_i2d_bio_of(SSL_SESSION, i2d_SSL_SESSION, bp, s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +#define SSL_AD_REASON_OFFSET 1000 /* offset to get SSL_R_... value \ + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +#define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +#define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +#define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +#define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +#define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +#define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +#define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +#define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +#define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +#define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +#define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +#define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +#define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +#define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +#define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +#define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +#define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +#define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +#define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +#define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +#define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +#define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +#define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +#define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +#define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +#define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +#define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +#define SSL_ERROR_NONE 0 +#define SSL_ERROR_SSL 1 +#define SSL_ERROR_WANT_READ 2 +#define SSL_ERROR_WANT_WRITE 3 +#define SSL_ERROR_WANT_X509_LOOKUP 4 +#define SSL_ERROR_SYSCALL 5 /* look at error stack/return \ + * value/errno */ +#define SSL_ERROR_ZERO_RETURN 6 +#define SSL_ERROR_WANT_CONNECT 7 +#define SSL_ERROR_WANT_ACCEPT 8 +#define SSL_ERROR_WANT_ASYNC 9 +#define SSL_ERROR_WANT_ASYNC_JOB 10 +#define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +#define SSL_ERROR_WANT_RETRY_VERIFY 12 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TMP_DH 3 +#define SSL_CTRL_SET_TMP_ECDH 4 +#define SSL_CTRL_SET_TMP_DH_CB 6 +#endif + +#define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +#define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +#define SSL_CTRL_GET_FLAGS 13 +#define SSL_CTRL_EXTRA_CHAIN_CERT 14 +#define SSL_CTRL_SET_MSG_CALLBACK 15 +#define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +#define SSL_CTRL_SET_MTU 17 +/* Stats */ +#define SSL_CTRL_SESS_NUMBER 20 +#define SSL_CTRL_SESS_CONNECT 21 +#define SSL_CTRL_SESS_CONNECT_GOOD 22 +#define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +#define SSL_CTRL_SESS_ACCEPT 24 +#define SSL_CTRL_SESS_ACCEPT_GOOD 25 +#define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +#define SSL_CTRL_SESS_HIT 27 +#define SSL_CTRL_SESS_CB_HIT 28 +#define SSL_CTRL_SESS_MISSES 29 +#define SSL_CTRL_SESS_TIMEOUTS 30 +#define SSL_CTRL_SESS_CACHE_FULL 31 +#define SSL_CTRL_MODE 33 +#define SSL_CTRL_GET_READ_AHEAD 40 +#define SSL_CTRL_SET_READ_AHEAD 41 +#define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +#define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +#define SSL_CTRL_SET_SESS_CACHE_MODE 44 +#define SSL_CTRL_GET_SESS_CACHE_MODE 45 +#define SSL_CTRL_GET_MAX_CERT_LIST 50 +#define SSL_CTRL_SET_MAX_CERT_LIST 51 +#define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +#define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +#define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +#define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +#endif +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +#define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +#define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +#define SSL_CTRL_SET_SRP_ARG 78 +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +#define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +#define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +#define DTLS_CTRL_GET_TIMEOUT 73 +#define DTLS_CTRL_HANDLE_TIMEOUT 74 +#define SSL_CTRL_GET_RI_SUPPORT 76 +#define SSL_CTRL_CLEAR_MODE 78 +#define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +#define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +#define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +#define SSL_CTRL_CHAIN 88 +#define SSL_CTRL_CHAIN_CERT 89 +#define SSL_CTRL_GET_GROUPS 90 +#define SSL_CTRL_SET_GROUPS 91 +#define SSL_CTRL_SET_GROUPS_LIST 92 +#define SSL_CTRL_GET_SHARED_GROUP 93 +#define SSL_CTRL_SET_SIGALGS 97 +#define SSL_CTRL_SET_SIGALGS_LIST 98 +#define SSL_CTRL_CERT_FLAGS 99 +#define SSL_CTRL_CLEAR_CERT_FLAGS 100 +#define SSL_CTRL_SET_CLIENT_SIGALGS 101 +#define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +#define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +#define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +#define SSL_CTRL_BUILD_CERT_CHAIN 105 +#define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +#define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +#define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +#define SSL_CTRL_GET_PEER_TMP_KEY 109 +#define SSL_CTRL_GET_RAW_CIPHERLIST 110 +#define SSL_CTRL_GET_EC_POINT_FORMATS 111 +#define SSL_CTRL_GET_CHAIN_CERTS 115 +#define SSL_CTRL_SELECT_CURRENT_CERT 116 +#define SSL_CTRL_SET_CURRENT_CERT 117 +#define SSL_CTRL_SET_DH_AUTO 118 +#define DTLS_CTRL_SET_LINK_MTU 120 +#define DTLS_CTRL_GET_LINK_MIN_MTU 121 +#define SSL_CTRL_GET_EXTMS_SUPPORT 122 +#define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +#define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +#define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +#define SSL_CTRL_SET_MAX_PIPELINES 126 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +#define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +#define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +#define SSL_CTRL_GET_SIGNATURE_NID 132 +#define SSL_CTRL_GET_TMP_KEY 133 +#define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +#define SSL_CTRL_GET_IANA_GROUPS 135 +#define SSL_CTRL_SET_RETRY_VERIFY 136 +#define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +#define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +#define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +#define SSL_CTRL_GET_SIGNATURE_NAME 140 +#define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP_EX 142 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP_EX 143 +#define SSL_CERT_SET_FIRST 1 +#define SSL_CERT_SET_NEXT 2 +#define SSL_CERT_SET_SERVER 3 +#define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl, DTLS_CTRL_GET_TIMEOUT, 0, (void *)(arg)) +#define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl, DTLS_CTRL_HANDLE_TIMEOUT, 0, NULL) +#define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_TOTAL_RENEGOTIATIONS, 0, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_dh(ctx, dh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_set_tmp_dh(ssl, dh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_ecdh(ctx, ecdh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#define SSL_set_tmp_ecdh(ssl, ecdh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#endif +#define SSL_CTX_add_extra_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_get_extra_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 0, px509) +#define SSL_CTX_get_extra_chain_certs_only(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 1, px509) +#define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS, 0, NULL) +#define SSL_CTX_set0_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_CTX_set1_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_CTX_add0_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_add1_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_CTX_get0_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx, NULL) +#define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_CTX_select_current_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_CTX_set0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_set1_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_add0_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_add1_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_get0_chain_certs(s, px509) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s, NULL) +#define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_select_current_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_set_current_cert(s, op) \ + SSL_ctrl(s, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_set0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) + +#define SSL_get1_groups(s, glist) \ + SSL_ctrl(s, SSL_CTRL_GET_GROUPS, 0, (int *)(glist)) +#define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_IANA_GROUPS, 0, (uint16_t **)(plst)) +#define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS, glistlen, (int *)(glist)) +#define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(s)) +#define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) +#define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS, glistlen, (char *)(glist)) +#define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(str)) +#define SSL_get_shared_group(s, n) \ + SSL_ctrl(s, SSL_CTRL_GET_SHARED_GROUP, n, NULL) +#define SSL_get_negotiated_group(s) \ + SSL_ctrl(s, SSL_CTRL_GET_NEGOTIATED_GROUP, 0, NULL) +#define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +#define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, \ + (char *)(clist)) +#define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, (char *)(clist)) +#define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NID, 0, pn) +#define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NID, 0, pn) +#define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_TMP_KEY, 0, pk) +#define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_TMP_KEY, 0, pk) +#define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_RAW_CIPHERLIST, 0, plst) +#define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_EC_POINT_FORMATS, 0, plst) +#define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +#define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +const char *SSL_get0_group_name(SSL *s); +const char *SSL_group_to_name(SSL *s, int id); + +/* Backwards compatibility, original 1.1.0 names */ +#define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +#define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); +int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +#define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +#define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +#define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +#define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +#define SSL_get1_curves SSL_get1_groups +#define SSL_CTX_set1_curves SSL_CTX_set1_groups +#define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +#define SSL_set1_curves SSL_set1_groups +#define SSL_set1_curves_list SSL_set1_groups_list +#define SSL_get_shared_curve SSL_get_shared_group + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* Provide some compatibility macros for removed functionality. */ +#define SSL_CTX_need_tmp_RSA(ctx) 0 +#define SSL_CTX_set_tmp_rsa(ctx, rsa) 1 +#define SSL_need_tmp_RSA(ssl) 0 +#define SSL_set_tmp_rsa(ssl, rsa) 1 +#define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +#define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +#define SSL_CTX_set_tmp_rsa_callback(ctx, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#define SSL_set_tmp_rsa_callback(ssl, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, + const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +#ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +#endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb)(SSL *ssl, void *arg), void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, + const unsigned char *d, long len); +#endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +/* serverinfo file format versions */ +#define SSL_SERVERINFOV1 1 +#define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); +int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *uri); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, \ + NULL) +#endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +#ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +#endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); + +#ifdef OPENSSL_X509_H +__owur X509 *SSL_get0_peer_certificate(const SSL *s); +__owur X509 *SSL_get1_peer_certificate(const SSL *s); +/* Deprecated in 3.0.0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_get_peer_certificate SSL_get1_peer_certificate +#endif +#endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb)(X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb)(SSL *ssl, void *arg), + void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +#endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, const unsigned char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, const unsigned char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +#ifndef OPENSSL_NO_SRP +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb)(SSL *, int *, void *)); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); + +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); +#endif +#endif + +/* + * ClientHello callback and helpers. + */ + +#define SSL_CLIENT_HELLO_SUCCESS 1 +#define SSL_CLIENT_HELLO_ERROR 0 +#define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn)(SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +typedef int (*SSL_new_pending_conn_cb_fn)(SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +#ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); +__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); +__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); +__owur int SSL_set_async_callback_arg(SSL *s, void *arg); +__owur int SSL_get_async_status(SSL *s, int *status); + +#endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +#define SSL_READ_EARLY_DATA_ERROR 0 +#define SSL_READ_EARLY_DATA_SUCCESS 1 +#define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, + int flags); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +#define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + +#define SSL_EARLY_DATA_NOT_SENT 0 +#define SSL_EARLY_DATA_REJECTED 1 +#define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); + +/* This sets the 'default' SSL version that SSL_new() will create */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); +#endif + +#ifndef OPENSSL_NO_SSL3_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); +#endif +#endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +#ifndef OPENSSL_NO_TLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_2_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); +#endif +#endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_new_session_ticket(SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_library_init() OPENSSL_init_ssl(0, NULL) +#endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); +__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); +__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, + const char *CAfile, + const char *CApath); +#define SSL_get0_session SSL_get_session /* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +#define SSL_CTX_sess_set_cache_size(ctx, t) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_SIZE, t, NULL) +#define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_SIZE, 0, NULL) +#define SSL_CTX_set_session_cache_mode(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_MODE, m, NULL) +#define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_MODE, 0, NULL) + +#define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +#define SSL_CTX_set_default_read_ahead(ctx, m) SSL_CTX_set_read_ahead(ctx, m) +#define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_READ_AHEAD, 0, NULL) +#define SSL_CTX_set_read_ahead(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_READ_AHEAD, m, NULL) +#define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_CTX_set_max_cert_list(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) +#define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_set_max_cert_list(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) + +#define SSL_CTX_set_max_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_set_max_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_split_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_set_split_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_max_pipelines(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_max_pipelines(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_retry_verify(ssl) \ + (SSL_ctrl(ssl, SSL_CTRL_SET_RETRY_VERIFY, 0, NULL) > 0) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* NB: the |keylength| is only applicable when is_export is true */ +OSSL_DEPRECATEDIN_3_0 +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +OSSL_DEPRECATEDIN_3_0 +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +#endif +#endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_COMP_free_compression_methods() \ + while (0) \ + continue +#endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb)(SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb)(SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); + +int SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +#define SSL_ACCEPT_STREAM_UNI (1U << 1) +#define SSL_ACCEPT_STREAM_BIDI (1U << 2) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +#ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +#endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +#define SSL_VALUE_CLASS_GENERIC 0 +#define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +#define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +#define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +#define SSL_VALUE_NONE 0 +#define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +#define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +#define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +#define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +#define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +#define SSL_VALUE_EVENT_HANDLING_MODE 6 +#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +#define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +#define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +#define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +#define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +#define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +#define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +#define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +#define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +#define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +#define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +#define SSL_POLL_EVENT_NONE 0 + +#define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +#define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +#define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +#define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +#define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +#define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +#define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +#define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +#define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +#define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +#define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +#define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +#define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +#define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +#define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +#define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +#define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +#define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +#define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +#define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +#define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +#define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_cache_hit(s) SSL_session_reused(s) +#endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +#ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +#endif + +#ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +#endif + +#ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void)SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void)SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +#endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +#define SSL_SECOP_OTHER_TYPE 0xffff0000 +#define SSL_SECOP_OTHER_NONE 0 +#define SSL_SECOP_OTHER_CIPHER (1 << 16) +#define SSL_SECOP_OTHER_CURVE (2 << 16) +#define SSL_SECOP_OTHER_DH (3 << 16) +#define SSL_SECOP_OTHER_PKEY (4 << 16) +#define SSL_SECOP_OTHER_SIGALG (5 << 16) +#define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +#define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +#define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +#define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +#define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +#define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +#define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +#define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +#define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +#define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +#define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +#define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +#define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +#define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +#define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +#define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +#define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s))(const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx))(const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +#define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +#define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +#define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +#ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +#endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +#define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +#define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +#define SSL_TICKET_NONE 2 +/* Empty ticket present */ +#define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +#define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +#define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +#define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +/* store the default cipher strings inside the library */ +const char *OSSL_default_cipher_list(void); +const char *OSSL_default_ciphersuites(void); + +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +#define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +#define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +#define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +#define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl2.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl2.h new file mode 100644 index 0000000..67d1d02 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl2.h @@ -0,0 +1,30 @@ +/* + * 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_SSL2_H +#define OPENSSL_SSL2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL2_H +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL2_VERSION 0x0002 + +#define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl3.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl3.h new file mode 100644 index 0000000..f35b6ea --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ssl3.h @@ -0,0 +1,357 @@ +/* + * Copyright 1995-2025 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_SSL3_H +#define OPENSSL_SSL3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL3_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signalling cipher suite value from RFC 5746 + * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) + */ +#define SSL3_CK_SCSV 0x030000FF + +/* + * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 + * (TLS_FALLBACK_SCSV) + */ +#define SSL3_CK_FALLBACK_SCSV 0x03005600 + +#define SSL3_CK_RSA_NULL_MD5 0x03000001 +#define SSL3_CK_RSA_NULL_SHA 0x03000002 +#define SSL3_CK_RSA_RC4_40_MD5 0x03000003 +#define SSL3_CK_RSA_RC4_128_MD5 0x03000004 +#define SSL3_CK_RSA_RC4_128_SHA 0x03000005 +#define SSL3_CK_RSA_RC2_40_MD5 0x03000006 +#define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 +#define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 +#define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 +#define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A + +#define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B +#define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C +#define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D +#define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E +#define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F +#define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 + +#define SSL3_CK_DHE_DSS_DES_40_CBC_SHA 0x03000011 +#define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +#define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +#define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +#define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +#define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +#define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +#define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +#define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +#define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +#define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +#define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_RSA_DES_192_CBC3_SHA + +#define SSL3_CK_ADH_RC4_40_MD5 0x03000017 +#define SSL3_CK_ADH_RC4_128_MD5 0x03000018 +#define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 +#define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A +#define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +#define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +#define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +#define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +#define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +#define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +#define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +#define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" +#define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" +#define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" +#define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" +#define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" +#define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" +#define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" +#define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" +#define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" +#define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" + +#define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" +#define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" +#define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" +#define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" +#define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" +#define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" + +#define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" +#define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" +#define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" +#define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" +#define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" +#define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" + +/* + * This next block of six "EDH" labels is for backward compatibility with + * older versions of OpenSSL. New code should use the six "DHE" labels above + * instead: + */ +#define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" +#define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" +#define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" +#define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" +#define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" +#define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" + +#define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" +#define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" +#define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" +#define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" +#define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" + +#define SSL3_SSL_SESSION_ID_LENGTH 32 +#define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 + +#define SSL3_MASTER_SECRET_SIZE 48 +#define SSL3_RANDOM_SIZE 32 +#define SSL3_SESSION_ID_SIZE 32 +#define SSL3_RT_HEADER_LENGTH 5 + +#define SSL3_HM_HEADER_LENGTH 4 + +#ifndef SSL3_ALIGN_PAYLOAD +/* + * Some will argue that this increases memory footprint, but it's not + * actually true. Point is that malloc has to return at least 64-bit aligned + * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. + * Suggested pre-gaping simply moves these wasted bytes from the end of + * allocated region to its front, but makes data payload aligned, which + * improves performance:-) + */ +#define SSL3_ALIGN_PAYLOAD 8 +#else +#if (SSL3_ALIGN_PAYLOAD & (SSL3_ALIGN_PAYLOAD - 1)) != 0 +#error "insane SSL3_ALIGN_PAYLOAD" +#undef SSL3_ALIGN_PAYLOAD +#endif +#endif + +/* + * This is the maximum MAC (digest) size used by the SSL library. Currently + * maximum of 20 is used by SHA1, but we reserve for future extension for + * 512-bit hashes. + */ + +#define SSL3_RT_MAX_MD_SIZE 64 + +/* + * Maximum block size used in all ciphersuites. Currently 16 for AES. + */ + +#define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 + +#define SSL3_RT_MAX_EXTRA (16384) + +/* Maximum plaintext length: defined by SSL/TLS standards */ +#define SSL3_RT_MAX_PLAIN_LENGTH 16384 +/* Maximum compression overhead: defined by SSL/TLS standards */ +#define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 + +/* + * The standards give a maximum encryption overhead of 1024 bytes. In + * practice the value is lower than this. The overhead is the maximum number + * of padding bytes (256) plus the mac size. + */ +#define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) +#define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * OpenSSL currently only uses a padding length of at most one block so the + * send overhead is smaller. + */ + +#define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ + (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) + +/* If compression isn't used don't include the compression overhead */ + +#ifdef OPENSSL_NO_COMP +#define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH +#else +#define SSL3_RT_MAX_COMPRESSED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_COMPRESSED_OVERHEAD) +#endif +#define SSL3_RT_MAX_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_ENCRYPTED_OVERHEAD + SSL3_RT_MAX_COMPRESSED_LENGTH) +#define SSL3_RT_MAX_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +#define SSL3_RT_MAX_PACKET_SIZE \ + (SSL3_RT_MAX_ENCRYPTED_LENGTH + SSL3_RT_HEADER_LENGTH) + +#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" + +/* SSL3_VERSION is defined in prov_ssl.h */ +#define SSL3_VERSION_MAJOR 0x03 +#define SSL3_VERSION_MINOR 0x00 + +#define SSL3_RT_CHANGE_CIPHER_SPEC 20 +#define SSL3_RT_ALERT 21 +#define SSL3_RT_HANDSHAKE 22 +#define SSL3_RT_APPLICATION_DATA 23 + +/* Pseudo content types to indicate additional parameters */ +#define TLS1_RT_CRYPTO 0x1000 +#define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) +#define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) +#define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) +#define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) + +#define TLS1_RT_CRYPTO_READ 0x0000 +#define TLS1_RT_CRYPTO_WRITE 0x0100 +#define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) +#define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) +#define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) +#define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) + +/* Pseudo content types for SSL/TLS header info */ +#define SSL3_RT_HEADER 0x100 +#define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +/* Pseudo content types for QUIC */ +#define SSL3_RT_QUIC_DATAGRAM 0x200 +#define SSL3_RT_QUIC_PACKET 0x201 +#define SSL3_RT_QUIC_FRAME_FULL 0x202 +#define SSL3_RT_QUIC_FRAME_HEADER 0x203 +#define SSL3_RT_QUIC_FRAME_PADDING 0x204 + +#define SSL3_AL_WARNING 1 +#define SSL3_AL_FATAL 2 + +#define SSL3_AD_CLOSE_NOTIFY 0 +#define SSL3_AD_UNEXPECTED_MESSAGE 10 /* fatal */ +#define SSL3_AD_BAD_RECORD_MAC 20 /* fatal */ +#define SSL3_AD_DECOMPRESSION_FAILURE 30 /* fatal */ +#define SSL3_AD_HANDSHAKE_FAILURE 40 /* fatal */ +#define SSL3_AD_NO_CERTIFICATE 41 +#define SSL3_AD_BAD_CERTIFICATE 42 +#define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 +#define SSL3_AD_CERTIFICATE_REVOKED 44 +#define SSL3_AD_CERTIFICATE_EXPIRED 45 +#define SSL3_AD_CERTIFICATE_UNKNOWN 46 +#define SSL3_AD_ILLEGAL_PARAMETER 47 /* fatal */ + +#define TLS1_HB_REQUEST 1 +#define TLS1_HB_RESPONSE 2 + +#define SSL3_CT_RSA_SIGN 1 +#define SSL3_CT_DSS_SIGN 2 +#define SSL3_CT_RSA_FIXED_DH 3 +#define SSL3_CT_DSS_FIXED_DH 4 +#define SSL3_CT_RSA_EPHEMERAL_DH 5 +#define SSL3_CT_DSS_EPHEMERAL_DH 6 +#define SSL3_CT_FORTEZZA_DMS 20 +/* + * SSL3_CT_NUMBER is used to size arrays and it must be large enough to + * contain all of the cert types defined for *either* SSLv3 and TLSv1. + */ +#define SSL3_CT_NUMBER 12 + +#if defined(TLS_CT_NUMBER) +#if TLS_CT_NUMBER != SSL3_CT_NUMBER +#error "SSL/TLS CT_NUMBER values do not match" +#endif +#endif + +/* No longer used as of OpenSSL 1.1.1 */ +#define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +#define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +#define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +#define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +#define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +#define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +#define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +#define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +#define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +/* 0x2000 is reserved for TLS1_FLAGS_QUIC (internal) */ +/* 0x4000 is reserved for TLS1_FLAGS_QUIC_INTERNAL (internal) */ + +#define SSL3_MT_HELLO_REQUEST 0 +#define SSL3_MT_CLIENT_HELLO 1 +#define SSL3_MT_SERVER_HELLO 2 +#define SSL3_MT_NEWSESSION_TICKET 4 +#define SSL3_MT_END_OF_EARLY_DATA 5 +#define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +#define SSL3_MT_CERTIFICATE 11 +#define SSL3_MT_SERVER_KEY_EXCHANGE 12 +#define SSL3_MT_CERTIFICATE_REQUEST 13 +#define SSL3_MT_SERVER_DONE 14 +#define SSL3_MT_CERTIFICATE_VERIFY 15 +#define SSL3_MT_CLIENT_KEY_EXCHANGE 16 +#define SSL3_MT_FINISHED 20 +#define SSL3_MT_CERTIFICATE_URL 21 +#define SSL3_MT_CERTIFICATE_STATUS 22 +#define SSL3_MT_SUPPLEMENTAL_DATA 23 +#define SSL3_MT_KEY_UPDATE 24 +#define SSL3_MT_COMPRESSED_CERTIFICATE 25 +#ifndef OPENSSL_NO_NEXTPROTONEG +#define SSL3_MT_NEXT_PROTO 67 +#endif +#define SSL3_MT_MESSAGE_HASH 254 +#define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +#define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +#define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +#define SSL3_CC_READ 0x001 +#define SSL3_CC_WRITE 0x002 +#define SSL3_CC_CLIENT 0x010 +#define SSL3_CC_SERVER 0x020 +#define SSL3_CC_EARLY 0x040 +#define SSL3_CC_HANDSHAKE 0x080 +#define SSL3_CC_APPLICATION 0x100 +#define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT | SSL3_CC_WRITE) +#define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER | SSL3_CC_READ) +#define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT | SSL3_CC_READ) +#define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER | SSL3_CC_WRITE) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sslerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sslerr.h new file mode 100644 index 0000000..6993255 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sslerr.h @@ -0,0 +1,380 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_SSLERR_H +#define OPENSSL_SSLERR_H +#pragma once + +#include +#include +#include + +/* + * SSL reason codes. + */ +#define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +#define SSL_R_APP_DATA_IN_HANDSHAKE 100 +#define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +#define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +#define SSL_R_BAD_CERTIFICATE 348 +#define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +#define SSL_R_BAD_CIPHER 186 +#define SSL_R_BAD_COMPRESSION_ALGORITHM 326 +#define SSL_R_BAD_DATA 390 +#define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +#define SSL_R_BAD_DECOMPRESSION 107 +#define SSL_R_BAD_DH_VALUE 102 +#define SSL_R_BAD_DIGEST_LENGTH 111 +#define SSL_R_BAD_EARLY_DATA 233 +#define SSL_R_BAD_ECC_CERT 304 +#define SSL_R_BAD_ECPOINT 306 +#define SSL_R_BAD_EXTENSION 110 +#define SSL_R_BAD_HANDSHAKE_LENGTH 332 +#define SSL_R_BAD_HANDSHAKE_STATE 236 +#define SSL_R_BAD_HELLO_REQUEST 105 +#define SSL_R_BAD_HRR_VERSION 263 +#define SSL_R_BAD_KEY_SHARE 108 +#define SSL_R_BAD_KEY_UPDATE 122 +#define SSL_R_BAD_LEGACY_VERSION 292 +#define SSL_R_BAD_LENGTH 271 +#define SSL_R_BAD_PACKET 240 +#define SSL_R_BAD_PACKET_LENGTH 115 +#define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +#define SSL_R_BAD_PSK 219 +#define SSL_R_BAD_PSK_IDENTITY 114 +#define SSL_R_BAD_RECORD_TYPE 443 +#define SSL_R_BAD_RSA_ENCRYPT 119 +#define SSL_R_BAD_SIGNATURE 123 +#define SSL_R_BAD_SRP_A_LENGTH 347 +#define SSL_R_BAD_SRP_PARAMETERS 371 +#define SSL_R_BAD_SRTP_MKI_VALUE 352 +#define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +#define SSL_R_BAD_SSL_FILETYPE 124 +#define SSL_R_BAD_VALUE 384 +#define SSL_R_BAD_WRITE_RETRY 127 +#define SSL_R_BINDER_DOES_NOT_VERIFY 253 +#define SSL_R_BIO_NOT_SET 128 +#define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +#define SSL_R_BN_LIB 130 +#define SSL_R_CALLBACK_FAILED 234 +#define SSL_R_CANNOT_CHANGE_CIPHER 109 +#define SSL_R_CANNOT_GET_GROUP_NAME 299 +#define SSL_R_CA_DN_LENGTH_MISMATCH 131 +#define SSL_R_CA_KEY_TOO_SMALL 397 +#define SSL_R_CA_MD_TOO_WEAK 398 +#define SSL_R_CCS_RECEIVED_EARLY 133 +#define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +#define SSL_R_CERT_CB_ERROR 377 +#define SSL_R_CERT_LENGTH_MISMATCH 135 +#define SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +#define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +#define SSL_R_CLIENTHELLO_TLSEXT 226 +#define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +#define SSL_R_COMPRESSION_DISABLED 343 +#define SSL_R_COMPRESSION_FAILURE 141 +#define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +#define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +#define SSL_R_CONNECTION_TYPE_NOT_SET 144 +#define SSL_R_CONN_USE_ONLY 356 +#define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 +#define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +#define SSL_R_COOKIE_MISMATCH 308 +#define SSL_R_COPY_PARAMETERS_FAILED 296 +#define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +#define SSL_R_DANE_ALREADY_ENABLED 172 +#define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +#define SSL_R_DANE_NOT_ENABLED 175 +#define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +#define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +#define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +#define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +#define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +#define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +#define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +#define SSL_R_DANE_TLSA_NULL_DATA 203 +#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +#define SSL_R_DATA_LENGTH_TOO_LONG 146 +#define SSL_R_DECRYPTION_FAILED 147 +#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +#define SSL_R_DH_KEY_TOO_SMALL 394 +#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +#define SSL_R_DIGEST_CHECK_FAILED 149 +#define SSL_R_DOMAIN_USE_ONLY 422 +#define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +#define SSL_R_DUPLICATE_COMPRESSION_ID 309 +#define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +#define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +#define SSL_R_EE_KEY_TOO_SMALL 399 +#define SSL_R_EMPTY_RAW_PUBLIC_KEY 349 +#define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +#define SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG 419 +#define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +#define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +#define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +#define SSL_R_EXTENSION_NOT_RECEIVED 279 +#define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +#define SSL_R_EXT_LENGTH_MISMATCH 163 +#define SSL_R_FAILED_TO_GET_PARAMETER 316 +#define SSL_R_FAILED_TO_INIT_ASYNC 405 +#define SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE 417 +#define SSL_R_FEATURE_NOT_RENEGOTIABLE 413 +#define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +#define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +#define SSL_R_HTTPS_PROXY_REQUEST 155 +#define SSL_R_HTTP_REQUEST 156 +#define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +#define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +#define SSL_R_INAPPROPRIATE_FALLBACK 373 +#define SSL_R_INCONSISTENT_COMPRESSION 340 +#define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +#define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +#define SSL_R_INCONSISTENT_EXTMS 104 +#define SSL_R_INSUFFICIENT_SECURITY 241 +#define SSL_R_INVALID_ALERT 205 +#define SSL_R_INVALID_CCS_MESSAGE 260 +#define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +#define SSL_R_INVALID_COMMAND 280 +#define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +#define SSL_R_INVALID_CONFIG 283 +#define SSL_R_INVALID_CONFIGURATION_NAME 113 +#define SSL_R_INVALID_CONTEXT 282 +#define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +#define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +#define SSL_R_INVALID_MAX_EARLY_DATA 174 +#define SSL_R_INVALID_NULL_CMD_NAME 385 +#define SSL_R_INVALID_RAW_PUBLIC_KEY 350 +#define SSL_R_INVALID_RECORD 317 +#define SSL_R_INVALID_SEQUENCE_NUMBER 402 +#define SSL_R_INVALID_SERVERINFO_DATA 388 +#define SSL_R_INVALID_SESSION_ID 999 +#define SSL_R_INVALID_SRP_USERNAME 357 +#define SSL_R_INVALID_STATUS_RESPONSE 328 +#define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +#define SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED 333 +#define SSL_R_LENGTH_MISMATCH 159 +#define SSL_R_LENGTH_TOO_LONG 404 +#define SSL_R_LENGTH_TOO_SHORT 160 +#define SSL_R_LIBRARY_BUG 274 +#define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +#define SSL_R_LISTENER_USE_ONLY 421 +#define SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED 395 +#define SSL_R_MISSING_DSA_SIGNING_CERT 165 +#define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +#define SSL_R_MISSING_FATAL 256 +#define SSL_R_MISSING_PARAMETERS 290 +#define SSL_R_MISSING_PSK_KEX_MODES_EXTENSION 310 +#define SSL_R_MISSING_QUIC_TLS_FUNCTIONS 423 +#define SSL_R_MISSING_RSA_CERTIFICATE 168 +#define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +#define SSL_R_MISSING_RSA_SIGNING_CERT 170 +#define SSL_R_MISSING_SIGALGS_EXTENSION 112 +#define SSL_R_MISSING_SIGNING_CERT 221 +#define SSL_R_MISSING_SRP_PARAM 358 +#define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +#define SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION 420 +#define SSL_R_MISSING_TMP_DH_KEY 171 +#define SSL_R_MISSING_TMP_ECDH_KEY 311 +#define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +#define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +#define SSL_R_NOT_REPLACING_CERTIFICATE 289 +#define SSL_R_NOT_SERVER 284 +#define SSL_R_NO_APPLICATION_PROTOCOL 235 +#define SSL_R_NO_CERTIFICATES_RETURNED 176 +#define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +#define SSL_R_NO_CERTIFICATE_SET 179 +#define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +#define SSL_R_NO_CIPHERS_AVAILABLE 181 +#define SSL_R_NO_CIPHERS_SPECIFIED 183 +#define SSL_R_NO_CIPHER_MATCH 185 +#define SSL_R_NO_CLIENT_CERT_METHOD 331 +#define SSL_R_NO_COMPRESSION_SPECIFIED 187 +#define SSL_R_NO_COOKIE_CALLBACK_SET 287 +#define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +#define SSL_R_NO_METHOD_SPECIFIED 188 +#define SSL_R_NO_PEM_EXTENSIONS 389 +#define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +#define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +#define SSL_R_NO_RENEGOTIATION 339 +#define SSL_R_NO_REQUIRED_DIGEST 324 +#define SSL_R_NO_SHARED_CIPHER 193 +#define SSL_R_NO_SHARED_GROUPS 410 +#define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +#define SSL_R_NO_SRTP_PROFILES 359 +#define SSL_R_NO_STREAM 355 +#define SSL_R_NO_SUITABLE_DIGEST_ALGORITHM 297 +#define SSL_R_NO_SUITABLE_GROUPS 295 +#define SSL_R_NO_SUITABLE_KEY_SHARE 101 +#define SSL_R_NO_SUITABLE_RECORD_LAYER 322 +#define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +#define SSL_R_NO_VALID_SCTS 216 +#define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +#define SSL_R_NULL_SSL_CTX 195 +#define SSL_R_NULL_SSL_METHOD_PASSED 196 +#define SSL_R_OCSP_CALLBACK_FAILURE 305 +#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +#define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +#define SSL_R_OVERFLOW_ERROR 237 +#define SSL_R_PACKET_LENGTH_TOO_LONG 198 +#define SSL_R_PARSE_TLSEXT 227 +#define SSL_R_PATH_TOO_LONG 270 +#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +#define SSL_R_PEM_NAME_BAD_PREFIX 391 +#define SSL_R_PEM_NAME_TOO_SHORT 392 +#define SSL_R_PIPELINE_FAILURE 406 +#define SSL_R_POLL_REQUEST_NOT_SUPPORTED 418 +#define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +#define SSL_R_PRIVATE_KEY_MISMATCH 288 +#define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +#define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +#define SSL_R_PSK_NO_CLIENT_CB 224 +#define SSL_R_PSK_NO_SERVER_CB 225 +#define SSL_R_QUIC_HANDSHAKE_LAYER_ERROR 393 +#define SSL_R_QUIC_NETWORK_ERROR 387 +#define SSL_R_QUIC_PROTOCOL_ERROR 382 +#define SSL_R_READ_BIO_NOT_SET 211 +#define SSL_R_READ_TIMEOUT_EXPIRED 312 +#define SSL_R_RECORDS_NOT_RELEASED 321 +#define SSL_R_RECORD_LAYER_FAILURE 313 +#define SSL_R_RECORD_LENGTH_MISMATCH 213 +#define SSL_R_RECORD_TOO_SMALL 298 +#define SSL_R_REMOTE_PEER_ADDRESS_NOT_SET 346 +#define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +#define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +#define SSL_R_RENEGOTIATION_MISMATCH 337 +#define SSL_R_REQUEST_PENDING 285 +#define SSL_R_REQUEST_SENT 286 +#define SSL_R_REQUIRED_CIPHER_MISSING 215 +#define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +#define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +#define SSL_R_SCT_VERIFICATION_FAILED 208 +#define SSL_R_SEQUENCE_CTR_WRAPPED 327 +#define SSL_R_SERVERHELLO_TLSEXT 275 +#define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +#define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +#define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +#define SSL_R_SRP_A_CALC 361 +#define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +#define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +#define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +#define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +#define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +#define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +#define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +#define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +#define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +#define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +#define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +#define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +#define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +#define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +#define SSL_R_SSL_COMMAND_SECTION_EMPTY 117 +#define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +#define SSL_R_SSL_HANDSHAKE_FAILURE 229 +#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +#define SSL_R_SSL_NEGATIVE_LENGTH 372 +#define SSL_R_SSL_SECTION_EMPTY 126 +#define SSL_R_SSL_SECTION_NOT_FOUND 136 +#define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +#define SSL_R_SSL_SESSION_ID_CONFLICT 302 +#define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +#define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +#define SSL_R_SSL_SESSION_ID_TOO_LONG 408 +#define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +#define SSL_R_STILL_IN_INIT 121 +#define SSL_R_STREAM_COUNT_LIMITED 411 +#define SSL_R_STREAM_FINISHED 365 +#define SSL_R_STREAM_RECV_ONLY 366 +#define SSL_R_STREAM_RESET 375 +#define SSL_R_STREAM_SEND_ONLY 379 +#define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +#define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +#define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +#define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +#define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +#define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +#define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +#define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +#define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +#define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +#define SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL 1120 +#define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +#define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +#define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +#define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +#define SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY 1115 +#define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +#define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +#define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +#define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +#define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +#define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +#define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +#define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +#define SSL_R_TOO_MANY_KEY_UPDATES 132 +#define SSL_R_TOO_MANY_WARN_ALERTS 409 +#define SSL_R_TOO_MUCH_EARLY_DATA 164 +#define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +#define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +#define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +#define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +#define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +#define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +#define SSL_R_UNEXPECTED_EOF_WHILE_READING 294 +#define SSL_R_UNEXPECTED_MESSAGE 244 +#define SSL_R_UNEXPECTED_RECORD 245 +#define SSL_R_UNINITIALIZED 276 +#define SSL_R_UNKNOWN_ALERT_TYPE 246 +#define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +#define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +#define SSL_R_UNKNOWN_CIPHER_TYPE 249 +#define SSL_R_UNKNOWN_CMD_NAME 386 +#define SSL_R_UNKNOWN_COMMAND 139 +#define SSL_R_UNKNOWN_DIGEST 368 +#define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +#define SSL_R_UNKNOWN_MANDATORY_PARAMETER 323 +#define SSL_R_UNKNOWN_PKEY_TYPE 251 +#define SSL_R_UNKNOWN_PROTOCOL 252 +#define SSL_R_UNKNOWN_SSL_VERSION 254 +#define SSL_R_UNKNOWN_STATE 255 +#define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +#define SSL_R_UNSOLICITED_EXTENSION 217 +#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE 414 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS 415 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE_OP 416 +#define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +#define SSL_R_UNSUPPORTED_PROTOCOL 258 +#define SSL_R_UNSUPPORTED_SSL_VERSION 259 +#define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +#define SSL_R_UNSUPPORTED_WRITE_FLAG 412 +#define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +#define SSL_R_VERSION_TOO_HIGH 166 +#define SSL_R_VERSION_TOO_LOW 396 +#define SSL_R_WRONG_CERTIFICATE_TYPE 383 +#define SSL_R_WRONG_CIPHER_RETURNED 261 +#define SSL_R_WRONG_CURVE 378 +#define SSL_R_WRONG_RPK_TYPE 351 +#define SSL_R_WRONG_SIGNATURE_LENGTH 264 +#define SSL_R_WRONG_SIGNATURE_SIZE 265 +#define SSL_R_WRONG_SIGNATURE_TYPE 370 +#define SSL_R_WRONG_SSL_VERSION 266 +#define SSL_R_WRONG_VERSION_NUMBER 267 +#define SSL_R_X509_LIB 268 +#define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sslerr_legacy.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sslerr_legacy.h new file mode 100644 index 0000000..8cf1ebd --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/sslerr_legacy.h @@ -0,0 +1,467 @@ +/* + * Copyright 2020-2024 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 header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public sslerr.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_SSLERR_LEGACY_H +#define OPENSSL_SSLERR_LEGACY_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_SSL_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * SSL function codes. + */ +#define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 0 +#define SSL_F_ADD_KEY_SHARE 0 +#define SSL_F_BYTES_TO_CIPHER_LIST 0 +#define SSL_F_CHECK_SUITEB_CIPHER_LIST 0 +#define SSL_F_CIPHERSUITE_CB 0 +#define SSL_F_CONSTRUCT_CA_NAMES 0 +#define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 0 +#define SSL_F_CONSTRUCT_STATEFUL_TICKET 0 +#define SSL_F_CONSTRUCT_STATELESS_TICKET 0 +#define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 0 +#define SSL_F_CREATE_TICKET_PREQUEL 0 +#define SSL_F_CT_MOVE_SCTS 0 +#define SSL_F_CT_STRICT 0 +#define SSL_F_CUSTOM_EXT_ADD 0 +#define SSL_F_CUSTOM_EXT_PARSE 0 +#define SSL_F_D2I_SSL_SESSION 0 +#define SSL_F_DANE_CTX_ENABLE 0 +#define SSL_F_DANE_MTYPE_SET 0 +#define SSL_F_DANE_TLSA_ADD 0 +#define SSL_F_DERIVE_SECRET_KEY_AND_IV 0 +#define SSL_F_DO_DTLS1_WRITE 0 +#define SSL_F_DO_SSL3_WRITE 0 +#define SSL_F_DTLS1_BUFFER_RECORD 0 +#define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 0 +#define SSL_F_DTLS1_HEARTBEAT 0 +#define SSL_F_DTLS1_HM_FRAGMENT_NEW 0 +#define SSL_F_DTLS1_PREPROCESS_FRAGMENT 0 +#define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 0 +#define SSL_F_DTLS1_PROCESS_RECORD 0 +#define SSL_F_DTLS1_READ_BYTES 0 +#define SSL_F_DTLS1_READ_FAILED 0 +#define SSL_F_DTLS1_RETRANSMIT_MESSAGE 0 +#define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 0 +#define SSL_F_DTLS1_WRITE_BYTES 0 +#define SSL_F_DTLSV1_LISTEN 0 +#define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +#define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 0 +#define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 0 +#define SSL_F_DTLS_PROCESS_HELLO_VERIFY 0 +#define SSL_F_DTLS_RECORD_LAYER_NEW 0 +#define SSL_F_DTLS_WAIT_FOR_DRY 0 +#define SSL_F_EARLY_DATA_COUNT_OK 0 +#define SSL_F_FINAL_EARLY_DATA 0 +#define SSL_F_FINAL_EC_PT_FORMATS 0 +#define SSL_F_FINAL_EMS 0 +#define SSL_F_FINAL_KEY_SHARE 0 +#define SSL_F_FINAL_MAXFRAGMENTLEN 0 +#define SSL_F_FINAL_RENEGOTIATE 0 +#define SSL_F_FINAL_SERVER_NAME 0 +#define SSL_F_FINAL_SIG_ALGS 0 +#define SSL_F_GET_CERT_VERIFY_TBS_DATA 0 +#define SSL_F_NSS_KEYLOG_INT 0 +#define SSL_F_OPENSSL_INIT_SSL 0 +#define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_POST_WORK 0 +#define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 0 +#define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 0 +#define SSL_F_PARSE_CA_NAMES 0 +#define SSL_F_PITEM_NEW 0 +#define SSL_F_PQUEUE_NEW 0 +#define SSL_F_PROCESS_KEY_SHARE_EXT 0 +#define SSL_F_READ_STATE_MACHINE 0 +#define SSL_F_SET_CLIENT_CIPHERSUITE 0 +#define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 0 +#define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 0 +#define SSL_F_SRP_VERIFY_SERVER_PARAM 0 +#define SSL_F_SSL3_CHANGE_CIPHER_STATE 0 +#define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 0 +#define SSL_F_SSL3_CTRL 0 +#define SSL_F_SSL3_CTX_CTRL 0 +#define SSL_F_SSL3_DIGEST_CACHED_RECORDS 0 +#define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 0 +#define SSL_F_SSL3_ENC 0 +#define SSL_F_SSL3_FINAL_FINISH_MAC 0 +#define SSL_F_SSL3_FINISH_MAC 0 +#define SSL_F_SSL3_GENERATE_KEY_BLOCK 0 +#define SSL_F_SSL3_GENERATE_MASTER_SECRET 0 +#define SSL_F_SSL3_GET_RECORD 0 +#define SSL_F_SSL3_INIT_FINISHED_MAC 0 +#define SSL_F_SSL3_OUTPUT_CERT_CHAIN 0 +#define SSL_F_SSL3_READ_BYTES 0 +#define SSL_F_SSL3_READ_N 0 +#define SSL_F_SSL3_SETUP_KEY_BLOCK 0 +#define SSL_F_SSL3_SETUP_READ_BUFFER 0 +#define SSL_F_SSL3_SETUP_WRITE_BUFFER 0 +#define SSL_F_SSL3_WRITE_BYTES 0 +#define SSL_F_SSL3_WRITE_PENDING 0 +#define SSL_F_SSL_ADD_CERT_CHAIN 0 +#define SSL_F_SSL_ADD_CERT_TO_BUF 0 +#define SSL_F_SSL_ADD_CERT_TO_WPACKET 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 0 +#define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 0 +#define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_BUILD_CERT_CHAIN 0 +#define SSL_F_SSL_BYTES_TO_CIPHER_LIST 0 +#define SSL_F_SSL_CACHE_CIPHERLIST 0 +#define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 0 +#define SSL_F_SSL_CERT_DUP 0 +#define SSL_F_SSL_CERT_NEW 0 +#define SSL_F_SSL_CERT_SET0_CHAIN 0 +#define SSL_F_SSL_CHECK_PRIVATE_KEY 0 +#define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 0 +#define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 0 +#define SSL_F_SSL_CHOOSE_CLIENT_VERSION 0 +#define SSL_F_SSL_CIPHER_DESCRIPTION 0 +#define SSL_F_SSL_CIPHER_LIST_TO_BYTES 0 +#define SSL_F_SSL_CIPHER_PROCESS_RULESTR 0 +#define SSL_F_SSL_CIPHER_STRENGTH_SORT 0 +#define SSL_F_SSL_CLEAR 0 +#define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 0 +#define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 0 +#define SSL_F_SSL_CONF_CMD 0 +#define SSL_F_SSL_CREATE_CIPHER_LIST 0 +#define SSL_F_SSL_CTRL 0 +#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 0 +#define SSL_F_SSL_CTX_ENABLE_CT 0 +#define SSL_F_SSL_CTX_MAKE_PROFILES 0 +#define SSL_F_SSL_CTX_NEW 0 +#define SSL_F_SSL_CTX_SET_ALPN_PROTOS 0 +#define SSL_F_SSL_CTX_SET_CIPHER_LIST 0 +#define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 0 +#define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 0 +#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 0 +#define SSL_F_SSL_CTX_SET_SSL_VERSION 0 +#define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 0 +#define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO_EX 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 0 +#define SSL_F_SSL_DANE_DUP 0 +#define SSL_F_SSL_DANE_ENABLE 0 +#define SSL_F_SSL_DERIVE 0 +#define SSL_F_SSL_DO_CONFIG 0 +#define SSL_F_SSL_DO_HANDSHAKE 0 +#define SSL_F_SSL_DUP_CA_LIST 0 +#define SSL_F_SSL_ENABLE_CT 0 +#define SSL_F_SSL_GENERATE_PKEY_GROUP 0 +#define SSL_F_SSL_GENERATE_SESSION_ID 0 +#define SSL_F_SSL_GET_NEW_SESSION 0 +#define SSL_F_SSL_GET_PREV_SESSION 0 +#define SSL_F_SSL_GET_SERVER_CERT_INDEX 0 +#define SSL_F_SSL_GET_SIGN_PKEY 0 +#define SSL_F_SSL_HANDSHAKE_HASH 0 +#define SSL_F_SSL_INIT_WBIO_BUFFER 0 +#define SSL_F_SSL_KEY_UPDATE 0 +#define SSL_F_SSL_LOAD_CLIENT_CA_FILE 0 +#define SSL_F_SSL_LOG_MASTER_SECRET 0 +#define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_SSL_MODULE_INIT 0 +#define SSL_F_SSL_NEW 0 +#define SSL_F_SSL_NEXT_PROTO_VALIDATE 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_PEEK 0 +#define SSL_F_SSL_PEEK_EX 0 +#define SSL_F_SSL_PEEK_INTERNAL 0 +#define SSL_F_SSL_READ 0 +#define SSL_F_SSL_READ_EARLY_DATA 0 +#define SSL_F_SSL_READ_EX 0 +#define SSL_F_SSL_READ_INTERNAL 0 +#define SSL_F_SSL_RENEGOTIATE 0 +#define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 0 +#define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_SESSION_DUP 0 +#define SSL_F_SSL_SESSION_NEW 0 +#define SSL_F_SSL_SESSION_PRINT_FP 0 +#define SSL_F_SSL_SESSION_SET1_ID 0 +#define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 0 +#define SSL_F_SSL_SET_ALPN_PROTOS 0 +#define SSL_F_SSL_SET_CERT 0 +#define SSL_F_SSL_SET_CERT_AND_KEY 0 +#define SSL_F_SSL_SET_CIPHER_LIST 0 +#define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 0 +#define SSL_F_SSL_SET_FD 0 +#define SSL_F_SSL_SET_PKEY 0 +#define SSL_F_SSL_SET_RFD 0 +#define SSL_F_SSL_SET_SESSION 0 +#define SSL_F_SSL_SET_SESSION_ID_CONTEXT 0 +#define SSL_F_SSL_SET_SESSION_TICKET_EXT 0 +#define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +#define SSL_F_SSL_SET_WFD 0 +#define SSL_F_SSL_SHUTDOWN 0 +#define SSL_F_SSL_SRP_CTX_INIT 0 +#define SSL_F_SSL_START_ASYNC_JOB 0 +#define SSL_F_SSL_UNDEFINED_FUNCTION 0 +#define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 0 +#define SSL_F_SSL_USE_CERTIFICATE 0 +#define SSL_F_SSL_USE_CERTIFICATE_ASN1 0 +#define SSL_F_SSL_USE_CERTIFICATE_FILE 0 +#define SSL_F_SSL_USE_PRIVATEKEY 0 +#define SSL_F_SSL_USE_PRIVATEKEY_ASN1 0 +#define SSL_F_SSL_USE_PRIVATEKEY_FILE 0 +#define SSL_F_SSL_USE_PSK_IDENTITY_HINT 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 0 +#define SSL_F_SSL_VALIDATE_CT 0 +#define SSL_F_SSL_VERIFY_CERT_CHAIN 0 +#define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 0 +#define SSL_F_SSL_WRITE 0 +#define SSL_F_SSL_WRITE_EARLY_DATA 0 +#define SSL_F_SSL_WRITE_EARLY_FINISH 0 +#define SSL_F_SSL_WRITE_EX 0 +#define SSL_F_SSL_WRITE_INTERNAL 0 +#define SSL_F_STATE_MACHINE 0 +#define SSL_F_TLS12_CHECK_PEER_SIGALG 0 +#define SSL_F_TLS12_COPY_SIGALGS 0 +#define SSL_F_TLS13_CHANGE_CIPHER_STATE 0 +#define SSL_F_TLS13_ENC 0 +#define SSL_F_TLS13_FINAL_FINISH_MAC 0 +#define SSL_F_TLS13_GENERATE_SECRET 0 +#define SSL_F_TLS13_HKDF_EXPAND 0 +#define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 0 +#define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 0 +#define SSL_F_TLS13_SETUP_KEY_BLOCK 0 +#define SSL_F_TLS1_CHANGE_CIPHER_STATE 0 +#define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 0 +#define SSL_F_TLS1_ENC 0 +#define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 0 +#define SSL_F_TLS1_GET_CURVELIST 0 +#define SSL_F_TLS1_PRF 0 +#define SSL_F_TLS1_SAVE_U16 0 +#define SSL_F_TLS1_SETUP_KEY_BLOCK 0 +#define SSL_F_TLS1_SET_GROUPS 0 +#define SSL_F_TLS1_SET_RAW_SIGALGS 0 +#define SSL_F_TLS1_SET_SERVER_SIGALGS 0 +#define SSL_F_TLS1_SET_SHARED_SIGALGS 0 +#define SSL_F_TLS1_SET_SIGALGS 0 +#define SSL_F_TLS_CHOOSE_SIGALG 0 +#define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 0 +#define SSL_F_TLS_COLLECT_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 0 +#define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_CERT_STATUS 0 +#define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 0 +#define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +#define SSL_F_TLS_CONSTRUCT_CKE_DHE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_GOST 0 +#define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_RSA 0 +#define SSL_F_TLS_CONSTRUCT_CKE_SRP 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EMS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_ETM 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_NPN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PSK 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SCT 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SRP 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_FINISHED 0 +#define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 0 +#define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_ALPN 0 +#define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 0 +#define SSL_F_TLS_CONSTRUCT_STOC_DONE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EMS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_ETM 0 +#define SSL_F_TLS_CONSTRUCT_STOC_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 0 +#define SSL_F_TLS_CONSTRUCT_STOC_PSK 0 +#define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 0 +#define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_FINISH_HANDSHAKE 0 +#define SSL_F_TLS_GET_MESSAGE_BODY 0 +#define SSL_F_TLS_GET_MESSAGE_HEADER 0 +#define SSL_F_TLS_HANDLE_ALPN 0 +#define SSL_F_TLS_HANDLE_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 0 +#define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 0 +#define SSL_F_TLS_PARSE_CTOS_ALPN 0 +#define SSL_F_TLS_PARSE_CTOS_COOKIE 0 +#define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 0 +#define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 0 +#define SSL_F_TLS_PARSE_CTOS_EMS 0 +#define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 0 +#define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 0 +#define SSL_F_TLS_PARSE_CTOS_PSK 0 +#define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 0 +#define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 0 +#define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 0 +#define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 0 +#define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 0 +#define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 0 +#define SSL_F_TLS_PARSE_CTOS_SRP 0 +#define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_PARSE_CTOS_USE_SRTP 0 +#define SSL_F_TLS_PARSE_STOC_ALPN 0 +#define SSL_F_TLS_PARSE_STOC_COOKIE 0 +#define SSL_F_TLS_PARSE_STOC_EARLY_DATA 0 +#define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 0 +#define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 0 +#define SSL_F_TLS_PARSE_STOC_KEY_SHARE 0 +#define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_PARSE_STOC_NPN 0 +#define SSL_F_TLS_PARSE_STOC_PSK 0 +#define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 0 +#define SSL_F_TLS_PARSE_STOC_SCT 0 +#define SSL_F_TLS_PARSE_STOC_SERVER_NAME 0 +#define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 0 +#define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_PARSE_STOC_USE_SRTP 0 +#define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 0 +#define SSL_F_TLS_PROCESS_CERT_STATUS 0 +#define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 0 +#define SSL_F_TLS_PROCESS_CERT_VERIFY 0 +#define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 0 +#define SSL_F_TLS_PROCESS_CKE_DHE 0 +#define SSL_F_TLS_PROCESS_CKE_ECDHE 0 +#define SSL_F_TLS_PROCESS_CKE_GOST 0 +#define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_PROCESS_CKE_RSA 0 +#define SSL_F_TLS_PROCESS_CKE_SRP 0 +#define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 0 +#define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 0 +#define SSL_F_TLS_PROCESS_FINISHED 0 +#define SSL_F_TLS_PROCESS_HELLO_REQ 0 +#define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 0 +#define SSL_F_TLS_PROCESS_KEY_EXCHANGE 0 +#define SSL_F_TLS_PROCESS_KEY_UPDATE 0 +#define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 0 +#define SSL_F_TLS_PROCESS_NEXT_PROTO 0 +#define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_SERVER_DONE 0 +#define SSL_F_TLS_PROCESS_SERVER_HELLO 0 +#define SSL_F_TLS_PROCESS_SKE_DHE 0 +#define SSL_F_TLS_PROCESS_SKE_ECDHE 0 +#define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_PROCESS_SKE_SRP 0 +#define SSL_F_TLS_PSK_DO_BINDER 0 +#define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 0 +#define SSL_F_TLS_SETUP_HANDSHAKE 0 +#define SSL_F_USE_CERTIFICATE_CHAIN_FILE 0 +#define SSL_F_WPACKET_INTERN_INIT_LEN 0 +#define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 0 +#define SSL_F_WRITE_STATE_MACHINE 0 +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/stack.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/stack.h new file mode 100644 index 0000000..542de76 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/stack.h @@ -0,0 +1,92 @@ +/* + * Copyright 1995-2025 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_STACK_H +#define OPENSSL_STACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_STACK_H +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void (*OPENSSL_sk_freefunc_thunk)(OPENSSL_sk_freefunc, void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +OPENSSL_STACK *OPENSSL_sk_set_thunks(OPENSSL_STACK *st, OPENSSL_sk_freefunc_thunk f_thunk); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, OPENSSL_sk_freefunc func); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_all(OPENSSL_STACK *st, const void *data, int *pnum); +int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); +void *OPENSSL_sk_shift(OPENSSL_STACK *st); +void *OPENSSL_sk_pop(OPENSSL_STACK *st); +void OPENSSL_sk_zero(OPENSSL_STACK *st); +OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, + OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); +void OPENSSL_sk_sort(OPENSSL_STACK *st); +int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _STACK OPENSSL_STACK +#define sk_num OPENSSL_sk_num +#define sk_value OPENSSL_sk_value +#define sk_set OPENSSL_sk_set +#define sk_new OPENSSL_sk_new +#define sk_new_null OPENSSL_sk_new_null +#define sk_free OPENSSL_sk_free +#define sk_pop_free OPENSSL_sk_pop_free +#define sk_deep_copy OPENSSL_sk_deep_copy +#define sk_insert OPENSSL_sk_insert +#define sk_delete OPENSSL_sk_delete +#define sk_delete_ptr OPENSSL_sk_delete_ptr +#define sk_find OPENSSL_sk_find +#define sk_find_ex OPENSSL_sk_find_ex +#define sk_push OPENSSL_sk_push +#define sk_unshift OPENSSL_sk_unshift +#define sk_shift OPENSSL_sk_shift +#define sk_pop OPENSSL_sk_pop +#define sk_zero OPENSSL_sk_zero +#define sk_set_cmp_func OPENSSL_sk_set_cmp_func +#define sk_dup OPENSSL_sk_dup +#define sk_sort OPENSSL_sk_sort +#define sk_is_sorted OPENSSL_sk_is_sorted +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/store.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/store.h new file mode 100644 index 0000000..2f14704 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/store.h @@ -0,0 +1,372 @@ +/* + * Copyright 2016-2025 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_STORE_H +#define OPENSSL_STORE_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OSSL_STORE_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * The main OSSL_STORE functions. + * ------------------------------ + * + * These allow applications to open a channel to a resource with supported + * data (keys, certs, crls, ...), read the data a piece at a time and decide + * what to do with it, and finally close. + */ + +typedef struct ossl_store_ctx_st OSSL_STORE_CTX; + +/* + * Typedef for the OSSL_STORE_INFO post processing callback. This can be used + * to massage the given OSSL_STORE_INFO, or to drop it entirely (by returning + * NULL). + */ +typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, + void *); + +/* + * Open a channel given a URI. The given UI method will be used any time the + * loader needs extra input, for example when a password or pin is needed, and + * will be passed the same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + */ +OSSL_STORE_CTX * +OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); +OSSL_STORE_CTX * +OSSL_STORE_open_ex(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/* + * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be + * done, and depends on the underlying loader (use OSSL_STORE_get0_scheme to + * determine which loader is used), except for common commands (see below). + * Each command takes different arguments. + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, + ... /* args */); +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, + va_list args); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* + * Common ctrl commands that different loaders may choose to support. + */ +/* int on = 0 or 1; STORE_ctrl(ctx, STORE_C_USE_SECMEM, &on); */ +#define OSSL_STORE_C_USE_SECMEM 1 +/* Where custom commands start */ +#define OSSL_STORE_C_CUSTOM_START 100 + +#endif + +/* + * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE + * functionality, given a context. + * Returns a OSSL_STORE_INFO pointer, from which OpenSSL typed data can be + * extracted with OSSL_STORE_INFO_get0_PKEY(), OSSL_STORE_INFO_get0_CERT(), ... + * NULL is returned on error, which may include that the data found at the URI + * can't be figured out for certain or is ambiguous. + */ +OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); + +/* + * Deletes the object in the store by URI. + * Returns 1 on success, 0 otherwise. + */ +int OSSL_STORE_delete(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[]); + +/* + * Check if end of data (end of file) is reached + * Returns 1 on end, 0 otherwise. + */ +int OSSL_STORE_eof(OSSL_STORE_CTX *ctx); + +/* + * Check if an error occurred + * Returns 1 if it did, 0 otherwise. + */ +int OSSL_STORE_error(OSSL_STORE_CTX *ctx); + +/* + * Close the channel + * Returns 1 on success, 0 on error. + */ +int OSSL_STORE_close(OSSL_STORE_CTX *ctx); + +/* + * Attach to a BIO. This works like OSSL_STORE_open() except it takes a + * BIO instead of a uri, along with a scheme to use when reading. + * The given UI method will be used any time the loader needs extra input, + * for example when a password or pin is needed, and will be passed the + * same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + * + * Note that this function is considered unsafe, all depending on what the + * BIO actually reads. + */ +OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, const char *scheme, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/*- + * Extracting OpenSSL types from and creating new OSSL_STORE_INFOs + * --------------------------------------------------------------- + */ + +/* + * Types of data that can be ossl_stored in a OSSL_STORE_INFO. + * OSSL_STORE_INFO_NAME is typically found when getting a listing of + * available "files" / "tokens" / what have you. + */ +#define OSSL_STORE_INFO_NAME 1 /* char * */ +#define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_PUBKEY 3 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_PKEY 4 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_CERT 5 /* X509 * */ +#define OSSL_STORE_INFO_CRL 6 /* X509_CRL * */ + +/* + * Functions to generate OSSL_STORE_INFOs, one function for each type we + * support having in them, as well as a generic constructor. + * + * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO + * and will therefore be freed when the OSSL_STORE_INFO is freed. + */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new(int type, void *data); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); +int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PUBKEY(EVP_PKEY *pubkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); + +/* + * Functions to try to extract data from a OSSL_STORE_INFO. + */ +int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +void *OSSL_STORE_INFO_get0_data(int type, const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *info); + +const char *OSSL_STORE_INFO_type_string(int type); + +/* + * Free the OSSL_STORE_INFO + */ +void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); + +/*- + * Functions to construct a search URI from a base URI and search criteria + * ----------------------------------------------------------------------- + */ + +/* OSSL_STORE search types */ +#define OSSL_STORE_SEARCH_BY_NAME 1 /* subject in certs, issuer in CRLs */ +#define OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 2 +#define OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 3 +#define OSSL_STORE_SEARCH_BY_ALIAS 4 + +/* To check what search types the scheme handler supports */ +int OSSL_STORE_supports_search(OSSL_STORE_CTX *ctx, int search_type); + +/* Search term constructors */ +/* + * The input is considered to be owned by the caller, and must therefore + * remain present throughout the lifetime of the returned OSSL_STORE_SEARCH + */ +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name, + const ASN1_INTEGER + *serial); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest, + const unsigned char + *bytes, + size_t len); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias); + +/* Search term destructor */ +void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search); + +/* Search term accessors */ +int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion); +X509_NAME *OSSL_STORE_SEARCH_get0_name(const OSSL_STORE_SEARCH *criterion); +const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH + *criterion); +const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH + *criterion, + size_t *length); +const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion); +const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH *criterion); + +/* + * Add search criterion and expected return type (which can be unspecified) + * to the loading channel. This MUST happen before the first OSSL_STORE_load(). + */ +int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); +int OSSL_STORE_find(OSSL_STORE_CTX *ctx, const OSSL_STORE_SEARCH *search); + +/*- + * Function to fetch a loader and extract data from it + * --------------------------------------------------- + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; + +OSSL_STORE_LOADER *OSSL_STORE_LOADER_fetch(OSSL_LIB_CTX *libctx, + const char *scheme, + const char *properties); +int OSSL_STORE_LOADER_up_ref(OSSL_STORE_LOADER *loader); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); +const OSSL_PROVIDER *OSSL_STORE_LOADER_get0_provider(const OSSL_STORE_LOADER * + loader); +const char *OSSL_STORE_LOADER_get0_properties(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_description(const OSSL_STORE_LOADER *loader); +int OSSL_STORE_LOADER_is_a(const OSSL_STORE_LOADER *loader, + const char *scheme); +void OSSL_STORE_LOADER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(OSSL_STORE_LOADER *loader, + void *arg), + void *arg); +int OSSL_STORE_LOADER_names_do_all(const OSSL_STORE_LOADER *loader, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM * +OSSL_STORE_LOADER_settable_ctx_params(const OSSL_STORE_LOADER *loader); + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* struct ossl_store_loader_ctx_st is defined differently by each loader */ +typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)(const OSSL_STORE_LOADER *loader, const char *uri, + const UI_METHOD *ui_method, void *ui_data); +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_ex_fn)(const OSSL_STORE_LOADER *loader, + const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); + +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn)(const OSSL_STORE_LOADER *loader, BIO *bio, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, va_list args); +typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); +typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, const OSSL_STORE_SEARCH *criteria); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); + +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open_ex(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_ex_fn open_ex_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_attach(OSSL_STORE_LOADER *loader, + OSSL_STORE_attach_fn attach_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +OSSL_DEPRECATEDIN_3_0 +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); +#endif + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_do_all_loaders(void (*do_function)(const OSSL_STORE_LOADER *loader, + void *do_arg), + void *do_arg); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/storeerr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/storeerr.h new file mode 100644 index 0000000..a61bee1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/storeerr.h @@ -0,0 +1,47 @@ +/* + * 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_STOREERR_H +#define OPENSSL_STOREERR_H +#pragma once + +#include +#include +#include + +/* + * OSSL_STORE reason codes. + */ +#define OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE 107 +#define OSSL_STORE_R_BAD_PASSWORD_READ 115 +#define OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC 113 +#define OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST 121 +#define OSSL_STORE_R_INVALID_SCHEME 106 +#define OSSL_STORE_R_IS_NOT_A 112 +#define OSSL_STORE_R_LOADER_INCOMPLETE 116 +#define OSSL_STORE_R_LOADING_STARTED 117 +#define OSSL_STORE_R_NOT_A_CERTIFICATE 100 +#define OSSL_STORE_R_NOT_A_CRL 101 +#define OSSL_STORE_R_NOT_A_NAME 103 +#define OSSL_STORE_R_NOT_A_PRIVATE_KEY 102 +#define OSSL_STORE_R_NOT_A_PUBLIC_KEY 122 +#define OSSL_STORE_R_NOT_PARAMETERS 104 +#define OSSL_STORE_R_NO_LOADERS_FOUND 123 +#define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114 +#define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108 +#define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119 +#define OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED 109 +#define OSSL_STORE_R_UNREGISTERED_SCHEME 105 +#define OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE 110 +#define OSSL_STORE_R_UNSUPPORTED_OPERATION 118 +#define OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE 120 +#define OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED 111 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/symhacks.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/symhacks.h new file mode 100644 index 0000000..d041395 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/symhacks.h @@ -0,0 +1,39 @@ +/* + * Copyright 1999-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_SYMHACKS_H +#define OPENSSL_SYMHACKS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SYMHACKS_H +#endif + +#include + +/* Case insensitive linking causes problems.... */ +#if defined(OPENSSL_SYS_VMS) +#undef ERR_load_CRYPTO_strings +#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +#undef OCSP_crlID_new +#define OCSP_crlID_new OCSP_crlID2_new + +#undef d2i_ECPARAMETERS +#define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +#undef i2d_ECPARAMETERS +#define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +#undef d2i_ECPKPARAMETERS +#define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +#undef i2d_ECPKPARAMETERS +#define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +#endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/thread.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/thread.h new file mode 100644 index 0000000..6d86e0e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/thread.h @@ -0,0 +1,31 @@ +/* + * Copyright 1995-2023 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_THREAD_H +#define OPENSSL_THREAD_H + +#define OSSL_THREAD_SUPPORT_FLAG_THREAD_POOL (1U << 0) +#define OSSL_THREAD_SUPPORT_FLAG_DEFAULT_SPAWN (1U << 1) + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +uint32_t OSSL_get_thread_support_flags(void); +int OSSL_set_max_threads(OSSL_LIB_CTX *ctx, uint64_t max_threads); +uint64_t OSSL_get_max_threads(OSSL_LIB_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_THREAD_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/tls1.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/tls1.h new file mode 100644 index 0000000..34d3768 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/tls1.h @@ -0,0 +1,1222 @@ +/* + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. 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_TLS1_H +#define OPENSSL_TLS1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TLS1_H +#endif + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Default security level if not overridden at config time */ +#ifndef OPENSSL_TLS_SECURITY_LEVEL +#define OPENSSL_TLS_SECURITY_LEVEL 2 +#endif + +/* TLS*_VERSION constants are defined in prov_ssl.h */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TLS_MAX_VERSION TLS1_3_VERSION +#endif + +/* Special value for method supporting multiple versions */ +#define TLS_ANY_VERSION 0x10000 + +#define TLS1_VERSION_MAJOR 0x03 +#define TLS1_VERSION_MINOR 0x01 + +#define TLS1_1_VERSION_MAJOR 0x03 +#define TLS1_1_VERSION_MINOR 0x02 + +#define TLS1_2_VERSION_MAJOR 0x03 +#define TLS1_2_VERSION_MINOR 0x03 + +#define TLS1_get_version(s) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +#define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 0) + +#define TLS1_AD_DECRYPTION_FAILED 21 +#define TLS1_AD_RECORD_OVERFLOW 22 +#define TLS1_AD_UNKNOWN_CA 48 /* fatal */ +#define TLS1_AD_ACCESS_DENIED 49 /* fatal */ +#define TLS1_AD_DECODE_ERROR 50 /* fatal */ +#define TLS1_AD_DECRYPT_ERROR 51 +#define TLS1_AD_EXPORT_RESTRICTION 60 /* fatal */ +#define TLS1_AD_PROTOCOL_VERSION 70 /* fatal */ +#define TLS1_AD_INSUFFICIENT_SECURITY 71 /* fatal */ +#define TLS1_AD_INTERNAL_ERROR 80 /* fatal */ +#define TLS1_AD_INAPPROPRIATE_FALLBACK 86 /* fatal */ +#define TLS1_AD_USER_CANCELLED 90 +#define TLS1_AD_NO_RENEGOTIATION 100 +/* TLSv1.3 alerts */ +#define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +#define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* codes 110-114 are from RFC3546 */ +#define TLS1_AD_UNSUPPORTED_EXTENSION 110 +#define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +#define TLS1_AD_UNRECOGNIZED_NAME 112 +#define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +#define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +#define TLS1_AD_UNKNOWN_PSK_IDENTITY 115 /* fatal */ +#define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +#define TLSEXT_TYPE_server_name 0 +#define TLSEXT_TYPE_max_fragment_length 1 +#define TLSEXT_TYPE_client_certificate_url 2 +#define TLSEXT_TYPE_trusted_ca_keys 3 +#define TLSEXT_TYPE_truncated_hmac 4 +#define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +#define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +#define TLSEXT_TYPE_client_authz 7 +#define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +#define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +#define TLSEXT_TYPE_supported_groups 10 +#define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +#define TLSEXT_TYPE_ec_point_formats 11 + +/* ExtensionType value from RFC5054 */ +#define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +#define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +#define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC7301 */ +#define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +#define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * Extension type for Raw Public Keys + * https://tools.ietf.org/html/rfc7250 + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml + */ +#define TLSEXT_TYPE_client_cert_type 19 +#define TLSEXT_TYPE_server_cert_type 20 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +#define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +#define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +#define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC8879 */ +#define TLSEXT_TYPE_compress_certificate 27 + +/* ExtensionType value from RFC4507 */ +#define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +#define TLSEXT_TYPE_psk 41 +#define TLSEXT_TYPE_early_data 42 +#define TLSEXT_TYPE_supported_versions 43 +#define TLSEXT_TYPE_cookie 44 +#define TLSEXT_TYPE_psk_kex_modes 45 +#define TLSEXT_TYPE_certificate_authorities 47 +#define TLSEXT_TYPE_post_handshake_auth 49 +#define TLSEXT_TYPE_signature_algorithms_cert 50 +#define TLSEXT_TYPE_key_share 51 +#define TLSEXT_TYPE_quic_transport_parameters 57 + +/* Temporary extension type */ +#define TLSEXT_TYPE_renegotiate 0xff01 + +#ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +#define TLSEXT_TYPE_next_proto_neg 13172 +#endif + +/* NameType value from RFC3546 */ +#define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +#define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +#define TLSEXT_ECPOINTFORMAT_first 0 +#define TLSEXT_ECPOINTFORMAT_uncompressed 0 +#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +#define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +#define TLSEXT_signature_anonymous 0 +#define TLSEXT_signature_rsa 1 +#define TLSEXT_signature_dsa 2 +#define TLSEXT_signature_ecdsa 3 +#define TLSEXT_signature_gostr34102001 237 +#define TLSEXT_signature_gostr34102012_256 238 +#define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +#define TLSEXT_signature_num 7 + +#define TLSEXT_hash_none 0 +#define TLSEXT_hash_md5 1 +#define TLSEXT_hash_sha1 2 +#define TLSEXT_hash_sha224 3 +#define TLSEXT_hash_sha256 4 +#define TLSEXT_hash_sha384 5 +#define TLSEXT_hash_sha512 6 +#define TLSEXT_hash_gostr3411 237 +#define TLSEXT_hash_gostr34112012_256 238 +#define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +#define TLSEXT_hash_num 10 + +/* Possible compression values from RFC8879 */ +/* Not defined in RFC8879, but used internally for no-compression */ +#define TLSEXT_comp_cert_none 0 +#define TLSEXT_comp_cert_zlib 1 +#define TLSEXT_comp_cert_brotli 2 +#define TLSEXT_comp_cert_zstd 3 +/* one more than the number of defined values - used as size of 0-terminated array */ +#define TLSEXT_comp_cert_limit 4 + +/* Flag set for unrecognised algorithms */ +#define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +#define TLSEXT_curve_P_256 23 +#define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +#define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +#define TLSEXT_max_fragment_length_512 1 +#define TLSEXT_max_fragment_length_1024 2 +#define TLSEXT_max_fragment_length_2048 3 +#define TLSEXT_max_fragment_length_4096 4 +/* OpenSSL value for unset maximum fragment length extension */ +#define TLSEXT_max_fragment_length_UNSPECIFIED 255 + +/* + * TLS Certificate Type (for RFC7250) + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-3 + */ +#define TLSEXT_cert_type_x509 0 +#define TLSEXT_cert_type_pgp 1 /* recognized, but not supported */ +#define TLSEXT_cert_type_rpk 2 +#define TLSEXT_cert_type_1609dot2 3 /* recognized, but not supported */ + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +#define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +char *SSL_get1_builtin_sigalgs(OSSL_LIB_CTX *libctx); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +__owur int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +#define SSL_set_tlsext_host_name(s, name) \ + SSL_ctrl(s, SSL_CTRL_SET_TLSEXT_HOSTNAME, TLSEXT_NAMETYPE_host_name, \ + (void *)name) + +#define SSL_set_tlsext_debug_callback(ssl, cb) \ + SSL_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_DEBUG_CB, \ + (void (*)(void))cb) + +#define SSL_set_tlsext_debug_arg(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_DEBUG_ARG, 0, arg) + +#define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE, 0, NULL) + +#define SSL_set_tlsext_status_type(ssl, type) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, type, NULL) + +#define SSL_get_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS, 0, arg) + +#define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS, 0, arg) + +#define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS, 0, arg) + +#define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS, 0, arg) + +#define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP, 0, arg) + +#define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP, arglen, arg) + +#define SSL_get0_tlsext_status_ocsp_resp_ex(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP_EX, 0, arg) + +#define SSL_set0_tlsext_status_ocsp_resp_ex(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP_EX, 0, arg) + +#define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ + SSL_CTX_callback_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_CB, \ + (void (*)(void))cb) + +#define SSL_TLSEXT_ERR_OK 0 +#define SSL_TLSEXT_ERR_ALERT_WARNING 1 +#define SSL_TLSEXT_ERR_ALERT_FATAL 2 +#define SSL_TLSEXT_ERR_NOACK 3 + +#define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG, 0, arg) + +#define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_TLSEXT_TICKET_KEYS, keylen, keys) +#define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_TICKET_KEYS, keylen, keys) + +#define SSL_CTX_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB, 0, (void *)cb) +#define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB, \ + (void (*)(void))cb) + +#define SSL_CTX_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG, 0, arg) +#define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG, 0, arg) + +#define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, type, NULL) + +#define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE, 0, NULL) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB, \ + (void (*)(void))cb) +#endif +int SSL_CTX_set_tlsext_ticket_key_evp_cb(SSL_CTX *ctx, int (*fp)(SSL *, unsigned char *, unsigned char *, EVP_CIPHER_CTX *, EVP_MAC_CTX *, int)); + +/* PSK ciphersuites from 4279 */ +#define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +#define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +#define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +#define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D +#define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +#define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +#define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +#define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +#define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +#define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +#define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +#define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +#define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +#define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +#define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +#define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +#define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +#define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +#define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +#define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +#define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +#define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +#define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +#define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* AES ciphersuites from RFC3268 */ +#define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +#define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +#define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +#define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +#define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +#define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 +#define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +#define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +#define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +#define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +#define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +#define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +#define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +#define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +#define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +#define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +#define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +#define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +#define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +#define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +#define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +#define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +#define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +#define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +#define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +#define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +#define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +#define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +#define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +#define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +#define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +#define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +#define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +#define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +#define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +#define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +#define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +#define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +#define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +#define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +#define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +#define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +#define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +#define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +#define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* CCM ciphersuites from RFC6655 */ +#define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +#define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +#define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +#define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +#define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +#define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +#define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +#define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +#define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +#define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +#define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +#define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +#define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +#define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +#define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +#define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +#define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +#define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +#define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +#define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +#define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +#define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +#define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +#define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +#define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +#define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +#define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +#define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +#define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +#define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +#define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +#define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +#define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +#define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +#define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +#define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +#define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +#define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +#define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +#define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +#define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +#define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +#define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +#define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +#define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +#define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +#define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +#define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* ECDHE PSK ciphersuites from RFC5489 */ +#define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +#define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +#define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +#define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +#define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +#define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +#define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +#define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +#define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +#define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +#define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +#define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +#define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +#define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +#define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +#define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +#define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +#define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +#define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +#define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +#define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +#define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +#define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +#define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +#define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +#define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Integrity-only ciphersuites from RFC 9150 */ +#define TLS1_3_CK_SHA256_SHA256 0x0300C0B4 +#define TLS1_3_CK_SHA384_SHA384 0x0300C0B5 + +/* Aria ciphersuites from RFC6209 */ +#define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +#define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +#define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +#define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +#define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +#define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +#define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +#define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +#define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +#define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +#define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +#define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +#define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +#define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +#define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +#define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +#define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +#define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +#define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +#define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +#define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +#define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +#define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +#define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +#define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +#define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +#define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +#define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +#define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +#define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +#define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +#define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +#define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +#define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +#define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +#define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +#define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +#define TLS1_3_RFC_SHA256_SHA256 "TLS_SHA256_SHA256" +#define TLS1_3_RFC_SHA384_SHA384 "TLS_SHA384_SHA384" +#define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +#define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +#define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +#define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +#define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +#define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + +/* + * XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE + * ciphers names with "EDH" instead of "DHE". Going forward, we should be + * using DHE everywhere, though we may indefinitely maintain aliases for + * users or configurations that used "EDH" + */ +#define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +#define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +#define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +#define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +#define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +#define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +#define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +#define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +#define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +#define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +#define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +#define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +#define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +#define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +#define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +#define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +#define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +#define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +#define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +#define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +#define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +#define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +#define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +#define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +#define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +#define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +#define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +#define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +#define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* SRP ciphersuite from RFC 5054 */ +#define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +#define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +#define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +#define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +#define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +#define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +#define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* SEED ciphersuites from RFC4162 */ +#define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +#define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +#define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +#define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +#define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +#define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +#define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +#define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +#define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +#define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +#define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +#define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +#define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +#define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +#define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +#define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* CCM ciphersuites from RFC6655 */ +#define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +#define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +#define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +#define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +#define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +#define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +#define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +#define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* ECDH HMAC based ciphersuites from RFC5289 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +#define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +#define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +#define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +#define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +#define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +#define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +#define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +#define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +#define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +#define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +#define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +#define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +#define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-GCM-SHA384" + +#define TLS_CT_RSA_SIGN 1 +#define TLS_CT_DSS_SIGN 2 +#define TLS_CT_RSA_FIXED_DH 3 +#define TLS_CT_DSS_FIXED_DH 4 +#define TLS_CT_ECDSA_SIGN 64 +#define TLS_CT_RSA_FIXED_ECDH 65 +#define TLS_CT_ECDSA_FIXED_ECDH 66 +#define TLS_CT_GOST01_SIGN 22 +#define TLS_CT_GOST12_IANA_SIGN 67 +#define TLS_CT_GOST12_IANA_512_SIGN 68 +#define TLS_CT_GOST12_LEGACY_SIGN 238 +#define TLS_CT_GOST12_LEGACY_512_SIGN 239 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TLS_CT_GOST12_SIGN TLS_CT_GOST12_LEGACY_SIGN +#define TLS_CT_GOST12_512_SIGN TLS_CT_GOST12_LEGACY_512_SIGN +#endif + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +#define TLS_CT_NUMBER 12 + +#if defined(SSL3_CT_NUMBER) +#if TLS_CT_NUMBER != SSL3_CT_NUMBER +#error "SSL/TLS CT_NUMBER values do not match" +#endif +#endif + +#define TLS1_FINISH_MAC_LENGTH 12 + +#define TLS_MD_MAX_CONST_SIZE 22 + +/* ASCII: "client finished", in hex for EBCDIC compatibility */ +#define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +#define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +/* ASCII: "server finished", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +#define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "key expansion", in hex for EBCDIC compatibility */ +#define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" +#define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +/* ASCII: "client write key", in hex for EBCDIC compatibility */ +#define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "IV block", in hex for EBCDIC compatibility */ +#define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" +#define TLS_MD_IV_BLOCK_CONST_SIZE 8 +/* ASCII: "master secret", in hex for EBCDIC compatibility */ +#define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +#define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +/* ASCII: "extended master secret", in hex for EBCDIC compatibility */ +#define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +#define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/trace.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/trace.h new file mode 100644 index 0000000..ff0fba7 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/trace.h @@ -0,0 +1,325 @@ +/* + * 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_TRACE_H +#define OPENSSL_TRACE_H +#pragma once + +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * TRACE CATEGORIES + */ + +/* + * The trace messages of the OpenSSL libraries are organized into different + * categories. For every trace category, the application can register a separate + * tracer callback. When a callback is registered, a so called trace channel is + * created for this category. This channel consists essentially of an internal + * BIO which sends all trace output it receives to the registered application + * callback. + * + * The ALL category can be used as a fallback category to register a single + * channel which receives the output from all categories. However, if the + * application intends to print the trace channel name in the line prefix, + * it is better to register channels for all categories separately. + * (This is how the openssl application does it.) + */ +#define OSSL_TRACE_CATEGORY_ALL 0 /* The fallback */ +#define OSSL_TRACE_CATEGORY_TRACE 1 +#define OSSL_TRACE_CATEGORY_INIT 2 +#define OSSL_TRACE_CATEGORY_TLS 3 +#define OSSL_TRACE_CATEGORY_TLS_CIPHER 4 +#define OSSL_TRACE_CATEGORY_CONF 5 +#define OSSL_TRACE_CATEGORY_ENGINE_TABLE 6 +#define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT 7 +#define OSSL_TRACE_CATEGORY_PKCS5V2 8 +#define OSSL_TRACE_CATEGORY_PKCS12_KEYGEN 9 +#define OSSL_TRACE_CATEGORY_PKCS12_DECRYPT 10 +#define OSSL_TRACE_CATEGORY_X509V3_POLICY 11 +#define OSSL_TRACE_CATEGORY_BN_CTX 12 +#define OSSL_TRACE_CATEGORY_CMP 13 +#define OSSL_TRACE_CATEGORY_STORE 14 +#define OSSL_TRACE_CATEGORY_DECODER 15 +#define OSSL_TRACE_CATEGORY_ENCODER 16 +#define OSSL_TRACE_CATEGORY_REF_COUNT 17 +#define OSSL_TRACE_CATEGORY_HTTP 18 +#define OSSL_TRACE_CATEGORY_PROVIDER 19 +#define OSSL_TRACE_CATEGORY_QUERY 20 +#define OSSL_TRACE_CATEGORY_NUM 21 +/* KEEP THIS LIST IN SYNC with trace_categories[] in crypto/trace.c */ + +/* Returns the trace category number for the given |name| */ +int OSSL_trace_get_category_num(const char *name); + +/* Returns the trace category name for the given |num| */ +const char *OSSL_trace_get_category_name(int num); + +/* + * TRACE CONSUMERS + */ + +/* + * Enables tracing for the given |category| by providing a BIO sink + * as |channel|. If a null pointer is passed as |channel|, an existing + * trace channel is removed and tracing for the category is disabled. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_channel(int category, BIO *channel); + +/* + * Attach a prefix and a suffix to the given |category|, to be printed at the + * beginning and at the end of each trace output group, i.e. when + * OSSL_trace_begin() and OSSL_trace_end() are called. + * If a null pointer is passed as argument, the existing prefix or suffix is + * removed. + * + * They return 1 on success and 0 on failure + */ +int OSSL_trace_set_prefix(int category, const char *prefix); +int OSSL_trace_set_suffix(int category, const char *suffix); + +/* + * OSSL_trace_cb is the type tracing callback provided by the application. + * It MUST return the number of bytes written, or 0 on error (in other words, + * it can never write zero bytes). + * + * The |buffer| will always contain text, which may consist of several lines. + * The |data| argument points to whatever data was provided by the application + * when registering the tracer function. + * + * The |category| number is given, as well as a |cmd| number, described below. + */ +typedef size_t (*OSSL_trace_cb)(const char *buffer, size_t count, + int category, int cmd, void *data); +/* + * Possible |cmd| numbers. + */ +#define OSSL_TRACE_CTRL_BEGIN 0 +#define OSSL_TRACE_CTRL_WRITE 1 +#define OSSL_TRACE_CTRL_END 2 + +/* + * Enables tracing for the given |category| by creating an internal + * trace channel which sends the output to the given |callback|. + * If a null pointer is passed as callback, an existing trace channel + * is removed and tracing for the category is disabled. + * + * NOTE: OSSL_trace_set_channel() and OSSL_trace_set_callback() are mutually + * exclusive. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_callback(int category, OSSL_trace_cb callback, void *data); + +/* + * TRACE PRODUCERS + */ + +/* + * Returns 1 if tracing for the specified category is enabled, otherwise 0 + */ +int OSSL_trace_enabled(int category); + +/* + * Wrap a group of tracing output calls. OSSL_trace_begin() locks tracing and + * returns the trace channel associated with the given category, or NULL if no + * channel is associated with the category. OSSL_trace_end() unlocks tracing. + * + * Usage: + * + * BIO *out; + * if ((out = OSSL_trace_begin(category)) != NULL) { + * ... + * BIO_fprintf(out, ...); + * ... + * OSSL_trace_end(category, out); + * } + * + * See also the convenience macros OSSL_TRACE_BEGIN and OSSL_TRACE_END below. + */ +BIO *OSSL_trace_begin(int category); +void OSSL_trace_end(int category, BIO *channel); + +/* + * OSSL_TRACE* Convenience Macros + */ + +/* + * When the tracing feature is disabled, these macros are defined to + * produce dead code, which a good compiler should eliminate. + */ + +/* + * OSSL_TRACE_BEGIN, OSSL_TRACE_END - Define a Trace Group + * + * These two macros can be used to create a block which is executed only + * if the corresponding trace category is enabled. Inside this block, a + * local variable named |trc_out| is defined, which points to the channel + * associated with the given trace category. + * + * Usage: (using 'TLS' as an example category) + * + * OSSL_TRACE_BEGIN(TLS) { + * + * BIO_fprintf(trc_out, ... ); + * + * } OSSL_TRACE_END(TLS); + * + * + * This expands to the following code + * + * do { + * BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_TLS); + * if (trc_out != NULL) { + * ... + * BIO_fprintf(trc_out, ...); + * } + * OSSL_trace_end(OSSL_TRACE_CATEGORY_TLS, trc_out); + * } while (0); + * + * The use of the inner '{...}' group and the trailing ';' is enforced + * by the definition of the macros in order to make the code look as much + * like C code as possible. + * + * Before returning from inside the trace block, it is necessary to + * call OSSL_TRACE_CANCEL(category). + */ + +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_##category); \ + \ + if (trc_out != NULL) + +#define OSSL_TRACE_END(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out); \ + } \ + while (0) + +#define OSSL_TRACE_CANCEL(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out) + +#else + +#define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = NULL; \ + if (0) + +#define OSSL_TRACE_END(category) \ + } \ + while (0) + +#define OSSL_TRACE_CANCEL(category) \ + ((void)0) + +#endif + +/* + * OSSL_TRACE_ENABLED() - Check whether tracing is enabled for |category| + * + * Usage: + * + * if (OSSL_TRACE_ENABLED(TLS)) { + * ... + * } + */ +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACE_ENABLED(category) \ + OSSL_trace_enabled(OSSL_TRACE_CATEGORY_##category) + +#else + +#define OSSL_TRACE_ENABLED(category) (0) + +#endif + +/* + * OSSL_TRACE*() - OneShot Trace Macros + * + * These macros are intended to produce a simple printf-style trace output. + * Unfortunately, C90 macros don't support variable arguments, so the + * "vararg" OSSL_TRACEV() macro has a rather weird usage pattern: + * + * OSSL_TRACEV(category, (trc_out, "format string", ...args...)); + * + * Where 'channel' is the literal symbol of this name, not a variable. + * For that reason, it is currently not intended to be used directly, + * but only as helper macro for the other oneshot trace macros + * OSSL_TRACE(), OSSL_TRACE1(), OSSL_TRACE2(), ... + * + * Usage: + * + * OSSL_TRACE(INIT, "Hello world!\n"); + * OSSL_TRACE1(TLS, "The answer is %d\n", 42); + * OSSL_TRACE2(TLS, "The ultimate question to answer %d is '%s'\n", + * 42, "What do you get when you multiply six by nine?"); + */ + +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACEV(category, args) \ + OSSL_TRACE_BEGIN(category) \ + BIO_printf args; \ + OSSL_TRACE_END(category) + +#else + +#define OSSL_TRACEV(category, args) ((void)0) + +#endif + +#define OSSL_TRACE(category, text) \ + OSSL_TRACEV(category, (trc_out, "%s", text)) + +#define OSSL_TRACE1(category, format, arg1) \ + OSSL_TRACEV(category, (trc_out, format, arg1)) +#define OSSL_TRACE2(category, format, arg1, arg2) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2)) +#define OSSL_TRACE3(category, format, arg1, arg2, arg3) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3)) +#define OSSL_TRACE4(category, format, arg1, arg2, arg3, arg4) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4)) +#define OSSL_TRACE5(category, format, arg1, arg2, arg3, arg4, arg5) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5)) +#define OSSL_TRACE6(category, format, arg1, arg2, arg3, arg4, arg5, arg6) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6)) +#define OSSL_TRACE7(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7)) +#define OSSL_TRACE8(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)) +#define OSSL_TRACE9(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)) + +#define OSSL_TRACE_STRING_MAX 80 +int OSSL_trace_string(BIO *out, int text, int full, + const unsigned char *data, size_t size); +#define OSSL_TRACE_STRING(category, text, full, data, len) \ + OSSL_TRACE_BEGIN(category) \ + { \ + OSSL_trace_string(trc_out, text, full, data, len); \ + } \ + OSSL_TRACE_END(category) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ts.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ts.h new file mode 100644 index 0000000..edb6ca1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ts.h @@ -0,0 +1,521 @@ +/* + * Copyright 2006-2024 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_TS_H +#define OPENSSL_TS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TS_H +#endif + +#include + +#ifndef OPENSSL_NO_TS +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct TS_msg_imprint_st TS_MSG_IMPRINT; +typedef struct TS_req_st TS_REQ; +typedef struct TS_accuracy_st TS_ACCURACY; +typedef struct TS_tst_info_st TS_TST_INFO; + +/* Possible values for status. */ +#define TS_STATUS_GRANTED 0 +#define TS_STATUS_GRANTED_WITH_MODS 1 +#define TS_STATUS_REJECTION 2 +#define TS_STATUS_WAITING 3 +#define TS_STATUS_REVOCATION_WARNING 4 +#define TS_STATUS_REVOCATION_NOTIFICATION 5 + +/* Possible values for failure_info. */ +#define TS_INFO_BAD_ALG 0 +#define TS_INFO_BAD_REQUEST 2 +#define TS_INFO_BAD_DATA_FORMAT 5 +#define TS_INFO_TIME_NOT_AVAILABLE 14 +#define TS_INFO_UNACCEPTED_POLICY 15 +#define TS_INFO_UNACCEPTED_EXTENSION 16 +#define TS_INFO_ADD_INFO_NOT_AVAILABLE 17 +#define TS_INFO_SYSTEM_FAILURE 25 + +typedef struct TS_status_info_st TS_STATUS_INFO; + +typedef struct TS_resp_st TS_RESP; + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_REQ) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_REQ, TS_REQ) +DECLARE_ASN1_DUP_FUNCTION(TS_REQ) + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, const TS_REQ *a); +#endif +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, const TS_REQ *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_MSG_IMPRINT) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_MSG_IMPRINT, TS_MSG_IMPRINT) +DECLARE_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) + +#ifndef OPENSSL_NO_STDIO +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_fp(FILE *fp, const TS_MSG_IMPRINT *a); +#endif +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_bio(BIO *bio, const TS_MSG_IMPRINT *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_RESP) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_RESP, TS_RESP) +DECLARE_ASN1_DUP_FUNCTION(TS_RESP) + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, const TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, const TS_RESP *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_STATUS_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_STATUS_INFO, TS_STATUS_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_STATUS_INFO) + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_TST_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_TST_INFO, TS_TST_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_TST_INFO) +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); + +#ifndef OPENSSL_NO_STDIO +TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a); +int i2d_TS_TST_INFO_fp(FILE *fp, const TS_TST_INFO *a); +#endif +TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a); +int i2d_TS_TST_INFO_bio(BIO *bio, const TS_TST_INFO *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_ACCURACY) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_ACCURACY, TS_ACCURACY) +DECLARE_ASN1_DUP_FUNCTION(TS_ACCURACY) + +int TS_REQ_set_version(TS_REQ *a, long version); +long TS_REQ_get_version(const TS_REQ *a); + +int TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i); +const ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a); + +const STACK_OF(ASN1_UTF8STRING) * +TS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a); + +const ASN1_BIT_STRING * +TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *a); + +int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a); + +int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg); +X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a); + +int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len); +ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a); + +int TS_REQ_set_policy_id(TS_REQ *a, const ASN1_OBJECT *policy); +ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a); + +int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a); + +int TS_REQ_set_cert_req(TS_REQ *a, int cert_req); +int TS_REQ_get_cert_req(const TS_REQ *a); + +STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a); +void TS_REQ_ext_free(TS_REQ *a); +int TS_REQ_get_ext_count(TS_REQ *a); +int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos); +int TS_REQ_get_ext_by_OBJ(TS_REQ *a, const ASN1_OBJECT *obj, int lastpos); +int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos); +X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc); +X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc); +int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc); +void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx); + +/* Function declarations for TS_REQ defined in ts/ts_req_print.c */ + +int TS_REQ_print_bio(BIO *bio, TS_REQ *a); + +/* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */ + +int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info); +TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a); + +/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */ +void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info); +PKCS7 *TS_RESP_get_token(TS_RESP *a); +TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a); + +int TS_TST_INFO_set_version(TS_TST_INFO *a, long version); +long TS_TST_INFO_get_version(const TS_TST_INFO *a); + +int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id); +ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a); + +int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a); + +int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial); +const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a); + +int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime); +const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a); + +int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy); +TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a); + +int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds); +const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a); + +int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis); +const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a); + +int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros); +const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a); + +int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering); +int TS_TST_INFO_get_ordering(const TS_TST_INFO *a); + +int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a); + +int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa); +GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a); + +STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a); +void TS_TST_INFO_ext_free(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_count(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos); +int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, const ASN1_OBJECT *obj, + int lastpos); +int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos); +X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc); +X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc); +int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc); +void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx); + +/* + * Declarations related to response generation, defined in ts/ts_resp_sign.c. + */ + +/* Optional flags for response generation. */ + +/* Don't include the TSA name in response. */ +#define TS_TSA_NAME 0x01 + +/* Set ordering to true in response. */ +#define TS_ORDERING 0x02 + +/* + * Include the signer certificate and the other specified certificates in + * the ESS signing certificate attribute beside the PKCS7 signed data. + * Only the signer certificates is included by default. + */ +#define TS_ESS_CERT_ID_CHAIN 0x04 + +/* Forward declaration. */ +struct TS_resp_ctx; + +/* This must return a unique number less than 160 bits long. */ +typedef ASN1_INTEGER *(*TS_serial_cb)(struct TS_resp_ctx *, void *); + +/* + * This must return the seconds and microseconds since Jan 1, 1970 in the sec + * and usec variables allocated by the caller. Return non-zero for success + * and zero for failure. + */ +typedef int (*TS_time_cb)(struct TS_resp_ctx *, void *, long *sec, + long *usec); + +/* + * This must process the given extension. It can modify the TS_TST_INFO + * object of the context. Return values: !0 (processed), 0 (error, it must + * set the status info/failure info of the response). + */ +typedef int (*TS_extension_cb)(struct TS_resp_ctx *, X509_EXTENSION *, + void *); + +typedef struct TS_resp_ctx TS_RESP_CTX; + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +TS_RESP_CTX *TS_RESP_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +void TS_RESP_CTX_free(TS_RESP_CTX *ctx); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key); + +int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx, + const EVP_MD *signer_digest); +int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy); + +/* No additional certs are included in the response by default. */ +int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs); + +/* + * Adds a new acceptable policy, only the default policy is accepted by + * default. + */ +int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +#define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +#define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +#define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +#define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +#define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +#define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +#define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +#define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +#define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +#define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +#define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +#define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx TS_VERIFY_CTX; + +int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response); +int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token); + +/* + * Declarations related to response verification context, + */ +TS_VERIFY_CTX *TS_VERIFY_CTX_new(void); +void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx); +int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f); +int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_data().") +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +#endif +int TS_VERIFY_CTX_set0_data(TS_VERIFY_CTX *ctx, BIO *b); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_imprint().") +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +#endif +int TS_VERIFY_CTX_set0_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_store().") +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +#endif +int TS_VERIFY_CTX_set0_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TS_VERIFY_CTS_set_certs(ctx, cert) TS_VERIFY_CTX_set_certs(ctx, cert) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_certs().") +STACK_OF(X509) *TS_VERIFY_CTX_set_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); +#endif +int TS_VERIFY_CTX_set0_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); + +/*- + * If ctx is NULL, it allocates and returns a new object, otherwise + * it returns ctx. It initialises all the members as follows: + * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE) + * certs = NULL + * store = NULL + * policy = policy from the request or NULL if absent (in this case + * TS_VFY_POLICY is cleared from flags as well) + * md_alg = MD algorithm from request + * imprint, imprint_len = imprint from request + * data = NULL + * nonce, nonce_len = nonce from the request or NULL if absent (in this case + * TS_VFY_NONCE is cleared from flags as well) + * tsa_name = NULL + * Important: after calling this method TS_VFY_SIGNATURE should be added! + */ +TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx); + +/* Function declarations for TS_RESP defined in ts/ts_resp_print.c */ + +int TS_RESP_print_bio(BIO *bio, TS_RESP *a); +int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a); +int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a); + +/* Common utility functions defined in ts/ts_lib.c */ + +int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num); +int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj); +int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions); +int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg); +int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg); + +/* + * Function declarations for handling configuration options, defined in + * ts/ts_conf.c + */ + +X509 *TS_CONF_load_cert(const char *file); +STACK_OF(X509) *TS_CONF_load_certs(const char *file); +EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); +const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); +int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, + TS_RESP_CTX *ctx); +#ifndef OPENSSL_NO_ENGINE +int TS_CONF_set_crypto_device(CONF *conf, const char *section, + const char *device); +int TS_CONF_set_default_engine(const char *name); +#endif +int TS_CONF_set_signer_cert(CONF *conf, const char *section, + const char *cert, TS_RESP_CTX *ctx); +int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_key(CONF *conf, const char *section, + const char *key, const char *pass, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_digest(CONF *conf, const char *section, + const char *md, TS_RESP_CTX *ctx); +int TS_CONF_set_def_policy(CONF *conf, const char *section, + const char *policy, TS_RESP_CTX *ctx); +int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_clock_precision_digits(const CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/tserr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/tserr.h new file mode 100644 index 0000000..0bec94a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/tserr.h @@ -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_TSERR_H +#define OPENSSL_TSERR_H +#pragma once + +#include +#include +#include + +#ifndef OPENSSL_NO_TS + +/* + * TS reason codes. + */ +#define TS_R_BAD_PKCS7_TYPE 132 +#define TS_R_BAD_TYPE 133 +#define TS_R_CANNOT_LOAD_CERT 137 +#define TS_R_CANNOT_LOAD_KEY 138 +#define TS_R_CERTIFICATE_VERIFY_ERROR 100 +#define TS_R_COULD_NOT_SET_ENGINE 127 +#define TS_R_COULD_NOT_SET_TIME 115 +#define TS_R_DETACHED_CONTENT 134 +#define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +#define TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR 139 +#define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 +#define TS_R_INVALID_NULL_POINTER 102 +#define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 +#define TS_R_MESSAGE_IMPRINT_MISMATCH 103 +#define TS_R_NONCE_MISMATCH 104 +#define TS_R_NONCE_NOT_RETURNED 105 +#define TS_R_NO_CONTENT 106 +#define TS_R_NO_TIME_STAMP_TOKEN 107 +#define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 +#define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 +#define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 +#define TS_R_POLICY_MISMATCH 108 +#define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 +#define TS_R_RESPONSE_SETUP_ERROR 121 +#define TS_R_SIGNATURE_FAILURE 109 +#define TS_R_THERE_MUST_BE_ONE_SIGNER 110 +#define TS_R_TIME_SYSCALL_ERROR 122 +#define TS_R_TOKEN_NOT_PRESENT 130 +#define TS_R_TOKEN_PRESENT 131 +#define TS_R_TSA_NAME_MISMATCH 111 +#define TS_R_TSA_UNTRUSTED 112 +#define TS_R_TST_INFO_SETUP_ERROR 123 +#define TS_R_TS_DATASIGN 124 +#define TS_R_UNACCEPTABLE_POLICY 125 +#define TS_R_UNSUPPORTED_MD_ALGORITHM 126 +#define TS_R_UNSUPPORTED_VERSION 113 +#define TS_R_VAR_BAD_VALUE 135 +#define TS_R_VAR_LOOKUP_FAILURE 136 +#define TS_R_WRONG_CONTENT_TYPE 114 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/txt_db.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/txt_db.h new file mode 100644 index 0000000..64e9d4c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/txt_db.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2017 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_TXT_DB_H +#define OPENSSL_TXT_DB_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TXT_DB_H +#endif + +#include +#include +#include +#include + +#define DB_ERROR_OK 0 +#define DB_ERROR_MALLOC 1 +#define DB_ERROR_INDEX_CLASH 2 +#define DB_ERROR_INDEX_OUT_OF_RANGE 3 +#define DB_ERROR_NO_INDEX 4 +#define DB_ERROR_INSERT_INDEX_CLASH 5 +#define DB_ERROR_WRONG_NUM_FIELDS 6 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OPENSSL_STRING *OPENSSL_PSTRING; +DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING) + +typedef struct txt_db_st { + int num_fields; + STACK_OF(OPENSSL_PSTRING) *data; + LHASH_OF(OPENSSL_STRING) **index; + int (**qual)(OPENSSL_STRING *); + long error; + long arg1; + long arg2; + OPENSSL_STRING *arg_row; +} TXT_DB; + +TXT_DB *TXT_DB_read(BIO *in, int num); +long TXT_DB_write(BIO *out, TXT_DB *db); +int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(OPENSSL_STRING *), + OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC cmp); +void TXT_DB_free(TXT_DB *db); +OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, + OPENSSL_STRING *value); +int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/types.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/types.h new file mode 100644 index 0000000..f9c4373 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/types.h @@ -0,0 +1,250 @@ +/* + * Copyright 2001-2026 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 + */ + +/* + * Unfortunate workaround to avoid symbol conflict with wincrypt.h + * See https://github.com/openssl/openssl/issues/9981 + */ +#ifdef _WIN32 +#define WINCRYPT_USE_SYMBOL_PREFIX +#undef X509_NAME +#undef X509_EXTENSIONS +#undef PKCS7_SIGNER_INFO +#undef OCSP_REQUEST +#undef OCSP_RESPONSE +#endif + +#ifndef OPENSSL_TYPES_H +#define OPENSSL_TYPES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#if OPENSSL_VERSION_MAJOR >= 4 +#define OSSL_FUTURE_CONST const +#else +#define OSSL_FUTURE_CONST +#endif + +typedef struct ossl_provider_st OSSL_PROVIDER; /* Provider Object */ + +#ifdef NO_ASN1_TYPEDEFS +#define ASN1_INTEGER ASN1_STRING +#define ASN1_ENUMERATED ASN1_STRING +#define ASN1_BIT_STRING ASN1_STRING +#define ASN1_OCTET_STRING ASN1_STRING +#define ASN1_PRINTABLESTRING ASN1_STRING +#define ASN1_T61STRING ASN1_STRING +#define ASN1_IA5STRING ASN1_STRING +#define ASN1_UTCTIME ASN1_STRING +#define ASN1_GENERALIZEDTIME ASN1_STRING +#define ASN1_TIME ASN1_STRING +#define ASN1_GENERALSTRING ASN1_STRING +#define ASN1_UNIVERSALSTRING ASN1_STRING +#define ASN1_BMPSTRING ASN1_STRING +#define ASN1_VISIBLESTRING ASN1_STRING +#define ASN1_UTF8STRING ASN1_STRING +#define ASN1_BOOLEAN int +#define ASN1_NULL int +#else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +#endif + +typedef struct asn1_type_st ASN1_TYPE; +typedef struct asn1_object_st ASN1_OBJECT; +typedef struct asn1_string_table_st ASN1_STRING_TABLE; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +#ifdef BIGNUM +#undef BIGNUM +#endif + +typedef struct bio_st BIO; +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +STACK_OF(BIGNUM); +STACK_OF(BIGNUM_const); + +typedef struct err_state_st ERR_STATE; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_md_st EVP_MD; +typedef struct evp_md_ctx_st EVP_MD_CTX; +typedef struct evp_mac_st EVP_MAC; +typedef struct evp_mac_ctx_st EVP_MAC_CTX; +typedef struct evp_pkey_st EVP_PKEY; +typedef struct evp_skey_st EVP_SKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct evp_keymgmt_st EVP_KEYMGMT; + +typedef struct evp_kdf_st EVP_KDF; +typedef struct evp_kdf_ctx_st EVP_KDF_CTX; + +typedef struct evp_rand_st EVP_RAND; +typedef struct evp_rand_ctx_st EVP_RAND_CTX; + +typedef struct evp_keyexch_st EVP_KEYEXCH; + +typedef struct evp_signature_st EVP_SIGNATURE; + +typedef struct evp_skeymgmt_st EVP_SKEYMGMT; + +typedef struct evp_asym_cipher_st EVP_ASYM_CIPHER; + +typedef struct evp_kem_st EVP_KEM; + +typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +#endif + +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; +typedef struct rsa_oaep_params_st RSA_OAEP_PARAMS; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; +#endif + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; +typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ossl_http_req_ctx_st OSSL_HTTP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +typedef struct ossl_lib_ctx_st OSSL_LIB_CTX; + +typedef struct ossl_dispatch_st OSSL_DISPATCH; +typedef struct ossl_item_st OSSL_ITEM; +typedef struct ossl_algorithm_st OSSL_ALGORITHM; +typedef struct ossl_param_st OSSL_PARAM; +typedef struct ossl_param_bld_st OSSL_PARAM_BLD; + +typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata); + +typedef struct ossl_encoder_st OSSL_ENCODER; +typedef struct ossl_encoder_ctx_st OSSL_ENCODER_CTX; +typedef struct ossl_decoder_st OSSL_DECODER; +typedef struct ossl_decoder_ctx_st OSSL_DECODER_CTX; + +typedef struct ossl_self_test_st OSSL_SELF_TEST; + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_TYPES_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ui.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ui.h new file mode 100644 index 0000000..86f72d5 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/ui.h @@ -0,0 +1,409 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ui.h.in + * + * Copyright 2001-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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_UI_H +#define OPENSSL_UI_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_UI_H +#endif + +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#include +#include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifdef OPENSSL_NO_UI_CONSOLE +#define OPENSSL_NO_UI +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +#define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +#define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * + */ +#define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. + * phrase_desc is a textual short description of the phrase to enter, + * for example "pass phrase", and + * object_name is the name of the object + * (which might be a card name or a file name) or NULL. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {phrase_desc} for {object_name}:" + * + * So, if phrase_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" + */ +char *UI_construct_prompt(UI *ui_method, + const char *phrase_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)(void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +#define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +#define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +#define UI_set_app_data(s, arg) UI_set_ex_data(s, 0, arg) +#define UI_get_app_data(s) UI_get_ex_data(s, 0) + +#define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(const UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +#ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +#endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) +#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) +#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) +#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) +#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) +#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) +#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) +#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_freefunc_type(freefunc)) +#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) +#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) +#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) +#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener)(UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer)(UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader)(UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator)(UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor)(UI *ui, + const char + *phrase_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method))(UI *); +int (*UI_method_get_writer(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method))(UI *); +int (*UI_method_get_reader(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method))(UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method))(UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method))(UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method))(UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/uierr.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/uierr.h new file mode 100644 index 0000000..5201b03 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/uierr.h @@ -0,0 +1,36 @@ +/* + * 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_UIERR_H +#define OPENSSL_UIERR_H +#pragma once + +#include +#include +#include + +/* + * UI reason codes. + */ +#define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104 +#define UI_R_INDEX_TOO_LARGE 102 +#define UI_R_INDEX_TOO_SMALL 103 +#define UI_R_NO_RESULT_BUFFER 105 +#define UI_R_PROCESSING_ERROR 107 +#define UI_R_RESULT_TOO_LARGE 100 +#define UI_R_RESULT_TOO_SMALL 101 +#define UI_R_SYSASSIGN_ERROR 109 +#define UI_R_SYSDASSGN_ERROR 110 +#define UI_R_SYSQIOW_ERROR 111 +#define UI_R_UNKNOWN_CONTROL_COMMAND 106 +#define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE 108 +#define UI_R_USER_DATA_DUPLICATION_UNSUPPORTED 112 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/whrlpool.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/whrlpool.h new file mode 100644 index 0000000..cff9134 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/whrlpool.h @@ -0,0 +1,62 @@ +/* + * Copyright 2005-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_WHRLPOOL_H +#define OPENSSL_WHRLPOOL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_WHRLPOOL_H +#endif + +#include + +#ifndef OPENSSL_NO_WHIRLPOOL +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define WHIRLPOOL_DIGEST_LENGTH (512 / 8) + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define WHIRLPOOL_BBLOCK 512 +#define WHIRLPOOL_COUNTER (256 / 8) + +typedef struct { + union { + unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; + /* double q is here to ensure 64-bit alignment */ + double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)]; + } H; + unsigned char data[WHIRLPOOL_BBLOCK / 8]; + unsigned int bitoff; + size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)]; +} WHIRLPOOL_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, + const void *inp, size_t bytes); +OSSL_DEPRECATEDIN_3_0 void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, + const void *inp, size_t bits); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *WHIRLPOOL(const void *inp, size_t bytes, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509.h new file mode 100644 index 0000000..03a8555 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509.h @@ -0,0 +1,1302 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/x509.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_H +#define OPENSSL_X509_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_H +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Needed stacks for types defined in other headers */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) +#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) +#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) +#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) +#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) +#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) +#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_freefunc_type(freefunc)) +#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) +#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) +#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) +#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) +#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) +#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) +#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) +#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) +#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) +#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) +#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) +#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) +#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) +#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) +#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) +#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk), ossl_check_X509_freefunc_type(freefunc)) +#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) +#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) +#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) +#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) +#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) +#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) +#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) +#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) +#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) +#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) +#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) +#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) +#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) +#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_freefunc_type(freefunc)) +#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) +#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) +#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) +#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) +#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) +#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) +#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) +#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) +#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) +#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) +#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_freefunc_type(freefunc)) +#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) +#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) +#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) +#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) + +/* clang-format on */ + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +#define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +#define X509_SIG_INFO_TLS 0x2 + +#define X509_FILETYPE_PEM 1 +#define X509_FILETYPE_ASN1 2 +#define X509_FILETYPE_DEFAULT 3 + +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +#define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +#define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +#define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +#define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +#define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +#define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +#define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +#define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +#define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +#ifndef OPENSSL_NO_DEPRECATED_3_4 +#define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +#endif + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) +#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) +#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) +#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) +#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) +#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) +#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) +#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) +#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) +#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) +#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_EX_V_NETSCAPE_HACK 0x8000 +#define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) +#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) +#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) +#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) +#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) +#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) +#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) +#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_freefunc_type(freefunc)) +#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) +#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) +#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) +#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; +typedef struct x509_attributes_st X509_ATTRIBUTE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) +#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) +#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) +#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) +#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) +#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) +#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) +#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) +#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) +#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) +#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) +#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct X509_req_info_st X509_REQ_INFO; +typedef struct X509_req_st X509_REQ; +typedef struct x509_cert_aux_st X509_CERT_AUX; +typedef struct x509_cinf_st X509_CINF; + +/* Flags for X509_print_ex() */ + +#define X509_FLAG_COMPAT 0 +#define X509_FLAG_NO_HEADER 1L +#define X509_FLAG_NO_VERSION (1L << 1) +#define X509_FLAG_NO_SERIAL (1L << 2) +#define X509_FLAG_NO_SIGNAME (1L << 3) +#define X509_FLAG_NO_ISSUER (1L << 4) +#define X509_FLAG_NO_VALIDITY (1L << 5) +#define X509_FLAG_NO_SUBJECT (1L << 6) +#define X509_FLAG_NO_PUBKEY (1L << 7) +#define X509_FLAG_NO_EXTENSIONS (1L << 8) +#define X509_FLAG_NO_SIGDUMP (1L << 9) +#define X509_FLAG_NO_AUX (1L << 10) +#define X509_FLAG_NO_ATTRIBUTES (1L << 11) +#define X509_FLAG_NO_IDS (1L << 12) +#define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +#define XN_FLAG_SEP_MASK (0xf << 16) + +#define XN_FLAG_COMPAT 0 /* Traditional; use old X509_NAME_print */ +#define XN_FLAG_SEP_COMMA_PLUS (1 << 16) /* RFC2253 ,+ */ +#define XN_FLAG_SEP_CPLUS_SPC (2 << 16) /* ,+ spaced: more readable */ +#define XN_FLAG_SEP_SPLUS_SPC (3 << 16) /* ;+ spaced */ +#define XN_FLAG_SEP_MULTILINE (4 << 16) /* One line per field */ + +#define XN_FLAG_DN_REV (1 << 20) /* Reverse DN order */ + +/* How the field name is shown */ + +#define XN_FLAG_FN_MASK (0x3 << 21) + +#define XN_FLAG_FN_SN 0 /* Object short name */ +#define XN_FLAG_FN_LN (1 << 21) /* Object long name */ +#define XN_FLAG_FN_OID (2 << 21) /* Always use OIDs */ +#define XN_FLAG_FN_NONE (3 << 21) /* No field names */ + +#define XN_FLAG_SPC_EQ (1 << 23) /* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +#define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +#define XN_FLAG_FN_ALIGN (1 << 25) /* Align field names to 20 \ + * characters */ + +/* Complete set of RFC2253 flags */ + +#define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | XN_FLAG_FN_SN | XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +#define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_SPC_EQ | XN_FLAG_FN_SN) + +/* readable multiline form */ + +#define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | XN_FLAG_SEP_MULTILINE | XN_FLAG_SPC_EQ | XN_FLAG_FN_LN | XN_FLAG_FN_ALIGN) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) +#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) +#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) +#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) +#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) +#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) +#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) +#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_freefunc_type(freefunc)) +#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) +#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) +#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) +#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { + /* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define X509_EXT_PACK_UNKNOWN 1 +#define X509_EXT_PACK_STRING 2 + +#define X509_extract_key(x) X509_get_pubkey(x) /*****/ +#define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +#define X509_name_cmp(a, b) X509_NAME_cmp((a), (b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init)(X509_CRL *crl), + int (*crl_free)(X509_CRL *crl), + int (*crl_lookup)(X509_CRL *crl, + X509_REVOKED **ret, + const ASN1_INTEGER *serial, + const X509_NAME *issuer), + int (*crl_verify)(X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); +int X509_self_signed(X509 *cert, int verify_signature); + +int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, + const char *propq); +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, + EVP_MD **md_used, int *md_is_fallback); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ +#define X509_http_nbio(rctx, pcert) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) +#define X509_CRL_http_nbio(rctx, pcrl) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) +#endif + +#ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, const X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +#endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, const X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +DECLARE_ASN1_DUP_FUNCTION(X509) +DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) +DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) +DECLARE_ASN1_DUP_FUNCTION(X509_CRL) +DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) +DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) +DECLARE_ASN1_DUP_FUNCTION(X509_REQ) +DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +DECLARE_ASN1_DUP_FUNCTION(X509_NAME) +DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, + const ASN1_TIME *start, const ASN1_TIME *end); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) +EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, + OSSL_LIB_CTX *libctx, const char *propq); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSA_PUBKEY) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DSA, DSA_PUBKEY) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) +#endif +#endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) +X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) +DECLARE_ASN1_FUNCTIONS(X509) +X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(const X509 *r, int idx); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509, X509_AUX) + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); +void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *x); + +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) +X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, const ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); +OSSL_DEPRECATEDIN_3_0 +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey, + const EVP_MD *type); +#endif +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); +int ASN1_item_verify(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey); +int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_MD_CTX *ctx); +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey, const EVP_MD *md); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, EVP_MD_CTX *ctx); + +#define X509_VERSION_1 0 +#define X509_VERSION_2 1 +#define X509_VERSION_3 2 + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME *X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_get_notBefore X509_getm_notBefore +#define X509_get_notAfter X509_getm_notAfter +#define X509_set_notBefore X509_set1_notBefore +#define X509_set_notAfter X509_set1_notAfter +#endif + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); + +#define X509_REQ_VERSION_1 0 + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, const X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, + const STACK_OF(X509_EXTENSION) *exts, int nid); +int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +#define X509_CRL_VERSION_1 0 +#define X509_CRL_VERSION_2 1 + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, const X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +#define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); +#endif +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +const X509_ALGOR *X509_CRL_get0_tbs_sigalg(const X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +#ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +#endif + +#define X509_ADD_FLAG_DEFAULT 0 +#define X509_ADD_FLAG_UP_REF 0x1 +#define X509_ADD_FLAG_PREPEND 0x2 +#define X509_ADD_FLAG_NO_DUP 0x4 +#define X509_ADD_FLAG_NO_SS 0x8 +int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); +int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) +OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, + const EVP_PKEY *pubkey); +#endif +unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, + const char *propq, int *ok); +unsigned long X509_NAME_hash_old(const X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +#ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +#endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, + char *buf, int len); +int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(const X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, + const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, + int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, + const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, + const ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); +int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); +X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid, + OSSL_LIB_CTX *libctx); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); +X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen, + OSSL_LIB_CTX *libctx); + +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); +int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, + int type, const unsigned char *bytes, int len); + +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, const X509_PUBKEY *pub); +int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509_acert.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509_acert.h new file mode 100644 index 0000000..e92c827 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509_acert.h @@ -0,0 +1,304 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_ACERT_H +#define OPENSSL_X509_ACERT_H +#pragma once + +#include +#include +#include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +#ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +#endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +#define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO *X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +#define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +#define OSSL_IETFAS_OCTETS 0 +#define OSSL_IETFAS_OID 1 +#define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +#define OSSL_TGT_TARGET_NAME 0 +#define OSSL_TGT_TARGET_GROUP 1 +#define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + +/* clang-format on */ + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509_vfy.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509_vfy.h new file mode 100644 index 0000000..0fc2313 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509_vfy.h @@ -0,0 +1,922 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/x509_vfy.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_VFY_H +#define OPENSSL_X509_VFY_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_VFY_H +#endif + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +#ifndef OPENSSL_X509_H +#include +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +DEFINE_STACK_OF(OCSP_RESPONSE) + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, + X509_LU_CRL +} X509_LOOKUP_TYPE; + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) +#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) +#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) +#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) +#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) +#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) +#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) +#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_freefunc_type(freefunc)) +#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) +#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) +#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) +#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) +#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) +#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) +#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) +#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) +#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) +#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_freefunc_type(freefunc)) +#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) +#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) +#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) +#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) +#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) +#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) +#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) +#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) +#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) +#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) +#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) +#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) +#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) +#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) +#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) + +/* clang-format on */ + +/* This is used for a table of trust checking functions */ +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust)(struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) +#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) +#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) +#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) +#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) +#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) +#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) +#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_freefunc_type(freefunc)) +#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) +#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) +#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) +#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) + +/* clang-format on */ + +/* standard trust ids */ +#define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ +#define X509_TRUST_COMPAT 1 +#define X509_TRUST_SSL_CLIENT 2 +#define X509_TRUST_SSL_SERVER 3 +#define X509_TRUST_EMAIL 4 +#define X509_TRUST_OBJECT_SIGN 5 +#define X509_TRUST_OCSP_SIGN 6 +#define X509_TRUST_OCSP_REQUEST 7 +#define X509_TRUST_TSA 8 +/* Keep these up to date! */ +#define X509_TRUST_MIN 1 +#define X509_TRUST_MAX 8 + +/* trust_flags values */ +#define X509_TRUST_DYNAMIC (1U << 0) +#define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +#define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +#define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard rejection OID and as a wildcard trust OID */ +#define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ +#define X509_TRUST_TRUSTED 1 +#define X509_TRUST_REJECTED 2 +#define X509_TRUST_UNTRUSTED 3 + +int X509_TRUST_set(int *t, int trust); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +int X509_trusted(const X509 *x); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +int (*X509_TRUST_set_default(int (*trust)(int, X509 *, int)))(int, X509 *, + int); +int X509_check_trust(X509 *x, int id, int flags); + +int X509_verify_cert(X509_STORE_CTX *ctx); +int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, + X509_STORE *store, int with_self_signed, + OSSL_LIB_CTX *libctx, const char *propq); + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) + *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef STACK_OF(X509_CRL) + *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +#define X509_STORE_CTX_set_app_data(ctx, data) \ + X509_STORE_CTX_set_ex_data(ctx, 0, data) +#define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx, 0) + +#define X509_L_FILE_LOAD 1 +#define X509_L_ADD_DIR 2 +#define X509_L_ADD_STORE 3 +#define X509_L_LOAD_STORE 4 + +#define X509_LOOKUP_load_file(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_FILE_LOAD, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_dir(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_DIR, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_LOAD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_V_OK 0 +#define X509_V_ERR_UNSPECIFIED 1 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +#define X509_V_ERR_UNABLE_TO_GET_CRL 3 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +#define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +#define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +#define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +#define X509_V_ERR_CERT_NOT_YET_VALID 9 +#define X509_V_ERR_CERT_HAS_EXPIRED 10 +#define X509_V_ERR_CRL_NOT_YET_VALID 11 +#define X509_V_ERR_CRL_HAS_EXPIRED 12 +#define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +#define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +#define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +#define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +#define X509_V_ERR_OUT_OF_MEM 17 +#define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +#define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +#define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +#define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +#define X509_V_ERR_CERT_REVOKED 23 +#define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 24 +#define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +#define X509_V_ERR_INVALID_PURPOSE 26 +#define X509_V_ERR_CERT_UNTRUSTED 27 +#define X509_V_ERR_CERT_REJECTED 28 + +/* These are 'informational' when looking for issuer cert */ +#define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +#define X509_V_ERR_AKID_SKID_MISMATCH 30 +#define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +#define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +#define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +#define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +#define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +#define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +#define X509_V_ERR_INVALID_NON_CA 37 +#define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +#define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +#define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +#define X509_V_ERR_INVALID_EXTENSION 41 +#define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +#define X509_V_ERR_NO_EXPLICIT_POLICY 43 +#define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +#define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +#define X509_V_ERR_UNNESTED_RESOURCE 46 +#define X509_V_ERR_PERMITTED_VIOLATION 47 +#define X509_V_ERR_EXCLUDED_VIOLATION 48 +#define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +#define X509_V_ERR_APPLICATION_VERIFICATION 50 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +#define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +#define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +#define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +#define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +#define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +#define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +#define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +#define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +#define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +#define X509_V_ERR_HOSTNAME_MISMATCH 62 +#define X509_V_ERR_EMAIL_MISMATCH 63 +#define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +#define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +#define X509_V_ERR_EE_KEY_TOO_SMALL 66 +#define X509_V_ERR_CA_KEY_TOO_SMALL 67 +#define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +#define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +#define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +#define X509_V_ERR_NO_VALID_SCTS 71 + +#define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +#define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +#define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +#define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ + +#define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 76 +#define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 + +/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ +#define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 +#define X509_V_ERR_INVALID_CA 79 +#define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 +#define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 +#define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 +#define X509_V_ERR_ISSUER_NAME_EMPTY 83 +#define X509_V_ERR_SUBJECT_NAME_EMPTY 84 +#define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 +#define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 +#define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 +#define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 +#define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 +#define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 +#define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 +#define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 +#define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 +#define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +#define X509_V_ERR_RPK_UNTRUSTED 95 + +/* additional OCSP status errors */ +#define X509_V_ERR_OCSP_RESP_INVALID 96 +#define X509_V_ERR_OCSP_SIGNATURE_FAILURE 97 +#define X509_V_ERR_OCSP_NOT_YET_VALID 98 +#define X509_V_ERR_OCSP_HAS_EXPIRED 99 +#define X509_V_ERR_OCSP_NO_RESPONSE 100 +#define X509_V_ERR_CRL_VERIFY_FAILED 101 + +/* Certificate verify flags */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +#endif +/* Use check time instead of current time */ +#define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +#define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +#define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +#define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +#define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +#define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +#define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +#define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +#define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +#define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +#define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +#define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +#define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +#define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +#define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +#define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +#define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +#define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +#define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +/* Verify OCSP stapling response for server certificate */ +#define X509_V_FLAG_OCSP_RESP_CHECK 0x400000 +/* Verify OCSP stapling responses for whole chain */ +#define X509_V_FLAG_OCSP_RESP_CHECK_ALL 0x800000 + +#define X509_VP_FLAG_DEFAULT 0x1 +#define X509_VP_FLAG_OVERWRITE 0x2 +#define X509_VP_FLAG_RESET_FLAGS 0x4 +#define X509_VP_FLAG_LOCKED 0x8 +#define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +#define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, + const X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, + const X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); + +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx), (func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, + X509_STORE_CTX_verify_cb verify_cb); +#define X509_STORE_set_verify_cb_func(ctx, func) \ + X509_STORE_set_verify_cb((ctx), (func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn +X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, + X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY *rpk); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(const X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +#define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +#define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +#define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +#define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +#define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +#define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +#define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); +X509_LOOKUP_METHOD *X509_LOOKUP_store(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_ctrl_ex_fn)( + X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, + OSSL_LIB_CTX *libctx, const char *propq); + +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, + const char *propq); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char *bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn)(X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret, OSSL_LIB_CTX *libctx, const char *propq); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); + +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(const X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); +#ifndef OPENSSL_NO_OCSP +void X509_STORE_CTX_set_ocsp_resp(X509_STORE_CTX *ctx, STACK_OF(OCSP_RESPONSE) *sk); +#endif +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_policies(const X509_POLICY_TREE *tree); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_user_policies(const X509_POLICY_TREE *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(const X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) +*X509_policy_node_get0_qualifiers(const X509_POLICY_NODE *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509err.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509err.h new file mode 100644 index 0000000..7123a72 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509err.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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_X509ERR_H +#define OPENSSL_X509ERR_H +#pragma once + +#include +#include +#include + +/* + * X509 reason codes. + */ +#define X509_R_AKID_MISMATCH 110 +#define X509_R_BAD_SELECTOR 133 +#define X509_R_BAD_X509_FILETYPE 100 +#define X509_R_BASE64_DECODE_ERROR 118 +#define X509_R_CANT_CHECK_DH_KEY 114 +#define X509_R_CERTIFICATE_VERIFICATION_FAILED 139 +#define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +#define X509_R_CRL_ALREADY_DELTA 127 +#define X509_R_CRL_VERIFY_FAILURE 131 +#define X509_R_DUPLICATE_ATTRIBUTE 140 +#define X509_R_ERROR_GETTING_MD_BY_NID 141 +#define X509_R_ERROR_USING_SIGINF_SET 142 +#define X509_R_IDP_MISMATCH 128 +#define X509_R_INVALID_ATTRIBUTES 138 +#define X509_R_INVALID_DIRECTORY 113 +#define X509_R_INVALID_DISTPOINT 143 +#define X509_R_INVALID_FIELD_NAME 119 +#define X509_R_INVALID_TRUST 123 +#define X509_R_ISSUER_MISMATCH 129 +#define X509_R_KEY_TYPE_MISMATCH 115 +#define X509_R_KEY_VALUES_MISMATCH 116 +#define X509_R_LOADING_CERT_DIR 103 +#define X509_R_LOADING_DEFAULTS 104 +#define X509_R_METHOD_NOT_SUPPORTED 124 +#define X509_R_NAME_TOO_LONG 134 +#define X509_R_NEWER_CRL_NOT_NEWER 132 +#define X509_R_NO_CERTIFICATE_FOUND 135 +#define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +#define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +#define X509_R_NO_CRL_FOUND 137 +#define X509_R_NO_CRL_NUMBER 130 +#define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +#define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +#define X509_R_SHOULD_RETRY 106 +#define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +#define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +#define X509_R_UNKNOWN_KEY_TYPE 117 +#define X509_R_UNKNOWN_NID 109 +#define X509_R_UNKNOWN_PURPOSE_ID 121 +#define X509_R_UNKNOWN_SIGID_ALGS 144 +#define X509_R_UNKNOWN_TRUST_ID 120 +#define X509_R_UNSUPPORTED_ALGORITHM 111 +#define X509_R_UNSUPPORTED_VERSION 145 +#define X509_R_WRONG_LOOKUP_TYPE 112 +#define X509_R_WRONG_TYPE 122 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509v3.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509v3.h new file mode 100644 index 0000000..86079e6 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509v3.h @@ -0,0 +1,2013 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/x509v3.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509V3_H +#define OPENSSL_X509V3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509V3_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE)(void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D)(const void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; + /* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; + /* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; + /* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; + /* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; + /* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string)(void *db, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section)(void *db, const char *section); + void (*free_string)(void *db, char *string); + void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info for producing X509 v3 extensions*/ +struct v3_ext_ctx { +#define X509V3_CTX_TEST 0x1 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define CTX_TEST X509V3_CTX_TEST +#endif +#define X509V3_CTX_REPLACE 0x2 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; + EVP_PKEY *issuer_pkey; + /* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) +#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) +#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) +#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) +#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) +#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) +#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) +#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) +#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) +#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) +#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) +#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* ext_flags values */ +#define X509V3_EXT_DYNAMIC 0x1 +#define X509V3_EXT_CTX_DEP 0x2 +#define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +#define GEN_OTHERNAME 0 +#define GEN_EMAIL 1 +#define GEN_DNS 2 +#define GEN_X400 3 +#define GEN_DIRNAME 4 +#define GEN_EDIPARTY 5 +#define GEN_URI 6 +#define GEN_IPADD 7 +#define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_STRING *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) +#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) +#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) +#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) +#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) +#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) +#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) +#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) +#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) +#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) +#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) +#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) +#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) +#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) +#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) +#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_freefunc_type(freefunc)) +#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) +#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) +#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) +#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) +#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) +#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) +#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) +#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) +#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) +#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) +#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) +#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) +#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; + /* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) +/* All existing reasons */ +#define CRLDP_ALL_REASONS 0x807f + +#define CRL_REASON_NONE -1 +#define CRL_REASON_UNSPECIFIED 0 +#define CRL_REASON_KEY_COMPROMISE 1 +#define CRL_REASON_CA_COMPROMISE 2 +#define CRL_REASON_AFFILIATION_CHANGED 3 +#define CRL_REASON_SUPERSEDED 4 +#define CRL_REASON_CESSATION_OF_OPERATION 5 +#define CRL_REASON_CERTIFICATE_HOLD 6 +#define CRL_REASON_REMOVE_FROM_CRL 8 +#define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +#define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) +#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) +#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) +#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) +#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) +#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) +#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) +#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_freefunc_type(freefunc)) +#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) +#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) +#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) +#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) +#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) +#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) +#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) +#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) +#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) +#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) +#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_freefunc_type(freefunc)) +#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) +#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) +#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) +#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) +#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct ISSUER_SIGN_TOOL_st { + ASN1_UTF8STRING *signTool; + ASN1_UTF8STRING *cATool; + ASN1_UTF8STRING *signToolCert; + ASN1_UTF8STRING *cAToolCert; +} ISSUER_SIGN_TOOL; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) +#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) +#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) +#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) +#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) +#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) +#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) +#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) +#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) +#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) +#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) +#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) +#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) +#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) +#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) +#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) +#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_freefunc_type(freefunc)) +#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) +#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) +#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) +#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) +#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) +#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) +#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) +#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) +#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) +#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) +#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) +#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) +#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) +#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) +#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) +#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) +#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) +#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) +#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) +#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) +#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) +#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) +#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) +#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) + +/* clang-format on */ + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +#define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +#define IDP_INVALID 0x2 +/* onlyuser true */ +#define IDP_ONLYUSER 0x4 +/* onlyCA true */ +#define IDP_ONLYCA 0x8 +/* onlyattr true */ +#define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +#define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +#define IDP_REASONS 0x40 + +#define X509V3_conf_err(val) ERR_add_error_data(6, \ + "section:", (val)->section, \ + ",name:", (val)->name, ",value:", (val)->value) + +#define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, X509V3_CTX_TEST) +#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0, 0, 0, 0, \ + 0, 0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table } + +#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0, 0, 0, 0, \ + NULL } + +#define EXT_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ + 0, 0, 0, 0, \ + NULL } + +/* clang-format off */ +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +/* clang-format on */ + +/* X509_PURPOSE stuff */ + +#define EXFLAG_BCONS 0x1 +#define EXFLAG_KUSAGE 0x2 +#define EXFLAG_XKUSAGE 0x4 +#define EXFLAG_NSCERT 0x8 + +#define EXFLAG_CA 0x10 +#define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ +#define EXFLAG_V1 0x40 +#define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +#define EXFLAG_SET 0x100 +#define EXFLAG_CRITICAL 0x200 +#define EXFLAG_PROXY 0x400 + +#define EXFLAG_INVALID_POLICY 0x800 +#define EXFLAG_FRESHEST 0x1000 +#define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +#define EXFLAG_BCONS_CRITICAL 0x10000 +#define EXFLAG_AKID_CRITICAL 0x20000 +#define EXFLAG_SKID_CRITICAL 0x40000 +#define EXFLAG_SAN_CRITICAL 0x80000 +#define EXFLAG_NO_FINGERPRINT 0x100000 + +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +#define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +#define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +#define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +#define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +#define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +#define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +#define KU_CRL_SIGN X509v3_KU_CRL_SIGN +#define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +#define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY + +#define NS_SSL_CLIENT 0x80 +#define NS_SSL_SERVER 0x40 +#define NS_SMIME 0x20 +#define NS_OBJSIGN 0x10 +#define NS_SSL_CA 0x04 +#define NS_SMIME_CA 0x02 +#define NS_OBJSIGN_CA 0x01 +#define NS_ANY_CA (NS_SSL_CA | NS_SMIME_CA | NS_OBJSIGN_CA) + +#define XKU_SSL_SERVER 0x1 +#define XKU_SSL_CLIENT 0x2 +#define XKU_SMIME 0x4 +#define XKU_CODE_SIGN 0x8 +#define XKU_SGC 0x10 /* Netscape or MS Server-Gated Crypto */ +#define XKU_OCSP_SIGN 0x20 +#define XKU_TIMESTAMP 0x40 +#define XKU_DVCS 0x80 +#define XKU_ANYEKU 0x100 + +#define X509_PURPOSE_DYNAMIC 0x1 +#define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose)(const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) +#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) +#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) +#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) +#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) +#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) +#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) +#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_freefunc_type(freefunc)) +#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) +#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) +#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) +#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_PURPOSE_DEFAULT_ANY 0 +#define X509_PURPOSE_SSL_CLIENT 1 +#define X509_PURPOSE_SSL_SERVER 2 +#define X509_PURPOSE_NS_SSL_SERVER 3 +#define X509_PURPOSE_SMIME_SIGN 4 +#define X509_PURPOSE_SMIME_ENCRYPT 5 +#define X509_PURPOSE_CRL_SIGN 6 +#define X509_PURPOSE_ANY 7 +#define X509_PURPOSE_OCSP_HELPER 8 +#define X509_PURPOSE_TIMESTAMP_SIGN 9 +#define X509_PURPOSE_CODE_SIGN 10 + +#define X509_PURPOSE_MIN 1 +#define X509_PURPOSE_MAX 10 + +/* Flags for X509V3_EXT_print() */ + +#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +#define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +#define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +#define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +#define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +#define X509V3_ADD_OP_MASK 0xfL +#define X509V3_ADD_DEFAULT 0L +#define X509V3_ADD_APPEND 1L +#define X509V3_ADD_REPLACE 2L +#define X509V3_ADD_REPLACE_EXISTING 3L +#define X509V3_ADD_KEEP_EXISTING 4L +#define X509V3_ADD_DELETE 5L +#define X509V3_ADD_SILENT 0x10 + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); +char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); +ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, const X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); +int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, + const char *value, int is_nc); + +#ifdef OPENSSL_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); + +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +#endif + +char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); +/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ +int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* The new declarations are in crypto.h, but the old ones were here. */ +#define hex_to_string OPENSSL_buf2hexstr +#define string_to_hex OPENSSL_hexstr2buf +#endif + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck)(const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +int X509_PURPOSE_set(int *p, int purpose); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +#define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +#define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +#define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +#define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +#define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +#define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +#define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) +#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) +#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) +#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) +#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) +#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) +#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) +#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) +#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) +#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) +#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) +#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) + +/* clang-format on */ + +#ifndef OPENSSL_NO_RFC3779 +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +#define ASIdOrRange_id 0 +#define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) +#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) +#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) +#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) +#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) +#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) +#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) +#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_freefunc_type(freefunc)) +#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) +#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) +#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) +#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; + +#define ASIdentifierChoice_inherit 0 +#define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +#define IPAddressOrRange_addressPrefix 0 +#define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) +#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) +#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) +#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) +#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) +#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) +#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) +#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_freefunc_type(freefunc)) +#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) +#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) +#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) +#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; + +#define IPAddressChoice_inherit 0 +#define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) +#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) +#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) +#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) +#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) +#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) +#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) +#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_freefunc_type(freefunc)) +#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) +#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) +#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) +#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +#define V3_ASID_ASNUM 0 +#define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +#define IANA_AFI_IPV4 1 +#define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) +#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) +#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) +#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) +#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) +#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_freefunc_type(freefunc)) +#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) +#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) +#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) +#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) +#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) +#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) +#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) +#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) +#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) +#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) +#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) +#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) +#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) +#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) +#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) +#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) +#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) +#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) +#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) +#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) +#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_freefunc_type(freefunc)) +#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) +#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) +#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) +#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT *namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING *namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING *namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +#define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +#define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +#define OSSL_NAMED_DAY_TYPE_INT 0 +#define OSSL_NAMED_DAY_TYPE_BIT 1 +#define OSSL_NAMED_DAY_INT_SUN 1 +#define OSSL_NAMED_DAY_INT_MON 2 +#define OSSL_NAMED_DAY_INT_TUE 3 +#define OSSL_NAMED_DAY_INT_WED 4 +#define OSSL_NAMED_DAY_INT_THU 5 +#define OSSL_NAMED_DAY_INT_FRI 6 +#define OSSL_NAMED_DAY_INT_SAT 7 +#define OSSL_NAMED_DAY_BIT_SUN 0 +#define OSSL_NAMED_DAY_BIT_MON 1 +#define OSSL_NAMED_DAY_BIT_TUE 2 +#define OSSL_NAMED_DAY_BIT_WED 3 +#define OSSL_NAMED_DAY_BIT_THU 4 +#define OSSL_NAMED_DAY_BIT_FRI 5 +#define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +#define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +#define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +#define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +#define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +#define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +#define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +#define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +#define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +#define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +#define OSSL_TIME_SPEC_DAY_BIT_MON 1 +#define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +#define OSSL_TIME_SPEC_DAY_BIT_WED 3 +#define OSSL_TIME_SPEC_DAY_BIT_THU 4 +#define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +#define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +#define OSSL_TIME_SPEC_DAY_INT_SUN 1 +#define OSSL_TIME_SPEC_DAY_INT_MON 2 +#define OSSL_TIME_SPEC_DAY_INT_TUE 3 +#define OSSL_TIME_SPEC_DAY_INT_WED 4 +#define OSSL_TIME_SPEC_DAY_INT_THU 5 +#define OSSL_TIME_SPEC_DAY_INT_FRI 6 +#define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +#define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +#define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +#define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +#define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +#define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +#define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +#define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +#define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +#define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +#define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +#define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +#define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +#define OSSL_TIME_SPEC_INT_MONTH_APR 4 +#define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +#define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +#define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +#define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +#define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +#define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +#define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +#define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +#define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +#define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +#define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +#define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +#define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +#define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +#define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +#define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +#define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +#define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +#define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +#define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +#define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +#define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + +/* clang-format on */ + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +#define OSSL_ATTR_MAP_TYPE 0 +#define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +#define OSSL_AAA_ATTRIBUTE_TYPE 0 +#define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509v3err.h b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509v3err.h new file mode 100644 index 0000000..19f9386 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64-simulator/Headers/openssl/x509v3err.h @@ -0,0 +1,95 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_X509V3ERR_H +#define OPENSSL_X509V3ERR_H +#pragma once + +#include +#include +#include + +/* + * X509V3 reason codes. + */ +#define X509V3_R_BAD_IP_ADDRESS 118 +#define X509V3_R_BAD_OBJECT 119 +#define X509V3_R_BAD_OPTION 170 +#define X509V3_R_BAD_VALUE 171 +#define X509V3_R_BN_DEC2BN_ERROR 100 +#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 +#define X509V3_R_DIRNAME_ERROR 149 +#define X509V3_R_DISTPOINT_ALREADY_SET 160 +#define X509V3_R_DUPLICATE_ZONE_ID 133 +#define X509V3_R_EMPTY_KEY_USAGE 169 +#define X509V3_R_ERROR_CONVERTING_ZONE 131 +#define X509V3_R_ERROR_CREATING_EXTENSION 144 +#define X509V3_R_ERROR_IN_EXTENSION 128 +#define X509V3_R_EXPECTED_A_SECTION_NAME 137 +#define X509V3_R_EXTENSION_EXISTS 145 +#define X509V3_R_EXTENSION_NAME_ERROR 115 +#define X509V3_R_EXTENSION_NOT_FOUND 102 +#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 +#define X509V3_R_EXTENSION_VALUE_ERROR 116 +#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151 +#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152 +#define X509V3_R_INVALID_ASNUMBER 162 +#define X509V3_R_INVALID_ASRANGE 163 +#define X509V3_R_INVALID_BOOLEAN_STRING 104 +#define X509V3_R_INVALID_CERTIFICATE 158 +#define X509V3_R_INVALID_EMPTY_NAME 108 +#define X509V3_R_INVALID_EXTENSION_STRING 105 +#define X509V3_R_INVALID_INHERITANCE 165 +#define X509V3_R_INVALID_IPADDRESS 166 +#define X509V3_R_INVALID_MULTIPLE_RDNS 161 +#define X509V3_R_INVALID_NAME 106 +#define X509V3_R_INVALID_NULL_ARGUMENT 107 +#define X509V3_R_INVALID_NULL_VALUE 109 +#define X509V3_R_INVALID_NUMBER 140 +#define X509V3_R_INVALID_NUMBERS 141 +#define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 +#define X509V3_R_INVALID_OPTION 138 +#define X509V3_R_INVALID_POLICY_IDENTIFIER 134 +#define X509V3_R_INVALID_PROXY_POLICY_SETTING 153 +#define X509V3_R_INVALID_PURPOSE 146 +#define X509V3_R_INVALID_SAFI 164 +#define X509V3_R_INVALID_SECTION 135 +#define X509V3_R_INVALID_SYNTAX 143 +#define X509V3_R_ISSUER_DECODE_ERROR 126 +#define X509V3_R_MISSING_VALUE 124 +#define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142 +#define X509V3_R_NEGATIVE_PATHLEN 168 +#define X509V3_R_NO_CONFIG_DATABASE 136 +#define X509V3_R_NO_ISSUER_CERTIFICATE 121 +#define X509V3_R_NO_ISSUER_DETAILS 127 +#define X509V3_R_NO_POLICY_IDENTIFIER 139 +#define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154 +#define X509V3_R_NO_PUBLIC_KEY 114 +#define X509V3_R_NO_SUBJECT_DETAILS 125 +#define X509V3_R_OPERATION_NOT_DEFINED 148 +#define X509V3_R_OTHERNAME_ERROR 147 +#define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 +#define X509V3_R_POLICY_PATH_LENGTH 156 +#define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157 +#define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 +#define X509V3_R_PURPOSE_NOT_UNIQUE 173 +#define X509V3_R_SECTION_NOT_FOUND 150 +#define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 +#define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 +#define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 +#define X509V3_R_UNKNOWN_EXTENSION 129 +#define X509V3_R_UNKNOWN_EXTENSION_NAME 130 +#define X509V3_R_UNKNOWN_OPTION 120 +#define X509V3_R_UNKNOWN_VALUE 172 +#define X509V3_R_UNSUPPORTED_OPTION 117 +#define X509V3_R_UNSUPPORTED_TYPE 167 +#define X509V3_R_USER_TOO_LONG 132 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64-simulator/libcrypto.a b/Frameworks/openssl.xcframework/ios-arm64-simulator/libcrypto.a new file mode 100644 index 0000000000000000000000000000000000000000..b9d82da501068a4ca6e825a048b057b98e9fd09f GIT binary patch literal 8918600 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∾bq3}5$LU)laRML0pyiiF$ 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

*d{6aklaS^6)nAfZIkt%H6-;)j7S!7dW>v^=~d1 z6{p>8owji57iXrXo|v1r=k<@q_8glM?D6vi_DzajXY9I-u}fpgwHiwpldc)Nb=X$M zuBCrDY|`1n*y8e3#a@~264%+I>~lxj$J}+_hk80{f)|;4Xr8ho!5%Go&J>%yaLpFk zleOo4{8=BF@t8S`Pj76RZPy+2rCsdjW$kgYznbe`?IPMH{9d?C(*->p-^!#ZMLkK* z!i})-zpU}doekHSX{DtD{s5)d$!m6L&d4M7b@IW}-8YQ5n{TBxW;0e-gM_O&9S`T< z*i+OU4$(W>b=P+nX*XrdIDmWPd>TH4mzb*-DZes{&dE$UIQPs~_wfy}ZzFr<+JpUP z*Os-H%UtXw;(w_Xc@f%E&2H25E6&`rM@qZyUX*FqouvKP)u{syX0^{@^u{k>Z~d0?k~&^?7K~y)Ybxk*H_|mlydyEw9#n?3`6sFh)5*;f2^Txv!L0J-J^M!2P@UJ$<>$yf+aF_mvggo= zyDUMyW}oj@Iu)Kbv*}Ua%8YUTZg-vESG?VyE1p>##E<{Xv=@bE+m>&e@kDz0_ojSe zkH)!eX3o$2pesMvzRR_t#JjxfIg{zf z&qdVf?)$#6pY!N9?78oP{d~;6=)XI@IotKy{15e1{jqo7H*r^8XxpdKqIl`!Mf<1& zg|ECTKPgu(yYoNWQyd#}Jk7k+E9N4;4&3jwk(-o5J@+%M&QvIM!}whb!ZN{{I``FT%tP2yYT<7!K)^O&(q z{i$~!eTDF3W@RPNCuW~uO!Q@H{WHfIhJR#Vn||lQPI2!#@?*BY2JP!!arT#4*U*2LPStr;|Bmu?-2IVY58ue) z_p9poCyf1JzVdY@{#x>J4f$EhHzakIZ@(SiLbk!}XL@J*c(?F=?Jr&*r{ePQjv!9H zON`u`W0zbzbt?0!ctOF|rKH)X_je!3+jD$YY!CN~hyIklFm0wj`cK>0!v2qs%eJ2l#6-;Zqr+AF+Mq2vJ)`{@HtWQ0oJE185 zMYhi{o{i3?JGf^-XZmx`@Y9E1Q(U&(63E0pb-k5oo&9d9LT<$aH|O23fO(q6i#T(% zdc9|^O&usS^QXebYB%O7-&M5H1z*7}b>6^xN3t^>WgTERZSeuV2{orVe#sKr-PQfR zH~6+Jdf=hh`Uhrm@6%b_`gaWPf&+F8x98h^IrQF_xl=&$q3GXxJH}+nTjjd@*~

    X|mmHFNKPE!PZ9{W8=#)#)|;_8JoVQGQ0VGa2%PnQ^#+lXez5~Zws!du1&}yVVA!zE~_n7c;+V|-N(Y8%Pzib zS_?^NNnAX$wm-YX#kGm6ud4{&E06*Fd#}Do=x2eR{uJwLfgbHUF`nuSsLrLCM`qH? zTx)qkmIHIJKeKD9n}VzARt48pZwMAPZvgKIuG!ecvnE&wxBiN{=HU98*5H%tZVwjM zDRvvC;<}k<6VF$9p5l3#=S`kbWMDeaCnFhA8d1DrbComq{1tudeR~`;iv=#9!|0J6U+43|VH(Rg!xxrTucWee54$pp|Ol!AT!`$upOFnkT;>`z~ki z^4TYSg9?rJU>Sk;=f8r1M5>mjzxek%`_usTJ!r!(p>zx~B8W)G=^`R$wk zgtJ$>MfEA4%bk5Ek@r`=XB;En{sH{&a~0czeShhHe3bQAHGqG~6=X}Jv>jxjwX_W+ z9p(31Ox^<0G|E?6Or9V<+Fa?&;54uqyaHSarobf*F9olHJ|C1jovY)&{Dj5ibD;Q7 zIxQw20q5av2S|~W>)afethe^%wHA}Nfb@m(l@^lt9*XRheQ8kX zs|Dr%Qc(4G5vck~SWF%&wCCE}!RgpHgC7M~g39ORpu#Bur-426N5y{%yaap>Tmb4k z{3k%2gXh0o=ivEIKE{vo-C;2)whhh~m);MSfX(1Sa2crhhJy<444xF;DG;OblNOUF zK>o|SEhdkG3hxkD0zM5YoOaN(SJ1Rqi{>5ypZ=} ze+*Q(I~+>xzT9uJn5+loUgzrN{&G<6FLEe8GtqH8VN^cIV)A7iV^x00V)77!g2EM_ zC765~RJi*sCdL1xaGD)13CzNCDP|f^$|-B1;X|5@yE11^SsHWNra3oX;><5{<_T~P z?ltZyoC(gn2%LpE!-6rVnVWD(v!MY)D}08W5gjBJ|3lIas~n~rCL9J1yKpS`oen!3 zrX5x}OgT(A3>~NTNSmiL~FyRnT5U?}_usexYYQp(L^DZhGnm4^{Xr6ec z_UAthgVYQ8hxk1-_+=QO?jO>I`=f>3$d2zRJj3tH!wz#oy?fXR{UR?OcBtWLPN*L~ z=M{cWoO6=j&XLa%`u(HYIGcWQ)G2>uhzf1>y#`p)9#_&t2#D;E;}l(s3#QwtR%{v@w{ zj7I!Pem{FFcH&3!`^RcOqMOH9A9}Bf)@5W;6CHiZ(YGml8s>7X_M!gF(Q6!C?&$yG z=w-w$_uqB&WzPNuM~e|o_CIp;`Hmjt;!C^upL6sWXa7-0U+n1LJO8z!v+`Rm|Ag=N z-*0s8J$;pE9$y}FMbkn3e)vMd691H+7o9*ax{E zJ?|Ey9(VTYKT^Nok$hJQOaP)sT+Ryv`+~vp5vyi1_ z-1~XeO^){SxMy8@{k-kh&R*ky)G2_OZ%63AjD-KWNcg#oOqMxrZQa_MW)8ob zgYHJyy*_TE=iJTLuRqz{$1$gsTi0H;wmL^Xe?Q{(9T%Ok3BTPf|6PVOv4m07G&EE; zwA3O;-?QSGq%^c%wq{)oOlwi&+$@^&@tL3_By4q+CbI-xTi05*VQoWG9f!2T7@(mBH(=T6I;$c!-mTJiK{;x;5qXoR(P9jD$S*c4>8-HjECvduhO-mPm*A!+R+ zD?cKm9C^lf#+@yOnGKmjay*2YQW2{n{Ep@lVq+RjUmpiPk=Yix$NxonQ2>!V)HbX} zK0qe=DBZMf1LyY}?u4r`OJYFAea*VH-0^^IZn)V&QY*LCHPvk}!PKhcU@SDhCKyvD zR?I*SN2IZI{li*kV$GtB_v~8=JSU@WDF}UJ%NWq=SjNT(cCZC*q)Ye%`=MBYP?$g{ zLg4>LzQ&m|rw=F(K(|Z`#Mj8QAgI?snczY34Q|fX7^0saofDC2bAzj=`JB=BkEXvy zyzSwwlKR%pJNB59U1zo~-5dTs> zX@;1|uiouSGjH;c&rgnIz7kK&`-6HMh!>sD*pRPJZuBTzKJWD1_<@!79|O*X76c!f zxd5K6g{*074>UfQGr7IJEcLm)-)D2rvv+Z>JC472>_ank*K(S5?>Mq|muP>BHGJ)N zX+2$gJb8pc!ggrQU3=SIoIxim2NrPdcryMf*}Lp6HZsyD#^V8Ud2{zL^9BW+_s%to z?vrW{N#S*|C-@Wg6BbNB4ljE}U2dN(4NuOSq`4j*L7(Onao4kMA1BRr56bYdyyVlX zy_Gjf>p{}b8bDFhzw#{q@0DleSNT>r)vVVmjn7cV*?F!nO}NYviyDYu`l;`c2iYrr_=XQu5l4djM9VYI-ihMc#iM%FSz+;rEF_QY zp_%$sJqM!U=@airKz&c

    Fw%#Xs%Fx0iUFFnHKgxK?|n#xBc!wEomiviHKNgO}81 zI@u3a-JD|2DGh%>m*WjcW1ePjoxY_{=pA&jeZEZ=&?Xg@+H)1@EFfOd1(cEYztuj~ zHZ%2Hw6~k`DPW%mHwVTH?%Uq{J{$RaDOz^4VdSn-UJGsAmJnYX>1995>=%MiwDc7smHS6Pme@*fakR!Z znI9!yM#0j0P;>`~)sVEqDu*eD35S4jr*EO`?{n(Ye6RX(c@^&D#+OsEqvc|`pXg8Pb9)y zv+RsRWY*MLq>jiKAy1iEu$$Z%1D(4thg!0yJsAUY+f#-#lb(%DyeR!F)|gm2GfQU9 zx3;0R;r6=hi=(bzRB>fRWj_-urP78;+ShNaYpP+QmdTF-@7IEiBK62#|HSWfis%EM z*O)nD;QO35w$|`1wNAnIIj^A(T(1gF@Sx5%uc>$augx_IPiualhwfz5`<>U+Iu8m@ z+LI(mZJLoKE%54W=NIaI#4cSYNvD$9%seS>1Mw~lb+&oUllarXt#xOWPk-|oh07RW z9uw#X_{rsavOG^w-X_Lr!zaJc?Bkm;+VHtCk1^(3FxMEav74whh8ugyyg79}a((W~ zhmR#N=M~KSf%i7<`r(Pny=S1C_e|H6*wj*m-yzAbJXE6nDfzmFX#Y~)i`3;q4&nx!Urx(NbWaZ+B zUn85>gm<^$53V-6<9eTpcgpgdbiyCm@&AC2WT19Jd4}pDbTngi_Z%g2Db3|kIekP1 zew{KQq96NPta)%h*kAZv&fdKj`ov#?C#iNG`fDG1?R!Y=u+Yc8+@*M+^smHT?|r>b z8CObA5}w}kUEpX?bb$mhq|;%C!?eRHhbe~%hk)^?^~mh`g61Py-}d9(aA>{neK{V*pJ-oif97ak zj`uklFzO1>GHgb6F5=x~7S+5-_WD=EyIs}F zHO!f^eBkq?v!>5W7}fWDsRTLwf3*%{CIPew^>d>%DM0;a=POUU@kZe}tqt%4&R2Lh z7?rYM(F?ZZoAXW! zh6n3cu@(~A4NA?QHhALb%2?j|8247iM@?K&jQ&;JRC)iSE*QPwnf&#Wv0pGUSpUs| z{38#qFy1-8a&T-0`)d{PbBb1!jGZ{EIF?wy3fhM^b!;%YBo?2R%F0I}=~zlS77+I{ z`Zgz=1%$H({jlMk^Eabs%&mwQj99T`Y|*U3g^O>fj4hsVVOBZ`Z?wLpmr_oOLwt(` zqc%QN7<_#>XHkw+H0@&W7vXkqR$>&VDbC z7fq`rzOBg_QjNb4IYoU=dY+Ja$O#bEW8TxMwS(6KK%i<~DQ{&7!eV4m$vXt=( zo`q=?Vf$p_>f&CvJkEW}e6wr906_ki_OUV)4N@xI&d(}D8PU)r{~{AHJWR-DUU zv{tD8||A1Xj<I~YP5hMM^QU!_ldv%h}% zCh5_cEbTd{U#e~Pa=)UNO{_9W)7DkKZLU9RuF~fEV-@=T>TPnCJYMxj#-t+O$8{gu ztBdT}m^5cgbdIe}{X};#6Q94*dP|ca# z`2(bJ^0-W&k0EdO2HYucYVV3e{pF~Oql&epBQ+ZD#?n^DnRcpp;UB7ajr$;9qdgpD zT-?Gqb#GqUj8keyN|W4`a!==6#wotz`!8!JGr7O9fO0l+rAr6!n=LEYk6oPiDC#CH zZOAr`*Rcl)Dqm*Z&Gh#P^!K8@|Em1O7W_hOS?PR&@s#_+*Y84RhsuE0WxwfNIMJ5f zLDCji+qfVYmEAVvSM8&VvhibL{`uCA+Oc0})Ln`iL;d*KUmflmm0rG<@y@>=ag#H~ zSJRi|ufMX>n(l807)PI>?WYH@i)Gyz`i#my>wTcS{R95aercbZ@wxLxmafm7t*XQ%{%vtOu7gH*Q z&;I-$!f-U}Y2pXhdfYw`FXg&-08Bm((of5GTTF^yoHkRs)7qEozBReieQR>J&0?|* zl)Jk@g)jaEgFSD4O4$9p~Q0s?rXFtf< zyZhZr#mBCAb-$b9J!CQY0;qToT1-9%D!h8oq!Tphw3rkhhDoQz@IJT{wDNZ;D1YL2 zm%oI?Gvj_D4%?* zbEkb7+$VMal;W!br+|zTIx|+90!c!-_~^l8nKQo>k$)lj+kz7WVM<*zM`$75JXEFICD1VPzOzsBd&#kYN?||k%*~X9jr$PA_f4}10 z1j>J_#bh%m|Fs}vVrdna0GENv=VC`s2O0lLF9IinBSD292NnJxi%CVU@XuffCdI$2 z@LvYu(I`CxG8Zk?z8sUc(kgHwc#AV%1{Ok32QLKq_BQT1LAlfVmi#{n%3V8nA*gQ? z{>!ya%zttTKT3z>zbYLmQ0XWGRlW&O>7M}dZ{)s$$&viXAM%@wzc?s=gFy9@Q&`Gg z>-795U*Jdi=mZt+-jI=X)(D2RJiwpa(_1{_nRyxTS5NIn=K|; z-!bl2f_&STra+}PNDC}e~eQQJM$mm_hkMl zes>Jo$+?MbgWCChVbCFdpBr?L-}~cj5(+ys&F_waors3D0%A|adobBoupg7h3!dcn zWWgzZy9-Y6ySwmlPE$Nx*cqOzI9YfK{f=QfIa#r7SUbNR!yn^(#m?c6@cYW}E`DDg zewg1w=e*1*i-YI9!0-Jd+C~u0h)#a@jo8ocD?VLcrBIS5j`|6DhNKuBYKRZi{+oE%+X0lmpJ+|M_=mb zxsLYXmx!iM`t=5)H|s_I{aWp4|GxaGqy76;`z~5v^6C%hv&i5(5jsYE+4gGB+4Sck zH0zEz_P-;dZ1+*QtaBsw=SBR#9HGA&aj(F$!{_@Zhh7?S@5U8Oty&#%@5Tjh9egxm ze{+QX*9iSPwXAY+!>x5Kt)DWhb1*hzvh3O` zZ>n5Wu~JMg(<_@B>-<%6S>c;$TQu0Hy$S8Q#Xc+(l<{bp#W%E6S2nk_XxB-TK)XSd z9fq!`tGm6qa&4^~n0wb`lu7kciH`L~E}~pE{ft|iL;0|bJd(^>*#aMaZDsYETU#9C zaE7(p@xS|v-E_&D0<*zf)zDOpkXnDUoMQveM0R5{7h}PHBNHQ^))expJ9KScQ0W+@ zB`9};CTY5*amP z?z~y^%jV9Q!>-xv=`*mHIbF7M$}Btc+!Y#^LWKEmWe~TLIk z`E44v|`5 zA(+439vYMSIxod{L z0&HjUKaWbyUZ2(;haTpQ!H0R6&wgMkxJTK?78<-rX;OcGPnyJ!e&Y-3rc9LGB4czB{FASY;ux$o>P z*1MQnwlkk=-;oz==X+`azDhdtd5$_+N7(PzU5cI3x#ZW_{dk1&QFux zPq8j>BeG+L7@1#Z*8LspyaTP{=Nb7;m4lGsN7+cepI;8vX|LuKtF!FkfD7UfH?>J;y z4c>0$`xHFEULemdV`w-HnsXzMRzIxUfS?4@JTQP1r@_RHL+QDP| zkuS5)aKzoe)yeu!HEV$b?F}qsok;%W?wLgHT2O%5yLWwxyx&N9RKTY;*tC~4X;pce zczb)xL`$C-zqaX)E2a_?#-*gUVNZQ2pqe7ux(*jZhxAr_9lI{g8g< zXq)%kFr(>}e8V?cM_0PFj^1CotEjVaD}$-K^NMH2CD)3y^L@C_yS4p^blJPgc2KwU zud#b~bMIQ5y^NMDx3<5H*}LjPHV@Wq(cU)hYTHep^St@K4AlOZySKNHck4H9`hhQl zv?&8*e1&CT&ue6rLCEj#!>l46^|d8I+}yR6&1?F96JNI6y(`JL;@Qo)f_M-dsFt3w ztpxolt3SO2eU0?PIorY5Q!73BZ9}hi=*De}oJkNZ-qmAMVr#SaluZA_o;Lb!FsL)x zm7h-L(eBi?>hpqkTZd?Gq%&DHB%Sp8K*y#mTF16Z08565> z=4Rsv6PNmot172G2=Wf;u8=UmKXL&7 z^cABtZ$tG7KYbSe?aqFn^hy4T)IjzfXR+UX7W*g9V!!_^_MK<3KX?{Fft;zuISz8mN9R$Ny~B2lvqqKMX$NQ0w-hH-R`Q*E&6D+Zty z9mbuzLC)PPwDgZ){{krg2Q8ZQbeVTJ^GBR{8Z5zF>*R9Z?9AtZil@Zk1c$?|eL3%D zlddj0A9*Z22r8VXL4~v5VsZ^Q6Z3kIepp@wGCY}k)kI$oeF=04I1NmI6kYlG7LyY| zg;!+J+^@!Drc|9??tADta(~KV@+2ttCoG!#*5tkmntjvK7eK{(5S#)197xfXcUnwp z-TgAm_k(1ye4oYS3a^WC7*uk~xWYX>QU@@*EAZJ^@2-(oTi;x2g$sBl(V z+T5Ea^UI;-exAi7^FEV4@@&EfjQ?gZ#gb?}m;|dp{Ekp~9|xC#9|MfG-$x2MSj|6J@B+X07q+p2f2y#jP;vHB!P)EUl3Swna=%_vC7QDJ>n(rj-23tF zUu4hY-`}h7E835D-;zCk{QAmybS}|P(@CXXRCrnOJuf;dzMqQb@&11-nlSwO%3$KlXg`0M?d<)0fp2hQPaiZ&e3f$V=L?51 z744P!r)WPPd62vr_b&cx9PQu7+E0{yyR)ZH8M@2ScRSj@ed_P-|*{^&^fe;@IWOxzs* z2P5uTtIDyzDB@o4r|kGY5%K?O#C~qXzk6>Ii&fe;&JJ&LgywvIj{We6{Z}G%bpOdN z)SLBp^EHtxNhtSA!<m8M=8d{MQlpPe_TI)A9HF^O;+PJZTe^}i2 zhP4sH>Si`>uwPe;3x79W#w0fZe7>;@(@>4mTnoEP)4E}x?HRX~!m77DhwU#r)RlwP zEp_J1HG3}XK^Sdr;AVfTp=q_fcW_M|TRd6WZrX^@pV7S1S~sv& zMD>MXnZ29quB=#c{bIBIvwCAwjV=LET(zd5#@n02UWiSq zyCYL|PS#Rw{iZ%&JP2rY&n{X1mO) zpMGz1>|09O;%h=kQkGA5&tqS=>a*d#U1m5?VcRXZ91%yk{@os(Z-9-J_UgxoBXb?3 z3&o2%%5`FD)>NI{r_5aE7`Ef+b&l?yMo#aCTYTm`f2PHmmae*tHZWPZyBagDO{JR^ zm8>1!+*I22mJfP9Wd6*V1ML$^ju>061D_8OFHexL?*sM`GH2?nQSL8`FH-a5N6OKf zj_Kj`Y1I4OAJlh)l)_Vx^H?-BVf5J_tXbF8(rVo5C%T`PayC_NUbu<_^AY-m2wfYYS4Zf7i_pJ_&iRD`}KLVrI({~$ttK0@z}(Ek#lH%I9G5&Aa~`apzEN9b1~^p*&H zZ-oBG2>o{v`iBwvaD;v>Lf;pme;uK}5TXA|g#KR<`rjk;(-HcAM(BTv(1#-Q0}=Yc z2>qi7y){B_i_kxf&_9dNUyRWIJwpH22>oJ&{!)Z~DMJ4|LcbiL+avUkBlPwN{pAR~ zBSL>ALU%^!zlhNP9HIXqLVqq`Sx+6mGiqPMT(BF#Ce;=WL5}_Z9&_^TmUq|TYBJ{BceI!C3jL^Fyv@PY#FSAA@ zqb6WttE*`ZG|f!#+0;^(u*`PGfcbi^;l@qQdKDMdSg(oty6W1x4S`Jf9BW>qN&Bj` z&6fEo(a@6k+=g{T#3$XYt@XjGrUV>l!K!uZbTxfn>y4{d*KJ6&u3MLA5d&RN)6iUx zL49>gqG_FvvZ1!FskLEs1JN?c)45_STNApyzJX8Imb%&ip1uNcN`*tz~0#^STYKxIlha#np(MSk?`Bq4I5f0pp9!yv977!aBE!<5hJUTGG$&* zjsshx)-_cZG^|-ucWd>UgjOSrJl(`<$+B(DSlHSO>6&^zhe^qXme45TqaIFCA8Z4S z#^jN#WDH%Qct=g7K=Rkz%}5#J7BZZ`CtsEs-%T57I-whgh&NZd-o?6R)fhRfZn`7% zW(`{s>!=|bcBXNAU(L1)g&vd$(vls9nnxt+JL@*AOPE&6+K;PxQ-Rej$fFKR)@DCb zW3ouBF}2aeH*-U+Y9ryQLlr{{S*-w_W!M2-zw;JW+O?t={Uz5o2X+JJk~fj zkesVJjZ3YXCGd1<=8fsi!%Y5US)&}z5npm~2_Kw8r>V`ENkv$!;+1OND zz2Od-s$_BsP(3UhU;W_j8b_amuB-J0mRPsiWT_>{DaTAZ$J`1`>@(tp77CuUP;hp% z3oYm&47Z6U#`PAtSlw`I(4rBIS58x1pgj0iooV<4Q&){}b~}n@27OnRsu0udvS<@# z&{|(-YtZF7^HNf|D3Og#>ps_HI&Nz{Mr&&WGamFQ9utQdmc!Vju`j^zeUzQ$(2!L! zE0;3Z*ks=yv@12&u=%-kN8iINA)D0Mw;#^K#A;yoJ=NC!qV3uNKkn)IGa8zSu6KlXFH`IhmAXH6b&xZdoyz=>D+phU&ab8wSULjNvZaoSw|_q$YN5< zI_$BP!aJ+8LnCxv^mecWWZh|m_B~m(8lnBn7O;m|GK(i8v>&$~)IL};~1*u&b;DzF=@1`mT( z;6bnw)V}0r!QCKxbt86yw}5TnpMjgeo56bUCU7OV5?lg)8k`4y3M>I{1SfzMU>sZl z_E56R!EW#d@G!UxJP2M7?gu{!?gp;|cY@_$8+a|a3A_fZ2bY2?!6o1l@M>@#cokRz zUI|VB7lUzd5vX&OSAgB%Lhvw{0uO@XGZ3GN_y%@^NpL4fn;6jsejMBcia((q6hFdB za2~h>oD0qa#eYx&&ITudWndhf1@^G`#@gP9Zg2*87@Q7@e*}Jx5&J>-MMj7(1pbT> zJ3-psh&J#Na1#ih%7}V!D!3A)O^#RsegvEcei$qPF9s)o7lCnb3fM#Ay%5ws^kh(H zK@y<$A>q3lu^(g!al~%$0&pjIKG+6M0ylvZ!FrIj;t?xB)*nYK0mp;$z;R#+I2N1$ z7J+e)CC?E(^q0|KH#iDB4AO^290bn=_k%EPjMxpH1MUQegKZ#dnjf;nBx@QKjW4SxttZo~x4sd~c?LKP6S>A!F}TvQ_c*JMfBywdu&_z6Yjemt3! z`k13Xe=zvJS++R=A8`c_Auaq(|O%?bIQ@TIC?0JPU>G=dd4~WvyQ&d(Z6-+ znd|7)j=tK_zjN__*3p|Cz0uL59DT2&zeSu%-&Y*{qD#+Xj$ZC)E(bR1=Po_Jc65cK zUw8CByY#&4Xq`h<_#^3DQm?uAFLv}sM}NZ6LmhpSqrZk9`M=%KfA7-sB}Z#qmi;#z zEq)Kt-*xmgj_!2y^DaIAePo_}-n7aV=c z(cg3FDP-`IDs%Mtj(*Ce=cA6E=*|U3xgfVN}A=osQn+(sRhs7drZgqs9NE{Ey{jBsI;^mpJ-w zTzY0ZdXb|);pl(HkNhuj^sSEmjHAU@EBj_gf5D}1v!jPN`cX&!xl7-79IbhT{Qt<& zUvlaDjibjo`VWr&hD%=|FIlONI{L$oeg-pzH`CF-ckwTGbhD%D9Q}rie~Y6xIQk(+ zzv<%tYe(Pd=)ZHc_=6PRAxD4R`SAfVn~~8?549Ohc=gh}P&YT!%?Wk0LtR;@n-%J2hPoLU z-Ski!YUYRcJIxDqb3@&nP&Yf&m4&)lp>AfVn~~8?54E9Yet3!0yihkc)XfQXvqN23 zsGAk)W`?>MGcwwYZhEKZX6Y6G%y0TC=E7Z*lbu(sUv>Dy> zP#bFImxU3By1AilPNdHdhtWY;I)XkWY(PnhhLoFK1#$t0jABGl}?@%{4)XfQX zvqN23sGAk)W`?>MGcwwYZhELiL-aF!r1L}Fyihkc)XfQXvqN23sGAk)W`?>MGcwwY zZhELiV;FaQ$K_%Um-|pRH`L7ub+bcVS*V*8>Sl(z88fo9KIj?KGlq^6$VU%nkc&Rl z%?)*PLf!08R~G7Kg}RxcZpMs^HcL1CgWoqYW7aGuXtt01Zt)SZ(J(L{Q9WaOkl;b- zJL+)uKy6I3e&hhvCO=Y+)@P3%UXw<>Up}HXJ}RXYo`P)SWA$wr3<}Z$uf(U5%STjk z*q+IccEZiiWS9h{rjd29T=BzIO$tG!nw zygOuAaNsrK@L|6>EOlVTyS=mD;{1Q~zA@x|9(Zk5mfLev2mbTv$i18Hom+p1Y=Iau z2J$%D%^fj!4MHYDYeZx|i$-%YS2#Azu7^u>N^uiz|%XoQeNEW%K4oQm1>awsJ`M&f@+zEBgU? z32%&zefi#Q1lk*{PBGg zd*oMV#?$2I`=r;NTeor$bOyb1w9K3gPh`4pMSk*ml%LFwo(@ z(9eqIkY}|~*&#P{Z`Fl5dp}m~cl2v6ZQYnF?Ydv@+sKrqfDZi0lvCe+5W6u`Hj-=l zd)$4WG8#u2z3uFXE4S}R_9yY%zB4ZDJHCFqKOO8zxpwt0gr|CY205mxC#6+>eH!aI z10Mfl?^Az4++Y19GB{ivR$-nRX=J1BmH*B$)cd)V%h(_+Cxw%q7VPt3H6XW?b?MW) z@4LCj=(%&R9Uv!bBP`>Vo#c6xXJNAK)$<4NoC z^zs8Pt&)+^6|=G;I*=*QW6Iyw5idIz%mUoripn-}jdF=RS6A#{DzY zLz643UG(Q4_kL{8Q}<2k>7Z>^)7G-fV#)6)3*7&*JiYvO%0l(D(AD2HCcEF^7%{`~V(^YT*%^7AYA zcYVv2OZ?f&{kyqi4cXbJ3kC<&IeWnfNN@>cj0Kyj_eHKcPNMy2l{%=sv|M+17T<(VR!)isI>_ zKADml`ABNVUcQMPOUCZK*U39kS>#h^pHhFOZ{3UDkCVS#nO^>R=%dUnd^=_@?erGp ze7pHWQ5AO#^e4AnGF+4%-7(TdSuG&1TWE*Ay&b`BHg&?DQu{BEr7{{o;yX zJ7v8-;NF0Pg{cESrmU-bdn-EgtZbQA-I&<y(nR|cRhM>PVw*DF7 zX)8p(G`3!CzccZLI!K@5(me^;ajkOgQ*o({9UOr?a^_1*V(GcM zvqbgK1+RQPX=5L3Z$0fXfjiZK+FLxSxO z{GoE*f@9pBOJ8B%b<_^beoOf*q9;@2qLDRSu_ue}WDbyRzw12YV7;^DK=BR1de*Hg8uPffnz5$fx~X4R z`PRP^J5W*`Y~M`YCy&zn6q!$X>E+)ezsK$iW-87!^U|eRaU__(J&;9j8JCHJkEDv* z28g4QI1)ucMFaN(bTNOgLQW22LecJjxP4ytss7*JyQbK3RGIGL9de)2l@+(f)B@~$ z`Ai-iR8$Pl$VoEeAnsKc?3FaP>d=K#H9k%uFDx%CAMDDYDjv+fk+$|;?IX?n zC%f*Z5l_wNOdPKgu1VjJVD=RQyw`V4wS8$C@$$LNdo%OCdex;RJxJecedm6YFUjOH zhWxQS-T@yWo&x;ALyxSo^zuTU;mkkTk}8t#Mf(8i?AXsdj8b{_d3Y`-yGo>Bo7+Yo z=QM3Ob7p4rL0fBRZ5*Sgm0 zUVFV_?CV7=frz3{-rZ5|DMd&`SkPB+djhk zDgJUe%jJhc+QJiHun#N8i@!WQ)0<=3TjDwx|BO(XuBQ&A%WwB=jp%*yC5nl z){DV-s4c9@nDOU#(-w~C%`o-4gLgnCdc)L4A=__tcIuSjSu<2Ft{%Oc>KqMSNMG$=py?+8$R`^f9zSg za^;4V9`}_i@x0P&Z@2h?+P8wSRd=F;UC-UJCi&=Wvz9-(dX>kTI)C~WPI)M+s`Bou zy{p7qSXG;-T2|{VT)H%2ZWX0Vye0P~5?3)A zAlj=cougl1gtW`dQgd(NJ=OX-i~FmVRV_?Zq*GpX4YHT^o2O{6mXUdW&V6k~qJq&| zM=e^jVa?|HCKnFkV@_(^Q&Ce@7NB#wtm5ALDwdR0cs%f{^(vNE>zAl1t0LhLk)I`q z`U5qk)pF_3(j-R?Yj)ny~&$W8z_2_Q4prTv47q`je?k?!&a)k4V|t=P)h*wCkx$ z&tY2p)QAO_+=ppRH%|;KLAejpaxWQz>k1yiw8D~`;9`s~jTV2_p`|YQ4b$>Vzdd!y zf0&kgx5UD@QQX6{{0C$Hav=XUzY>(cGvtTjTMWwIEg*F-QDD)Z2FhQ|qMr}SUmmy>%mJyViENAh z`75pea~Ay`Q2x(Y^t(a%KLL{Dg>4}1LSd7m6QJZM2T7Vl+@gO6C_Y*j1^UIH_?$vm zxjz9)?&B8yW1!q0wdfxK<$gOTxwnBNL88T?-{j2eK%$aZVbL!D#Xkn}pU}E9{{4yE z#6QoXp9_kAHx0S+;RJ|?iQ^XiqoDX`T^~*phb{VtK=C(l`P?J}}25<$q9F#vPGza}6@Bz$wXhej2!TZ1_a2Z$! zHiOzfAi4-N^$JuvY99gr3F*`4-_PYH{v$2=+FxMG2Mwpbw1T2U?V91b)fvOu;^=l zg8WM#8|YVq@~?dga$f|>z4Ty$egP==(=7TiQ0|!{(*BFW9B>Wjf#g%uC0b-~WiP05 za~_oca~A!>;Jujd2W!C&a09pf22k!-fO5awqF)Qjz4U^Cegc&HBJh4t z`x#X4bUw{Sup4XukAn|^(rfuJxZ9a;2iHP3fvZ8SH zFN)hMyTL`E((x{^3#4qgWqf!BgDkhH%t7o;D}tIFY1IqY!Q>afmX++oZiVEhfstgaoF zS(ymV+B%+b0-c-3Gf!~J*0HSPoUC;rtC#!X>@H5zI+%Tk`^llF*oSg_=n3xohaEuY z=FVa5+_w*F8$pBQnHd(Rc;I6M3dye~wypwszHvYtT?h{T-faioR?gu9v;=XrM$0W3cPTIr$)TD0i7bf*`KYq=L zYtR#V%`xs>`A726C7OSj`?+h+UyCHy_Hf^RUE6h>&~@E@?j6_d<9;G`GDa%Jj_W?< z_!L5!a)|r>DF?Xkp1Nl$(oSvXesbz5?#HK|(0$s8X@oWH7{!9MW;6!jeLQNXMF;)= zcX6Y2$H986i`kZbl}?$iYq692pg-T@?7xv`?f+H$s58O(uwY-z*PZ=*=l-yxFW^@E zy6DvD`a;Bio(nJdzEFFjbzx1W zu{OLSM-O*&A7LrH(T@JUqsKe?N*aIJPjdACaN$jL^ma$z=;$&>&vNv?xbWsWdat8> zN7p;L!qGQ4y2{baO_}f?bo3EN*E?GM7|FNB(cf_4Z*ugf9KFra^Bw(1j{boQ?^#Db z>*y~y`TgYL+e#p^xI(oXJ z7drZzF1))O{TWB!?dUQ`FLQK`qaSeekDNSpj{Yl0H#+)fF1%((|AnKsIa>Wq#i!NL z*Esr*9sSn|53_DQ&UGcIKjD21KgV8lhq3iM?K2S_j8C*;4w<@mr>D{XGeYyuOSA97 zbJ)N3fraUNBJSUa&~h7g&)StV`eelZixHZ>Vw(G-5&u7p(9A)nxt|^J|0{$E%aakI zUyaZ=MELKG*f&M!{}OTkuMvCBbx8~V_K3auLHwt#KaS9U8}WZzgjT;j>^~Wy?}^Y~ zh|uFA>GjnJ{bWc%tP3^-=Oxv>I&=7Xvs9=pj%p%@t90pYen?BVMig3C`N;NFH zPn4glwxTZ939Yn46VnDvOnFGnd4&yaCUBVKr#Rd(m2T^jPEAZQnKT-HlOGGR*iNm4 zoi=Z5b}D950UM1@gXx_$f|zocrj#}~`;ihwEHqIQigCYTQYkB2t5!GNnGsNS+MkB1 zA-A8bp}wWwOLEYpD~T1g$xD)>`W@nB7Y@1SS$YA6IIlR_ftH@5D-Nwc>%zKdGHiA9_bsakOYM9UIE|^kOT! z@CK_7y>aStTckep)~CyDa{BO_mxA3$>{lWR>>#?kwrW-~wUg*WZ$m2bKI-|VC9{i) zV&)ojzmYk!Rt39{Pd0Sg&AYX@uYBtx?+jgZA}Ibn%P_zTjixHqy$8 zvBXVXvv``wPibIg1S02$=Hf308+nquiO^pH57E(RXRMtu^who{ML|Eg<+I2vLIOV0 z6+Q1yYmiwl%svOZ4)o|FTYJ5X1wUk*^hIxC|Cxv#3|GCxI`nU@8uR99t>@JmSJrYw z&*z(5nfc~gGh}Gb7bR}?+|kGCdig5(;YSkoKOFx@3j9Y3{6`A>znB7bghhMq-WL4< z%UoB?+|%258MW}^Rh4MA=of>0tDAWVnX7FF{dPF-VaP(`Jbwzdf=__kK+Pv;-s%fr zBe)x^13v>U2Q|-74gMKe3G)8BG7dfqmVmoJjsLZS1>k=MW8j~F6T#1cx!_JP2iyUA z;4>h5r@W`Z^I#ju`abWoU^n=mz?0w~gU7+`;8E}?unYVn@DTVUsPU&(uoEl=JHS5# z_kfRs?ck?DeTRPvYy}?!w}IQhX7H0>Blsv-2W|zIgQW45)!-Je65I^N!A)QZNZMan z1TrRK^n@`Vcx4QFJvb3;0&~H2U=H{Q=z+YijQ+4j@H{Wqhru53A+Q@<1D*sMz~kU* zP~$ACz%H;JJOtK(2SDb*jGi&(r_B7)N^lS6j76JyrcZ!v&>sg|!3V)@;Bv4Td;nBG z<$kaZyboLs)`HdGGO!Y?0psAkUL z8#oVa1?Pg>z&T(uNZm1d&}M^m(Db2;|WTC&4M;aWDoR1vMYm1!_L*5Xjh| znODmPJE1in)&Wie_kdS}?chYP4V(bBg5$w$;5e`u%mW+2v0xoI23!t~2CKnbuoAoq zjDuJ5UjmK-i@=d!0eA%%14n>_=?w?*>*av_)F;KO=}Q`SB*jqC!eN;cnO|yd*)Go* z1eYE)U(@OgJ|p`Oy-jo$aU5bDEQQv1Yn^j1{am7h>r8g~_}AZK5wiAv5uvGDY4$ZZ z4!fU248k<~(9-BQa)s^hCsD%m>WKY&BvRP^xd^{^BXl=$54->82)|jRRoH%Ggnw0p z-~WoxpCseL{_lVY)5jzBH%IJ8MZ&u`BHu3~_WvmoeqMzC&m#8!Ekb`Ul3!ZK5SDjX zB>n#^V!t&aUu%Tk7fEm4m1+E=mrmd6@sy zNP4kHG|m2{h`b#U`Lv!X%&$ID9;Zgyi)$kO7e>Nc6tVwZBt5?t;ddw!pC=;j|7V2X zya@dl5qbYH!e8@F;rRV^#J%Qr!}e<<>GeV+{dEp;*!>qHwAMF;?LQHr|287ex`@5T zUBdp$Bjro$yTbNKh%o)#2>nKc9uvv0{~ZZW>(|2kwnozDk%;`7FAcl@c7)&S5%+T< z?%#~0x8}3M{0>LxM5=+IA1N*T*-`!xTJPSlyf;VUtA1hF zzA%!X84>#RNP7HlJcs@NLxkU}k?^01#Q)DC{+C7UpNXW;-$nBO-AH&>N9@t>kS5>V z5&5NeGc5n=NO;o27qiSb=G8a|9-V*Xvrn5yhv{Z2_rE!oFpr(Gq!)wxwmTvAh6zg=l z-!8?Y%qZj^AWFzsB2;X6bWPL7<~0rFO#2wenv+T{DPtU6hv4O7dkfeop=YEfWd0x302loQsT?Nv1oR$Cuc%a+~8 zPO&7cYYCjGE5kYEFv;X@Ezvio%a$)8<~B=72D?+OUlIkgthTiFzGcR&tR@j+Yt3Br zV9L~RDWO?olgLrSg=B7-!cTKrdLIXf)>PF#n5kxv=eM8EewwnwTwq=c=hxPR&5it?19 zD=6g^WN%eQt_V>^Iwh7Ot%^*78<}bmrC$#1IyIDWe}AbZYz=q5 zN|%(=sMSBFZ9dmukQ3)V9>9du`5*nx!_w_WMt5WHm`Wvs$d15;^9xwA5C^`@v=cwcRW@tbNLXrDqR%4nL} z8f#>8(`0_dlKU$XEXPPmHjmd=$jF3l7MG;*!KH1mzu5RR&fF$sV-R{nnC4o(!_Aa& zWaLj-Q~fBrwGXBYmey8Q)TAgAL@K9@e^dR+E6Poia^JGjMK&5iILq!^SX)zJ%~FNb zRNi3QaKG$nCihXgZ6+88=8$8{zM5jsfz&1~Qm+;ov?^<6Qs1<_mNu`zu$|h&Fim}Q zq=}w(c-zh0E?{*9luyJ_VVVSUZIv-F0V3`F6qv-)GGmsCD)q6{8o6fw9!O1A_j{E* zDHFq8!PxSlCtd?{i;eS-_dn7FNSTJ7F`Ydt<<>pQJ}?bEJAq6(E~9f$RaOzc{4Xpx8GbJdVKH#_e zXmxxTn>SY@gSg>Kyu;TAtxq`a_;ovvhv28UbugIBc(blFmW-{x@A`!03`Vy*PZ~q+ zfo6Q&>x5Y^oD^I&KV3muDjded?clO3KEj30r8jpl)$zPtLr^3ALoswi2y;AidZC+Q zt(hXQX2XZ1(>cS@Q-+SLz|X%ozv%jj=REJtQPO*YY$K43{kvnH`$P0(V)h(y=|Jbv zDAr00N3I#S;sf=~WDK+VH9F9vk&)k8Ly^kcL3lBA^bCgwd7j5vA_wd{TYoXy405A%wzK*nPH%^|JZyqq058F{Zfk&$zD zCvKRx$h!ymWdBT7$-J{!qi$l&NX^ao4ZGzGj#}yK98BKRA-%8lWBYZcNT1Y}%&TV+ z$%}QF<8F$sC)rP!PmmUC(f#r{bbpOR&aVye?wyfw#f}-I>0;#i+#^jTzhwG|u`sz^ z_ayqbn0v`noTTHW>S}MyjEs?s7fkUs&4ABf@=Y1lpPu#TSIfk&afd#es7y-;^Xbfy zJASOND5nbNLe}sXzd=~aYti4&82QTgk>^)gSG>3*bJUJ?Ynw{W{>!$%#q8d%WBz0G z>lGm9FaKrR4?g!^-{0L0&%5zcoH1g@3(`xYvW^})@@LZoVd;NIFL1^SzeTUx1$b&*)znyg2J`GM zPsz5rOi9<`#u3t0_t>-OaJ%?4&oeG=d$u4W=S9(Kvwr*OQgr`*+vxj6UeoSH+nj*^ zmr0MevNCVV@eYhZPaj!(nX-LDf7w2LO{i>}@T{)mw;%Y936uR<=-Rb9dZYtSyeE4( zXBVO;w=uKz_!`Iopj2QMqAO@ zbb_rj(g76c5p0CtLkKdcSXo-p zFT851&6j$@HtXDIUwd$`c>gJRa+LRr^67=&E&4%0#$$i0e5U)5_m&r%=aH8I-`AZU zEBSlLE14IVPyLt;3;AD*${OgI3fzWet0QgNh_lK}pvNg(u9SvjDTlK&V)JrBawrbc zhZvUUHxYS)az&e#7d)#@3`{rajkNlq!g2lbO*T&GLA=Nw3*<}BtFWAxOZ&LCO_{j$ zm+@BOloOB7FUX9|3-eI?7%DaTsKrn5lU%21JA!zs9Cf3UDu_=h`KCApY3uSKFU+@_ z@WfAX>p-5yh4J}~8LcX7XRyhy&1mWdn^yjg{75^aYXu9(Lc)0*wVwGOb zx;pBL)Jgi>qFptSumjkRvKNjLB7&q-IeKdKCAtT4^!J`ghonX8p<*&4~Fumb<|#hg47Qtj$H z@I*gpipO)reI4mY8qAm6Q9XNsj`bKfl4^*X`_!jH`kCrLRO+9lycCZ+7;T*bm14kh3qj zjQ{h_zTq&*3mEc5dtENUOT?7KkuJLt?ioVnIp$sGN@T3=R3 zzfkF#Xt3xnclMem6rY%*HBTsi7m!!x(#K=?J6h{3L`yHvP2hHr$Rt`V`g}KQU0mTI zGJVb{iC4xcRBOJ&isHg?{wz- zoOugKyIUx|JyR4gv2Rr8C`?9m zaqk&*j{E*A51{?y*p|b&8F-HgEj9RauH6p<{;XlD& z>oJ3Ne4(R*b{o>z2k*JRz`xuF?I!2N7&>^5O>p+P)I(i=?dYH#Ugz8g?Y`ERiC@sp zmpM9k@4e{g;63_(9KUAA|2vLf@E)M78-Brit1SM z`UN@%QuaYVLhI)YO&aRbxwE3rJ9#!^COYUh)H*tNkBopH)~QSNH%vbfq3a_wYpK)S z<2meqQiT4m5&9Dmx+6mC9Ay4em-;KG-|VYx}Y+M?m!K7Wo^jszk5BkW!gyj!5iDd z-Q@<&tSEJuS+QXS2`B^7Z_w@PVGcH8{k!KI)~wq4u;caqo4r$ex>q-?so$`L{orA~ zMx$<;iJWbAo4f}k{hIZw)-+sp2e^xr-2-kyF^9(4o$|@G8y;G_frU&-)cQIhRyVF$ zy)I&5R(LE;eyYByY2#`y>BwL!xg$AS)LNTRlyPh1I2<#(Lp*Fko)smHv3BdGX1DBt zf-}>7Q()M}+duL3QTON0pIKD$KJ#8?yMM4ZSCw(F{keMAdokJC`LC1VifWBhcj@WW z)h0h&0j*|BKe`*{`mpm~v60rj_=)B5F=k(rI+d-~#@+{>yO%!y74W&kdD8j9?-LDg zAiwnezI9G6y(e`^Z>XB;b|$6hPY<}@_rCLU%iVn32A6K#d<29qXPh$np!vC@&VQ@( zA$_uvuWe%L<06gaEbOo{dBmHAjAAzl*T?uNOFOa5A;IKH?hY_n^9ity$ZD^bx>v zu9Ro}6ka($&C`9gcT?8bAh-2}$CCo*1sHRI(&cWGRN&jQAsG&UZ;*qJq{w{MYm@wx2GO=szv z5Ir-F+Z~+sMi}fP$a|MDt6s(g3z#e6?6ZqW%^fcFYTx7RsGN*RJ9;L27aKWyrS~ht zUic>SC_P!*C*}NM{PR6mWxsF~^B&IYJ9Ddd@uv@XFaPZGLth{(@_IfWfBBtX-St8b z=Wg^YjbD7@0nRpKOiKI}ejv+K7f&-5MwoK@CC0@+x7e%w4Su@6lDX^j>P*gT%H+(Z z%w1>P*iPNzl6jYiZ_n2>em8dUNaV@MieGHZ%z5RFGR1%Rj&~lYnK5}gb1RH-@mXfZ zK+oOCxei$)U+n%)=B}QN-U}Jbxsc~(yj|l$ZxH@-S=VglGqC+`&hR7O+v#iVdL-kS zFNOWSaVu$cqxZruIKL>&gK}WT^{!Zi{Ik7_U*yb(pAeSfe0q5QoB_q^P0kLlok;wz zVQlXL_LM_&=22ia)@ywhck0pZ*6%&yTUV|zv}+i%vgh@6moaC8c?or`Jt`x8N)~Hh-FOv;pNKB4&SSNoqSWdJzMP6o>sYW>C^M)oa4gSaSZd< zIV)f}H^&MotT-@G$ApY`ux5qE8n@f4Z-4mI4XPf3QKa9WUKFhg; z2lSFEI}L$eWz#FTqkg}Jzl%9*x0EnHVamX1*S@JeTz9iq%f7o^jajWa|LyG8NWV(X?ZaP9 zm+DU_4f^A6WqwyOkMj;zy6|r1+{r4!dV@5(8UG`@w%72k$V<-gHa#-sdy|+mA5s3r z_@`p3_sk`;S+e$~aq*J7ul2?xS%>jm!cJby*ffLrVa4wY*YuyWl-7n*e@`!qUsSk# zoOAQWe{Gx8$2ne^8Bb4=zwZ#X@<{PJJ56b2$La@*Pc$FY-p4uj>2m42V+v1}GmGBduAmS$Vw8IF69jyuR($)IrF=FBtps?^R#2Gv3O z0p{$UsJ}Ze!|U#0UhSUC*e#|^h_B)n<){2qdoTOx5&N|AfvhSY3rTex8imCi>7ucKchtyM>jzl^bGk5NwsU0L3NykDk0Wj^h-e17VS zC=a#nM}3F!p|FGeQa?rRf;`|;Ay0V|=Arl72+Zl5q~?DE|53Nyw8xS!$p0X(0{*5P zoAz<+i=A1VL2KRx%=c!*FD_th)fDR7Z$JGYec|Qwi65YEd_R5U`(C)Tv6jB`P}6q~ z%eD+ze?puCIer{^RvMgg^huX4KLRCRxX=DG`o@Fx+vP6YXV2MY-)+Oa;N8|bN$)iJ zHX71u=V#;#-fuD9Z<=4eA*0v3CF2Ocr}*jb&p_4;nrGed$rVOxcfi?L`~Sb)E0&g} zj+$bTt~p@}EsQZcWMWT>3J7x)mEFMOPMnGbTO*coE)_dsSf`!vYAU$(uVMD?&{#)o z=FB_IDOZlMGn{>AU|pPgnscX4X9^BAaS;>rS$@3z7iSOHE17lE30 zy$kH65nl>w-W9zZiE|eHqhJE_Lm=;`!UG^<+==}beeJK5zb26XgyvuQ_wV4g4D(`; zcTA$lqMz-|FVPS(u98qA5Bfcz_@4p!Moe^D^t(Xu*FJFBw}E`OBs3oj`YoX1qxk}b zr+F5}brSlJ0R3`M@z!}MvM+G<)13W8Q0b84?9bC#mb)I1q)nW$=pO?WzUFy&NhFR~ z^!GdSPLOwKLi50&uX$g&*Ss&^IEglkzUF@wA1&0(!@R|!ulZlOkAq_|zr&(AujOvc zv!Nx|B|czHx>@x1f#TN!%DxF4ga1a0zUF;pUJfcgn*RlT&Hp}t`ABdPc!~L0g>xK~ zd(HbQoFf)}&F4Odc|NG{G>p5@<_T69=*ab>%?eD)z za#{5EgLJeCJ3)p%6Vi_X`a3~}G81hU{RU9sl{>rxRQ#kzN$D8_sY;1_i+&zRQBO#J z66jx|MpMKR+5-UkM?kVP(Ph!!14>TKR|_>CEi4DCLFp;F2fPJb3|^wL%U)yHl3(-G zWTly>2L1ieWL2WmqQ4I$i4q+a{dSO~OzgDiw>bM|XD>Y|mGB)2D&E;3QAwzg0sU6m zB$d}~AR;ANEcz=zwL9dYaOE@*FNNnpzD10lAn7^khGq=g=n1+VJPv&ucoduuc7Y|} zA#fge0GtbUf^)zQkhaw537QSIL(c-+z?onxSOiMGTft_KF<_%7s1U4!z6F$=H-pvS zO<*NB1B`t1BjW?dlUnSo6!?=J(vqU70dyrfPfbR>pZFJ@Z0pdc8AiKPDYn`?z-vIWlBeX77+o+}nrlM(xnv zp&i^04L!`gZP-qZ?btW0ll!4zhq>?0*^`6c5&M{kKQQ7T_cJ4UxF5RWaO%L0BcqNo z5#M#?5vJgKt~|%R_o_=w!5_};V)Fe$ZZG$?(L0%Z-#5CG`;pN{xt|%`Ba<x=9`^2`1 z#A70>A-_kV3eV%0I+{E-*DBEz;Qc0LJ?{q;I?+1MOxI}=S#%YZTi1Vf?pqwK-m>hg z9evW-Kj7#kj^5?y&p7`7&Cy?U_SZW4xMl$@|E9Bl(a~j& z?sD{3ock|3|I}%-?x4=`U+(OuI`@3H8vbg`bp5@fM>#s*@xS2sY2Hcl=)5^y-*xnj zjvnFo>)bhA_c;4ds&+B@<8mJ9D$=l+L|ep>dJ1?hFWXnsNb8VOVW zgZZOxIesff8F9Q;M>jZnmZNokoUS)rc%O9i0Y~fHIbE!!H~gP=wDjC7ymm(qcl4JX zt#(!RUvsn?PtgY){dX?>Z#Y_d>}CHy99`gOor|aI=Z^pXcJyC4`i!I3Ir`rmt@d90 z-f?uFljl80f8Wu=UHY;f*SNph(O-A;^^R_G^ejhT=V+bpr|Vx_csl=2*Iq~0I$G;0 zB+n{G>l_2o&5nM{$@3XUA93`bI9l&xx!>bx=_L^zc_9V!eJ7AX>q3G{?YQWm zA6@R~px=BWb|L59udxr)-4R;6!uGWJY4p<(dSZl@-?0B75q_!`Vf&2{`u~a0e;J{9 z7pD3D>j?eb2>tm8?MLMK^9a2;LRUxV?Gd^@LVL-DRZEi(C7U;|d1&o6OPM1SWZbZI zeKV^NqzJ{W0thYdFdkW9u*F&Fhyl@)vWkns+*M` z^{jtb-MB9KQ2km=jIXU*8tv1T4Sf7dk*#dbl@ zAo})`>({Pd^Y62dy^hYkt{&PiT>;HEl363dYsp+6b{$XkH0xgccx8E&g?tR@Vc


    Ce$#m(%gsa1O?BrucaVuJ2#vf#r#*%NP_gyD*5`X&k zl_$OX>dHLnA@*|l_|%&3D|ps7ldikmPv1UE_>m+Z`HJqV)BdX0-M-MDcy;r-8HYd3 z{Bw989f2^HpXK)U$bI&UnC*_SXOVFL%*UHOKf&Hf=Jqkmd$FFml}yI}gZcYl?p}ME zg69kP)jatWGY>j0EnJP;D;$39{C1H>W?hNaUC6ux{->FH$jIo}tZ-ze{omcpNrmMX zpGzD6o;i#R<}xyw)5v0OBb#+TLs;jNv8%5v_f^ugf1S@$lbAE`4nEIM>7)2)kDvJK zS2x1$)eH7HDGlb1Dw&6{b1ANFO^{uu(3R6W?=BvWQ<|6J26SFzV@%$|9@*p0^z z`ZtAnE{wGJmR9t~w=~vT^Ca=*n?6rz80=GP9WqEbtS$N+`~2DWT+@@~-IT*V=@IK1 zOOi8KqrmW`=BnS|Q{_qK=Cp2M2Yb0@;Fdae?_12#@U2&?`N1m8#Y5)5k~uQJqSFJ{Krh~=z$-DaFo55c5aQ=Gu>wIe9 zoYnKp`H_#ie*5VP^0u5jE+elOlINw&Tm6ICL!8GR%fa&E9oC$nU()CZu=d&qZ1?|7 z_QtQPV@_|Zi&HcocaTPWqrE79$Y#o5Gz{4@R=w#QeC*!9fptUnZ~Z{?)4}={yWdaY z4Hn;y-o9F;ozgK}hOUMV@|xx&Px+~QzsUYn@^6!LAp~V0MxDDz{>zQZLKpHSpQLPn zeEyiV4D?4$-Yeg=XE7Q#$=$?W`|n||H4>~%Fl*z&WwYaa-#q+oswceu^tJ00CVP|C z#VL!sf7SPrWC{CI+*&X7%{>TjJ)Z{q$}(QFpdB5ZBlAITilRfgtn}NJ3-4wgyv^l-dr``Td*{P1J zZT$&l;|y)HWYt`9H*N;Dv3AdCcb47Tsr{J0{d5`OFGP+~>ckPZhkszZnsMd(*So>^ z^p$0^hVlyP*+_VgB8)2u>nh@!OTJ|9x|B7HwU9$o`SO-~*QB+#tgE!Nw~MyJtV?>r z8^5_YqwPxr&BtxN9rIP}t-pUr(cF$JI1A=G8M`uRCwR}8_kvkF!5X6OpL$DA?FF|GM*cXr)(JVvy7!T@~a~^)w2&e8lSqi`{w>y?w=a5shf6P;Z1>m)LrbYzPUYe_lc`E)yZA*s!gZC zsJrgp^v(U(!SV<5lY^Mo{km^1FM_-%pN=>C<{lfwy!(9L+<(BlXA%4IX@gXb3i$O< zmZEvT_`Kb39p&9M-s&KcpDnbL&sC1x!~{s~b31c4>D?GEYs@F)^-yPeewF#cd%w!y z*I&kYcck(&mWLjXdEUjGoc0>lK8~22k+JDpqrBRSH^wiPjE!GBIhrzZRs3Qb*w;7Y zh2PxFn(MD*u&y{`S1Wz9*Hso>S$TyuL#J<5Sd&S8@LuWq_H&co z#*g}k9jwi+eaOi!X7 zew=#9FfjRM>zeGN?GNRC=KOE9eJODNE@{Vl##EVCzDTC{h~9a;e+HPh4)2}U%T&w7 zLF_u{E55fents)aA?du<#N_*vDd!53tXg_}Y>1y6JOL^xk;oWl&@1O*Iy~Qu^PIB+%^fg9(q`ATluP1un?}G1) ze)TuJyVSRMn|Jm*yt8|GXTQfgOl_Sl8)i+Q*&DEsVN-M>P{wWFhCRv$$>$gQ`i8y` zl%pQju%CWP?Wy!==pAm`YuZ2aEtQY{hEwQu=+A$f$E~c7jGA@l3^a>lHdy*TS!&a_ z4gDdifH0BxBT?;w=xB^>{zRi7tn#s0qw#Ykf*0h`tx+kq}G}d@EA3RR!V0r&7*8TQ#JsqxJf4z5cvX}d20sRHJ>CPkH+3(Rk*1LFtav?sF zFZ``|Giy07sT?J}m-}dA`xbaFzrp?j)}@YqW(2yaa-Xbe%*q+jbCvhTq;q28;QUDUhe?DfNE&}Mz)JS@E}6nFCQi|T_TM^sM9r*DB@Udh_a#jF|5$Y0k; z9qoClbpGU*=;#2gZG2> zxm-d2jv<`9V$9f!ziAZj^WkqLOBV1gTgP_=m81BHtWld|qZfbb7sH;LBzFt=rs?2Y z=9%9On|lL(MaQ78=lKoNS$v1TX?gIiU;B;B<@3~kVeRP4gmJHUD9zrWk6FOFU&Z4| zWG_IspPpHuQY*Rnz8c*_nwWR?Qt#!LNh8)h*62I=lK%fVn4%; z;unO+I9G88?MFB7RrRTqF0I+Ay1bkI&cSZ-zSQim=^s*W zQ2rTOO69qD#`ylZMBmZmAK|?2`j3;n{B@<|Q6KVOpnSF2IJ~Ab(08QDon#dcnO#E8 zAdJE4*zO@7?1|G^uO|7oPuBR(6^be3*9zqBlX-(8#syj^7kO`vs7O=)t>U6 z>kremv3mE(FTb?+$&@>7IE}1BAJE=Wj!k&3?bSPfFdiAV_m}-r`~+i6RtEKDZ2W%s zyS@oQ8Vts#-tXu0Bz*pjv>nXdlso#}W#H}%?gGB{n{|*ji~Ugg7Tm^nqvXkO>Fb&I zP%xHYf3;kH7f-ndAGu@6)Gp zUsXF1eQzR<$vepvciO&Uo zDklp@Q}6Yy@-*WdL%%R7`Ip|N5m{fHwBTxQ)7|XJSTN4pv^L|JNxNCY{!AwNEUEL0 zum9epbs5);Xkb6c^Vg%>a+J5}8138w_O0;VuU#-4J&AnB$oxtAxyiSvFY3Fa6KNc} z2RnbAEU6sJ-Xg;6p#ROn!Lfn7-J?1Gl(6K6y+CtF$UMo`%KG@^^Rzwm{gc0hFa2-v zn*hHa+_tgbMEqj3VPSr;NnSByHO7tjy(WHdpudpst*|_8qntd*pXQ%_N?4v%@{b&R zPZ~K+gW@wDIgTn`$S*m%8K(^M>AuPpr*mg}kcG94uWE0W_WJY@N0mXnYZP83@3?Sy(!=#Z z;kA-BL3rO`y!dkAb@R>*!W&I^r2nhouQFqTUejB)Z+NIZ0 z+#N;!9NtB$V?lcD;C*@YgVO7YK>qP(ucurOF8}zmamsoiKl4R-0bXI?UQ+`~2PdM8FujjJ7`ImUtNPg-M^7n@&`3GyG!m_HYs679Mc2wqu zM)u%YdQ>>j$D^q7_ z13#!t#R$jN3Ca|8_OfLPUO}0fI!KwEVVyuWwEaS%bV?taNvI{-(>%yD(FJ{}NhdU-dCSjme#*J=S|#eKyL| z=)mqd^z4nm&ej*(FYx;M4tnVA?D`!Dp9}Ep%8Xy6Gt|DD`6$hAefcx?z1YQfqv&r3 zG~YPgygS41>%pE?kEcFic?9->OaZO1**i4ox1Rc>a^LsV`_Ju&M_*RPtLfwHd^0_f z(f{r3bOOk&{r0x$7mRD;-;5g!(1nWoKvwBL#eZHG{jIRRO!ZYf`b2}JU0o#Y>OOSZ zq05uB3+wXKT;^bN3Kt@CADXjNJoW45+d=ZFe{ws{W>&g&I)H|s3djE3d z;;J!ozF#^))$O3nNEfPj)m`RW zRcLSNH#6ybPIzw8|AePx(_C#gWhm}VHhTR%;#@$z&Hx$Tcyrps_`9e1hSzfs;|vSH zH$V@aw{E>cUUZFx%2$jy2WhZylTB;hWu{){crXGkEAZ=~d-}`HuW2jb`?odT3xqxB zw;1E^roC5wM%PxTj}ok5P@bCk$}Ltd``ya^|CWHZeYmNPmfyj6M$=GprHUi#V-Mz- zdaCjxy~{Z-uG(sOtBq@=t!s2?@MtIvx=7EXE;Ra~$8#L7GU8g^yZZN|Sgf zt-VaHf`j=AKdTRu|L=U>?Yj@PaE%Br<3o8~?En&}~Ax2oUiY4X!CR@xpwdQ&2&E~$X^Z3u|^8*Rxdk_Si#f*;qP&bDCI+ z7zS&C0}KlrIKj}X-`dicI@8b^*=QDSwnsF2jx?@Uui4zPrEuehrpMR-x}FuxTehre zaK2oQe(L=)=|jkGQr}CZiOJRJCb@3+Vg?JPDbAn11=>d0cuD!Vd@7pc@Rlhrlay6g zcGqk(n^{Rl!`O=!AulK$X{9nKs;MHCW^2oAznvt$O?zmyRW@4Mm2hbm*0(XX!mi%j z^ia}hI84RTFqBrpTbrBe*KQa!g8E?{8&!qr@J8zQ?Bba-3+ESyh*?E5XBqeX_QptF-0o#sM9sg!T|e9Xa6|%gZV$=?4?I{u=t<4&N6mlFie_$^*Z|kZ0N`g2tPK(x_8Mm z!2d1IzQj5kVBg^E%aL!e{O_DIW!D7POX3=i}6|W|6Hs*~M{X4*|?5{1cxbhZo4es*61~3m? zi2GcN{zxzbI>(})4X(!BB`UGP?FAL?1&jW9P~oBr(1d%&qTdZFoa3OvISMMABNqKG zP~jZ5=pO)doB8VK*_V)qTdcmo)&N! z*aR*I8$jw@VKpdzaZvn9K=CWK=of+FcZ)^802IG`kTvs#QnLPW@I39@{opz9Uhptj z2X=z;zt5u2IJ3#Wz2E}O_gM6`AVT@q4&I6RPK$mkC_c>&8$j`^v*?$DDi3#nDi0+V z{bEr3ia?daTP*sypwd4ZRQmVQ@GAW;SoBYVst5Z(rGJOTmAgTO(+(<}ofiEzP~o(K z3g>Z){x(o@H-VD3(W2h~iccM=_^+_&F9*e^7F7JJE&Ao4_!K)V0L5>bMSmi=3HuyS z@nY?Rw;nv{@Hi;@J)qjV?Vt}ffscU&;G>|FU5Gx+1ik3ppy+K5S&V7SnG-PBcD30D zU)Ti7T>)tLIQry78{QF6;q3?It`U^GxT9G#X3WnqS|EF!Hz@m7N0&G{*U|gNTl*Cb z^Bo==XU+2+W`p;^=S-fJvlCSM?gN!i9Txq)pxWC#;O&_2w&=HkTgm_J7FVtSTX0tm zD*r0MKfu1+;z}lSP5S18sz-U?O!(zm^hbiqw;YRpHnH%#EBAwn=U!0huYvNL@zQS5-w7&S=&2O?+d;+aaquREZ_#f6 z`EDw#1Rn(B;0)~Vu;>>!^B7owdA>zo`lS}(Ui<9juN%A(`%@Nuor@v9+Ltf;{ooDQ zcUtuKIP-RJI_5hq`j0#F7H}Ho%@+LzXTAcw9`ofE{RB7_y3(RAy;f78ODy`uU<|s* zqF(^6N1l9;u3tj>u0THzybe0oqMr@Yg-K{bBj_Jz0CpMvj)2R-Hc;^|02RM{kS;=E zqD7zKJiYQ0(q{$wC%{kO?l?FJ^J5nML!jhoclOd}bv5>F7X59`yak+yd9y{o&Y7Q1m$!RVcmo-2ia3pft*0*mInBAI7H=V9(y^t<_0rmDxEqVE&W!x`0KFf>zpH+z(l)6U;3`7`bOUs=xh8!{^OwXs{|Z{eX&Kq zoAHq?3J0WUCk|Qk4}#gy2Q2zJ&xj(C(0B^y?*+-~#2$3G#fFx-` z`msQNB1lvVFA*8p_kskKxM0!m1eMM^LA`gi|5$VaybnB;Wz#|WaWL|afu>yo72iV^ zSMCQ@PoytPa_ zOXje2v?6c^1fa13YB;JYL z7X4OG>Cyy>Ujs-K5_J}R>CI67#6jhc^k&t7I`>KGrSU3oI&TA&&UN4-uo8R#EC!c?tuTep&^m{4hcSnq!)_eOU6;cS zhpi6l9L62S9C{AB36IC2T@E`OwmPhH7g4EC+*`+NN7Ys5nEl+l#vI{(a?C02=f_;&-Zpk8 zYOjusJs-8tGmEsla5b1 zF$ouwE^+U?X8$$#xu%Qz@oP?S-=BXVA71$#+}rYZazB5~1eh((6^1Hbo z%RkQjaDEr}o!7Qsi?Xh3+pf*dI(Y4&YY#*9UVDjq&$Z{c@4xQAb)@}uo!pOJcZ_>y zY=4aOj_u>#9^1{mHMX65&-Lf7C$FyW<$h{f_cX$pcAWeE=?A8hp3{$T@11^$d-wD+ z+)qwF#eLrmoi`x$4IMY+WFEQUD9`6^IM4me4L#g<-?-;SWW2GRdwap|0%BIMvjCR` zM|tj;v2O-$X6%`fowa>N+l-x1`${@X2*0G8`|*+!+8xbO8ld_wj2 z_}N)|@9em9-<_o8on73|-Fcq-z6G5N@V%g&`}PHG+>b0c%Kh+yF76i=^m0G5poe>V ze0Q7}#dpTZ<@n)v7gTTj68E0?IqsJhwwB?$>?rrv^6lkFP=0`WNBKVPC(BQ9KT>hD z0%`8ra~CDelJs;1`Y9&yEc(;aRCD>pqVW{{%Ns3y zj>b~-&z(Je1VjIevu_rE?EkZ~ALYUe<}>u3ll@nm{k6`0tibYL;q1Q|*gN`!qrZ`D z{r|$zyB&Sb(S44-)$x1E`M>oB%l|K&{q4^F`;MOJ=tmu0;pjEa|3i+hbn@Qs=(n8v z|K#YUj=tN`dXFodq154(ZT%H55y1p2pw_bj}{KbVjDwWEXir7seu?1TBJeNNtB{^;|L zUocWn4joiKJvSc4(9LPgTL&9`Aqs+hOUN>t|2ZwOPMiC6J|iG zAIN{|Qok`w-vIwGy*T3j+r%wwe`ACm8gbu6NMZM-q(hkA7IFW(h&(@y(3c|oMn?Gk zJi>2rM85n8{ZfP;AK|w)!td`Q;r}Wk-^U{E=S28_Ct}|hvH!OSt?vuGq^_?o<~_L9-X z6rp1nqgKh9(k11|Rgbl-*^*>|h+XA`rn~hpTW6Y8C8N-ou4!Z>It2K zJcS*tX-T#;vS4G2Q+L;YyyF^av3Eybwrp(L_{lX;Mtfg!)z*htuEcSYEMQ4m#e&2l zbx_=#wPnNQ z&#F{#TXe*w6HNT;8yXB_58Z$Rm#l>naWLy-b;Uhy1&uP^h(#2%*v%w_RiPM4O)@FD zVQbT%dKJl4v;L^EqO`oCCMi{i4{hDB+NM5{a@N(QHKq3qur-HZuGV5Adyr*X9yX`6 zHQFbY8_teQy7M_rE;z-FAz2@-Z`z9fM%g-5j(U{R$)>d%u&B7d+E5K^A6~PiWz}O^ zab=x9YSlER^3akY)+n7cG3bw#i*&z5P;$uf0p6{FJ7v=n63sphq6V^G5cFrJr3{CC z%7C)N`J}TbKQ;oYgsH;nPW22Gg#pW!Od=_7my}oB6{v-rJwJGwm3o?)dP+UaE=f5{ zJ%wU4t?PqR`_GgD9f53>WWvr|vAQcp8ePdwQ3PwmO4#VLJ`vr|vAQco-?bE+hH zz#HeJrmrLmWnQ|)fQFiArmu<%d5zdOzo`~GkfC^H@H9L1G%NKqv;WDR-5O}Y_RSKFE!08~%OtL2BGkm&OTo1@thU_2czzt`DmZ@{Hpn zeqz0i{*&pde?)zd0iQ)KeDx#3mlHc>^g;R{r9WC%ow+lofLvl(NB`EbPGdO>yNUdi z2K1=uNHcrE#T=K$-@R@4i-GbacN&LgKElhvLnU!%j9lZA=E~u&pOS_#aE;IZK36-Q zcEQ8wEhOCbh4wr~_RL&fXX0;Idyl`geN-L8?S2NCo4si4L1w>B%{X|z6k7W(`|+pZ zFKA!jlSAw}cd@6|YVWI-N!lU|*iHR&w*Q0w*mIOSLNF~ZQ^r-fJ8u;c6*&^dw9FJ$x&A)j=^ z^*u7bkLl+G7Ed-9|&M7$@Oy(QyupTk}e>D3A8Br-a<#=W>|q~-l6dKq>{_Tjzq zPG4<|bYTo9@AKnYYx0clGB0ln&nI|R`tURP668mqYqEpAKGNf(y;jzp*5hAZ=b`qb zP^o#huhu$n??bKES1YjElehI78@4vBLC5sk7D5YM`Sw}GH0^Tc-Vq8E^ME8*`qiz% z%H=Eu_&PVsL3iDuv zS_hg3s**4dRd|lDDUXFm9UgGF9b|s5P|;+5uCNhQI1Lv4T2TBe!CdeTkUCeWI?8-i zAz`S#C$JOxgrz#1Q2hjbcu9l=AoSxFhsGQNG9NlDGnaAf97fc=>|vP=jf^mw11a`o z?KRCwDULMm5L|cipmBqsT|-7=ALPTcj_!7TO5`8+=N)~$^M4Iyx@I~1fZr{m2{~xz zet{c}3k26e9zvuy5+Y3ZMeMJQ*sI+NyZ_4wT@j&IM(BTy(9IG0ScFzs;qY1`wDLJ@ z&u77!^{bm7v!6KTgDP4tLcM{3Rv)A9Kj8BSv(2j;F<(-)bje+&#~jqp@ORdRt$Z^K z?8S!y(ZTdv(7GP!y&JA;UENjh-1XZ--R;1HZtiM&D=Dq)eETH(14wmvUH4kjI<`1W z*#_NV+dDIzE!SL~%(*48*qox7n9VAZ#oXdzV?TTD zy!Y#;@Nv;(J1XRtuEEZsKdOw3$=04jud;u+>wqdKm--jF0$T5B{Y>QpKWu;Hpz|Pp zs#==QX8ur(N~<8aKIokHfRDx-b!l8Xe7S0yGWwwYO0|n;o%2zGToSdKis(d6V>t`E z_v^1T;;#)i@+5cXp{IdGG=Mo6hWjhD$7+*J{Zc!n-|um?<7d$R3i>+HMVf^kxNP*n z4M8v5Q1rtMLl&>D%bz(w=_y_}9>ncosc{&r-hf z?uSO_0{iu?t{!w3ta}Fcq61y9(m6Md{rWF)X74g|J4h~ym+7}Dj8=0FYq}Zbt$2XD zLCkoGnRtZx)x9U(4dc?n=*scf0MuIZPuhd~742t4uQjy7@0nosPS0me$()PGdhC7N zu%2U%`h4G!o2M)v@#vB+F!T;}zSH;8&7?~fX{Gd1Iw`$$hN*O%zD_^uj7#U%3~vr= z1M+@?zu%y%E6BUS+!9aX)Ssr|zM1wJ$A}9$gVwD>&nA6xz1Da0Gi8qAZ2HE}vv*eJ z>We)|pN)Rbpzglq`hb;RjlZxU!+Y}==rXIyc=}5^=RV*i9;Me&whS|_tqx{mkoVp zuSxISU@}b!=?#7!xiXwS_E)U?JT=xItpjSB_tl>98190uU%SCuU%!ptmUZ4kP5+m> zw*impI`4h=NJ1JuOfXh#89QP4uq`{tk+HDB^)$nmgX0M%ScyquM-l=ff&c-+!8U2e zHYZnU++L_jN*vD3IHj#{Xb)|10;zi}$FwCW?I8}=r7h=1*rZh(+Dj5*3kSma{ny9L zo;@=N**Uk*bJsI7|9RKPyVqWO?X}+Zu6M1~wqirDX00LCtVRE{Y;8-o>&+foxxABe zD>qC_n4XS*fm!}n;KR*$H|WPsx@MI}Q0Npcd2$Cx``EA*q-jh)WiiA;$IKaRi~#~Ox8JnjYp^}Y0Za#$w8_M^{U|{sQcUJuos*Jy#u@k zd?J6#qkmS_?)aBU_5lB`Y6ALst@z~RLxdwkhawH)clh23y*{D;r=wP*~d-FQ5FT` zpcftO-`9UudgA}m#n*h6=nD5D|DB_&9sQS%9_?t=E5*Ou(SPP>>3`&Y?&y~s|M%mk z`2X%`jgv&b$HiACE4tp%&pP_o9R2?~+TUNlXn1*fZZdRuT=tvLd~&Xhe_?uWgnlhT zKN3l=wBhtWh|uah!r@yY^y&z|wg~;Zk@$B+!rzL7-x~?1%_z9O-V>ta+#g2h(0Fdi zjK*0XyVXreb*|jN1XxkW6B^@{2rD_rGc!N-sHm3a*>lqKTiQF9x2@S2n%cUA;U7cA z?zJ149P$%M(@l3*ki&O63Jl#`s0X!I)Oe87zLuf{vK?{3TuFXz#uZ}w+BFaP$r*;0 z8`jtf6wRh|y8mWy8XiOz7nH`9ZUC8^6Uohbg-3%=y>sQOnqKOU7m^JIApb3E$#v?wiZ znQNacWygX3zi_DWsN@T|R`bicefa6#{J50AE{2UT9Z;X9GAN}#mwgKA29rqfGSJ9h z!Cn%mk4DzW>CeMusrCbTVAw9YPt6&0#X93cd&DfIJ9?TiDVJ>x_1S}TGB(x0zlFQbkpQiHvu>4sMiyy|PT&uiiNOw#eb8yWmc#s>8H z>gu=iEf}-B#Qrt%*SH}pqsy-pzvqefZshncm(@qxF|PPYm+r?QP3()Kd=8Lb?N?Na zxBPV7a^X)`*fDo_{~O)og_qf@>)sgSdCpQ{%=kLx9B03+0rqv{`Ug%-VgDqqY3`Hj z`}CwU;~u+5TXEU6)#S_OrGkCU^5yJ#MDy??_JlvlGyhfPWm4#DtD*98DY|^qBDDvm zjWyO0@(7U|*Oc^-ZAyXbdqlfGW^ zJ(1E2EGFlHq)VqPCMEZeBVGd3{J=2+mHrT@^nD=tOiMlkllwtF>3tTHdqJh&4r<;& zZ36GUIe%Mx&XG^?IRkQu^l6L9Q#Su;>b3YKPlDpp2P)kjQ0aDoN|&{m+zApty~AQs zFQ(Eh0yWQ(0>^;$AZ?SOiC>+776JyD2Z-&$j(m-XZRh6o#OX}%DzghqAU0F zd#LI#vUOk8!77bI!t!w&d?a7`_FD~-=s)Bu_XWP9zv*b^LJa-aj@Gy(oL;;ofA+iZ z-zR=p{``!ief=Q13HSBk-=XE_oysFjPk;#1|05DUBSK$@&>xJ@(RqT7NO;(2%f1tO z1wxWh{te0pM-07W4~&|;orN`<2uH?52=fE0(x(K6FF(z=?Uw1K}D{Ip+nEupJgeZI#2 zWt}>Dob(mOIokL6=EWl5QuXPRipVzH-P`=Bp_fS#3zJd>d{nX^cE_;mP3p=O06! znTtKb=wSEjmBF@W*<;nqQsHxIqH@R2%zlV5JYr2Weo7cD>;t? ze#*~xm7fWA?nibfbMaStrTq|RLSBpf&pj&r=tHFY3tjWQsRNqRc;ZicIA2osDt2F3 zf6dYCU#&Rin&h>O`m?}Y@9N5{M?XJj<`=hD)ZNqk^9wVm`?b2B$^*HnRy;)e=k$Tf zU|r(n9TRASe7y1JAG?d^JfG)1kLNy@=Rb$}h}pX@ylnSdF5Ht+`+VAYx;|uhmHBIC zyfYgf-|6LAwSGTjjR^|V#>^g}+80!Lil1xw0SWezSMp%fD~;U`Q)j12zR&Y5nBWUPf%a7PkhJ3xl?f-s#w>jy?H-Pdct~dPMxJ4 zJBz$jn`JNKUcDRa2S15x^}aX7SwWn0%e(M(-i6=eUC5oW#``c}-oLA!>tRl=SMNnE zSl7#QkN;)QgkFtNIqRa0{3y-WC#z1{GdNxj)k%BKLF$0&o!-ew?C;ygm{Ij3!TzfD z9Hv^@vEp+o^{iVf`jXivp1f1_?$2%x&MKYtd*aRn*9q@E?9a9|`QREVZ=U@trQ!se zQ%{%jkB;Zn7SYw%IacQLzV7Dq&fuR7?GO7U#@89Xliy{po2d@YrU?Ji_~1ZXWARw( zd}e%bo_*LU3+<6>+lD6YLG&b7X8rj4_WF(cUp8lT`s*ufj+>{GU0tcTt=Q0&x(Ag- z0y{V5J6@MMdx-bqai04VJohJg?!FD|;W?HI%g}bw2O3*GV?RfqA->9o=%qQ@>Njkd z`ETOc=QW4-cs6Z;y|;Jr&b_tb&uLGJ&w|yNs)xqT->-K38`u&0vsN|#Z~GCow^uwD z|3BvqR@^W<*A^?kYDe!;d&qkdj|KOr%@rTk_cV8W%=nG&_?VudZMQqFPn}(Q{fCNp zjAC!;=$Wu@t@umxJZ(A5qa5Z^4s*DN*|do^O#2bH^E{~N&bCnJ)Luzl`@pOH%zHC0 zcHnbdzZ`E3z|(dhf*BmMDh0E$^vQ1bNb(pjEUunuI~J` z$BSH4y!HD!8bdqYo1*Y7HeK2DdtG=MER|mR0l7MI#yngR|5_R-Iojfq=`~*~SB}56 z@++VIm`g8x2QqEZ^|KOAaeaJ=S`^;u20psaQsLv=z@%LM(=J^40Ho<+{xo)S?l~1b zKka9tc}n^(?O)Sy7@Q1ZyKCqzj=mGT7XPV^9wgt_L7xJrg8kqP;1P!hLCur*SxjyM z6NJxm;nF87yvc=M3yPoi2@$_R%8fjy&sa>J1ncoX3M$HYPiZ!ZEPbL2gQd+IW_^_1Zu2BR>#64cppd{ z>Cwja!JJQZ)?vnBtHYGTgu}pLKk4~f-RCgtFypY*Vaj2`Az;#3d)wp8TBA!Fy?-?G z&ZCcxuBbROdXWG7#_Y!;x9_rpm))jJb0P1p70minB78*QeEqop)A%dB ze~<2T{E+#KQ+peZ|8>hxhET@+Ex$_d+mYjr_U#7!hY9!X1ovh1bY4&J@d*7{m)^G< zmnocw{a;*uKJWPXc0=|Iy1s8GVlIBh#n-xArT6qNM2E`9%!~8R`EmS5xxVy(u$=+zb2*)3VnH(?5@dD=Zv-ZzO(n-S3Yh z@pnb&KZ&IOhY0=0k@$~A!oL)uzZaqZJVNh?@cUwfzAO^oF5%K{;j9+j)Xh%Y-Rm)S z*4jC;Ps2~5#Y3GeJ~XReb6&=ef>m;Aqi|O0vA!X&S=J@+WX)=hyPA?6;zL1>k=_VHW9y^rSqBEE9S0p_bBCRp5t?JhhS z`~F}{1>>bk#!Xe|4AC3T<-BCTYf zZjlVQGiWof+)5e_S7BaV<5)Ydonf9`d^`{C)7bthj?$WOB6^mKhNFK`{7FtvDjkPQ z`;%3SOD|jqc5{uh%J+$O&1VPOQjFcqxkcz-bdAxBI|pu+U@Z@7bYqqIgENb`IX&lfO5APZ~>p-RU#v(b1z6t~2x3{5|vvI(zMn z`(r#C=H?%(+Wx9_Y<5&?H#*T*bpNg9-1y)of1TIdd0+kLPqU1FvsVUZ zGw7_8<^;M_rRg1S&*kbN{0nAmKJp&)S_cvl9gsi6jr=Z_u1^@&^Z4+W(al8lB+BPU z@%Q=8qAT`!T#B8y^6?^hLx*!#*ZmyVkLqd)uUn|=c#=AGVXn%lf^wpa9-|&t#>~0| z)z@yW{{%Xg1=QzEbzd?_1#9{%Gs!P-@Bhj=g!pBg=SUrCHckw2%*hhK^+#Pl}pft5nsf_}=(xSdoG+DO;BdSBM*;4g>r zS?z35_#)TZc9#j)_)cz+Z>jVzxQ=Nj;iaxGJ5=VU%(zo{n)qZXeafP-Bd0AkWZY@&FBl^+|?JB_16`+D{jNBeqJOPKgQ zNukO4b)lZWu`i(jy{8duyFXp5n9hb9R9sX_`(RiIzne6^j}2i zHzV{wgq|Ove=|aVDnf@wN8urpnvRPPl}rpjM9Nu@xV9!YF!2jKoz;kfvAwky&5uP& zZsiing0svGUDElK**7I`6k?LdGNfhbK}TrQla>~~;A{xkS=eisb^@1;?v^OZ;^~l`ZU#BY%!wfzU0^L{ zmN{`Vx8mk~vaGf2Kvs(rFFuPoGvp>4?(BGFPf!swH5=aEp0!y1;C{CA-O6_x1!=|@ zlR|6!9K)JA^*%Y@T&K{D7g37BAF%1n{twih2I(s$XY>eVohbRGytR8bYQ4g(s z(L$NCdbc?ry{qNJ?B8aoTzo0c*as}!Z&?l4MeHAEmEPB2Mx)!{pmaaA-gi>(bUy?1 zAjbLr$c}ZQCdE4@CsQ#&*m%5ASN~Cvf2lO;>$+#d$!8qJM>A$|}qX^b~<*=Rf zT5qk0VFOUC+j_Hd1bYuvvCmPZ(PzniK{}}gjG1L?M)~jSrr)Apc%BOzeHQ%^{ZL4c z#r{JI>!Gh2`C#hoO6_$t#kT9(>nK4#MH&-lrWwi=_eZmx4k(M>p{+LGA8n`(o}W=B zjn*#cx=QmBdV`o-6E45^k;dd_68RzT@&C%Y7HpH0uK*p9--9W^y~qyY1Z(}ZACuCm zzm^?@{@>2Mc%7AKZ&Rf*^7a{LNcThf?-R0#q|ZW+adrcJbvH;=sZ~1qeVrM7c4Dmd z$E~JcwfZn@Y*@b{dz?bO*IO&FT?^^kZvEwj=YNKsop`zLRxsC}%RW>7hbV_Q)_O*D0YfuiESFG(`oyoV){~+>GtWvgOR_`>xf99RnRa`y$ zE$U|TS9mTqeW6VBY-o*6TS$kg`&RsWxHj*sk)Ona{kiu&!ZRJ18*IZS@h5e$r=OwU zGWuYpd7XN3a$IKdkI*Civ$KbMgmjsz;CWt#+WRYl=batrE3(I}cidCiv`q=4`P>e7j~NYeIueeQ*Yzw*SygkyfT8Xo(XxOt`_P*y^Wx3 zW2F!G@x$>*TYIr~@#oafH>jU)IvL*T^zFWAmM_ni=lUb}Tr)Mn^F68yPUiJ(iRz^H zSAHkfVb93>{}tBKO(hTh*-ad0{ja_?vzWaH^8RD2J!8Jz%C}MW`Kq4V`gy-;tL$EJ zM!(PX^jv*ArDrPLv)ZU0p4-pd^P~Hz{Rg$5rtaqXsST9_y&X#L8E*YaUt~NI+}Y(6zjM1J>2UYn2TIg&H)c+rsei^c_}Lnlr* zUqptYaQXw|WRFoQ{a%-%gII_GMd|A#1mK?HL6u6cbB^Q?OXS?uETP{$gcH`V14K91 z!2UQ!&zJ#ef76>S8oMSgk?w{DlU?8y#9stzoFn@t+3`#R(W`dSuL>Wm0;k|FJExmK z**7WPaZvG&S$t4-PWAZ9zKOctkagJOa1(d~{;eS8&`=BNy2mIH(R;w_zzldjd^cNs zunR<!IKJO>l9n&#aUCZ(_Dd8HYX3X>~B=g=Xi3+ zdJVG6ss&GiDzBrU^wxbK@{QRCMfbl88hlXun5dkv@iyfoxm?%n2k}ZDx0sCT(U0J- z>mCNjgMAKnfGW?7qc!fm8hR0k9BRhD%AfSaiYI;Q6i|9wJ^wmT`94kEQ#l+5m7k-a z@^i#u@-Rr$^dXDMgP`)WA5^+tQ0cOu((SaE+yN@xc8f_hI7-(8>OPi%Dz67X*{Ll6 zWv7+}Nmre5*y=FlFyRm|@z^~imSw!XJ+_12BeA3W9*Q02_jqMLx^rpJt17k6$R2hS z$yV=TgubJCC%=cQk4T?heVX5anp5m6GFWr2rmFH>JTr33$auxE(Z@%}D|*N5!Sd_e zm<(qaof$JYhPkSO@%;5)RLlY!iOQg==iD_!Fqya_E{2 zUGM1kxbV@A{v>e}f10CdoDJ=-9~aHnkBbt-m%hNaKi_e59WRAk6JLe<_U#`Wt%oU> z;TzUB{0sg>&$)*pwCZIz{4HXJ>8QPu>UB80AwvIAguXs%~`MEs8e@28RdO`fJMZ(h&`g)#?(s(EPx-k84B>uM|^xsA3agp@%U>xRmJ`&FM z9Xc*x-u$`uYDf9G%}b=0X?bYv`j)O$%dz}YmtEM&TEBd!8?-EcxQp2B8)i;d8s7;= zbU1}fd?dS{Wofw}#NZ;*Lx~(3Te1jGvlzFu>dEiz-YttV-3vFddd2GQmW|yjJ6k&1 z^7denX_v?)yx4~Y}?S?vbt^ks=NX#Pie=M?zNF% zx2iX%uPUM6vg$7T;CN&rr`z56Lz{x;w{yv{vYN1>I%B;T-81*TnJtSJ-~F)`DfsSQ zc$c?XGc!lcA73=zsnWvtyJBP8dM1)`mymW%JIG7LR#-b9TECVfG}^k`T(!J!;Vmuq z&Hu&x-(O|NgP`8JX|}r zTV|EpFGf|RYvZp<-{L&E1*)i@?^?ie`5fML{oIvs#{j-FmjKDkQk1lG* z=K0+267>6wI9j~JZm9XFMwcMr5=m|p%Q*d+%W?tB>4YKwm@+UDSY-Y0IMOLxiG=mg z$S1)9`e(JRqxrvxubjF}eRUmm-%gh2-=#a*|CC;{lpoJ(T&nq*mly*+&A9bxuwy#9 z7tqg1O>C`RH;M6j{}k_vLN5lih{O&0x`-^V4Ft}+P-MS?7k%h7eJ&qY42=_t9!Cf|f z!%mRiVU z5+!}oVzM6;zr&!$JG;P9;0_R7hS|T6cgo2Bygv;~@E-@xbMXN2lVlz{jTC<}Ho&iT zKWC@G%I%dS2@KDtZ6vgq##(mMtt>`*0(KNUUGtNxczn0 zEi=pP@20D2j*3BEYS;z3Wi;uzojkMuQiGhIFPwC}I|i+-v7^)c74il12a z@X|Kv0>kXDJ)d5s#f@|Mw3OxT{|nV$Uu^%6jJpxFBXaxUr>yFnci#UZH&p+>RUI&{ z&-}7q90ewRvO9NKbtP&e4AuYdC*1;~Dv|nsb@!ABk`!;MB z)t}4mSL>Cf*M}K)7o5@FHn#sk*# zUmmQRP2V184>j}#ZeM~pdC@$hwF{AMJrOeazV_U{i441+0edgXOO>h96;I;ww zV(;O8U!M}(_!{=~{u;7t{`!>Q`?@ZA&Y$$xd~Jf}&Ak10xwYe_TxJLBV#q!!mqV0` zY?B8mlQ)@j;I(2dOtOk}_i^(qOc|lOf0%N5q$0!GaJz;;`hEJheOFfoXH{kwD&D>7 z%|HDTdvMrr@p$bwQctVAl+PEdgIi7@(^2h=jg9>L{orTjww`si^3gJTH)X~v=H|C- z9nqXZ*j_ul&b+8Rr`YnmFeSD-SDwhA{`&tZ<%#V3$f*Cl<*B(umGe6-&!ObIT<_ub z;xl7ojZ4?IcXPg?T?&*RHM4#m5|Ht}Sr;Jvd;(hYL7E5Ab;emt_K`ovSq=L@`R}!u z>;RRoR*2o|4(Cp8y>-R(J`ujm$ zcMqt1w1S!knFneHI{)}nI9s`ko#)==~tg$;lM2@i; zP~n?Eg)ae>UiCxi#eWny4rIJGHVeYKI^(d_Vaj2`AzGd^#ZF5_EzoV_jpym{*TzloXOVe?Tp5HYMx?-BvZ46-#s;ZYcvlK9*4~(6B=iE z`SEIn^R48e%Dv84e)OXC+~hVp z+P4p{JKBZ@!DslR`2PLA&(Xd;SjhDV&N+=+!}RzF9X(e|1}Ne9(RJ~UN5YX$3gSoS zb$&e(pSo8Ne|04NhaxogCSoXx?#?(>WL-Lfsp&@jHW2FB!9jsmD?Yi5RmEAY9HoL8pKW_cE&tySJ@vSO8 z>g!vlo0P@j+>BFl8%aWBnNhe&>k5#??JK&A&kHkAJRdJV;uCok;X8?xDR-4yL{i8;^eA0=v%j&`B$%iLbtmL+ZpH25N(I`ud`&y1zv2^zIN^zkuEy)9Q_cE$LUe*hh17?ld&o^jqFP-6Y&N&p~hZ=y^L*RoX6V#Yu0Y_1gLa#e7ZQcaLf;EsF*li zX|>1TkD+fTd~o)EeWmW`vp-$(o})iKHv9ZfA7MU#vN3CX2Y%z&SL5gB{~-R^tFM_D zyJ}TTa~klK{v*tLHhZ#d7!_P@^0D$WGcT48?%%}aJhg4TjK?oj#DDxZ=Poq6`ybDv z$=!eW9y-YTMDF8?*w;QGUCPDm=q^<1thoy8BP+3!tioP$1a_0`WBM59&AlAkCjE(Q zXBTk)^;PT_C)-2(UcV|h@EUpqU)H0?2FX10zAn&p3%G5*Bc3&S#_^I_M*XX1v~x;L-*+9&!x zeQsvVp96q;kUh7yy;yPWk7u(_D)qKj=js0Nd$VTNkLK(F&YtUz1-E~9IuFfQEAWdyy`2j8hvO~aC_}%V^@5s;+oO_%6VrmR*YQr zTcn-Dey3N(t{H9h9alWZySB9*UC=ylCqCNhz24;hzgBJc;QP$yQcr({JSKkDGE?Q1 zU|oC1r#~|@J}!P!$ER?XB8_Hkp}dKHtsJbKL@$A#xLNjp1C*!egCMNZeHP7nd--pMR=j4=@B>MjPFYO0TC8?- zb;8kr;xPhE&0`0)*g<9k`zj7HcI_K+Fn31S@#=nJ?5Nqv=yYq%c7D&*Wa3!t)eQ3g zVEj;Ac8}rl>TU4V_|MA~x*ySBqA=v9IQn-SJ;KpD9Q{YcQT#qfYy1`Fr)z0E>g9}o zBEH6ZzW!-^D>}nh?lfP~zW#pK(F&8B#@9tP^y&!xUn2CT2+gxDNdKt_os7_G2*TG( zM`(qG!`(r}m?m`;9E0Gki|}plXj?xWS=FvuN0KgUXJv+2?MBPl-m$zrWC-P^61AM% z?VMGxblnlwj*4}Fon~XKqP8Y9rYH()SvkF}uw`n=#hJhGqaU8Xcy{yrc|kr}$kU1W zWwz5Q9t2Q^!yN}qzpeZ@z-p1p&rcrG155D5p`*I!zF1wZUi)!?r{C^4K<%KM9|tT! z-o8m5!yE^AJ}ITe9itHpJ6_2GH`F+w(cNdtrK)q|fL?CY@hV_Bop^P8RSu>_kJuCK zCm= zbGIoTviwJp7bMS*hJJhUy!N{;l;#Es%75G z>_bo0HshHY(2{2+gA}P5&!mu>i8tQPhm~K;H7>o9D4>Cz6II*Wn}a0r+<-?2z}ZTbz+BzKZ)rWZzF# z){g!pa`~g5i{01Ee*Ryps9W`6Wb#e?w{l{g*7X~?b*_^qsi@{$>`$_X!CA&2zu;Wu zRwsuCMh<_($>FnRwmLaHW#sU@|14y8?$OBM%D<7rvGI~!)oT;29Io;@%Xm*R_)TwK zXy%IQVH$@e{=;H9Ow6i>OSJwy`aujXOM2sR1e~_ zzvcyXB}R@6%enu8pXAb?a#M0%?)ClXG5i#ct%7lX;OGQ}DR+Xe!hQT#L=)Hdn_q&K z-0JJiOO6JNo5nA}ITw{%H$}puaxBlbApQTZ<#8OC z-EM6NoO99rQ+>c*SFgoSERVq?rNCmj^P+Zao=-+;aRcO2tdG$sNOp@lDFx2me$HCUBlkUB9GfXxi*d+mhn$=)&}7x(4VG) ziLai2>_zs^wEAc+xRq~C|8~OJcW03m!h0wM#2&GrwU@uLj;z6wEw^Vwd&P#!&EE4>7uAWs##rM7*Y!NXS|^7W=@jEU z>w0YBCL>?^=Y4|bZO;M9pUI?W{~Gp>=*#w1v{4SE37^}fdT_Dyj5qhiud{0>RQ_}( zjEN+_TN^ozjijqpm}IfAPSeDX)~nE7D3P`D*evGtq3B^3>;9vqQWE8JT;YcaVKghhIX#pHHS`N@D& zz;5t5a2Y6ju4a%=Ly8~91-pc__31kuErd?if_xhEqwsSSmi&){%GXhlKG4{u(I=)4 zLxahkpeaAllpjccna)^DZU&X#O%{{gpz`|wm;fbTPX;xYJPDNjn*0ZOUh+Q)%6}gy z|7D=A*9_`hK7O+!b}>@gF=8jbr$?OO*V?TOR-dc>Yo1$pd~^?)(fG#8 zcc(@3_3!I{Q+x_)4uvQ8ZN8#4Pb4S1FVVl{=!abTeo$_dXn6QH@-Y{Gw~OEC!jHg1 zPR~pHKIg*s>-wSm{lJBL`SHKI{584wyB+PrvyOh$g-bvZ|7RR6J2Ba{^*Q<*@Yi_G zyMJ}GZ=cL_Cfv6t2^a3$r}>_SuiQDlA$GynBeXVU3Wxt=B>Zvsgu~ZF=xGreeN{pH ze~j>FfAfNH@ecF9GLpV85`SwX{+vks--v{-j?iv}Gb@q3)grlyl{<|d?IVSScz^d?G%*nCnHx02bA2Ru^_eGqR~wF%HQnH zs6Y9eGCk?d-7Ms4S-Y`Yhq|oPEehI@g{`&nM?;`fByp>U)j5R6Rngi!Xj+nT3J+O4{{|z&nl8 zFSZ`8)kRc4E;j%(WwjOIf&R0|4W&oe;rM*WrA)YX+%s~w@5vJD^$O1?XS`&b+IhJy z__?CA9+BUn^b&PG1CDRj@jJ%-N;bgx7>1b6ugX==$dpJ#FHuK8f)FKAyqVCGzy%10 zjd+Ij64FEHtLvz~xa;xn(jE71?373$(a-25^q;S~f^GWGt(mze{U2_8S1gjP3S2>< z5E2b9h&&9UTp5(hNA%g7Iv>8?+ss(Ge1uu+e>wIG=QrOscQ*Tr&}izgEDoX4Cc|ty z7hul2ily_p7{>qMs+yReb8n1q|?SPkqbs%pGasiDft)|eO!`tjVl-K z%duSe)FIM04iPSSUalPf1va>Bxa3f|a_Ju+Oyi~{AUB^@d@#8P)HpBg{B<4q&jYW; zKjr+DKl#rDHBM=A{<<&uPXooj9;9xjRUTk60g6AojK9iJ{(2$BU-d=tm2dg0o{7Jn ztNa1uFS(mGVJtc*Gj2gAqj9HMr^8@nY(McBkD7Hl8o%s^hNoGlLmM+T1Dyajfn39k zhs00!Pm^TELo{(_97I=P*6WZ5!M-Rn;SezKInR+1j>bZD*Va@_ zt*@zQY^tfaGiAp{%}b_Ic;WHQACpewhgLDbJhP3QhY_L-pI{x;l92%;HU5fCe)svBHBCc4<=gmRPKPI zRo~>k;Aquvx!3sOm2+1@gz4)d^oj^g9W011JG5|mjR(W@V1y1@a_wMYOWD%4ks}?g zMBcr8wUzjDaq}Ct=e#1x%?KeEXyW_DI62=)lA>^vs$d~ZxugY=mdt3J)iOK%!Fv~% zSsbIqGbYk~cYn}C$*rXEYh?2G&8`>WVz5GfE*mC?5x>Y?g%*~W1tQCRS{Z zcxlItoL3>+Nc>2kGbOv-OYgV&KeMv!Y0isbnXJZ~?~ zmt2=(-qD1vYUQ(@a7DJ>x!-Z_eV*yi(~=YQRr@Y?sq%c6jc)ee5KGzl8u@#e^1SD> z-|_2(8O@c^r>O6Vx}oIxdRGRMUBXr|3pscDIiI2A??sMZpG(mLKf{tXlKx4qfaOr~ zccUBkD3RLG1<;!F+Yhs?Tq`Vp>%YE4F>;)q)7x-cNn_3xA>YH2#br}8n|YJ)9L%i& zb8;i?97ijAMfo|K1oJi8L&I0WagmG`6cS<4@JRHsr0gZau2dZfhhOUdTr)Cv{$kck zx=r%T6iLv&d_A_dh0gU?(cAL!p2wna-*1*n@B7(u;f*dE<-&cxDS41*;a}@q=9lnK zcH}cb^y)@#Bwkv4K_fRJ3zn1{ufV^Q+{hTQNN&`H#TPJqvmk|G)jWL51DgO`RBDrxYCB>Gj=GT|0+U%GeU>tr-C=@;^I?b)Iw3IFsw)>Dhw`= zdyLS+=B4xJHXEs?^gC~YjP!#Th9hP=3F8mZ`rKFs*MxA_1`_hQS zQ;;$u$`pp_9Gzc@z5J}w`o^Z|<<61rn$gm=bh#H$O6ePiBcFIXbT6NH`t8amhj^#t z#E(xfj*jBP@))Lk;`#I_tsMQdSZiIX>;H|n{~1a?S>#&ekGw&s34ul5Dydghv-Ig_m)+n{*x_~H*>PagY|uS{sg?nq%g z=%zS!9J2eVi|v?DS2cJ$#cXtyvN8HPdtoXbGUmSD#V$$qLv{~NYk%~9tLNPAuSfA2 z{pShR?^3VnW{cNKJ{#WCi)+V1=l<{nUh&s|!pUHsmhFxB^}D@0iHj|Cd0Tzi8OgRu zd#Am|y>Lc_xfjWN_pohSRy{EIK^4F1_RPI{X;duX?ANE?xhxorvUSv~K;nvKi zutQ349ocV}y7x)gPQ65!Z2tceRQ?Wv?mU#*(r5itu}<5b?-V}gr=Psp=V8x23ZLnt zYbSWN;$P}4pptnDtrKl4@mxyr@wQ`nZl%IY-%lm?WB0VvSxw4|?nQQVet*~3DbtfY zZ+}jVy%+6OR(MvCJ-@rSj!k-7_hO%GxqG1=7&p$Lhl0ij&uF-hH(aDSFXlyZTR(pQ}CDF(qvF} zOX8QcXzZ5wYwVUlW49!JvR4v6*(u!s);l^5a*1@6MYCRkzs4>JOb$|hO0ROP2W6i$ z6_j0)^y{+g;A8g90+ajsksa0^=ih5FxeG+U-S8B69oP&~2aH{k_-H)9$E*(qlXvnX zJFX^B`DwIh&h6Iy*FsMQ$AHRz++woI#!HKt@_&x!Gl_VoLB%^|(d;`cz9*p-uOC#r zW8jToAD965fr_`+qB)m@@tawXta*e@_;aarw?#7_q5Ela{;H>hn{lP$Q-&r!WoY~p zAY;ms<4VmtjC1i-&&7vlZPEjV&Va}sW;}@;V&)O(T+Dcqx^3nWsJ~|Z0MW?IPr#?T z-=?qbbC`9QaoFlG%IZ^dEJbwKy`O$dP%c%<#&V&BA3JTZ4SM(E( z=Ghq9+b_xfCY*l1!twKOyy~CQd%1O%=Xx}T*zP-`DSSDO~#NEYLv~TYui;DK`m)>vDuAK~IpCp=h&$u7*3z>71 zA;R?eNcgcx_)_?V<9{|1u6@qJ;r|w)pNQ~pjfB4tq0dHWO`zkIb8270^shzet_Xd5 zB>guc;m<_EKN7iLT}$7bYgxT~b$b^Fp%nF>A>*B*u$INM7tU*0`bhWk4dyVCf(W5b zxg3vBl<1s{-(=g)XxM2Fqfzjpf}Og_QC_2v^C;FK_;WEdPZEmeGy?_OW|=5q3ByJ5 zEH1L~SgA4yD<8DY7Upml(M&`(5YJEASY1SD9>{tW>;;g!v5?}zE|GF)lH}Q$DI1q~ zwc9j6b2FZWv$^u3nbTQZnx$0uu}MI4CE#*meEeC$s)NIwf0=p9%*KRq(fJoEAU-_Z zYB=7hexu$sKwiJ$Y5JzOHUFaZNpfDl(aQMz59BdS{f6fw`9{v4|GO1sFa3Ox8%n>? z?*z)fbSdkkFbFxCj{-N8exp|nIxgc9_QQ|vC`d7S<|9|Yawz>qzY=k;N~AuZAK~F% z@Cd?&_Rb9JHx#a~l1$?}h40&NTS@b_^c$r6Pf0t}I{q`2)z7_!e&rV>&e-Mg=gztv zU@xj4)dUB)4>R7@o>BguFz3UXiYWdag&jov$fx>W0zNJWE>M z&(dK||B^))@N7gM;CYKDRn6&({GQ_Zvylhb-;3&9c!n(dnMr3d)H?PPMh{b4sJCH{ zHeIuoayv=*FO1GWdlT66chMItR(Ohi=^i(_nQM%GfpNyV52N!@SW8WC%WUTSUcW+m zo@<^vK^oGVbc)xBiTyx(X7PY~u8N~{ANbv1-3j)j@Xu?IYa`c}EW5|uTK`_kEpE?q zHs{&wEu$BDJfyFf&0b>RXQ=D{0qNK;Vtgw)E9C{f6YKW!XT|E=;UBp*YOTy!(tzw! zJgpO>zU@o6HCs9hHnqiUGh*t2U*pzKoal2b_3TnVwdF6~d<*K*Y}ToDm$|=5ZXdH; zd5jE9dC(S>EWb8)9(Jj^x0Gv~Tl;PHKP!DE`k*_XT4!Uwg`Vjw`akKJ_VFxgc@{q3 zx(B_VDj)sNf~rp)D&rBsS>YF`7bDpd?GE;{i1Qw{peLOWduBqutR_779k)MxEAKO9 z&)UP_xkuSo;^X}9H|rg*M*ld$)FHYY?ML#;H?PVpUg-YcR+m|PkNdy%Wtr6qV&0}D@C9CyE%PsrYdOqA$~u$%S5)fjtb89@vflfyh-<%7!fqR zNcj7x|1bV_#kzjtY5nQ5_8p+T;N2Q)&bT&ZBAr}
    =?jM(0hGsy}_)YrafuJ5cZL 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

    nX;7L|a&3e6^4&dn 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

    ~XOG~~FmX`SB8C;SDlPrLp# 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

    8gAm$BOCu{f><5oB1}l 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 z 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

    Mv|H%!!q`lLF!bG4RY_>72J>j4d@GSts+#F(pkY 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

    -qWgJaM`7zxNjLDX8D&Vgh$36Gr&^Yb3L)QVa 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%0AGPGpKSFzvgC8yc)?7uLcY^IQv#--|XxkbM_6+ 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⪻S7= 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 n1Cs#ot+Oe594} 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 z zkAVtz5Tpr@4;Xaq{Xp?P?1b<3f(o|-d=JOMNjIRi@0X@l+vC^^FhUG}Yda&*rPLzMV2gYEz*{ytFry$0PQ zp!g3PbbCO>qYGpx5breTwt?bLfa2e0(A^7)zr~>242plXp~qJmbYq4dUuw`@0?J<{ zNEaWUZ_tf`3a0{8IOPW2si49sGw4P@@gL>u{$}t9sC++c(Cq==iF+65p{h1EhxUYL3cGMzLf^u7%0AhOHDX^pu#-}ZU@`ICU7sf0c->x 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%0DJk{pz5}n~+)bK!*k8)CT?ftSZH8C2e#EbOb}r8r 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�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

    c-L+ze9W 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

  1. kJPam&7gFi+IBmX=a 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

    DY44ER#8zbse2 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⪚7aMLwvsx`qz5H<@FU$D(*i2HLtUI3GHLT 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∋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

    0fsaA3zi%gP-?a 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 ! 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

    8xoTvoy=veq9KQPS@(Zer*e z&X!y6&tqxrv*Y5m&0nhDvKfV)dak}`-GD&PU_@pMK&QCnch7d!Kg!&#_UBo<0cuv3 z=QlP|z1nsE>e-h$@2q`YWBX=1QvIms9k8Bhj31|Z`a_RXT|Xdx`q>MkMT+5S$El9b z3iq;9l1{pf-~^p3>kxTnsBvnFK0~I{La>#OM%cLMvQ|TlQ~MmhULS&dDt$G41RU!e zmP3tGTL{-qcmz}1>A0=PB$QqDdY#TxNw z*5BKJO>B@2lz?d6*OD{Y%YEXY#I=;x@n!8gQxc^Ig6pFi-eU8(( zUH`c57q$6D_G;V@N+zw{!=A(9BKrW1ZXckB@qApmyRoTrQz6~mc}2o4boEeMVE^D1 zw|{^x@oSvfP;}p7+9*4}D8_>^MTPRlziC@ETeCNE+J#d(qx&7%GacMM4X^u$-otQb z^O?9wLxtz1-*4r-joAD>8P{Fq%|oKmkNpkB&--~Y(&9K!v~5bkf|PJdrD01|mx{z0Sfruot-XRml< zf5Op9m*~A<0)M-~@r2)HF}V}eJZQVaZJ_2+?V#pAEuiL2Yb+)kK+TgLx0qZ7Y93b$ z@@Y#iv6!p@6@E6T@Utu?D?x>yZZVkv6<+&3ink0DAAR7!;oyB<`1B`S4817@0bQY3#vS|ucLjKI)^pjP0+JI zm4BthG_GskTgmOgocFX|&*k8(-hl)OoeW7`1E%vngF)5Iu&+gN7 zL&I`-#$kiQl*5EW!1&XAw5+sp)@&}Oh`EiLk^^kWgs;`em`#|0(zn@==`TIQ^H^CQ z%5?|I4)WYv*2D8m*#OT|W&J$u6&uHgoj}p<pd~^SWu>lf6>x^lleLS z;+Jy%pK{^r9j*6A?z#si@znRB6nznA}laAKB(#&feeSokbcELZwJxuS8xXUf4TcW})rjn75}(j^&SEdB1Qp#u8bXsPDCMcbue6w5fS>^QJH4Dipb$sOXkj5v8NSiGE1-&y|W>J;<#PYZ=Z4M}2H!$)I&^ zM^wKjyT#>eCue^vYgu@6E986!N?CV&T_>0~ceXtsJyA$sXVd!2?PvAz4g?AN zimAWQx3HKw=?0nu&X1@0mg{@2Z;UZlDj)c|0%62YT~aUe-7T`nUnihkX}og7MCA=V zpXaS}aFq3duyNg8)@rDE{VJEwj0=$>UCLVvA79rs=dc`VUf)SLjS&=R68{N4=C^|< zn80fc7M|CuPu0KT(L{>x`c<3L*9V6#H~)Rlot37!J!e7eXN=VKIp()F8+kc95AEg1 z20tfd%(AhK^ZmX}lHOe#-mkKAeebUuc{-}n&E0a{#ADsKpbn*->S8?n{5jU0+Q*vn zA!OVRozB@Gi|~wdCpv2nw3!M!H;+-R5P!{| zz5HRA*IMppzl%9Obz zEVnmZSl%&n@BAE4`St0cudL{qsq^9n)AI&x&x9jQ^dTlrl{b1c8-H2;(qy{hED!nP zbHlVb*r`71mw)-vWZvrvrISA2pu!?YyVBO7Jxgt{J}2&9w+qaj+y;NHA(~BEQkk2hePPdG8&0(x>4rfi4Gh2TYLms<~wp~ga zFWLVq+PP`dZY|TC*UI^&zCW7CyLch5{n<9WdA#~2``#+ttF$+rBgkFI4itOw6|~A#MSh_O-VV^Pk}ImaYG?*8w9eK(Rvj_yF7Q@11zKU8{V}%_pNR`_&9!e z_wwA2;;wa{gCOs{IbUrGn1a3uoCU(SO6R5#RXSnOoSUX~u+h+!U>T_OAL%`d&+DM* z6W}$3J8m&~6l857EqNg@c@Vq}e?8z#ko^i1PWwpHpj#ZS0%t%=UTHe0bJZx4bjo6K z7O3SI=reHXvIGpWbBgGIbvXPI;i*)7L$A%jlYv1?`ZmU zi%FdiCVzbvlii^B?E)#{^iGS(PV1i5`C<4^J`OU5GUtQc0_t3_319`ti&mxcaa2!- zDKzE#0H}31t!IkvbaV$e9a>{(#ajp71lBsb8YBy8ty6;L-eZb1T?q{)CxJKNU+a_N zuX%{*Q=s_ug5s}rM$vm6YCTc@B+sjG9iZZAx0q}LVVP#^CQNF*kt#?xSWK<}6}}c! zc&(d=e>G^*YcV+mRQzS2{A+zg{?CA-Pk{>eI;e0bEGCbF3U|=C_kg4$z1N~S*Gu6$ zp~Wu)Qsn7pEt-3b<=zG@{%b&mZ?Kq5gK|$ftOiM9R$sWm(!)~@6Al6S&Lg z-u1cHULWsb(>M0!I^O=OgUlH29lsBCTf4{i@H{pCG|%JXPw+gLIE13DzQh5ZQlFKm zJU#IY>a#MFcB3rID$W|5bd298u0Dy%tix9yk!bJH6&W|bEm1yGQYyV zX#c%=kK_M^<6q_Izj5@@MwA|j(dn4`Ju&_RG5XhI?*C`%1_7mI$sdwXSE}78nbmv7iwowD{D9PxJfmRWqKPk zf98}eIY-)w)3W2)PIJeg)G9@Mq5H_)L`WDbRD(|x9!yDXy{ zk0Mi+Zt5|z6)D2ZDLRVJIl5#-bR0Q-LUyiE!P#HTOE!^H3%9g0-&iCK_R7g4z z77~q_SGBK2zD#2Jjd~cMB#=#>7(WNSOz?dM%!JH$GvJNRzbY*KD@h;Y|8D+2sL}jX z{G9WTBJ)y&w|B5AsAG@Of+X{kd{2CA)*Zn%?x)uMCFX99iR1V-z3uhi)*d5$Cz?4F z<_@Cs27b;UX}(Q!^JU&%^LvAw7fAEX$@k_FzJr;^;*O8t(!Kg7o>dbpSk8B^+{pf~ zjn4MW)M9avTW|gqe5I|_S#Ev9CNg7RNxbp3!;F3F+P;VWePm1C+%_>9X8ind`rq34 zhkiOz*Y>;1?&}#RwX|jr(O${<)LT{Ty_)v=7-W!rhIwX%ov4_!uZ0bV@*ZkPNgxMhIP3#^fBipIorOp?7p^&dB>Wq<(KD3&$|3Z3uPPRm*xNOal{2d~HKl8)j z$OQ8Efw7$7S9s*@MD7dv6!x;qFmIF?TYulm*`yIWE7vTOZ<43&hxJGJwxhKc?k9V- zA(!{Mi^1o8RU{1xKbqFh{9P^|-?%21k3$KUkETxDV&WeeZ`9Q6)!f)4NSgWh>RDBl+m!bT_f_1jq#jI>|GC(co>}uMx1Cj9R@!@kR8M#> zR43RAsIp2>7nKJ+*wf!ttB$q*ovTNrU*&rpca8i#>GSFNn&!H=7l|&CwHwV-+PV8^ zeTe5}wmyB*i=;M1{ob}&GO8_6-t=jC^(tB>iX(xnZSVN%(O8(k*vr(u1>&lk%0ndAC7?*GZg^SMCn`zym&*?y-l)+Qby|3|LM z)%EW)5B$zGz3y%+n?~hD#=Rqk#s_r@3!VDcUc_JebGGmPB6VmY?L_oh_yKK1`AL0v zx1aLLm^)hR9QzNZ1&uw-mG{u^&>tLWVqX6Lq`v5Wvl{A4&y3(m6LpBZZRC!g`x3J! z+^M?#o7ndt$1vf2o4&MXhTZ|!Pn3JvuY7OB+>NICcb2=rvT@RezfAp>4iVY;y}qWd zUK?y1B2Tmi<=v}2e3NymLE@;O4$rrGNynYcx7)tUmZe_{Q~7A^ zU{=f3+jeE^M761}etj(c{z#qwE%&UQ9jUKmU3d}qG-*sipYt+#dd{sQ&~FVK|7gX> zX3Y+^^}NSA-|fd|ta@+!JvE_`+yr1w(!I0hvfiOSlJLM+CTP5ueC@aG{^iV@Ld#`Fk%Hx4~!M1N?!=eo_E}+dG(fU5fK7RFOc8sAuN@-HxHq2OnKL3dF)8EbH z?+YxNw~@QP8k~L`>#oqhWDm%vA>Ik^zwk9=wPQ~vcCUT^g*VKaMm_nhbjH)9x}Kpu z50b}SxM5tG&0CFMy3|(T*N<0>w0ghO=+zB=d`On z!j;ScbxY-#;7+d3R3^UvW!lIz+Sy9N7Cn)7v(}P6b7%1O%kbo{`A+l6us4`u$LtD& zuG|)|DqcHFAMhP?Hr+_tKG}WCRK9t7k-fKz z^s!D*9dM>%_FYj~-5plksd(S`;FT_9l^bNw=EDr~;ejzTOg`LB7@r^?M1PJk&I7jx zZ?~~#pJpxE_pO8Pk1T$Na}F<7)*ty|<;=}Ptnto9?#tA>Pe_I$ZFlw!xwfnNbzcd0 zuR3?b$dJ(ahrb$gt=g{El)rd4?UeG6{2ArR9O}-?uI`PyB zBl%}Cp7HW0d8a7+Wom1LpI{Gw58t;h)3!)!O;z!@cFoA8@zuz%vd@fm5MulSO?3oZTAkpam%6aO{*ClbLC&TmXrez)DqyR;&4 zPnxx7zh_0du%2>vi`nwJ;q{jsEk99rZ+UlFy#-PYvE}Bi!TkHGTZI zP1L(MnA$cbapwfiqjXo=v1Z%v26ue-cj{kjpNRYGgLh4xA^()88QPHYTze<{9s%`5 ze@Od~yUjlyX`JcGWzgQaXv)ph9oB~f`UgMeO4H8d_xJESaEl%L)`7+9nciKpuV<`$ zmU>eWxtC3OrT$0nTJw&ZWy7#}RsDKp($Z?X;@|4%UgFhQCsCnqUVFD+P%+^V^=}u~ z{2}d^b>U^fD{6;n`ig8>BFASc19YY}Q1)Lp{bE|<=mhr^ay^Uuw^b(YiH4DwRR6AT z&%SS0KD;#B%9b(haN6r%aoT<(dBb zzA@`?n(uob7T+7ayZJ8eo5o$P#?)}(Mdq}Do8}5zBpmDNyC%H?>5l_ny?Wa)h9{E98C~a>s-l}kO zAA?HYHFkV$-F;a^7DB(Ot`ZeCU2`s)c;aH?uVxJ zPo@bEKi#|CTHjoq?%i1!0laG~*eC(-tJ|Y5)CY z_pPd&a!-F{a4&tz)QO4R>#nMpIPo(T6E}Z~@~R*Exf#hD>woDD`ujx1^n2RgTy`J( zh_?6XeGESur_GyO8w;+jS|8;{Wzl{OlQ!hZP>xY|lI^q1QBA0ra_@2a);479;dek^ z5_LC>{NnWoOYR+t@#3;*9Qn>;+~>Roor`Wf>Gx&^$iUnk^~#pBEpz+69zwQ0Q`eW_ z_d(tpv@%+^EpTYA4~e%o(X*Z*-JsdraTn^0e(eok>l>s(S{@9AZ)xVTqV(wgsZVkL%;A*t-$(pu z`p&33!g(`F7mHW*sO=^5ojwpSW{RONU`@q?X?HT&5;Q)6hZNGsmrar2#l3Rr-lngyi zh6m0D+ta+iqH=r}ITB;&Gb3^&kt2Z|iOS+~v=Q$e#5@fhM)UX1eoXhxnMb~8((H##tAVQKZ}ej%g8v}cDyQ=&NSbz0U6;0QwvE<*_(d&GJ)+Qq9>Z1?w=~_v@Ci(xEwFB;3pE#?+ zu0<4+TWdaE?x51HD@NtcXk4gwqTanFTthgX%4z=m!T-guo4PvP&qkt1uJ3Mswlf<-w_=rz31`{Xmewq56NIr{x4wZ3 zuDf@1Hnnt8DIey4J^vf{e~kaf`G1E0U*=zXuQ*Q>Y~!Dg7jp;rZ_z192g7;(&5lKZ zG0YYkgTt(;@xG0zwqqZ+=1oVj3+J_)kh8%u)-c z*4dx->F@LGha_JL{8wpX2uAxBF$Mfu$8UpK%>O>eKLEd2`j)aeK;|e+=1K~}zeJ*C zv}XlVApevpmQf27i@)CSJ4)~mI=(C8g762*@Q;?^A1lK@;rMH9G78c^^IFTOCUM2` zuXd{CA1sl+GmgK!1V1^=`Y)CK8pq#L!vBEdzgU7_TW!PF!g?|JcVB1urRwLPd5jQ=xb_%m-9J^m-k@b{PDpK<)%HkyL^n|2LH<%cQY zpLhIH{yT599uHV3@L#PB)0q7h3iyW{e`g7P4T}ykrRra;^jeU4)>O)3c#ifY`_tgl;0dr590VD6%s&Kng9pHmfO|oO z+vBhW+z!1F{3S32z5pJl9j^wLfO0yZJHd6(o!|~|CAa~s0$ad~Q|x(~3l_ukAY+Bpu*L8U zsQ6BU+rWO1vDo}RkbWn%-(tAO*}v$p&GB0tzZRqtq~?K}@m~Y#Jk(r^VbbwuS`07n zeo{Q_3ov-n;W1G04q6NkgK69y0Gq)5Ag{*MK8xXAQ0{vzhI_y#an}j*?wa2MO0G26 z4*di;33{W&aINDn0iT6G&(T8^)+eD)I2;5O&ryrv04Vu&07SUY@%K8u&ij7?`zM_J zMrU6ODm_V1>6s2HJ=GS&DWKw+WHC&DO3x)SleRqn9H{gRf?J>uJNh7~aQZEV2SA0> zXEEFlDxAHb!r2WfoEA`WJORr8MvGx1DF16MhAB|~mx6L%2g-e|#c&=d_ca#7xuD#u z5-_Hpe}YU`{XGUM-T_ed{h-p(=j``^^hc?^7Q2$DRKKM;HopVpFV$u-OoQX0pRgF}e3AMqZFT{} zm7x611fK_oaV*sN&QE~{K;`QmN23$b*z4S;>~(Ha?oNYGfI6?K{&m3Fvwzrx*XS_m z@G>7K{LR;S%5HEN{D}O6>Zb=m6Aq~Ng3en?E}f$kE(bpbUL>2qa zJP1m@AqwFc@C+!qkAt#52+IFXQ03SLsvOfGUQ;?B35FX%{!)z=!?mEwaXBbC#8fys zZ@U#70M~>2z)yp_9kzgSR}X$1tOMn)8dQC_Ol6fE=RwJF4wM{27LEQjqDq~H2E$XJ z@5$P!8*{qM+2J=hd`oE?FZZ7?{RdG#jqa4i@CoB43p4n zad#5p!@PozgLi|2;B-)O%m?>@^T1y422kg%?gHDuJHa%_ki+Ozy91Q2n;Nhd)DU9| zcsrN?KLkn$h6s~~i2pY5G&mPL2{J^OtaQu)`@vhmK9E=bcwkuoJu%Bn|q` zGxz4)0@g!M0h8d(AZd|)J9B?2udvA(>Kh`AOFOK0m~af1%~9A+G*9o9QcIs}YAdxxu4R(E>L8C2Gt88^f!)l=h6k4sb@o^W&m zhf$}T=ib*dQ-*k+nsS=w#i^I3axc-;3q1R$9h}Bd(rE{#RaTyvHpK6P)rYDpE00&7 z;CZR~ay18BuRC=eM^&#oab0EQ?(2K5A743e!{Hk^n0n*B8#&-QV_*j1%s9yN^o%n+ zPtG_co0|^aM94QC;JJ6^KJJ~}GqacH>6vGE?!9^6&EqSN-aN?j^ety@L7m>L{jX*6zlx8YKYzqNSHt(; zAv#Yf{#+V~F~p_t{))yTbB=$}zw5$B_llvv>gYjuitiGQN9HEU5AEkc{y1UX|Ah-r z?N)sM9eJno@4p+bcC`Oa{B6mDd;eWXUukIn9r&{2`|m#X;~KvI&P%)S{C8cebML?7 zzT(5D6Oj4uPF|nC-w=%(pZ`+K9L-M+9+W?S?egQVoc{}s{sTw<#L=%hdaTQj9!Fo} z=&g>P<7mCl75;}Ey~@!aar8ZoUg_w0PM%LV`W?rA#?k-H(Or(#y_X9A1xNo2NB^p$ zf7#KWcXX?x|AnJ<5JLXH z|9u0&WtO}2`gtGe%TWA& zo=EQ%(KC7Z%A9w6KhN}C7oMM&8o;gG`+2TEb9_Iq^;7D)_)oa-{=1|1JNj>3e14wq zzdF93*L%d#CtQAg%I6O+b(uAe_VaM_ojhkOJIEkER#|hL^haqCQTmRU`@f92|AiQT zC-O)A|5}V*A9H^Ud86)Mi-q4w{zdt7kUUC16AOPRM*kGYQTLC>_|jt#<)5d0MCrF< z{4d7Bn@@Q}-T!_peXqu7##njor^MtL7jypyG5*(M{;Oj7laBdc8uPESzfpPLj^#IV zHhFxxjk9-j@PdGw1het%4!e-)GeS7S6f>hr>@j?p?>9hJ`=O*co+J9j+A zbY6Dy{hHaB(J<;W(p zuG!=lFKq}eJkBfc@cIXuqMVulDROLIOSt)R$tI$*vtYs3DiBz;x^czB zE7nQ7LD94NUgN>2tHB*jU7v36-qdz?ck@#nt#_Ako4q1$RCi6%BJgzkmX;GCs=A9QK6bV6- z#@3zBH+435x1k0jB5X-}?=sSwa@sd&7tyk{#pOcH*A0@>%;A**Kij;0v+YBqRHJ)q zleKWg*|>7uiiYJ)JGO9BCeHG0%@sjSmXpnHvQ>BaBkLqPBT~Th}`~P1oaMS7_PGk|K7dUbeKhM46FNEf!8v^+CBCwU4{)~;K#@$sf*E7mnOty=xinusD7>(~VQ;Ht(Zr?th}?qnOv zmKLL`IU<@mLfZ)Q6|2}{Y2KXGv=XbY%7uKM&*eN$BuASl$*hm4eNoFDTXuAjpWrvC7zl6u^@YQR`$n&td1IfbU)jfRg%3R`->ki>U?MmvcLENV^Nlo z{lyO$3q50D_Sb^!FMi-;fz64ow&n%i@q*khmtvpgszAmUPpd>{VfNR8TE=MT=U#MA zGG`XtyJXRQb@wh1T7sAt=t&NsR zrT5U|2r%fAfs(&k@wv-!vC&tiJ8#}}ls>)o>MZ*^CEQpFAgyGe7@{>#F^#w2l`q3%DvYo-8UszJj}Vno)Y1G`I^$< zeRDG5;Wrwd^6M(>i^A?`%jiE)`N-a< z$; zlKzK7bp%&pygMI{d%YBR{j9U`on%}d@8O@hAM`WEsBaw2{6pPeHih>`JdZ|`<7efq zVdHnxx;3d4P3zaLV9;#F!^?x>)=ldlU)|WSG0?bRwLT~GV_EC=?p5YGwJfsFpkm9JN%p6&Hd%(V*Ipl)0=};|rTBBLzmooI%kY<$ z;jb*iXHS4JrQ}PO;dhkb?{xeO4T&YQf~tH7``cL>-w)0MrGNQDpxjdcsTVDV+J7K- z+FvlAza^mD)qyN&q-rgOGeNo2py&=z`}pN<7^F`y_tt^temc23ioM+RJ9m4*yP#im z^b?@m(NAlA-t13c2$ot34VruAXrd|YR{%rlaUKsXJ-J{w6O?}qaAYq%&a$rpm0s;< zkbK(Dp!5z|3{Qgcr+ozScg$j_m$}lvAC$knpwi!KG0cGSw-c1VZi}JDi%Mq-lt1lz zP=3@~47I;N{%Sz^n`<$g4$5B@D1VnJ&vEcCSq#sE%CA$P_$NT+$8n3{AV{I7j#>=+ zLFHpNI0x(m$%<5m#jp*$4f_^npLX_7fV35JU%K3@-h$y;@K)?omQJm7_Vtcd`;faO zpyI0oNlI1^^gL+ASL5u7L;NraD!!S{UhP=+)u7_jdqd$&a`sh@28_ENm{dWtkArcH z*}uW~akBE4FwFi9;V|yCPvazr43m$8+K15(&IbEH;+mWR#aDaMzKe~HR{9yTPp$~olLn08q2FzFC5{_K74lh|7@owa@4`7S-#OY803 z?~NO+&g_m(b`eyZKw0+Dib0;2DlYRpP}z@~?7_-oJTF#W;@LZ9uP)ykb3A(yUvJf3 z)Mp>98ss@pb(p8UlusA#u>)b;0DB%TkIRhjR_2lrZxa00x~l(v`zsitrB7bw34Y7H z@=s=*{PX_+m09K*M^AF}`*M$6y`!f){zOOrlB3r+y4lekj$Y~LUw8B;MMvaYL!6?e z*Iwo~BtLHa_ae&C4E-lGCK;`pi2vt~zSGfv?daK#{)wX>bhHnTyTyrXk_uzWPg6JPaErqj8%R1hrUhxl`y#UDBM zYCkgQ7cu;mmJH51TJ28eOO9@|WT5^}_XO5D`By{pmoJ{r6QcYUDSnoMeOK(>$y1SVtMBR2ft6e3W=G{J6!cA6s zmzjR`MZxAtHEKLX^oW~m;J~GZv`v~AYud!1mHAaaTFslXH_H@e8rj^lXx0Ws*ZG}u z>{N9Z9h|#SxL4<0+)ZQ>+r-|!konm5h1*Nzs~g#C1*4o3f-2{vbSM&{ly^U+nVr7P zPTFRtYO^!7*_qkc1Z-^DwQ#c4O`AriSTzfqKZ|PSQH$#pFENk0pzhv#OX?NxY995T z!|C)%L6U#Wjr?m2QOfkn0mjdtdYZAD#&6ky_La_`rZup^`1#Z0H`#Ns1e7rh_b4}i znhnRvzK=;mUM;~|2A7FwK)LWnpFd^OtIWSs-e69;eKnRU{NO4#f4bJaQ0kq0=;bu> z^&%hRZy6VpCCbg84&hJV2J)n!YZ%=AGMK<)F9o5wQjO7MmbicALp}c=;s1l0OHD`7 zp%d4`Q_0+Ag*l^7cxDbv^FGoS^$t3D>|Bo3$8(ms96xW=$9$3IC+*#KR(H)i%%e$v z)Mj*xO0Q;A56-2gV@CJaj|p=TdJW?|;;#Pp=s+WDnZMM$lD)@E_mq_i>+;q=K!;of zy5uTJ*BEr}pfmD?vFIVwJz{n~_8nv#a`%T>-JqE_{e0g=cu904kBmb{7Izm;C(Ses zqjS{H*HV>xUtr#r;;6QBe&|TUo$`vpU(ELl_R^JR=Lj_y7@#-nEV}jNCXMcg4D)xM zCg17;(qwhQUB~@iGhe5f`0%9H(&V}PaxUQ7k;>_tE6_bShj=o~-Su&2qQ7qpU5ktV zAM~=xK5gvnd}M&Vm-SW`HvSgp^46ADHF7ZSSL@x&e=q+z-QTrVrurf}5^ z=t6?{3fNob6Atd1>=@ z5Pi?}%++Rc=$cDSn zzv1XpqR~^!XGHZybnI25v+%n4u3f~^=5^TBt8P*k6+h|U>+>d8&u#um2deUY^g5e= zx82CH3Ex6Cbk`c4hwt{keDkHZSP!T{7YBDZZu@8Sk+ZG?nQxzUW3VmBy1}fQ(fQ8$ zgY*OMVol>#`hlS?)I%im({UENx6qX+nd>J9i~oi+Yi|4?bLTzWo1ovj2&V@B73iC) ztjHX}ttsE{IDeT*!Q#J=zX`<6dVpj)iwxeK&4XM#yi6AViQG#cwA>?mGiw>8+*5}a zzkz$n5ReDb*Cu(}sN=JSrf$0$zq8Iw-8Q6j4^Q1zuXLZEx~*XfdRLHn0(v4JSb%yA z)~Q67N(bM_i~o&_r<9xI*kJL$D&r=o3KsJnRGn1cOa6L2mTC09`7}oJJ%i4g&-(O9 zKIB#U)b|Woy|5;~RZd<9XFcrzUE*2Yma0=vO}Aw`MEmG}`N>NYD5pEfFa1AIk@)^u z)~TpVuXsI!m$%yc4rk4sxUF7whrE21@`&bHGwV{LNxwU?m^A0bvx~K=(fkblcw{l(>(!N{|03n!>;D+{9x`ip)N|gw z?=tQ&>$XE(Rj=$q-?#FgDUWJjcV+*Qvsb;#rWe_pr5`C$ujJOZjlLg^EY5SUdN_*v zb10Y^Gat=k~BX+yPQv7@c`}ZPtZa10DXnp z-vjg&0r~#`eTC{sHqG>B3b&c`s!!H$=3lBGpiel@F}%+*e$ej*+MD-toA~qtg9@Mc zRDV40N%3g&_0nUE47+Hrp7(Kh$|tpN#naAj^wGb2Cv8D(dNy)4k=G5#S%baw*V7*! z8NNMtNA?QB@Zm95&;ItZN7KRlPf5PURNvW@S+{IT-*(Bez{{pGc5Sl{eZ)i58y}x( zt1geco!aDsb8THp5=Ikc-$1?$)2`Ll_D~OI-8RwW)vU8qjlQZ=?wp+jal5 z>bM_|`gb__?B3zF4*Id^Y%{jk_%ElE(vR&`Zv5wsLuNz?6ClXsuidltE8 zGyc`LhSD*}JrHrbbP+o~m7-_M7#Le_oxO zS;u!`bumA?9Z?9ASoyQ*J`w6|OPPhCV>Id_x)!zUog3CaS(Z*1A z>YKjc4*XIXvq(Xf%PdbGQhjxlC@hcfwl?tcC;<)Uvh zweLZ`34etCcco8Z%dU?x_1CUvyhNYYue+t_`@X}w^v|y1&Z()icRQ}x%Y6Rp$*Jly zZlHeH@5y(uOJ66u>Db-)`mMoB=Dm}?KB(iKTl!qNwcldd+>+)3W%@zy>= zIV#^Jo6;0O2US*P+6rSS+rG?uXKe5;-@^kHW3K;Zb}T?xb3SIn8YDl|xA}at@2Xt? zuXw-Y+?w}2@3FSZ;49_wXxBrzG&G}!|3R0Ae{H_at=y7J<dM7x(`L{%)o<$j@lsPW~RYpFHy)=|c+pTE0035<&fa!xMsgHOG{o?`<<>T1g$Z_jPC< z;NMeEr}19k-8A(++Q@Hm=a9Zp19Y|zF+cMT{efgD=Jq-IRn2u&aA&|$z(}@yP8U?+D&`AA5(gqhOEd{p0IyhVeId5WLwnF}Sw+ zzRbFL$QqB&<+q8eUTwgItM*VdOmi1aEFJHU+><0f;(hf`p7|p)&*I|9>zmFlj+AMn z&!38nnoFx&V)^*Z_vgk@^}H+ez2o}wuy%FS#p;Gt z>sp&To{iew)|I1zr8~A{kM(>c*jQIvYeHPn(!RENd-wB(XnhuOg5|5%2OHL{3YNET zH@2(RCM8cRcY9ueR#L5BYzo%3KGWXS-MYQCCCR4yoY?tNx6iXyXE9tu#VhYwKiyRMPV|`6v`H=k@w`z)iif>2li*MX=~^6=HZX9 zDQtgUMDCv5`dq7ZV9UH^YZGxOP!ywX(jGen9y2GQnIC6Zm~Uh+BfTZX_HXg7Hf8`U z#-Hid=a&#N`&tUZZ)CDXM&S@e0bhESWV8>dn0%)g=o-ESCygcaJn#5>OZd<5fhcpD zeu8~91@TK?noNR_i}C9jQPi^^XbH%kj`_79b2RglU<#ZL*7392VmJk444#@~F-(Au z;O^2i>u(s8zag-WpJyzFr$PBUWidPn%HKioQ{X=EaqvZOE!YV@2zG!^gKc0txEz$b zxuD$51Y5ys@ENcQl)nI!ze}WF{?37l=P1Zr#{6Dz8z{XQO7~n)>8=JP|0J-Mp9za$ z6)5?od6QoG0cGS-wk$yE#Lz9X^Y`TP~ofv6;8@xD1CSeXSv0& z9#lAU!5!cvQ2wew`3o$Dm#0{Nmn??TqbGmoLFRpozPweS^aCjTG7xo<%!xm>Ry?b|JztLhSeR~RjC8(;o z++rxbd$O0_J({Y~y9b6f&OQlNVn5SjI6R3xbhwwEy^Y{Oa1GnWq;C&=au4_@_B+88 z*a_aj&kl=W8>sZRSPavk(!T_J9IOEq{uJ<&;DxKKelXT7j9xJ5-K)X>A&a5(lH3lx z*J9WKK8!!<adl+ifv?5nP6Sr{lMQv*EW`44(j#(9+unhHF9It10R41H+l% z$M8Q1WF0P*uozyLVDxjP&RYymf$UvPowOJZfUJwom)<_f#r#Xax_CFO9eM7r^VWKW{OV-VwQ%e!lClKWs5< z1C^c@i%)I@SK%%Ns@|=%7%l~s&RURHa%!H%FbS$$6OMlwPt)LEvKU?fJK#&tpW;6W zs@+K6pW2P|{mK3ysCLF&moV&g_B|k7W@@*^upU(T)_^A8L6h$m!|5PhR;t=!c!}|q z++6_W?!3iNdIM>qsdE;?Ib|AHKWtQlxuPwJe-kU4P^{~3#+#(j$a zB*J1M!8%a#SA+6j1u9*`WWLgK z8dP{EKv=2c7QYF?VO5PI=S;sbVYoD#;&VZ6z`+9|GQ1Yihs>b{!AX%T% z1UYEV6DVEtputf4-igwjD*(eu&`Q_kz^3aEDEa!qr;zV}#V7ZJ%t_3rZ!zg#3EmIA z6jc04XFrATet{-%8hSOT@aQtkK6=?xCdOX=aXPskls#^YeG*Il{)g?8PgEYL=x5LS zK;>cfxgV@N#8dm<6P1~&-Rx>VP}R?Ke^npP<6}>-w|#KzF`g&JpB#@Syz#?4&x{}9 zxi_&dfkwSVFVDdV$I$a9ZGVZ%;R)v_RE;?_abV)%iQ_9XSM9!vee+ih@;ral1)k@w z8s@owQr{%Pn6!`Q?yGyQMw{N%2YH^j`XtXwS6}9NaPpzaNHO`u_hM1 zp&JHxo}YeUI)0}QPft|#-*^yBg!^aop?A>gBRn?acvc_b`571Zow;eZG!fpkkLU55 zPVgMK=`hcOHyz?ReA9WJLpPn{Ie5!4^bsDu44$e8o^YEObJbUKunM*ixck?`R`_S#Ux&1WHy*2wdSFxw2w}v`SHWW!5?O=N&(TL5|GT`@W%Rz5 zd=EJOO^#mX=pQ=w4?Ftz9KFWT>d)kVp9^oD^Z)N1eVe2IFGuS=FZX}x=r1_>eMfJ0 zG-tVu+3ftk=%yPt`1d>hD~|sW$N#aT&3J#*9sS#m ze$&z2j{ZwWw-Ji+_p6S6)bY26-|S&b_Y>rxZUgFuzZ@lKP@^D}J8p8RQY|=Z%&*+Rt<8WhlNk9r7QEZ-e9e zd8=uT_VZlp@hJa(-s%oyi3DdR{G;^y5K;PX@gJq*=T<%v3-9ZsH|oBUyo%Bnkv&S! zjQRfo%qag?WAXoW%>VDi+&>?qSI5FX5DRZ_jDIS||7t8g_D1B%w@_I zvZ?Ov9h+DOh&b%r-o8be4}+#+iwzO|OvTtu(uQUZikY)Vs~Q$NbyvnNy2@c)<>a%c z%Nkd%SZBnwBr2Sw0joQ!hS4NVlnLI2Z6uBz#d3D>HI10~(d7=4+{iLX%xQ#Um0xjg zORFULOE>1ISyVQwm+@}SrsPz#wQk>z-U6f9uWdVrl(H%kwIt(LW14o_%lJ@y)r4xh zCbI<8v}03SGhTB#0=F0?fzcTAvgvkty@|<+PAbui!HJ+X4}!a6(6%1yyK})k;hSOb|&BRtRtf4RMI&KTnYK3d23g! z*6F-1GH-jUQ@%&JZQ8o!>4=S$bH(b$b&osSJVkY}h8a27*ZBC_70yRqOU*^*tB4|B zlWnV(A1&Kwc372muKl8X&1sBl?<7;VOFLq7m)GECs+|>Axzp0zjrO+oh26G|TTOhj zXwJ9LBI&BN4a=9WTd{t<_|N4x#lrq;eYDWxy;qSS3PT8*3YKOgHNAir=~b07wEDH~ z^h)L|Pu5cO=rqrn;IoNpTD{C4VO*3w!?-Z}tB8KOMcEUM3$wq9=&W0mJ^#2c`>Ti^ zyG7a4kqfiG@^sr-jd6>zXD1hCf8}YqbI!6l?iOZ$MfKj<(tW0NOY8P#UR2N7lb1Z5 z_w28Q*|B)n6;qkV$m4^b_gr+( zJxh|t6w#a4)za)$=KZ|-^7b(fk@4p}JBY~_q%Uve8x`NWytRV!m6h!68^b>8D)v!xw(^B>uf6}WJzv={ zDHyoOeqHTBAL5_5_ObwA_T%Zd&U$>Avk2^!TlX)}Z8wvo?&mBexngwT**$o6U#|Ag z$&We52Wp>gHD~xZLxNtkX$5-GzRZ~fzW<2pM&oaY{g=hu;j!^SmSx2A`r3?KoMS2G z{`;JH@cSpz+;8oF%g;AC2f*1i_B(6uusw%o_vk9@8#!Z`($(c#^XI>v9D`)SqfbXWWO7iErC`yH2 zTZXUo6=R5bRY~N)JgD`nVT(qORT6hcq2>NCNLxt_SPV5Edn@+R zb#OD-4c-o>LDFFE=@NgbbEowrxzl0!Outb2)WbM!{=Ht4k={Y-(Ls6Olo zVqC^y+F`xJq(i{CE3W@(U&Vgbx_T@2@;p&-lIO*WOFXT{r-3nt$FS})<~+}fV|Yto z{-uN@VsD<}hvrV|`Iq@ic;YX$WT1ID&DH%!9H}fWBvI*8~OKns4^PS8~nE4HprFLGTMD{smbcQ15GppSw8-vf%ped`1s0c5s zi>N3se*(jO*JeNGvmfl)Px9k;(abw1Jl!@8bMA=SGV-G#9-eJ-q zVC=_NCfFGiRQ(QgbUd~)Ml*Ic;}_o!e#_Cn0m`)TFaJKjB%f%XKRX?*^vdkzU*o45 zLj}RFi6)^w{2tLH=(yw8ff~X|urv+Se+p zlZoQ}Te<#z(1o|ng{OVCQ6pKSrd)r&#N}JYdFmvcieeb~94jx#a{YaRkLHX^K}O`7+EpUX46<^44s5{bE9jCEVx1%m5t0S#qtUXIx&-=@twP$OQx?$W( z$HIfmv1v}t&cXI@kHvB67W!uo7Q|=$9q{7t2?LImCJEQS*xQm&&VR zG8Id+KPy~Ju2Ok1@^a<3-g#_1`IDe7Oh9K}rLL#V)3-H5Ss6WXl=azV=(2Kipc!;z z41K=-HD5nW9O#CTZV3JE4sdsPPRDa|wJk=-JWz0OVt!J|19qYL{`}0Llf@W;fp?MPU$;*Vt9w>8f09!og zpM$1Or-m$sXFwuJowgWiKNuBhzP<+(-cfKGsI?&ak@zWXE8X==ma=2L;uJHLR$Kic_Up47o&EY=EB(@ z>^XMopB{T=Y}J^aaeKz~l5rnGxajzKhlJwa*Kdt=HNL%x%#j%pA3EviJ=lpJE;+s-OuCCz;V?5KacSrh|!Z`?l;8foiX=!#Q1ti zMC1ESm8#{(ie?S8G2{bSdI;cSmtS zZ=Bn$mgiA>*0M8qPwjYmVOuNrRBESM$$f0xFl%QOqcV0jZ*OL=Saf5M-Sk!bB@o$3 zQ`~{M;qlSsO;5KLyYbXdHCka8BDeci%S)S`_EWAXAhU}qDxcf96nz0j#EM$yrbqqV zn);$E$YQqn6@3rJLM`;?KJeV;m;CK5qfGRboaZa?y|l1pOU?MmGJ8W8D&Y?dA{po z-^U*)h7aKQis$)k6WA0Fnz5Hmyco0dR_^s#z-J6+jK&?90{&cU?_a+~`HThrr_b|! z6*;5hlvIq4&-49T@u@h!;nLUb+`D`X(vJ4|)8lBLAN``q4ZZ(mzQn)6^X+WEXfpk{ zn3&u6{~+^xA?~B^;VYZx%TDZ>T9Ui9Bey@>%>S9WzBLU^tCq9Pb=5#ZS5%Uft_1gyX|Y>=biVHo(dU1@8{{C zb>8oCA{U+-i}Zy2Ygv83c|UD7kOxeyDrEwkoTWdGrGKHi3%C({P`$Xo_p%g59u z0*?0o>?_eXl9}(j3-oQ4pC81S{$J}kBV#I)Ag?fetw4es_dK)^EtYYg1H@K$6mfq>h_wwa(1rfi`+%=P4?FfF&7xsGm9*4 zkDKP`a(ZlY_JwnOuQLCpIO>_}Yo3yu+acSk{oXvqLsc?!mU1hZi-kY3tdhNzW7u<7 z#ooKI%>9gG4rn~{V9bS$sbo%cjL}W2eU;`e4CbN~-tZ0RUS~hwgy6y#s;*u26N=5; zP0`Fe(vP<0bTa#SqduoARQalXkd$Nfgt5UZ-Suu~$+1HmM?c_vk9js4mqC z?&|PmlR;7v<2qiLnND`phhQAM^)x|ITCi_XGGc zl73R3{yyefP2HqU+IuIe*%NB(;vjR^HcfU;_?^eB9(d)2PluPgR9zz;@+9BCuY1LK zrSx*DoK&|Oz+3r$hx(?u)6Y}|3x;Ta-yT=7?emm>QQ5A`wS!%>1G>EGV(!kO8&>x9 zYA;vk+KZKQIpw;Ha<#gLy*^9z1JcPXf6^zcyp=5f<-L){cd_s0zU#fnn~BuxZ=&}X zy_V}_=j$4M8DWUF^SyoKz3!m!{zj-{pGS{1ZK?XJ=pMZR-J`^5>XPC%>k7;vXNa%D z^*d>Feop82pIx6>w-|p3>hCb+E%)B9FTY(kCN@sqv;^8aC&i-4!=(0)8gmV1CxJ+;T5)ftKUCh zO-p&EzV-X`t-3GCmXWP<6``Hy3{Y(wAnhr zfXCGdo39zy7JS}+p8l$A-j_&csdb!+TXJcP*B6`4+*(kv^j@-SG{LVUr28i1*FT(b z!&kFD8;vDza0p{cl=*Y~rY|XK{-NcF=Vd85)^A+Bq7enD2CryikNMWwWIZ(L2xxnY zIjm?x@D@8dwr+VQ-;KK!(pj4Geo>Fk!g~BAEp@SdZhP=t>-H`*sRr#WUAjd4J4qSiq;>HKtVfTBnjJ#ot+mzq<^-w+w%O8NSxlMw4%#44-~>RR1R&UxR{T z`J2H~M(O1HvLJt}SPPOFT)V$F?xdA^=Tkh||Ec^w2P&T9pwc%0 zD%?Y$(sj^cxED0#4=SI#K~w(DUh9PqVlTaWieEKc@w>T)6z_e>5nccl|9OicdwWd$ zr$MyTp7yGGr1^Z6o71ym^z5lTwQjHcI1DO3)Q`yi5Xe}6{y}H2{zvu)z&h;voW1%j z+3y1tKHoT|ywu;RUhDxCevh+P{~>$ELMHqdoxS>3+4DVM!tZqU9nQYR(dx(Lt`<~z z%>@^M)4}_|1h@n|k5KjC8Bpb@{R7IU6Ba}5BVY>6>>~if0ceGH5S0G|AWb~gXEEIE z_%AwsH%OCAby^Iy9!%3or7eaja6W&R>9dqCmq4t{xhya|53PDX1gd;bf-2wRpvw1{ z#c&Xm+(#{%^I9t37ojC@2dHvh3pRkuL8X_l4WF<~ynry2yf@J$wt>?@y)W+u>%kkq zB*;|TWI4VL9LC=Qa0p~vJ$Vq6`@`T=a383B2Rp$jpyZ&5PF@L86lPz-TrdeikmF=2 z9O5AyblB%G<1p>8-eJ;V;BbiW`8jUTVV}c{!?eSChe?Nk@n_F-9jiFb9*CnAgV~c? zLzU;)19749BG0}t2RONPV$4aN$HpAzIaGCyeGuoXF7Uimb(!bxu|4dG=pDP4=l-#M zJp0EU{!J(f`iTMo%7ort>fJoOAyX zIyD*21snHs9sR7MA8_;!9sQW2e-%HHr_IT8jpP5Bi%;!W@qgXXMvou#_Z+SL8{)s` z=)aJE!t?XvA9LaNx$v)b?)`lC8*;CIC(rLYdYYsEi=(~!WiGrL7vHxXKjY|E96jCn z?{Rd}(K^Scbss-J-iWN)U!wj}=1=$+opv;Ru%Xp&%IKmV@iT-Y!#uH}PdL8%HSzs; ztj6&N9sfIy_T#Z_j`rg(?yoWa{dj9XaVR`*Xyb;~dqU<JV-i_*V^|0w;tc#YEZHF@-3#OSZa=^p1U<{sX6s14CM+9A-T^`HtI#sH3CK&JBZ37R zQjD`)D9(lVVzvww`Z3noMN)lPm)t}orVc^G0^X#ZMWwV*bs0}+@`>g$=ks#Amr#|| zxq}U+W}g(&G&#*tHiz=Q$s;>*ig0bV=YRee_;9lY_8Z@5r}Da~{N^O&aT=veW<`!E z+BofwB*XJrYpwEBIQe3TxHch~V~cshOUqJ$n31`O{A3k%9hm|#XCF=YTEA|wo?VSJ z3a^+dabkO0=iA#B$P(k5V=>X>NA^$oFmh5bualDl!X1IRvLltYiu+tPd9tPZo~&x3 zpXsQjKZ8>ne9(PZ3l}fCcVVf0Sl#W%3$2!d@qcG{)tbEA_&3A{a@`B{sd(?IKU^#h30_BOM215@A z!6`7gfpK{E49PyPV^p%izpV@XGMN30`CE zJ-h$HuQ|!>RgVXaob@^~i+i&-vsUN*{QaEho(a3ABln-e&3~+9jn{=;%H1O$4;uHe z_Suhas|jPc@1F28tVexzL$H{kIQPIKSLCkjs7#w1+2_JK?`LnVe{I6rV4&?|+=J@M z%ezaj59)RizG%N*Ik+x&E{^+2t7qazI<7KfliIulWzR z2G{m446bGG)Vp7KFu3+c!nu!d=!aNy&DXb;T*GvdS(CQwy1F0p9pZbBwOP6S32W8< z&RoU$`A4~L8@ZXc9T>ibb@CFrtsY6CBMWz4wnxytr9CIIi|#S``%?Zt8Z;(Z2k+xd zonL1iVyY-bzQofow6ZW=_1GmzSKR;7V*Vd0;vYMso6Ds^dspuI$w=ccYo2Y_bN8w4 zN+&;ypFVqeB%4pi>x$=7J$p;ONIpgDtjae^GnC1rC13qQ>K5f?@|Qd| zWlVmh$>a6~!Qu++eAx}v26bmCw`|$aPF^BTCB+%_A(rm+Y@i2c&uwO-D97)r-ltUidJJmhbI_d6M~1>3I5XvweaO)7K;IX?u(^yk2EOzv-!j_j^y@1Jdh#oY8&28+>?lvgL1%Qk&N&)<)XS}vcvIMO)A_|3&pKci5N`dLsmEYAai`E20!-es|ptLshl0x`@THMo~ZaZF+*GJ zVO%nS{zm@Agk z*a}zH^~f9dS8w{3>TI7^%uT?(@bACSz~0fXoBPkTpKP`ZGbj>f-%m#<_v&nU6mv63 zUH?8ZmvhHE+Jx0SN_-0Ivy(fAxP~=&$eMNL>;?@jUl(2k)sq=j72iMzoJ7^Zv+U=`N_Lvg5>ldlgQ0 zoJe0#t-3eJ`GEL7z$>jcw28XKgrRt6yYv;SJ89a}2KcNmSI6B4@Z$MDS+FcPRZuONlpvuv|lkEUz)nAy_j;_?BdK6sTaxj3(F}(-SmEUjpDcdy+Xfz zKgs!hbrip8>TFzQ)lnbs8_sVZGXGhTd`TCnmxI(x@BeH$|3&KOAobJxuV5cH^=WU( z_Miwu2ZqJr+JBZsmom*el zrP7vudt~t}=hl~NDYwDjjV!KqZhaXJVrSZ+E0g+*Ba43*HzUg`&|Nf!cUu+bbfg2l z;`Oh+d<)xsD_+w%nAyxxUF3VYZ&UCs)x|;bei!fXU3}yFxvQk?_=e%k&cM(nJD-(t za|BE;oBr_q7wkTM;xlu$3HDaM_VO=Y`X2LL-}{~5weJ?2=W=?!<9?BYq+7$BLY~Q+ zw1yMszmn&=G~wO(c=&cLYCJz44|9`wMswm($v68>D~Ew zO3C5f`Fc~%onO}~=gz02lshk1USc7<9Ns>j{agWaIJ0Cf zoQ<++OBWT^y zVz6!Nj_tv-?OV9@Bj7@}ty@~Gqvg%ddw2flrnar^n_BPY4!hM{*w=z}SK#cPYA>{V zx_x_Bw|C%zcFw!o+PAlO*3(GP-Ik@=pUx3PMJ%30BoV5m`S~?ZdscHt$78Lno3rxZ zQM6~{GfLw6(XCs$+oH~mMZ~?O&EA$ZPb*sD>k2+?B6-$&e!jICjq@%^%};f0?NBB< zy0dkA`_`8BO@V?ydti5CTYHzuQCa9zl#WfwLdUJ{Pi|;jcH3RGi#j@5?ys$7dnwG- zYZ{Z}R98|ybj^x&Z+|to`0h`#Lmtjr7a!b)EzcV-$){So5qL{7NH%Y2N#^XEpYCqm zo(yigoBLa`j(2S7ZtqA2t5$!!A+>6GvS!7jYa1WGBNw!dmYk3@$)^ZWx4saw{;}># zZhabYTa(Hoq>9;^JS((T9_DQMH4mR;Lh#V4b?Y0G!TJ@;)~sHh3>sIiS_eF|X2ZJ1 zmEfv}1jM0o%|;!GB+ottuPwvZIg8Q! zx0T^{m*Hp1@b{GA?<>PUP=&=m!Ki%p6^+W@Scb3jcQU2Yuk(7N@paB`G=5JR{$9sF!-6ksoCTjC zootYiQ8`eQ1^kTrpqXo(xzH@3=K;q*fKR@?3jDJkZjAcjV&M#qkp$TY^(n z7Q;&%8kBseK&9^lxCZ`li{YTNKMdZ6{eZ==AC$knj=u+74Zp`?m~r+yLHX;p7`B1( z*XZ~uQ2DviVp#9&mw@tDXECe+<*(ZDCxOc6gvBs$_Ln&HD1R3%hQpvqA867CD*umL z4B7W!><@z`eHKIZUE1_H{vObji^VYG?014DeHOzu(4^1tQ=rOgrNyw`*)IW2`YeX? zK>3^Q_)|cY<0Ok=m9xKmt@U^5|Ksg_;IpjmyZoNXr@K*S{JcgadZ#I6t@$WHyt=VTl$*u7ira{TA zG=2rR2L3#c;cVjv#vh*M{h#p|o&x3nICvC13a-Zg5s%?vQ2gECQLr1F3%|=_*ba){ zXjp4l1s=tI0eB1UD?ElNv!4Yj9pxUwDWK$>z0mtR1FnL9+GD750gu8T1m*99$M6^^ ze}|2K2wVxj&trJN?0Z4^+v_ph1Ik~Q@ppo0_*su(hw&SYe-9}C>pg~Rjh{AtHOP0y znJSOr0^`pz{xnejr+5rYjemxATIo6k@`*%d$YVGNx^x-;5GenB9>W91?=k*vkUcAz zT^_?O<2M_>9%R2s<{ppXTC=YK8H;3Adko9L|4DqNfbYS+%wu@^f*|+~_9sBa_ZY}` z*O{Xp!^6hcd644wf-B(f^%(8~m7bl3?S{4Bx3EteE&vsN1z3&$c^<=QpyW;gl@Dbe z!?V1A^*%Wbej7XvO5Ok{Ifp^X>Gv4!2j#v8l>07F?jHx`z60d@{7k#Ya6PDSYeD7T zT94ssvrmIJV1JXxZ~?ds_vN7Es)Hc^XLwI9#ocL-;c-y*$3Ug$sK@XysQC4Pir*ek za=JjdXFrvb^SH;b5tRG&pxmcHxi1Hmo@rne@~3zVPcv~MIj2CSXUJoC!t9TOORzuY zF&r@a!=U2X?=d_Gsyz1^zXx0le~-to+w8kQ`Rnu;J`T!XtMQw`MerLvhU?9~7L>oW z9>dk3{8brW6F`;l7kCU)#xDbv?o#kZ_)Pr>!;=$zISqOYkAljFBcQ?=@E9Hf70!O+ z_ks)I@AVk&HvZ$F@>$<$E4)UKzEq~(W0(OYzXp{2)gHrYQ027%RC(#%aLHj`o0D_4 z%*z?}7@h>>{x~T2{h-|Id=`bP@2nOezsqCTX7;V%_1HIi468xKrwUZLS9%QfUGsI= zPXp(JI^qWCpKD}Ie0!_}bTQ4J~{DNx~@8Rx^%c`qs4pYj+U1?hKZj(7}pjtifvW%hdv zyFt#O$aHxO8$rp_xh@KSEvRzHcns5Ke-k(x`)ZFN`w88BBIU-P23`(-ipMZ8d!7Gs z8TP{-!y)ie!Z`{mpN@dD;175V`#`0$2UNVeLAmP!Irk#d=`n0J`wS@eH-U=3&VNz- zt2~AkAYJp!Jda^1=<=_`%hmZWbb&MM0~LmYAWeAYgvan0sIH~XTL9fTFnZq{gjRU_ z!RhdOJ%(MN;=2>P2>YzZumhCbc8}p&Q0{8LY1ps!80!2OxvTaVR)BJs0x!gVw#TsC z^E1;thQo}Mk%9^mq)9fT~a3;1RG3MA<4@VwgOYy_NE7ewkpaV6Xvtq|_8E_14Ji4m%|31RH-VC` z?>{9+<7>&O1SNj~NK=}r@EFbmB|l~Mv(0`MDEZ}PKh5l?fRbNk_N8VYfRcZ<$c-a2 zns?wAo&zk+? zpyYR$eY@GWfs)?}mLb2{qdQ+m^6Sn19`#G`KVnbKH^Pu-(#bz;_Wfpm2$cLjvp;C| z2SCZ+4^mY#y&l88pycU_DUz)tW0;<1o z7_0%QD^n{#g_i;!235#^4eI^>5O^Hi0rr9Ipx*O`!QJ3?umhC;HgFrb7L@-Qa4V?y zIdySr8Mp;JO(ppPsQ33~Z~#0E_Ja?CJ)q?623tYBhc|)i!3V%J_*~cAG{B`$LQT)6SUrwjo^B4BbWvipK5ReI1BtsQ171x@N`iS)PqOC zI)ysz)G;pXgw4kfgTJz|2TLzbRW1L+zs-r z*wifeS6~Nt7YNVMYeAl6cW>F9pq{^Vpz154$EOWbhJoQA^-27G!ydz|VZCA6Fl87R z4pLv7f5RTbtYN)j+Aw7p7!Fb|oPR^rFVR`Udc(9~$}lh-q}-i}{=ZJ06) z3Fo*%o^4krVUeu zfb-|iTbnX%Lh-EG6N+^QU1imT;+xVFifb|xifh+TD6VguP~6%!p}6C5PE{-F_ zMn6(|6y4vfcd~Q{^Xbwv=x0l_oE+CVt_%ItxYOt-#towH8Q;VCaoyv0p&uSUfZjL$ z5PEjPPMsw;ei(D_g#DP0PB?}>G~pEbi3x+~d&_#u2)(Qiy>nt0r^^jYJc2$v@hp1R zq;5`{>zi~4{m7)F=v|Y$Ib&}BGmoPW z%{+zPb#eE_HGT^b>Oi(NE7ggT5=ZJ4H#Q_M>;r?Vd~i%sq;JX6`Wh-m7}AA_uNIf_~zv zLG)c$@4lLtU)_&>^y*{i!&je0@0!;=k8tPpp%2VEf_`S+FnZ@TUDsfLO&|KeHAm3T zTr-T``L3>aVgIf^^nrIBK|k}ZVf4;xyROCl+CKDwYmcDstmx$VJWz2E{Y1qedguJE z`M8VURENn$g2XmzeurCIzIvX!Lp}52QX3(X&0xcL*-LL8EV+ z=;OZ&xl;4#r0QJ2Npn5@Cr1BU%F|z;a|&KvZ4 zqd#Z-YNPKq|DQJc_Y^&EZ8%E$i+qd#NxM=ku{ zHTpt}-&-c{IphDC(N`FK#ON2z{r8MkF{?b+U+Kg94Rb%=%ir-vf6nL< zqo1+(&NceW=6|x$r;LA@(M1X$En4^e67O-*(K_)Ai%+GwA7}BeGkS-~`;O6%SbQEZ z`gwC-WAuBC|HK@h-t8v;AB=y_+<({TXN~?BqbHmH%|@>jznHs?m{gPcj>SJ(r|z}% zKWgsR82vG$=a{_hRvwpHc)w=!A4cIBeaQSjZS-f%{r_X~eroRj!ssnVf5qq`qrYbK z@0+~8GWtD6ziRYx%isTL^pDK{DWjW=K5aC2eYpC6#^_x}4;#J6=(9%ujmg*Ks1)aD zIRB+af78mR%;*nVc(aZEzNLSf(OZo!H~R0*{Vby=n!L|j_;1O5F#%h9*HYx^YNLN$ z^4 zxA+}5|1Vp5zHaW<82ufizh&XQX7qBS|IO&HnY^<`s~@cNX6=1(kMU1ic%jh~Q>raN z@Q)V%OHz&u9ya*+e-rWC{rFW~*3ypr#XwGDD>Fu`nUxmqAX!2gR^gd_qml(ar=%eQT1*0D{`U^%+ zGWx$6t#f3Rzuope{Yy*luUL3rF#4dm|3gd9VWYoe@ttMu-Per2&ipSj`k1-@@0Q+w zF#2kvzi;&2=6=f6fm3fNeT>B_jOI=ycTVkb&kmOHJnGz9tB!&0bryZZ_+K{ny+;2t zvcxA?r+$hqdXLf5&HZldq{f;1d7ji5-MQ~F{-C+!>abC!dn zht2<2O};q~{uzVZpECZn=3e7?safX!CQoYa#JN9f^sk!xW^@0Dxz{|L)ED?mzUE=2 zzHaU-EPkiWeXD1?cdy)Q-drke?yJrJjpn|_vx859a<6$21+2U)RK+c zBS_s~{A1?+9`k?Fvx9!4H7_mog1Of^fmE0AHLomn#^}99|E9U`_Uzyi3%}oJ&NOlH z$(s8gnEN)9|6y~VHv0X>A2j#v=Kr+G`$wbK8voDDz2=*w{>b<#<6mTa%{NJXO!<%7 zZhOAFFdNJ9e~a?Wr$2!EeERMLzbwIjn&&&;z2^1u=}igxaKe8v^()`~HKZq>W{zqE zeKO&{Jwd;apid|06$yDkojZEBj?Yx;HtSoOI=(L9fY|L1w{Us*4ebpZTAOYtim`Q+5>Q_`)d6^Tkn^7Z*rjwu`5+T+LZ^TWy^k)2+jX`Cy7; zs_(orQ(oO20|OCo0-q7BDlA>HUNqM!P zK(KiQFe;{b`EI;8Qwm73T((f(yXN*a>-gyGBWqU2j9mSSb3G~7GTVf#x&5vWAf=Ws zE(-)Gt5vt%!Ex*D+v7vtqodzlOR5vBTkdPw*wC&E&+77yMBlvQ!Kl5am9E=zU!A^i zvtZrH=I&5;-(2(H)VZ(FEWB+r@%N1oH^vF;iHFS}o}SBvxS1%(@D-vU%a?FLR$QJ1 zxp9f+apN-0v&&UWXG(Ic`0}h{A+7-P7&%GaGWSYzN5_-Pi6+UPuRb#80(SuW=#0yA zn+u1i6m;+Mv!D;-#Bs^Vav5FFk8uk4iAtcLw;Z#8&!}_?`pjo;^LZ9!dR}sKRyr-; z^2I}e>Lrn%O4Su*xr&6XLnvY^6cV-NO^ajGqMWHRHezUhux&{c`xUXNIyNnjP0M1_(%4iLo0i0;#WIZ;DsVH2e}Ln9 zf5W0hvHLtzWo(Iom@STD7MrSL)AHD~EH*8TO;xdJNo-min-=9vm9Y^6VJ?cpj7`(TnY0m2>wYF^7xb2a)_ALuBEqrK6 zU3=^H`|M7Q|K0mE)-xWJs!u z{vxR!r*n@Q@)W-zB4=4TLgZq2np0GsG6RAmKf!wg)HMB>M_muflicb1fC_MkiN$6t znbwH!(_r7P_Wru?%0c~q38g8c=lILJGwTdX<~rj07S5Fvee2B+7jaf;G3Ui`X580w z7HTnPp%(3XeL}#wu0{Ls>(0XcVyQoqpJj;dzbg)&Bih_Okp1?+^s;AlKKJWaE3E9d z64!|CZu9Nh!`+8@a8rTbRdd3`$9cVba` z#mz;*)_Em0Kgn`#^G}dBC!PM$RhSh&$7S#^^Ym5=)6kF{0il_Y4}`iwXa9Juyb{Z zD%-t^`ZafoKhv_8bd?qLY%407vpCHi_R)F3*Nx%tg$unuxqSh@Mfi>UkoT&yqr!S} zYR=DV7v;hz`$GD~NyO)U+-32@Yl}Fd-QR2R1Mbeq+L?{B$SYs>{dvWbKWOQm0Z;Yw zXOGqJEWG!{H$Qyqi^FwmUi``Zt6x03<(3zzPtmI*v|Jj>@iRT}0~%JP)Jz`ksQy z>At6!3u?b7bgRCn0Pmdw(q=4_aN6|DS>%A>8IU@f(SA@c90FOATzDL0s(j&5kb0Xr z;xQZmnOe^r_89hqvvJo4%HLj4{`P?Kx7%Z=eJ%3W?a|%KD}Oto<*yZ#zeZ60>OF?{ zfbyqwgYG*E`CAR00xQ9*z!XRxFPs9>Cc5t!geQ2o$XoZ_f#^NZ*Mgm9-(gq}UX6V% z$h$J5bq3Jgqf2IIYM{YT>m|H$Gii@uC8&6$K+0v|G0IQ$0QfGj2b>A+1|@$dm;yV% zYruOz$zSg=tN~Nl^LO79k=6jwZofF__KS;FJrYfx=sTo^$Z+leXFmuM|EWho;ybk; zr2TUHWT%3Pk5KW@Ql-M>*_)aMsUq&)T(WX%7MgIz*Bhn{Q-*-!kKA9m{vP&LQS`&(2F8^Y?;5{*yy`*z zzOMTTPwTwAGn`UKLVSC!f|Hm<&-3hHwrJd^ltHK;8~>~)gAYqSvh=-`RE^QUYV-=D zA2eF`Tgv_K7(LhMKQ{V0qrYJE2SxLb`js~khG^cQPW`25%xQDK%KS(464CIYe&7Ef z{#xgo<-G^jgQ6p~Rs6j0z6hPi4*nE}`E)ixYkNXI|AhqoIhgr;ne*wR3I4PM|5pBic)6s}qkS+DUJ6^BktXX zWMe#ymj{F3r9xr8I@#SJ^X+J?ThEEmve_fj8krCzR~ey*mT-om(g)r-{Icw9{wPW_)6@6NP#H45kd6uLF6 zyY5`Gu8uQYZ@Y!#gYUk*cIA4VIC>Xvi`4Dzb)oZ91GZLTd&jo>8#cE*>K32hozlUq z&ieKp4{m7Mc8yLY-Ol(ps8CN}{yQ0I=e?9RGSno9H63lOEgM_fQ?*SU?LLe+`PQEw z(Kd=1_4CK#NB!cl_-ZSq#^UQ;EHxHi{dcK;VpeDze$3l1)Hs>EbmL?&JOG_yoThQH z#=F{ortxkk$oMOxaWLq{yW(rSOB^z_9>beJ`BxjSab^W5`SU!6<)HlO#c(yKeV3w# zK#iw0E&|>6`LaI(&HKQ8pAUwIpyy(*{e3Q;pu*V&Dx7YQVHTACR#4%rH(KLng`;t^ z!byX3;cNe-S2a=WgWqJNmw{y<f-MzN<4jbD>JHhnUtn*{J{H$}^kF>@CJgJRrhSoc|mx8D!FEr*|%U>!g z8-+)o#{Fggi>UnjIiKXtGS)L+X3n@uYtsbh$CKlN=RVK+A#!)o*dA=)9<%o1?8{o$ zeci^e8pAyCKvi}A{gBQ*GQj6Zk6XuFX>!uw%2amUlX>frydA!s?>|3o#qK_}+ zt+D#?^XnRqx-pced$nEUQa{p*5!EO{1Of1Wkfg<0rnU9GKaPB0Lb{ro#!NZ?a-3f3i7PDem&^UZz8BnJ@#OD z4=8!7!Rg=vkae$xDNycadvxOg#x1TNPCMb&zovlZj#kCFXPs&`=O(C6t@A?86b;j( zK2>xY{UB$1a8iUj<-?!jajN)q@%03f-(Rjnj{1*LyZUvb-$&%7e!^e;Uo-j|`N!M` zO3e|S=l@dC)P|^C{St2S`&h!6$+LEVE*4{mIG#4ldB6_~^W;(Lm5e~E{yuC;~j0Lcd_x0+&Km1wQR z@8KM^GQy00YZH6!wOD|&y2hprJMJGXaYVoELGJL`vQdi(qo3=%^@Bp}xgSJ z|8AE3JKguU_j^Zjy+s;jGAv%c1wrAKl~EM8q2_~j|d z&R6H_=k%(fLDk#*UiS^YpA)Qd=fsLNLZq@q{TJnfYq1jh^w!_vpK*DTyQ6D3Qv__| z0X|+fvY&Gu_WCmqqBGq5x(fJVB+>m@Vy5ti#~T}*ha3w-+;!Y&8j{Q0?;MAI&5ip=$?AbeR*E@-+R>{C;X#X*$jaU$@G9TIpXZ z4O#B{Ro;9)qRBteUo|?)tJk5U{;R^#de!$-XDN@UT%RJ}#Ea<98~qAy;;ow@1}Iiz=&Rx+6ad z`>Q7V?cC+dcJ(4JtbAFk%6&Ww$x7zUFH@dBzU1x8^CkF7KmY%d@;vvofcvwHSUY7; z^wYs}uedVu`=AHe6Wu>9I5=@obg^M&-Yu;^V9s-_0`OQ zRt?(vsgs#V``jyXa-L*=F5{7c;my4)=dOWguxQkn*VkL}#I4gQy|1WFM{BpN37(no zypBjIufo6V^Pkbk-JSNV?)uq;<+MXDmle%gTvi&q9M#cCexbB9T$zjG3#8>Z?PsBP zS_AJ0|4s|`jn!rZxQU*QhG%*bfNrhn3ttA2>jmzFwbjhUEzngw^ zC3`sLjN^Sonce)QU~3QWrJH|1`@kNJIVHi0Ug}Wig+bLB)wL^v8AZIumEP2ZpsMrA zbanH&b4%MPTlsCEoFhLKQz*AQ_i5@z$|3o_w`RT<^GMp@RD+=dc z{3$-%S;739ueX<$20uy@Zf|k$Z1AJ+R!8xp9?>RTy047*^%h_HENOIUVc%5jS8c@i zXw!Y4$jj@Q9#kp+7|xV;5*G8KxcBpZGc7FYaDlL9y0AKnXS%TDcYyjolQc$Y?IEqQ zZ^r(YmD$Pj5XD(-bX4yL$vcIma#p^6jIa*!TzqC>cHLd13 z&5M*x3wd=dZg$B^a4=SHuHqsw$Z&l=vc@I}MLzHt=HW$Bb*<5U8 zb8%cYWkor^$+BV1xLoPkabtGfTnnq0@T0KG-!`mr3#&X1i!r$6<4o5djq$mXCuVR1A$`@$^ z+&eqj2h(^`&wKQ3mmdpgpU=#A&b)_yM)Yoe^TS_rW2)u{+Nhmr)evI1P=v}M*aFc1*c&^uJxg+@<8hg-dcEo$|d<+&wQEGZl7I zK|gTL-M-J9tfNcFJM|f>So2{JS*3XjU!K}asB-r0YJeO6-pq}!G>(*=kT(A<+J=`% zpL^bvPM*`ZvOhm}@H?dQ7;8njxe8y78&~JO6Y>A2^#7y2JNdh4kiJm#{Hg4pTI1dS zGwo)NjhPir`lsiX=DRDt)w`3M$X@QKgX{Rljyf})^4W^=M)IQiKJwY} z?v@hZeHBTdYcnk>Ed2qsNbzI-G7vn(x=g!QW0}X!9J~t)zGe%&3yi|YG+ku z|H-)j^^!7IPhY2R&AV4+H$A`pME&QeZB|=eR~G!}YwCX%7e8C}qq=J5<+l!9^8971 zg0fem`K9ksA665__bHF0Jo2RceEVbnqh#E^v!vlo;;4S|TZFr#W7_oRd7kRo5BmJ% zVC&pT^ie1IxaeIxG3Z{W_OPPp`O9V&&AhIRyrQl>$FtErAN)%3oNd)bouB>3;_SK? z>HFyYI&^LE{NHwaL4EyIUa7BkWWNmi|Bk)V6UFT<r-e-}BX{damhP zPWUG&H$Q&%`-8s)t@K50##5Gd;yeAX;U(L%S6sVM;+{9PU#~;w+6><3grVm#*JfP2 zFBP{LBipQ~Pn_RgbQWwcG{39zo3U>m^2fQpQ%)B3q5Mh4V<(L#T5XixC3+v{kK_FF zuJ=p&E$;Aqi?J*1pxTdIA7hYr7je4oH5)4^+&tO4RJVM4k$!7Fa&9gvdxJFA67DXA zTZljR+_~DQjf?vVjQ5h`Jhfwb2aJg4C4u{T z@yu6WEG~clRUb`%I#{Xsz4B+3-wIF9q29;t+kDrK=gQ?3{O0$wqyDx0>iv@Z<|3K* zy-!~;d~=%oqI_?jMp~yRF6k95%w0Ude8r}z=@mb`vFOF2Yl9b~KFO~VAKW}rHm?68 zk=+pAM$BZ5=FHQS5&t4vuc@c4+O;b6>`TSL`(L1pn#X&8av%APo|9l=!tJE7-S$jK zxScw-+w}N^+v#Jw9V|__y?AW5*^-3Y%f@z_qVL~HK9Gs;pGz6HT$z4kKKb{95&2NI zPyJ)s{9NAT`{DSwMQef{r!`rhH>v+CsEK`c?MK=s{e5r(smVUA6{_vbmV-HtD^^S-im7gyJw#9?$D< zdU?+m&)l@q+P#4EKlSLGJEJ_1zrc;x%lBy>TllkOQYknwQ{UOa`F$W^ID!1m}`fhdaRTp1A^OfL(U-@~-)-w8u z&7ZHUu7RiiA?c~zPWpHFF(7Max%Z9UE1x0n#B!LZVz(R zCQ9~Qq~R#}^qEP>#*Jk2-t%$(_mQ&uhmrm7BV|{R7i#l5EpO7U%yY6|c4eUT#Y7%W zB|ObT(f1#u@1NukQddWpoA1l}u~F_Eo5|z_>$mhbH82>y>uWZi?4j@F`dy?anu}52;y?cWd2Oq=Z_>*5y?!uiCr0kUT;l4(NITjD>c~jD zfVq;n{K>EKn}d=!Uf@}|Ehyp$|DtCn2ie~mDw(|R`e5?2PmBw`l!o{Imgedwii)=O zP+t~crtW>~dFWTDH)Zs_BEN5t4)wt|;cpes(+65MRezIuw*dS~(UeVT>fV1FSMLb(!1+$knr|cBO)LxrVXk5c%}8$G-C7&!_{h<@Kjs z-^)EquekZWoh2R1ct`I0A?_)+b_iI0l&V)KkS~Vtr!sZ;#@{MSx+8wo_q)GiT?vpskxbxc@gT06U^+nm~ z`+25^X-j_0cvEe}V0f@XL3&2XDpw#78ch zKA$v9;vG^qKiHa@fA^ym)SrL)*@R_ZnI8P;Y0{!^Dxjagi$4Vwo`UzpFo!5SY6m7K9-wO|SlY)uqN9PiMjW?D4ujB47ii72km0Y=4V|=-L zqNMDBBFgn<#+0w(|Ic}+50$)o-#3b9KRdH%;{``@Q5 zYN&&EQOBMsx%k=JN+!N4*`Fw$@vPb#^(AR<6rKy~11&Ap7tkMQB`mciDW0=;(&h{j zmd5vdPw`S2epOdqq0FBsp7} zdd{4y<)v8u1a+OZAa8!Pd|y=8({G;RiudfgLb8qKwGR}}epUIX_C#q^ znxTJ`CJg0cE6{zG1!_ z)ypB;qCwsxWw=#)`6T(_?IyZ+#2oC@kA1tgTgEDpP$$-aK^QToMJoA0KtN1s#usW(f;6UVZBL+*W2 z&RkfDn^OsjZvH#^G%xYqDUaG-ojov&yZ^+G>kBYOP}}9^)|l%<-gSO%&96VXITD^l zH@8N+p}x!)N$(JDqj9YI0Fj?)j!o|qy|0IuYwM*yDECo&8M%+<-QM(K&>)^I<4ELk)+Jkbl(N2OyXn~1MtDNf@kC)93W?XX7 zCD+l8x_%`!qf$7m6iqT;;zpuTzg6Coo^HVJNnk7l}}A-*WI-yxOHXb z&NaEOPI9Ny=j@`d{^I@SkwyEq9ZkXAYwiplY1$s#*U-AXDX@ckbTxxN#%RM9&IwAK zn`e&N8n$h3^1Je{X}lr&1=p;9H~-+Kmd!|LX-u)@{{Hsn@S4V7;nNS!2VloDpUm*Z zjLz$U=>y^$_>O>I$L583d$j8*RQjqkts_;vk-Mm*^z}yZ&tNZA&%coWS{`mG^JtW} zlfK?;S}`MPl>EcSukc<*`9EbgsWJFdh?LYp{)OV#Z+v}UUx5~K$C7vc{aKQ%`BW@*%n>fm3=J60hf(488h@=^lTn1Q~OHs2Qt z|2PX}Qr-Lum0zAiqqx$FO>yx32_czrbVIewFukko^A*{I!7! zzY$dY>OF?F;2qef!TZ58Dee*mhrlNA1lR^11^LuwVLvGM2f=HQbHHP`AAA>dug7pV zC^_Ar-ib>Z_0hR3;a0tJ3+-G>+#-3Q1M%B_Gz=P0u{d$=;8socz_D; z^yOa8DUbIa110Bx+3z>|y`bW=8&te^c?@+gn>;{bqm2?Dv@cF0=18`!=(0Hv2}iUv2ga%)Y|x zXMt3eOu5H!kak!3e8S_s{h;z^kJ;}w`<>v^*f)Y%aIMj2XxFJ?3-^K_0lUE~k>BMp z>;P4sjiAD*_jvC-qfx|@7-hkF2fqI6L<5# zC&3fE*M1c|2C7_-dJGSP8?oOHQX~r-K|L>PK|L?4!TZ2rCQ;;n5d1Z8H>mdJaquCq z1MC1B!AHQ=pu$Oe46DG8Vm}2`c*EuHd%MgTkKrIlRn466814lX?oLqgX#*9XdqBl= zw$anT$DxOLuPeRBK#DYT)MI!Aq=+&D9>aQ2`8W%d`_uFnls~HG$kgUw8e*%UbX5R+xpd4B~-rH>U^mAH-UMz2tHDL2tIA`z08~Dv zK;`3XkKrtE1NLQL1E`PPsT!HH7dQ-uLAgKUF+2^{gz$o*o269|q;_fYDvXZ#SCBEa!i=;i*ZU z&Vp*+J3ytY-D7wYSciQjNR`Yi@EFbmsS=r#$MEdLAXtODUQq7$fO5avW7rMKeV4~@ zC#d{w2bI6AAXO#P>@jQv6%Y333B!9pbGne*zqby}soI!=q+D z08)gR!ydy!W`7VQ%QFW&hFxaA6C{f>S&w0d*|&kE*tdEN7l5_IYaXcdl!Hpo6p*aR zlz9wGL8V8BwJAMkC;0UAfvPY2LGg9oiugUC%2D^nc7i)Wg`@ji$AgVv4LA=}c(Xx@ zG{d@tFf0cpPxt3a-V{*z$6BhBa}2y2x)1yi$lQ&Ke-@NH-LE2f?H+Y>BxT>DF3A%LnTuF&r*nr|1c>3r@*_w zUhu$L2~iG2b4T5<|_Z!dJHq5_P0FQ$W;8BpMW{!9a2SA)=4tosyL8VXgCyEDq5FBu!+OKCVahNt9Q5TmzTdFNFl$(Em^Mrq28M$~ z+J$e}W0*CpH%uF*3Fo*%o^4krVUeufb%z@ zxU;B>Q)G@69Y^=)%A717;zXGvB}X}t@o>oi`l-^>oXF_!NH{TWkaHQ&j2lMJPS`nN zLhZzGi4b4)RfccyQl7%iiD}V(0ec3ePHSM&_7wx=gLh*r% z4x%5vXaN2AMJLctU340K_l!L=h}Dd4^r7jergIO(^poiO%MX-KDDElWi+-kj82!lQ zM=vKnmuF{VbNMjlgR}cE@0r~*yR0~S<<2W76ra3m=qf_Idgs+}ukJ%XarGejnX8Ad zE-OAY@ASN~;uG@*=Mm>?c3p$tYkJU+UVH3XQhn_a^b_+3=i`3@fPNWv9`z%Xcm>E!n^P z!19C3;V<6}b!z$PciCo)x=}P&J~?2$e|T`(NC{9gWmVW+cMrb%V8`kbmfJUhnBYH2T{{-(>Roc}}JN zlEz-{j~oAU=KgagPyH3~pEr84xj$v@KVbCFj8?x#?x&jjHAc@cda==$7|q@x=l*h| zuOnXaKiBBZ#&-w765pqcUT*xq$4>5VHTq%sCy!Ee>ZER$d+2E1_&&uAI+`b3L3=4W zn)iLf{73V+|7!Ua%?n<`OHb~jdBEGF@~QCQJ!Sr*dB&d_KbjZ(Q}Z9q^L@hTXx{WA zmcI3tp7$8tXmo|q%|_2OdXv%WhblilX7o3We$wbSt-PKvy3zQbH~POB9o4VTh$cDWBd~2}^V|ulrA=S9GM_k6+P;aVPbN@uPK?YIx#D>l$-RUbGJMDCHym zdh%VB>cQZ(q+DQ3GUNrB% z-r^IjBm9}ki`G3pWd5Udj31i+XkPs!`7e3VJo*8nqjjaX%zd;@bf?j)XZiTt2*`hG zuBRU|el)NDI~IPlPV*jFe7Y;) z|3S(>pZ~iF|8)s|FX_v7e@i0#VbYV&|K~(_|C->l2YH11`xEm1AQ7Ky6Z!F{3HOH* z;r(tRzRMHg-I}1;2QeZ(^bJSQ3lsTqG7&$GU-Hv`Ew+G{$C~d(-ZOOOQh$giSQmx@R?g15#B!}mWZeRI+<$IL{~oLS>+w>H+qkRzc~55Yi?h&Ze_-WdZ$lL zP?v8R*_nXcP7HUUl-Vk}dDl!u=_fNbHaBcr?3}thYuVn|a=(ticE>A@$N_h$ROC}f zBW`TK-KyK}sB7ENzTM?7XJglGXc6IZW8In$`qJuX=OEM;ZrsgX;k04LeJTs&yv^y0 z8=JYGN`)-!D6k8pZinJu;5IF@x5KmvrEv$>TII;ij&`vm#}?IX*|;74_Dyv-bvIyv zo1Hg(%8Tgvaxwn-F;51%fXH9kF=40dU!au ze2XjUh;%`@cyw?Ar%qeXOSq%+GN#~lV;frTSH*1Kq72sAj|##UQDmW7ynVB4Ebg;9 zt%d`$1vWCb>NdmaC{Q1%%XM}4?by7ruI`3{{QPVl^X@aB)tkBeZF^Ic@!qW1)J2cg z_8l7@pz74A^4Sxod>Uy@3hgZU{A`LZPjdoY;f!|W&oz|`sw?+p-)Bx%-c?(3$GY2U z@27 zrTcd@Y-@~i>fx5w#*L27OYwbN%0=U|>V0)vHaxI+a|?v4c?}%3+|owrS_Vc>Ze7E6 z4srEOqS)J1eVkoO+e1}Ef#=qdmbmEHS5m@DhDVkYVA~#AR=07333iYBn%isF-R+u0 zf8$)CTj&&{+t#jJy?PzFns<(Dv>slJ(+X@!Nro~*{SLZJCTNIlXbAO-N#irzy ze%$Hjog^;zTRhg)28%0y@$-3?RW4taa%%Lw23%zr9nbr}ea|1?W;s<&KTIm3>6U7q zUemQsz0>n~Z!-6iCy`nobTUeVtg#&EJl)N7o+4FOw|Zsm%7_Yrv>CN-A=QB}x}Jg7 z9c!G;NbP+08XPq_hv_d%l__y~N^#9s=R5Crx8+;PJRK#Sil5ej=>kiQ5V;r&4Y7T& zI7*)Pixop#=SlABq1Ot_$qNKe#w=Ru1NK)q8Xt`a2>P9<=v#t*-DRHoJWD^pt}NS5 zQ+a##vFqmloOlU)t$njhno|!a=zR(LiwU|hK{qAn&m`!c1pToD{bGWCIzf|=5%J9? z=w}i%i5}s8dxE|%LEoRCso5j^|4xG5ouEITp#LC2Hz(-dPtdIix+OvXVS@gn1pPvS zX3c3t{5K`&2NQHxg8pQJ-khL6k)RnTj|lH~6ZCH-=)DR0Hxl%x67;VpX!c%=2=6x& zbZ>(0OwjE07~!A2Oe5%L6ZB^jG!NVe_v{H7LGMb?pH9%9OVE1~^zS9;=M(fFC+Oc! z(Cq0M5ue8r^p*tuWP*MwL3bqR{Rw(Ug8o8+-kG3tEsr;CXlP8ew58O6Yudg&5J~@! zPO~?*xp9|leP4XT=9C|8rTpE<(Cu4N4cj*_N--K}x}O^oJ)^N@n|j?bwY|M<3ocR( zt=pO!8Xrk%tjq|Ldkq`fn^KQ%+1!+(%h~i`Tl*uaO-+xac5H9BzbSCCQoQjVYTDM$ zz{EL>Y!T$_xD?S3o{iD6IhAMC(MDpL8dD7f=|+($HyVgt;Fenuwg)+jym;qXZfQ^5 zw`B)?{SB=tpTby1(6V{smTlXJS*mRd znL)-pvbnvXBh}t;KRhJxy$9LrZj;Qj*w(O_?1>y`eA?8oIc0;j$aou~Q$u z%Yw*R9GRs5md(vg+gjQiHgC)Y<%R;Tszlx&+|kNUSVvft8|*=Z?)STlpj_e)Qv~ zc*o|34b)j0FJ=Uy+>O#&kV(GKLhabRY4etcH>a4yv&SV@u_IpmK*g?O8{hau4z1Qk zq^~YJHpgvADt3^w(nL_8+wO?_mQ?GO_@)lup4&LWdhNN^egQ`MybCKp`oEcZ9>Zzi z9oTDs)B9Lb)V`+M!1Z7aSOdNn)c&Sh!3uBo_h2U_FOuY&m0_TFq!4x(gM!P%hJQ7#8Nz{|j9@KSI+ z$arRI4akz`)M}75g{c+bOmG&+5NB!`I0GD}9H)arARUmY$3e<=>Hv5l*auGK*9%?% z?gpoTo#14!1DpglgA>8^U>R5gP5`UH@n8iw4x9y2^zQyAiU85BUa_xco}2{QXQnl- zNRcMD{+%|9=f&qA(eD=@LD6{g4e_DBOCVBw!|UiD8qN33j{dRH8qCT4IivrAuti@; zWTm(V#nBZ;FEVF}qkqrnl|~;h`b`UO z!00a-{SQXB8vSoZ>;6)OS4^f$z0P0sRYucKb+qpFlUiW$(>_h9zqjzUpHoWfaq|CB zqqY7i`jbX$Kc48lMt{L*?H`reVDzg-Ut#n~qmSc8{)dgG-|gs0R353T;EA6y`kNO1 zLZkKkiGPdH3yuDe(XU&0O-Ad!RJq?_w4N8ypE7!e(Z6r>-w+4!wI5gN8UCXG)@ZdS zqQ7tS*DU;hH+r+t#XJ;JR~vni(Z?;kYmEN1(Mych`mN-D(CCRqZ!r2WGR5CvG~*&i zKWnsj`v0EMI`~%fmyK>TTKl4++@+Ao>5ZfR(=HI?l)aTl$ZXxV`g%yzft=cdsa?9@3AwxHm9^V@CK)C=@J>fE>} zTCA~I)nzN9`PHSdsVX)tiA{@R6Vt}#H#RJbXNZ@^rmEPqBsMLMO^aevY*-f0DRb1Q zg-{inmc*vTv8ljx^s;z5dTDH`icL#m)8g2aKY<bH`T8 z;#uycv8gIHEs0Hq=EY(9`{(@3_p*3$d}(Z|icL#m(>s_>UlvcNFO5xAv1v(cS{$1e z#U>2?COjXjjVHdV!@C9x@Q%09Nk;4ap)tY2Ok75%caTR_As<6^)A^E8zfdZo^}5hM>Xy9I`Tu$L-jqCv9H6tOHWooy zL8Q(%|F7>Zr24HNQBQkMvli$($<>ZCQaj)L{}7!+sZvX4%JuZTopiH~EzURpukWa& zdMut5bW#<+ZaTwD9cQFS`t)x*|6fg~T5Z4Lp+4ylG;_wm`U=)Qh`XY{mcNwbNB;*f zt4;qUR5yOy-3;J=iJA0wZ}jU0<)ou~m6;>?ppKR3o@@3xhbNzxZ_ao3UuFM&&Hy^e z*(=}UteMyI!p;xtowzyobnva8J;vQ!w*=2cvd(daYZT8&9##I^I@@_XYbp~!_`7sx z9sXUu|5wQwedeUUS5apXzQCG}?k$MURP5)DAfCsAolgbN^>RkgcA38#JlBjld7fqd znTIn1ogeAXOw<`f4V=v*nzNkLW!P1wJ0~vUEJ}U$!&y(!-F!MrFCgtB=#)yPJF7GNb#4=FpgXgl_m?|2bUJ1K zC}&R%a_*kopTu7$cUT0ZTlWs=e75fyk9Wqw|8!@X`g1|w4euQ1n!b-S{`_4H{(Ml~ zZ7`d2QP~T9P;y`6yur`oR`Pq!o?E(SM(|vAPJetSQxEqGozr>A&aFRJvL5(HvMbd3Glkz|21g$0(|Z#=U!6Une!-De3|Ren|T+1 z*EUD(=_^-xSG?S@=)OKsii+upn8&RVyZGjR5|-FfF- zYu44>xn|vMD>LqdKlXU8S%(wP_|W28?^ySN(F|`>b4O=MnRgO#uy_h zSM8dVq~3PxZMUqfT@#$|7{k1Q?#4W6?o_~rcBY$HYGzxmR_nrRwlAJ66p8T@q?b?5< zmCRdmE7G?$j*xKM=KHn;J8pPr(XCsyJt)IsXGnTl9cbyd{ShaTO##|7A2e@iZDcKY zJG+=0+IMWza-X7cyI)LpYv_1ci{+NaKsnK}VMlvY-je_JpkZT+B7lgxhSvK7?GI%& zDo?RiA{8}5oyaVal@$)Ok6d0QvTz*u1@If#Gim&;1@%5eiCh!pW6xa*W24(ho412&9 z=sh08cJOK3)q8&C9*?2crRA>HV^|GlaaZN}nM#l00J>WL%*PDH<*=LNdF**$@zBhRct3ax9rqW|r z0hU6~^BB$smEW^Gx_wm2pDEB_h+CJxfH3Ss*aIvn>$$rg>;^v$c7jX5W^grF4=x7N z;36;u5{Ic}AbB%YkJ8)`JVcG^p^a zLB(elcpEqk)PAGWB<_At?dNsi04V=@-sXcnAbB!13tkI0gWA_s4_*nTLH0hoeOvDW zwZCEoI1Ri8JWVFe1NHvA8q|CEz2E`xDp1d*{C9$L!DcW8)_}CLQ!7D*R{<)#GEnlB z`B#90WV-xoUj}96_FrkA)oy5(!lq_HS6Y zhJoQAPP(O&fZMF-IPiVmS4E*d~TT67HkMA0DnP|+#$uHtUav)WnQiGHB?AbM}{e)JQ? zgXqVKkE8D`>E)cOJtaNpy%YCyVpY$?z32mzk4(nb zIa-+!%p?fvX$@6BkN>s;^ku4_O0|J>_d>t5fV&-y?w+u&)H zH<=$Y+MU}2t#cry-oh>Mm*B2c_c&Tiwy!9|{KHTp5*uOpw!{9dDPF#b1< zzFOfye(?YQLX2pY8>v4hpUQstZv82lhyHuBpEi2P=t)NZ)adVt=qc+5eA5UuE>;Mqgv}wI*-K>4(sR)4|B~4sZRR(a`Tu78?M5rF$^KEZ z|9i&2+wAW%dZ(HHve7y>Rcf=*zhm@AjsAV3ml*vgMqgp{%SM09{HJqSrT&UX{@IAW zl-7GGKYYUcGuO=jgPA{P{C_g~+oH)+Vco)CkWM=1=b#rCy$Vls7zh6b;T9dnwSP{% zD>{sWe+RckoAc_EJ9?kV`;^H)YV=nzEAwF-e!bZ@w%TIHKWrL*PrA$eG#;tnHu{Vw zqi+};#{G{Q9p(x8%>4l~f48}(ev#B2Jd)qbFR}Ywm@4gvCa$GXJJbewYW?V&Mtn{$E`YPm#R{uuok1YPw@0R+Z(OE~aeiic=FDUgtGcM;AwJtaYNpH~V0)`a~B@PFLC-sAM@g!xp0uXSE=^WRK_H+fFb zwuFD`6Yjr|;QxL?zSbwl-Rn%4|FeYo`xE?i3HzfG=7$pT{g;XK_>~0x8wpzHD8~J# z^}uoZ`UK6`zJ&j9!hTDF{^NxGpC-cd4IGQRr*o;}^gkxz9XpR8dq%uf75;Yxh}E%#z40F;yYIl<;Ft6py>|A4H46YrXTnl~qG)Wx>u_DHKv~aV)Nu}cNGpYD+&#tVV&)g6Lw_A9U@aap2Zo8A1tFx zRBp;?#^ToHzQX=MI~XjM14}Ye$d+CcQ)@eWI(s`^ek?IqrXQ~XN=z1tzAe7?`wZCH z>^B)$5|x%j=V$+Ew?vlHXM1SNL%n>Djh6t&DfukxqtDfo#goQ-33D{NAN=uRE0*2k z&3=aO&Yhf|#%W;%J#8lUTKBrs(j3AaXs#%kl?pZKG4$7)lQI^?tEl;^_NoC>L6>132a0%G<@fFMLY^_*?yDS%C zr`;W#RdR|}NnWiQMPZ=>%Oc`YVo^KF1TOng8QH@xWDN= z>|1(YJCokm-lO-mr>M$aA%+CnFSKZh+X>|VM%*v7Xz>!afhbjZzfiC37OJ#Q=!gag zDY@$R2`z~a7`%4jKV=gkLuMw>3=`dyE5jkD-s?W0-F$42k~|I38~B*fB-!Qrg#7+N z8Ai3Yx6y6#@A?mNe%1Vy>|1~u_-LZn**Z3NuwK5Ab@6`RN5o!= zlXZUGd;VwVZ`A&e4pacy{qTMW%53ojS(&HTYSr$4})} zZm${GTx)xOqU1i93ieON?7xitnhV(fdHcO)?7z+L+hg`e@_RDfQ{>4S9>u-(8vR`q zy{NQM94r6nUhtgTr{VRKKL*+7p}ZFIWQIHC``8n*e2mvm=FLj!HEVqJFq4~pH-j@*`vYW%O%YA;H88RUNV zSBKkco_pt)Yo9xFU)^)>K34zSyLIeCBK{Po+d;+i6yo`}xTF5l_#^nq?Y((?VBE~Q zsp|$tDc`G{`Ta7!{QGdZ{Wa79|Dj&Tmz0--moK(>)gB$s@6WSGE|e3+%Xapw@cp1- zIcf>^tCpiG_tRT_Rp~x@{LvUMGs;tumCY1o-`A1KPrfb@Kh%ppo?D2|Z|>FJm`Zop zzg<`V{5$M1{0aM&C?_Pu|~@0OPwp3*w$y6Slx!%pTCwGD4(`P?A6l2Oca@6C-_*A(4& zwk*FZkCw|R=HGJO`6p{${prIs&keWNl8@_%ck=LKqu6uFJ~zs}^6|^$W5u=NTyd}T zn?{~yjSBJO@GS zcv?z)-A=sS_S{b&)?QP;|FBYiJrm2XKCk<_mAvNq2HsCoVt%qV*6L}WPpg%c@-(d! zuP1Fko9csSsaH$e%5oW@o|4}x<*91ne49M-4teD#u1s4v3voM@JfXPvN9^6*66^mVDaP#&ho%7ZT(pRn>UoqDHIcwe4YS{^Eu1=b@q z=E={=xPAArI|$1%!nBmI-A)*9d+yu@^6IzT9#-;lc^%eb?kS%n%a6|s)n%%_uGS{T z>umKqLpi7+p5zbW=m2Xqi652EX|b~4`@y~}`nc^a)ZNv}MCCTCQg}}`dH0cD(q^92 zdA%-vly54_s}@$}kx&klcN8v-2|`#iS( zjeCYM-wzqnyapb3V?UplRZnm)>m@U3D?jDNJd)w_c2b5fbEWD3(}(|y>l?-0W<*RK zQ1r_)HNZ&L3!CProle4X*xSZG`J@%^VeNs(JT3OO10YU#DJ9=5x729&60f zcZuv=0G080-!39A|CqQke!u#6U7x-3Qpr}mCwG-kpI~43vxGG_I(cS6g*xbFU-qik zLB;-Ir7|$h@nca$m7s(UP)J|D<@@MDU^6VLpw`aIx=YN#8K|x>UnY!S-j?jm% zY%U(}dDo`aJpU}%fW3J7hQ3p-mM|2~DJX`!Qk->Mpzlf^Tp7mWO8;tQXVA5Q#eTWQ zj(Zy=B;liKe)W%+EC4Xs2=ofVwS$)Pbm+SwHsLvRI#1vm={aq zlpp`k!|Z_d_1|#msJ6t*{l1kiwKH;edVS_4=8_sOqrJKD`rJz9ff^fmSG#?DjBkrI zN0TLfmzdvAy0UtiE34{1Dh&DB=*AZp(AHyr3aGZYQv9~eFZwsxZJ#6drd)bgHj`Cd zKz>s`2xneY3h%7uVt89DeS)9x18u55H^a%Zy5&OhT1KoByuA0e>6O`9zvVUd{lRU4 zg^qs;b?2;Y^WP~7^Yg)AQNy;#mNCNDiE7jT{*yuBtMMAXxafWMP>Dc12wE$6A^zV>HGQGZmle}p+{ zDeWJi?Jko)t-w=YX<5 z1H{X%(>$gdLD`?=F+Bm4{p0w19(ce|_n|I;-UCWrKPY)SL87p=&trNAD0w-L>Bm9I z>j7^E9{?AF%R$L$1|?@6C^=0Y({n({NqJ1q041j$YzFg8!Yl$0fY*ahgRB*vzXO!K z$3e;4<}uw1O5R3~=^jw>R)O>RWxyN2AtFcqItEJ4DkIpyIg+oB}q0?8};e0AX@Z`#9v@9*^m#LAlot@@w7YF})L%dwm|$ zJ3zU&7If(dO8yd1^53Aollde3of<2(zYX#-r>2cn@6QJZD17Wou^_YGIl>8$e(}zLH*ZzqQfH_e9eB5KY7yL!^ zdqBxs3rb$rWBLJ5@>Y3F>s(vOTM8=OwGTq+J_Bq4CxE{I?xP*~Ah;7${5%dyelLiT z){P$1J)q=wc}#2FtK=^S749Zb^4@6h@(zQN$Kb@t+XqVCUXSTLpyUmBOg{}uUJg|J z_JWGvEGYRIQ1VYvsKw8N;=cllul+}I?`cr}*L|;esdbmf^iELjX}ixs^13{x*MgF_6ubkR2g<(o8OZ)55YesL#{i}qK-sVNm{y=<{}}y{>7e$L zs-Cm`r1PJKz7x6)yaUv_EI#fwI@+F+B&Ay_Cna_J_;f zFg=&s!8gEVp!RuWK<&4Xyc{Tb+d!W4a5Jyf#qwGN9}&0cEe*V|oE7 zd-FV|n?TvqexhFj>%kWAIEEzWFeo{PKv=B@J*E$U{95;WOz#6FXE!K&+V3NKkAt$e z&7<45&TH#N{`jSP_>;XZQ0cN9Yyr>FH&S|?2Bm)tl>S=NUuF8_1*e|^RlWg7=W!HK zqX!KK40DEA!;E3dFfzG8<;s0RWA@*JFuRFm1f%=2&2;En|pZ_!U!~CDBKh6K%(fha!VPNzg{&Qn? zj6uTabJB79G;?Ejuv>Gu;atO*+QG4hc|SPz5dS+T?3%#d&k23}pPq1r|Dg$|^gi*- zMD~hKJjVZ#iLda#>*D^4*DapJ_*G+SU%Bci|NS#}&&1C&cg<|5J(@a}Lh`IvW+8LdVg83_pPP+;W}o4I z@0@*e@Zp?2{P$h6^BUshnjQS_zV_*Bapl^6{)etT#ee?VH>jx6R5I~>t82*z+Q%2x zE&VZxDf(OVlcn-T|DDlO%={0GUT*X`qnjlky^A!vgIZ$tpEg?ehl~H9(SJ$hA$p3@ zr;WeN=sz-gzR|mpDf3Sl{YeVF==v$nx#%M%?@i-RG5XJp{;c`usL|J(e?$1yZfGB4 z%H;h6VzuuojKerU*U@2I`OnA~Ka68PYv#ka@D}5TaoVq7R_4RFsRg%0hj9{TaymMU zyELvAKaA6EBCMk8kt_Av=AST*{X=svjGH?!BlBS#`U>x&Pw`0IVD<;;UrG%ae}VC{ z#y97p&zSuE-gqMu3599PNoBb5}Qn&LsKAkkF&szAxxb^pmkC^!A z&l2>HuoLGe_YH{`=l@f}{zWk3{N{xDpC#z4$RBa@Qxp8;zB%T_OUx@?;`YCkp#OJ* z{^JDwzY_j`J;B#L*0}us1g-l);{3lz&`%`HpG)x7p2zL0{f^V$PViHS__4*-;X+;A zzFoR~D>1?5n1waT-fYF$MokB5QqL`&PA+{eFxm@80Jaxr5ydTA^j~4Nu^=Tj8_Mky zv5ibcOJ3J`+``KAq6OZqcTbSa7KR1a1tIYX$?E=#o3eG|1qt!#$?6i~rb6_g=Xbv( zti^&}i0b%EaJlg~*KhUMmYgV#S*n<}1(%9b$uTR+G4TYiw&5l&+HHl=c7oU*nL?}; zm}?%{$WnJqvHM`rmP$KYR&bj*2U>1fr<~cY`}n*CvdSW+g^RX5Q8ZrhzWCU+;kJDw zrsLzWER(pzbF;~bD2ZkDqM7&(m5qhF*ki85wq+1-ozfZ8v7GF65(PD8EViFRkw?(| zz2^xVF5|ih^6EY>nyHwzN3iX}?aU;zb@<{?IYSn>$*dI^2@l6}UoevNZ?U=|PTo^> zBXco-vzL;43k%{CRg3fsJ0)U;w4fi){e@yw;8qH##ElTpf{U@tRt#tb0oBcM$H}5Z z{pfE#DZ2=T7Uf^FFJaNbMQ#g2#eE5sbbpJfw8h=I}ND^1fAk zjeyn$r1&PU@7)o1JZLS_ED)jn`I@M?;qjT1>EtYmf7`FTULbdA+)QqI=4=N~&_iCy zdSAK6`iKL}-MF=LeG@ZhyR`mwT;`>{d#hKF|_sh?bU04g^(@AS61`6xlrWC&GlPO(1%I@o!iLVhQ&6{5ympS{*ak-ZY zYe7iwldM+}jhilR^Q6T)<1;TYuj$r7G@`Gy_GC*(lkXi$FZfAmH@m_6Ijj*4ZVYkf z0}aK2O6%ga3Ul&&-;!Z*FI8Mne{Tp1A(YtbuAcl6h$^Ps7;3Pt4_!dD6J8 zfw-SpQ_MrkJ4#!j%)r02;l@79mzt5EWu{WPC)2zUvmx#x;xWX%U*lIS2a4l?n&F$d z2k?OM;&$@<>)eY`hyEL+neMkCF8Z^i+1q0>FHxVkeGwza{gkS4U&;SxSmQcm>)zsN z`OoCv5RQDEUq|M{Fr`qI+bH9dy_dA6CaN92`NxE1fUrDUB`kx=e}sj?cA$y0=)%w_T`KD6%RGyM)6vBnuyKZyk&c}6F3#PKk`n9*}r)7RR=+*!g!<-?UDiiTF zHv^Qly_CP&QJLq&Q@T;lTKUsD@>p6@{)%bo&5j)Q>S?Mnq`VnX&&RP+TqNV65xXHS z{=b%26)vS|ynUM))x4QuJ(=1yr4jY%rJ+7m9LDLs=WoBIuRe8i7q}ek``yghZk~8u z(LvhweGPq{xIXP@Ti@L+FLm?8>yVSwZK^|vM|v}*Yvkhf#}V>*!{^G|+P*JjUg~1{ zybEj~e@I5PHs=e!L>tP}9yPp4hN7sIwn2Z0UMk^-+%M2h^C zeo5Kd`)Ao_=KT^qKf89)O`+Y<`pg$d8|n+zW)|1Jsw_JH&_-&lZZQ8EYf!(#`pm|f zX~-zvsWn92QT*iTOEj>akAOJ7WaLPfzR@)wsT~#F@7?gSX_K3Me3ynH9xp0?A5G;} z{ub*W7u&k}WE=&*X5G5ISo`kMvQ+lln3;mC-kAUX?uy*XAD%xy^?dBEv^;B92T7x_ zK2?1c_{BCinNC+0)2RjjZZF*nxiW6Q(!LL^{|$Rd!`|1ax@U@gZHwy~ZdPAN``vs! z>DNta9rXZfHFLIKYk+)}qhI9L{#zVVZnXdHwc4rcW|3|_zANoj@#{y4Teq(^DR+=| zNb4xI##v_a@1B?3`_Hp3`$BSMmgjxu>2m*_zkLjQOfDy%Pba@$!CK=P>=PXGRJ{J( z`{az_$n}?_=QGh@I$yW_*5%xpH8eRodva#v%P?{JCUq43w3YABmt)GdvESuyA1>P7 zbw8v$C~t?obU@1rVp+q1R~SLJql z>3%9#Uc&yxu%8Am=J&zkz$l6*dNLv;3u`i=ij=5np84|~P@ejtq*T^_m4=S$TQzfGCY-X?{C zczdg3Ow`8S34OkHW2CVEFgx1!ufAWWG0wE-YsdNUF*(s3>cN?hkKUBR{>*vfH?@qW z9F6I_>34p*;Wt?a(WrIO^cUP%EQ>$1Kj%i#J|FeFeINgF{>5qdr_62I0*$SbZs!?? z#odN>ZqEYSF6q0u5qE!^{6}26zP$?{?RXP=(=UamzJ=l=f?iw~z4&?bQoKJ7WL?j~Pe z{Tg$b8ArT^^wM2@eqFmS?~2nxI*yOprgAS~-qL!2G*ujjJ)@*k#W)=xolD}Bx=HDI zl5*6(VZx>?@z>5igIU~h_>c8{H$C<*8-6qC$MOGizD;#!`??96@@LOG^8;YB3$M>> zs+*GOoFhF?R!HY4kxbLsLlZMM?+tDw?wH~8A8ie{BZ z{_$tO#uAL&%Ap%7jH{9T?qeUOoZU@%yNhzSobq=k_3|ChQ662r+=bjPAXoV);(hX4 z=U@C0w9?@G?X}EVjK=;L%4q}bQE55d`{b3w?JB3Fx!QNv53Kj)atdX@_qRhC^y!-^ zDF^grtPJMRkEdCrx{ow_nJ_+M@uR&`9i-vk)%Cf2y!Xk~W$n-)@i&(=N)eWdeB{l7 zpQ*+t&d9%w&saRmP0bH{<(!Y_N;1{=fA_KF#M7O`GjV%+t&7`i6*mTGuN1%WHb%7T zSJMWBv7PGYFCklPc}aVX*$jQoWV`+*a%C>GOKR7e&D{2J>YMsLfZW3F{e*2(>v?ZS zdc}R_#W}BgmfrZ@E(y~t@|vhH)9!8v(*@b?v!(m`!OVNRbo}0fKy8UWvb<$sH2uo(k zHTe^af2NB4h>B9GntiQ1ybxdO6feXN=Ozzgs8aZjk6=G0nl>Q6M<2$R!KVz_CV42!KaC^s=NP{S z`<3EH>$;`nKUA6jdRZ4Pb%4ZSj9kXox__xG!Yiep_CZMP;i=?)V`JpjZ)yf%IqUzl z-s*PnD0mw<2)2TUOn;B*Q=z%_jyu46;A@}7y{y;Y=yCN@qccWppM?0@CjqWLjlV^o z^0@k_(XSZ&G^lmlyFjf=+y-j>>PCoKkU334w3%AIMT>`ee= zPx}#MPwUELPx}(U^l?z`906s2H+V1c((iHgT5tjS+MjR(*a}kgT9i%@uaK-pglQq{C(J*FQ3Wq*~&bQ>u9+Ar}z@K#Xq zGy_})PB8ii^~G(_2SJk1?UztGXkUc%d%=6a<>0-F+W99iZHA1?8UhE6BYCAoXhNJdf!nQ0~p~m`;ImZxVPNc#6bPJ#rY7oCBcb zXrIGq?CtfK-UCX`fXDRHpyX&@Lk4UGTfqh3hrwx}{MP{T9e2JmfxYM?J?=5R4U~J@=b-ptBH6_UgFbx^p5I8I?*!`&PvCi~l=;U%rSCrQ zUeal=$JGPi67>7Pg3~C=i9qwm5rWb&+uYCpJ>T`HjaP}eL51@HkLeYl?6-Pc-2_UmJSF{e7zS4} zo^f(dfRd~BPIC8vlDiw^*V^wfy#ti}oX6E#_df}9hYb%J?gQoC4$ztRxLW%G6rb7$ zpztu>*5dd14}knyS9x^n`xW1f(28#{g{O(U`@uIr#lP0S%AZF-eyv*f&(E#%UyA z1|A!GeC!EU>K__6IF8l-;|`9iuiGa)Yt8suz$h5=df938gpS}{aSDxbkjjM)Oy`N9L!HWG?W*?nhUw8cK6IbW2uCF^Z zXK>D8*65#_b9xS8zUJsP$F8ZbJ9W+JYtDc>uhmNZ`nthu4_|u(Jbmq%Ylp8@+~z6Y z@%8$75=rab!+M_oB0ltjMw#ZGB%{A<^dA`AZ}b_=$owab{u`oq7EUqpxT;eWua=rA7qQ{!*LU8!&L zh#$st!_-fr!}#oB-bIJ;%GZq!sUrW$K33+M<L% zk)E@DZ_7Q)+PgZobUCe}hr&#un@OzbFgj~L7Y5VPMtBmH#1it~J z;3XEV7uTtGujiJAur(pLkz5vBaKu8f;-j~Hc-hDOJsmDs4|T8SI*CWyw`}#ttN6eM zaa*d&6X$x)+b&-1(7Ac@hHwRj620{93+I?i`ci#`dWF2yxv3;{Zl(VtosYPM{?4*L zr|{4#x)0gYJ_W@XG$OD@n}+j7=JoxN*ntsC1ncRpld0};!CwiBXQWInoaEtBGA!OGj#%^Npt33@JSH>~gM>0TeS zTvqX!&n2JPmUb-pe8F@XMVyB>Z@@naVo9d)I~`&L$!nC{p%Efub7$~@Hxy5zhqrcY z4!2U2MRPlMELDl>7^_%a6pg!}mfxG99Vz9PXt)frrL*TD-HWomGdSr}#>efJtz5A3 zp!vn+VfSq!Xe*>H#=5t(cSO2Rqgaz!>Ak)=yey7-+&ceoWrHJQ3;ey+V)e1W8CXD@ z{(kQvSaj2p=9E(v*ZZ$sCQ->bf0V?-bH?6x~i}qUuN`3uJje|_p8d+ z#T3^{A*=tS`$q1+pAr`bX7N2xYb@4)M9p{q2jA|05c{?lH=pBsVoSojWG3ZiSYyy( z=Cq!;lH3&hN<}T@O zgjs#xJgL14_x)$SPuFlBwco$MJk9gP@cH$!MRz6_+|hdJ(L6F+bf@_3Gq~~Wdvqfr zEQ)KbAq!y{N%p@s&XiV)vr1{@!ZPNW=|7J+^X^P8xKkEq&Yki&Yl>>0XFSOe#ivu{ zHG$Fd+lkwE$Q#9TlQ}1}kVpLY>J0hH=aI__@%ldq`wz(XE`Iq=uCo?j;M@K;Ndv6| zP0C0W(x$N>BiMbjur9WIU7q|OKc{oJ{jghy8sZ%pHv0GH%u&x+tq8}|A;SqCOX?nJ z9Wj0{SjoP=J4&tP;k8Wufbk!w!aryHYVtL|C{;~wFXGr%e9@;go#M zYfAqhDET>1aGyP%wF7u~A=^qBifqOve^!Wpz?B_t4Q#{Ha8$r3Z%Jf@7 zxwjmY`6kn!0ZOhCkKgD#v~bXHz%XZ+HOv^M3;}2F2`tCw#U2$+91Id~Qujk^9wOwM z4d{su`K-_AkZ!OXKcw>|W`95o)CY_X`Q)SMNnXfTzh`vF=hQ!r4>ZeA61oc^T*e<;DX{@O>{?pwL6y=Mcr`RNAD-tGNW!HAxu)JU5n)ADYTCVFtRBAo06^l=Wu+*T_Q3uy= zTvfOAefL`z-rT(8LjBgxhkic$R5O$nsUgc$fmYv5j};^Cx9a7ZJel+=dEZsgUv4jw zC(-(TM7>a{-+ICOvx1yO=C1|jPZRHChj-yf`&4r#XV5Hl5io_V5C7SeYKaTg`oY&@ zhx#r$h&}a(Wl4Axn))spq;gjs8t)gYKdeXY$jrY|?ZRGIKmMu;qq3Z~kQs)4_W>*4)s&Vap90Hg>MxvZd#SE!~gYAhe}u z(Z5m7zt#Q?T0FPq=OX3$jh&A~I=sQ%guC>vl||x?yIPke63gY~#F$A&Og~^rUJ_q< zM5>zoIi6jW?<$cC*uQlI`x*G;zgC$8)6F1RwN-M#bQ4GxZk0d4wAyLPN2~k|rYC^} zs#X36)0j~^)CvgG10F}`46}wA!;~Q)^PJNa@jYeLq@9rNc}e+@sBzxivHSYeUFfOnMeF~qYoP0WAy7r2l;;|ngECT;%R8L z?;(BfG&-cG#E7qWl*;jlRy<0jctnTvdC+LUE8jwCvL>{>Zlx$~T6^dEPg}!M#`euB z{4g)-+PN}g#g;M73d>0=bDi_CMlEjB@j5tmJ51!<7+&7<)Q;LkBJ2Im<1{Z^bfI}1 zrh}`uhto)Zmk@yFaWrpHP3^bFV2SLY0v*~z<$J03+8%~1`ih9B_c;^U$woi)oeBDh1pQ=! z-kG5PeS-dt1f5IJzn-8sCFn0F=+7kR#}f4R1id9e_a^9v6LeRCemp_{y9B)>LH}BU z?n}_!3Hpl(`U?sAa|!zM3HnnBdR>CHK*2guGz4*Gvzt+l#p86mC_elwI7y0jAjD5~^ypsgM^oMFQyT20 zdOIFuytQU?Pl3aMSiK!i#|e4VS>MWa>3r4e@zQm>b@zi?`C8;WlcG)Q?Oy+I>XEgn z2Omx8bBNd9x<$Ht0^y2y0@xdMuiaP-b@zI{K@klFXRqQkA|I_Q;JQQa#XZ_gOeFj<{^%-!&<54 z25+f^rwB`NPkn0Z798*?`lz#r_@YUsv}jUAf_STAE6#@`NI!_ z>PK7$c7b!jRUk4aE(bpVE&;Cvo4{+pX&`;ui4EY@;4qHP1~uNF1s(@e;1Q6yuZfy> zyb9b4UJ337XMpO1T>)+b`NA}@3#4y0aTQ2=KXExY61>I zzZ4t-nU9=!9GnCm0U2vgJP0!1IB_pX*J0vrkiPuHK9D}d#BCs5i-}zzU8#wyzy@$R zNS|-w5|FOV#3qmie&RHc#F&T~^=}Xz#xrwd#C1O6;}`WeHU7wmhx#`Dj?)@XXuJ{n zV?Ple`g$IzL8E`s=r0<5kI^fQ=G%!=vyARF`lskhUcb>{eDg;}?=$|(M*phO$BdqX z-(_Fxr=)&l@)ZeEUpJcb3!HNEv6!7>w9--bZ#H_W(RUer8e8Ij(&%p+z24}r8Le~9 zr5@vv`JF~{52T}i*XZw?{68^zpV8kkdaKb|A1$T%Q_1^hqje6f=${z<1I&mXZ@s&3 z7@abDx6xX!Ewzb9=09%qB=g@xM*laH-)r>OjNWPVI-~a(t$k9G_s2%p8Lf5aQYU!C z|FO|88m)8frGA4){IKruVWY1${%G^xO-BE%$-mR+-A1oAy2I#AMqg+2lScoh(IG#7 zQZ#WH#s}0nZafS)1zYu3LEW36{rs<+sP*%OTR3S|10_FhMvqk^9b3?f{9-2>azD@Q zM#N^PFih6+6K~$nCbLpzGmU5%#V)=jye%rcEiAkhUKTGY7%RLjEW8z77T;VjR(M-j zcq_atzNuiW@V2nTUdDGCBAZ_c~KCsxbU{9@V2n<#*3d1H`fYlJr)<<78TwW7T;{$NAM);K)is( zg||h8w}lJHJMVX1Veu^&o>$n`TYX+(n=)>S2c>#`$h}qm>$CEy@+1{#+88&_PBC=q zz0NDBJ(iL@y`~WK0clj2SGdsnkRT^Z9U(Oc>U9+j9PP7I@R}nu&Q=>Jf4dge)`wgV zMY|hm|Bq0XWG(|e7d%R1t2uX|Y`uuwp>I%_W8?L`s~P^>l4t}hT^GTc2yeds4C^DZ zS7pv-bp{H}9l-?;chGv{ac{rpc{rTgtm%@o|vyZM2}FrN^4T5Broj76JE zXf}V3fMx#n=Dojf8o}T2OZj|zrA_y?@LGUH~bQR zUwQ$5=lpz3S^Nh7c|Ki6uheftmE>t@n0~-AzVftGHT%lzQq}k=$F0t9GJX~$?AH4* zO`y+StI6Lr0$=?Usg(OKmw(XfSM~qk2>c@>@Q;qbKRyCKZ~QD+DSk3&N~PR?dHAx% zuNHq@Bk(tlz;|r{Zda3^8^M0x2z>2Bld2{^v@2Q6V6-g%44eHFd{h}<<2tEo@>3)5 zHBO)m&YuCMz z*MPlX6R7Vta%U|lcUnQY(*(+$Ip8eZNqJmd56Yc0giY?Kzbto-fpX^+Q0^QC<<22c z?(6|2w;z;yJHZsV5tKVUpxo*5xVjaTJGX*z2REEMGeEhc3P|ou0Od|SD0ecniFk2z z%2183=sfW!95fs-%o%14GlnU{$S{v(XWwwZFlU%G%owH&Bf~uY<8}0);ecVzFl(4G zOc?^sUPEnHPebiM?Vj3(+T(R6>e>lcd|do-(fBp=KR(2}zLSM|>^~w$bf~xPG@3Yb z3YO!iJQ@AO>^B(wTSiYZ`W`Gu-ZZ0M14Re*E#vo@#>dRQ;#KMe9+?m2=mDccxnnNE z@k2S)x-FUCW^Vi^lb17E<2><0x&MjT5A}@3iQ%;zQdlO)1e!mD7u7~Wtq zwk?CX-14~89-lSLeKPwVR$L|BEH@EcF5|@9FXNSjaqXh+%Bk31F8Lv zinn68iG*dV+PLE5uKVt_doY})rP4wrlXg5L949f7ta2@!cbY}(u{^1GEL{K4ULgvL z%n+`)jnarKnoYP+yuG1<3q@wkg@R_O3+|!^KhEcWfhvagJ054<+l`A-QWf`W^lYuN zUqi#|BP!r29+bx8OG*m7(=Pn&o#kJL%uJxipsk1M#i{o?9?vjYEhTwWMbWOSnYWhg z^6|J$Imxuv5wwxD{JZ{xoV}*iq=3YfWXIJ=-{ptQUxSRprH&#`Vav>O=Nd?>MC3^0 z`~3{`S6CQbTS_YbDneE)VeWvzeSCb+e7ok{bsk8xiihtH?^`9ukvQ$nv5e|DtFM-C z^^Do6*bhvukIr_D&YUIQIG>d9ea(lyH{izdrDwne`#S&a!8)_gzK8gDKgBxy2F~uI ztv%2%HgmQ~>*!1NRe1UF^W}ov*YOvAa_6WwHil;w28rkrgNV_i10d;!gI8&N@UpyPJ)PD`kkBzJ0?g;RM zV5VmLx(xeC6vyqHn>xsQ`>1HsNiZ74eHA>&Yb<%U{GU?U%hWzKR(DF&bRV3Fy$gtImMr9OdG< z(4S)ej1RZpSL4bfd3!A7@!RA-?cYk(eCT_M*CVQT-aYT?iZ0OY?K0l~VZS!BeD96oE?zH1s<)!dOFE;LIROYRV#ZU0aoy_g#B!=!ThLHs|Ba?Tu8 zqso`g=MMK+sGQ|F8=bSnFDclmi`M-*^`vOsL!h*vT)#BLdHE{eeU#V3m)-x|Slavs z`U&0Cjnt1X#^tIG&FX#u+*14X57c3QN}e3D{H3^6J@%~fq2({)uvvVywL|E2sr|*@ zd!PKIj`u0KPl^2P&M=Ou@LTXd`QoW}A6rUZxt%<78+oUNv!VZs+uIo2%$+-bBQh?n z#=H(jtkE7(oeW7;phoxR@gxO+1y*JWAyUy5()y5{Bh zLwRE>`6Aq9l1D#h?W%hx-xT^`$PT<4on2qIsfcDpQJXGwS0K7&E_B>1_Qzf^ClZhM=3#le3cL*8-v6v2-Ae&Jp2gt{|c z-&XQ#yx*`Gd$W0zW&?$GvNUfb({k3$)zgyt-JQ`L&tJ&(eG}`)DL*M6Me6f|1wMV3 z4)R};ACWhmdG*0d#$x_1qi~PPpzfcsI3Bco{4%I`B@C`@3hycWnIm1kLOzN6H8p}8 z`S;<5@?xL4A@}0$oUhY8C(~)4xZ~toqf736*!v`P#dzup>WDo4SDo>!>WVeg72_%Q zi=(qj`vQFh^}yAtL;W89O67h#^~k%AeUdZpKf#&z;Vu%@Y2|gqpw($19pZ7Gp^jEr zv+-?zhO(6QwX{1e=dVtt$x ze(fed&@Q~xg&!O0qq83(kGVJ{FU}%PWH@ZY=~6@4>0m4(zlCzE zJ86Qu(w9BvUK*YKL_PfSJ=Np5THh=#JJ}aJ|D?~y@BH!=w4vP9^VpS~KT&>P&t>$r zK1O`0Pp*6A1}$F<(zhA3coM1}C6B)p^7fC(>&n}&bHAU$qdb-4o=d$e&fB2gsqPSlrDT2=~24e{gib$M8Poy>g~PmX$ZxcySXIhpV_lBQEg(@{@pj91#HnK7(% zZE<04EQC2XcKBwcaq#yP;yd^`!#FJ-e$|oO+w@Yh?@S%%(tCjP<*rPZwjZVrRQl7O zwe+3p(sznWUq9x|)N2io<}5s&g4VrQl5w82{%|ad#D3^T~(Z;sOCoWuD>6n(mY2PZ!3;dqkVj*Z{TOUxaTjv{-)~} z-LPi!qZ@lS+@L)>?ysG%Dr@|GBmP_i_JPDneN?pb6x?U8;wcN-dy+KCW|FuTUyT;( z>UXxs*qtWcy3_CI>2cSfY$5r)>IEnpWTR3geW~RAw}MnB0H6;!$wx)zcK>< znDOU$ER#Px0)GacmRjJU%)ZvKNG-_yp|`j1Nfn}?%PgFKb^r;I;OhAOx}%_7Fqr_6uN#@|NB z+4oY$-#5++9t0|duScyY%G@uDzum@vz#A)*f5!M)msKfzy0<}UBTpswj~G8CLlyFm z?wycIx&QL`Z9xb!k;73rK-8FdqSl8c`CU- z1EEr?=PL1c8NU%`rTE=*iL)LZgFm@~|F)qirTkeb|2ObqL`wBkCH|btJil7_<{7_Q z{#-tS{S_ndSB=2Wj==94fxmGC{9` z|HugZqa*N-kHF85z#kfce|iM|@Cf|K)>%|59}Oe$Cyl_LHUd920>5bl{(=$sOGe-~ z!*6Ga$2_nDe1Q0R6l9Vk`W)B_J`OGcKMOX2?B$!E0ylwq>YpdTLm<7u`TM}_;Nzh9 zS#T@36nq4n13nDagHM8I8lz|j>v2zeT>S>P9{m$wuht!VTz$;r{8zwF!XGr;1H!a+|1oek zDEIgnCS2VMDjdsAU-xlIe*q|abHL5u3{dVjn7%4|=ia5}9_ZWy<<34(=J$Y-lLO`M z;~rP*elGFbz|VtAL4{)mDD#s*$v<_8m!Aind{A-@d0f2{l$;*06VyFjYr*6_UCYs@ ziD_NxF`WU|U~UPx8C(EL&Kyww(Wc%_;3?WarTbCC!=U2#ASnOr1?AtzL8V6z_yzD* z@Ii0^D0k<1OgDh?=NZ~%`STRW9APWp?u6+#K$*{bOrHSd&m*AxcL-$7i@Oi(3d|jV z2GjdN>VVdL9@7KhCouOosPydt6>nW0S7(gA)#zqW@qL>9hRo?+FmUxDuowOPU=G{` zDx9lKU-y4WU-x?{-23S-DSS_ZYe7v0(yq7aJ_azo6IA&6Jf?Sm3ZL%ZqANQ;1Fi;} zJ->B<$8-}Yf9Reqq3+pId<;+Upw3P4KK>2@# z$JHtDW9Zj|itk}EgW~Uu$MjK9>3-Ps2TlJF=<*+^^xXzZ&MHuHT0zNK?lGEwOlLv4qx-!!fDNGhulu~@-mu5?DNyO5eb$QKLq_L7`EMgA^F1EZYeB`2 z?v+ve%m8IhnNa4=;VFe<7+i(^Y49`P5cn(Lad17Ted$+VUgrsd=_6n_`a3}RVg%!;0kapxD@2qn(>&{ z`LuFxiN|y^xCV3iTK2qy$H6Q(2yO#)Zfy@Z0Ima{2Klw__L$xQK8U`?t&-d8F?}@h z`TGc{d^`v${~rJqj(woa@Aa6@ntq$f_UI67yTHOv^M3?sul zaN+RD@D0i$zuKK3|L;G#oI@8Dkc&TFdLiW?z5v~ zk8uy$sd1-yA0B^>d(TcyI6Z;e#U>2#f8e5n+-IMuXgt^m-FU3=IM_dB_mron)YlD8IXvYEc=)m-m%YO6 zXosgBnacfZQwRC)pSGKu(e_V2z@2EjuIT3mw7x5LUcrrJSDwD|%$3|{cGcijhp(!y z8@lS$Rj0Z0?7+-}Gr4hX=6?Q%W}f0dKl2Ugr1slgXvm*^gd5QgT|Id9VQxe_Hz#+^ z4(>kFjc2cL=UM*;c7NdM57gJa(KOU_s);+%=I)x?KbKu(b5G3WMzpzS<_^zgu`%s* zd_S2M!Mbx*7=K7jCEto4<^|{SF8-&C|3A$9qejo9U6%PUkM*>f|FZF)qa4Zp?-@PX zLBTMqaJm^d2ei--ONm_{?=Gp$Y(P3Uqi?78G z^R!{VUYPg&HIpCaQGbj4B=ccj^uJpAhk4}f7GGiB`ghH}Fwgisi{I>JE;^$z#t-v^ z4;mfj9jBRlVV>kMqr<$5?tztm229?A7QbO$g`8Uiv{H3LTm`AwFENZcE=oKKRk)7QbteEAOyn> zpvmhpexK2QWAQU=^q*P$gn6W2xBR)>_*o183ZvyM`LE09Uo!t}GkTW!_Z3AJ>K2n1 zzH?k}?uYLRYt8&&Z#S9EiZY&sEIG?g4VzunREikC;WP$BPCrAsjzeg@?TaE{rNaoCSQkWx1xrX(fSQykRRX;wd3NU5L4`y|_Z7aw;U2am0mNpchtlx40u>Lp>dw_Zb(N)Ga0hhs1Vlv6IRw-&k2J z2lALd|FuN8w5zb>uI@uwU%1|+SPxawkFDOR9Mdra?b}!rWRctMF2#&%6z`@C)swsS zv8b(mK@HYisXXPFyVssSA#~NpN%Lr|oK*5(A0`UsuKr#43*B2?T{`UC0GC zoClkfv!F!Vd{uTUjPnr-n>fKB99|HM;YtkIaNew7p^|K>m0P(kWX-x{qf=S;GaLia=^7+E zpwZ+qp4ujgKPPbYtP)xV3O~X|iIq8%mvg<>U+8 zSSoh7qBQ2g60JbQ9Jeb>D~G^N8ZL=wg`rg6l1I6!{5~S9$rhBbESR$4&K8d6hTlyK! zYnP|Sz0YybWs&GB5SOD%nXY)c0vDJuQCwxJUJ0jW`-;)$T1sLe>wlJ_v|&w|bH1C{ zz9w9kTC6`}9Lw@_oj5WbsX@qFQ+K zlEt?)-@I_i!c^+U1^lHJEfDvnW`B*y;swEY#dAg!T03dP5Al-s!!q1>U+0Z9G5(Pn zvO!Xy8766pU(?)9z1QKDTBq(x<(iU2d>o4K zTj?sYq%XCcrxO3L;}*`GEyHDJ;*-Wa8f86VbGi%HEZy3Lt{Zk{@A0ENJ0wp!U zLz(*%j9<-tts|AHWnP(Fl7ihd;U9T)4VaY4`lgbSkuq9 z&I2_EYrcv9;@|6Tz!7~93+>M#@niJYMN@%?_T))u&1Z*leS&wn@dFs`ePqq>?Gnoo1qW#~N_l*HH!T--6)ufmG?!)7Nc1R>^!>V{&H{7jDTgeLuA zVJV&L3H|rp&2IK2-idaRAlZp&kfhuTuw`4r1xD0iZX;>?0&LliO?D)0R$;|rqtb*x zQi{dONJb?!Htb7EslxKwv9U~Hz+~evyPF_(1mXKVe{gZLA190rT30{{i~LQcGk96=?N?_0&rf^EE0kUL?_B>hwt?|VW1B+FpUwnKauj^5=^7$ybl;{1b^L6!{`7n<2 zWyZ5tcmjKdFJkZTMD|x-%oz}MPib$w?a?isQ&cy7_}QzY18;Nw$=8~q=9{kL94y8T zKb{vKJQGW?{9L>vHy0a&h?qies%Q1xjttZ=R}N02ycImW>WZ5^afdqGrKNx_NU+C z+!~&mabbKi9rICt6Xzsd##wN$)h^xC`hlqJU$8TFl=diR&i?i2=+abubRT!KZc2^) zBz`@Fw>S@h~_v*FEM_J8fYHfrN6xbKn|8|RLSo_eiz?3;O( ztBmXJUh?bb&o@8+t(sS_8}<1={YXvp(lGnupZnnExi38V@q>5OjJc3x8H~|A#(bvvA=h(Is(%xpsoJX+%{&xsYQa6$!d$YCGeq7xS=84#K+@;_p&KVukh_mFmHtMu-YVLuF+1xy zNARth%q_u zZS-Pa-4){-YQ~PAN}QZ0ANEX++E}-GfHlXL)O;@Ul{{yjDX+4Z;y@pJ+1XOkcsF@$ z-KglT6lVqOBX6~mw|0_`Tght^x<9q#-*YD1^~l@#Zq5DAe6D8UJktM*H-2&YH~u2p z^zE82PCtzw{`vP>o;zPVcHQ0NgBdU1`lTkyo6edTVw~R1(^S(py>Du?wf&D6>BZF}+a-qD}`Q_eYiX*quGShsaa)47`a8?KBlow>bs(_F&UbuoU38ph51 zLx1K@-+1q43-101|G%v|#GiHP&fK7)J)pR%;jBr;SB^6`6knVPcnj-+4opEmSttGa zKc07IiYdOof?4WLH*X?2wNt#DgZ0skY-4HsvC+uh#iR4U+Fk6?*`J&_yNWZ)IBV$^+ONi>d*2-G-IG5Ld_MD)qF*LIuXFDdrmot?FU@>w=90a2 zpC~&wtA;%9=Uwij&c2tr`yT4>R_gK(bEeMSoT*dq&VBg%Nx79<#^zT34RNUVuT0FX z{A=D7z7VH>3H{n_(Wcv|!*CbxyQd#4D77>1Xv$Sb(VqH-39V%)qQ3B(mDR9ujcoH zw8O1h7Z0Yj4xajP{&J9c$@xn_`VR9KfYjlw^E{@tZbSCwcuc3ji!e6{l-zpb%Q49v z!ZLN*{3GBv@Bl~~?bgB5e$S^p(UP+HyD=>ODMF?3^&22dpXMI{$s6+r!ArmcAbD^8 z)1c(`g5uZrlzQ>h2r2pZ`7M_VRyv z+!_9Nj^8!DzHZ<6{o@aekM1N<Z zy-4(4C+U`#7O0d5?Z~)I6t4D=O^edC+NEqGXvYEC&aR#nl9BJ0INoaEXQZ$HkI@pZsE6!VF)W{Lm_R+f#AZ!*@13O>MJCSEO>{eQ$fq zNA6vyps>EkeUvHO59h~V{ws52Q2Z230dqyc}nB#c3j`+204}&)Lh-2g=UoT)73mPG4$Z^UI%a`W@LD znY3oNs}vH-u&@;!7bnS$hk3!Kd(uB8sFEroxa9x^fg-OYaDiGl1c{8E}lXk zX}f)Y%F;)AHgQ&PH97C8Z=sT9hXbu#c7Hqdo;n#g?UnK+d4kj~RZZxt{nh-Z`T?3J zRlC~YFu8x&VM#RKa`*sVmNL-m*6Mcy}wHE zhZD3iS6trh3HtQ}Ewgd+`xErm1Z|VEY7e=RTerdcSytsS<`7w_Wx9nX)wMKt-P^Y8 z&Slofy56p9ZcBK`tk&i_8{FSrp{aGOhac(fex#ENSw2WPHd8K77T&G%C0P%k3IhQQB<$~>L=celI>HC@I z99G4T3iF(SRy(36R2=WMJX|(%g zF$JCW_N6UtEd?^lQh7;H_c*2f;c8FwR5I~$VeAptQEW4Lv_DSmH+e(Io8h%eyf{+( ze1r<14|}qt_IU-B=|{kv2;wx}K2xu{Hd*taALLP8^nO+HoYeSP^wGi0*_Z#bZfOf#yNNnh(h#i?})BvCA?CpQBGPGa9>YfcXSRpLge#yLB9jN6D7?h;#3Y z@5Cqi$+XhkGVygF$lpsJr-peX=INT1UQ;gdXO!ayH!n2c`Z~T3L)vU&%-I&^W}dwx zbC5G@Z;YQAE5C~$*ONcae=BbTv&niuAn&;B##qff5My(GKe$KFZKkR``|S7)~`c*B=mxZ|}$w}Ie)7WV|e|rsQsFvSDptA52`l$-v`6r_1!r9gCTwvyO z-^PCf6L06Ncy~vO3%ffDT=xgKxK;nu$9KMtGtMbLAZPXaK5Ghkh&g%c*2ZSyh%!uG z$$gi3y0?B(+o!Fd{px!vK6KuuXt})(x7GiZ-6Q1J0XP3|<%u+wx$iRvseY~V8|$Io zF#A+;2jo`orO`|Dvl_`m?yedkb&I3(*bQa-b?&W^ygY7sJ?o>pd{KH9Kk?|&C%!f+ zgL^K23@S}YAN-rbtt{?`GNL>s9#2U*o)x=Sqa{^##x!S!7SDVBf}fLYR6aybRjlYY zZ^!wq3BPr{2fx)^70Yksek)loR?*FWMSN`MZW+as%j4y4mc+-;%gvTq|L5JTx#qpQ zSvVio&V%hBe>JdHttpDmKB)J6^we_RmB-?7qPkjZ0wc_3FsFF^%C)8E%SYICd5JZ0 z!W`z5KRA;}bye{k+e&%&gCm8(-!J~&#&-1bY;0%aI_?;}-_ISZ?`hXkcJ%gcE^4y; znQcLpwX_O^$)E~`#nJVEt{W}c1u^3Ea{VS3AhvJrERF(tAKVgYH34@kcCO#jy|hxy1es!|0@ZwxQK`W5vf@ywgEx8l{tA+Ivd2oLH6~|q_v3u9%o-He{`>no?`ZAhOkc$Vc$E1{p-%Y zSp3&ZF~w8N{>%{eby8?u!hg53FP8qEA?!~%`$BU7g{%9N^r(InD&Hw?{!}ddX+zli z`wZ$$D1+hP#`EuqT8jA`+|38?1-0M13XFjZz$l3PGV28C zqD{?u1{D7Tp!n|vnHtqSZZX~tlJ2@kEylI(A^y7m=}vGyDF4$y`PX_EQ@=Xhj{wHY zLHQqNF+K*A|JNz^JHQj5{2vA7U;0h*vhI+@cn2u|S}z0R2SE9M2)rF!4$A*RQ2whx zl2|v}VqEKD@~?F<`JV>Le-yk6JWu_t1J8kXgD-*Tj?BGL_kbs%r8heUDx3~b;T!-- zO5J{o@x7qJdE8>W9aK0Q!DV0-h|X-5^uck~y=Gecu0Y|I9#$7z+X!Y-+li&*Ys2{xrtaLaD{5|Lkw4Vfc9#lHdfJ&$OWujDf(qg;^ z#7o@?i}7wy={y831s?|&gAakXf?L2P;Ck>jkTk0=n3VvG6Hi`;cRTEG z*yb?lFyS!f5HS8mlq^h)C^;E9#eU=yk)B9N$+?o=l9H1Br3Xq&N=}salyYa%uoK+I zbbQ!z{67$VA{s4uCVG_HnD&o6z&%WlkKD`uqoa=U?~Yh}Qjmdj8qbKXJ7BLD`>k^lP{g zJ<0L=fO9|B(P`)2$M>H_hvFysO0?hScUtzu(d)B*06*!${W!ZHd(mF580ly~&Z<4g zz7BIef6lvTFK7HayhVGtWj$_0dpYbgE<8W(myy4+S3A|C_8>au=>JUIMf-7fopbNy zzK=P6Ue56M$auNM-^-IGUV5tGW%xPz4M%%9?~feq<+cytNA8u6dZxJW{kY8jIb-kT zgqe=^a>af}pLhACvJgK%?w@htbvXWi==j^vSVM8?^W*%Z#M?PFPFf(s^bYuk>099! zrq|~Aug|mp3%G{e|4|;l0pb(3*FKUky*Q75L!SS8^XOT5?!_z2@2h$CKgjccH;%*Z zH|M!un`i%TltbA4$~^afmKXl`JUX2h{^C5EF(!xq#612Q7sKJ}-ls4vxh711Cy(EK zdH!$9qjk?y*#CF)_+5)-*#0|t^wW9n+w#J9D=drZZog+m_(~Q{A&V^@W!8=|lg*qJ zCA-oSUSrC*b9b_AYueGkp>?w=mA&bsfMv#`w%uzxNM^N4HVv(VXSvz=?Vt&8q1B&3 zjx-(CBzVonrWSWc3BhQdtSNcUMJLLlf);#m{?@x!-f_>}D>+HvGI;q%7T};g)MW!bC!h^1);nvWNmUi zlux0ED+Hs>@NU9Nk8Ej$O+$fYGA3;AIb{kj6kOJ<5SOs+P3#BBu0py^Lz(cX`*YT4 zC9|P*J6e;5ji1^a3Pp+Hq`9;vA=APOpW!`6nHwX_f~t<0tXV&|DH{v7>nI!xE*tQ% z2n9t123stuuU~P;;*Zqds%kdd-9`}RRcHa#*Wv=pu1aODaVRa9xY{5SWP$S}#xB!9 z+!+;<8;kF#=Qe^Bcieq@_~c49O_rJBl&Q@bja8_u3p>bGwA>bB^j%rY4Cg#^lM}ue ztev)(Wp-+1i<8!oIW%*B`0@gu&n5$GZ{W%^tQrg@#5fGwu^()GHmY~recL^jL8#q% z{b1IaVs3gar#Un>`5mWJidiq2M&h~UM@mT<6GI$&bf~=Z}D-Fk(-7&Tb+Np^ge;KX@>+SUHa+DzK!sfY&pVFAR z%l%?+%s(uQf28 zi?NKy-TcJ zg>l`b!zh^diA(2wG$`Gt{UXuG^y92+Z%zNx!O3R5*WEi2#OywYAdk*`BXX&Yo4yZ8 zUY7^%yNp4V^+z2(7UkQFm8|it)jQv1T*kWzqb)G&(Z&t?4sg?D+>~+FhWB-HALaY> zyhq0*x|Tw>^BzQk@$w&u2GdK&MW*Y$&_32*mzJ@HSZeBx_6exou-Ad9x!nix0Q@?? zmFViFPVCV8w-a5|fv#4)|8=6Po%hb~Cc0Kar+8Pm`QOb{*aM}JpS=082>VOfZ}DI$ z=MUYU3-UtsPwSXbvuC6`ZucZSw(w2X{<}Z_$v)YiW&eQxM(bI9pOw8I(iJ zdwzTQW%kd!FeSTo85y6mmx8vC-RDZYO#Y@vC%TfuCr+=p7;HUHd+%VcPQ^IRDzOKm zmwiF0zYe-?r0gn!$ksM}tNqZJt$T1+d6~7F=K2-IrHy^SLbK0-@Aw9-*RE9mMEiMB z=H$__=tjHm;iz`B^u8R6YHk-_w#N9!bLPC4M9KjJo%h%Yv=nCtUia zt!*G(e0eYDw-mn=m zr*T&_99U$Z0UlBBYTZ~;#JXUo?g~Ws=S2R7&GuM+mR~Eck=&uzSjt=v^-539SSJJN zvGr717-WCQnwv4M5dSkn*lQoMo;H3Ak7arfKaV^6^%xf7|N0R2^)AL$Mf}q?%`?fu zp!8A4%~LFYI)|`7I)uH}OY{`u-|g&O{08OEnIZhsHZIA(*V#|8&KzY4{r7s@V(}Y8 zq3M}#VUYi&&K_|}&men!*F=x%8S>De^qq9}7b$062ia?V@BOTsXk8D>y8Ra8dqLcr zb8%q29r^~`?F8k13n=#+Eyh!z+)EEG_et;ut;c{fz|%OM4n7Cc7R-9yOzfHZZXbyZ`POEK&?xi z#*#kPti#DY=YY*R)ogGYbPT*+_T-o7=Rna~4-+jtyy(}-@7c0~PrTFzGPiFy=6Dm?nH) zhj%;daM=!-Gjp}6$Y5(X0tRCrzpnL?u z=gIf*`jGVNT95Jb8tM1LwDhae@u#UbdT!w-dNhNOo-J}8vcFF>W$))9$8e+d0pG6L z9PQiDD~?VR2R*t!NA7(;^dRPb> zPJ8VXb)h@l!;1wOEq%_p5qnm1&6*9{H?3Q<=B5JTO^%udhIy)TV`9`|EAO~{jTB&7 zqHr1}bLw)iACykcLB@|U(rJ(7P9qPOb=$c{ch{P=O?*V%#sXKfLz+g8f}-##g!s&T;KGm#+KH#yFy2Zlo`3o?@S)$oHxp;;#Nm(jOy>;ZU9SXV$#sE zX^yEwHuE#;V_!eQ^}oPr->|h&@jET1j{VM^n>qLEFJ3iT%AxLQt(iA}_9gV0<}(6T zqe;iWQ|O-76n#VxldV1ft2OXqPrDn3eShBOXsFbO_qpyj7;05;vDGP|B1dV=@-5dFQCoVAHXIG=(3&FEVmk-nuAeM=eomSKnA;ar1saS`+hw@eGR zaz|o4<;$6#VBbjH4--55wO~*16P;%6|on+~ERm^f-Dy%bBW|(eK0}eYMj2Rm6fh zC(vgYH&)lmxseG+UP7;6(-pFl8TxM% z4}}-j@A$LZ^^r+6(k(fC-U`EqaQ2YTt--k3&TlMP&{NB zKVC{-v3SXUq4Zi^$UAPBb;e*s+^mNG2dy}L+f&Pp(+NJb}_H`;6 z3$CC%=L9bt`~=OcJV1x}&V%-Rk3ZL=`c^R|*jlNxTcP?NRsH8KEwvr|y(skcE)omw z_4rx8i-lR@z-X-B*{*i`;f3zeIj-J8A1B zt!hVVyNbgb1=^DGts~HRwF$Vn@<_$hV9pKi4Ad)s_-Xo^(ThenS0?i$acsyvV@8<_ zj>kZ0$xq(?R4MlXl+h0iqdyoE%!g`e*mlCIt>FT|H_znnZY=Qjg* ze-AyR($*2R?fiqdnOuf0bbMk#PY|t1j`HWff_>jZCoH$#f4cPQBPCb5ycrer2Rf7Z zz_sI>h9|m+`*`m3njzil1J?!9cMK2uw@*d~K0fIGD(4hcR&B(s+pasA{1)#v)>Kqi zO`oNBxwW155$_L{1huTLmG9@wm+ESH(fg?E**lfjS$+}j$U-;&qWCL43VVNv&f}FI zSv%3j-<~@yKk~4nsn3+{?UdbZl;N$EHIYURHt60HgIV4Wg!CePRBm#@mk+4J&Yl-P57gRPHN@GN^{w}5dF7W+b_S~IqgISvMcU_Ci-Zz&t>I`1j;?`@%>-}Bn ztF4siPCC`E_{hq7Gchw_ttDB=57uqIe@jDa)7p)V0biboE!o)A$cLfyy0UQ_yJ>=z zH-8wRIo5c;ZsNIT?R|~wT4O8Ob%E7AOI9wAZEI}VvU$_`EV*?%QhQLpa#4)QkvL=@ z^7CCiIYLgz$HSp_y@qAMu+^S0!8@v-g3qIQre4m?GY%ffGjM9AJX0!No{1BK^Gt)_ zTX`n*KWu;_mk;4!LLyKRy!Z(2psuykbmS3^GHtR85I61XFnUuLh;u*89l4`6|zq| zdsiNV`1cNB|N0R2+6S+vSok_Gq^Fo3U+0T1WxpPKB5l4;FXWz6qu17V8?T2x4U(yK z+UE_L@5{^ls55`YnePNCpSo61dh;zHd1AgV51Q}G%UAyDz(>*&WV#@j)nYSvlAZ$2~_k6NrF+f6ut zF`tbkQ{}Oh;3!c2Cw=T#Su#%^o5mgT$k;QW=;I&*^jO75?iKzOpu!cM0>^<#M<>9` zp%o9=PXbYujKxiWtjep2?^s2eApbw`orC!cOG?s_bDSsAm)lE9&J2Hv|L2Fl&RtT6 zqMfYvJQ3~Sf5*r}oEx%Vbhnp7J~yh{T?;v)tpA)GeTx4VN4If$$bRGfnahsq z^w4FeFH_2c;D@9;ye{;Qm}woy>s{^@O~&|f?Hjynov4k%(4)zz)`7g<=V?cOna)R# zxi=C&eq6a(;o<&}vp*qz{QS7_xA+n5`*B_k?fY%5zsTPA(^@A8$LFh#zmLy19sO4> zybecy*U_3RDLy}R^uvxm?dTRqpLMj(Ey(@pWJ)7;(o#u?d6159PP(l`V3?5$I-7j+RF`( zI2tgI*8RlK%RMjh&R^!agYd)j^?CL&T!!s`KhIv4VSBBQhv}c^(Q3D0d)t$(TUFZM>ZDo^raw|CpCPc!?xEt$Ev&0mZfj+mB?{KoJ1 zy6=1brSC`Of{owJzVA*3aXs_tPxN?N-K>6+8}z)}eczSVd1l{t8X>~)7_>fe>3!Os zPqmR0=(k<`9D9ikIgi#KHZeK(PyTvK(($Qe4AFCd4$ZvM!8Tf>oc}|uXSBO~i#cE2 zq*MGV*~v#&rY9$gb1{$%WQQ*#qr83Jv+<{)OP=IzKJ-Sg4@K50GEl?*a(;T6-B01j z&Hv0(u{W}{2OV{EQsRrqV@7uv+m-6Gx*x00)cfYp!irMo_+c&8g4x^26*w1)kDpe4ql zuRR}Cz$N~RyV$(G(Z_~+DEWMQOlJYZ!Dm>6Q`JRoNeCT z8r!@f#{Jrxx9tjA8aHm3rR>eEKE=%QQWjg6YG~RNDsNRRGPYr(FVIklgq)emxyuyC zhNf*TIW;M#7z}@E>}I%b`c#gUzE9mu=?t#NvGto9TQ+^5HI{1F(HLupg(?*)$5f2V zzdr?-E@>O_r_^??YiwK(Gg{O3CNpS;3lI)=dqOBRrg9nK1#e;VZH-b@V(9h@_?)=E zsl|TdxM6#1YO^+PlOk9k*A`B>9>bf9X=+hRpryTsbvA2Dt%XZuIit$1v2Y4}v5 z$pI5XYWK$Nw6AasRoqSFX0}1A*laCt*$%^yV;rT3=0;Ty;!KCKk=$~3L$YN&hly6WSi)w&6{Q|SriUGR;fmY+5HXMn&H(lJ=n5s^Uhtdp-S=+QDc7xWxO%l ze>j$*WZS+&C-xp_Tt73mg)hLj&~=ba>OvZ}5Qi;nz){=dQ}uz5KV6Kv6E4uAkD*?L zI2K6lrCe{>Oh33QlqRa0B}qH%0T z)8>t4SP5u0s$7MvB!GrmSPPYOQ`7z1?>BY+{)V0AUHx;*b{E}%TqSvSz{(lDe4nqz z>C=|SKW4V|gdLd7b+sxtE{p)1S{rueWL3Uv=S2BxDw<&w9!qWY+q`*8u#yg=F}C=F zIfYI9bsU)5V0>mB`I?gLlVUneOw&r;KiJi+OP0jgjJAU{5+90ZkR1{W_&0t`*}5tm zW5A*6GK$sRvogzUUBf0*26PCq<+J9^uZlfDM0lNBT@$1>x3rpU&h$lQEhdKCPW4cU zx(@A*<%7+ruBNx6$;Os0y8G5xecj4MR4c|>cE;U$Yff&dt*VcIps}Gj$ZP-kcG+~> zZCcsv%d+r!6mEVwHHs$MO7Bx>?AW+@bMy8sPGVXT5~%98H6UuKfzU3uHE!K5*a)C5mManZHkIo*S754CHZeZ7FoqgA1F=Tk--hiv1wTDE1`M`Y ziHQu!W!$iXWEkO66){vU!4g{qHO&m0hvJ>B-#$09Y0B7{e#MQBh1yoOwkmM)YQyGm z5E_Ux8I@(4sp7syH<>mjDJ(lg@usS_k|+dsWd`w( zsV`j9j>FvVXfY$Usb7uvZ)x2{MbalNvAfl^X2nzK6_;nGJJKi~5+yQ`HBmQZ7z!niyJ6sk zkf2yvjG#~`h}<*{a^_;~6@ zS`SHrI+wEs>;(S+>;O5#G4=q6j(_Z4@b|%X@DpGg_;GM2xC-0?ehf^39|e=(N5EC! zJ>YWiZg3g+VK4#Kf%Cz;z}euPU?q457z3Aqlfc`-ao}xW6ucD-z@=axnY9GeI@V&a z7hD9U!33y1TF_5}5 zb`tmja2&|`x>?V?0Sut0fqm4M>%rH->%d-cDwqai;2E$2JOy40_JF7!$999%J+uDH zenPYU%bvQiotR$@c7T(>10X6(vo1UlY=_qRavO+>b?iau8MR*k#~lU;?DBn|0*T;B08ECs%^#Eyu>dC`cTnTQ%#;!$Hin55Z`CQJ)$l zD_F}NGj2r5l-T)F3^DKzd1uxalg1_c$z@O7sd4m9M=M-C@+x~z^F0DXQ%2_5>}cw^ zd4@as0Z0ECe&zqmj%Kf-p`Um3KM{cJ&pNu*(Pavl=L$z(=jgw{Ozu@r^ynTv(K{Ud z_b&X;JG#-)Uw5?jN67tOIr>YEKI>?;JK5`}hwsFi_i9ILJx_M49X-O)TDR46h@b4W z&Z|e~TSaS~SkDO;pPxDU_Z|I?qkjd;z4|#lpLMifpMAfhKkn?m@50~Z=%k|$IQkuU zh~H61f7Q`{>*$+Y{Qkw!e+|n0Xw3EK9zxNzj_!5gZ*VmGHjVvbj-KM^PDgjS`22&T zKkDe$9sO&<5dZg4iS_K|CwhsawZBI67Dp=`qK`US=kP@TtE2ywchOhUIP`3H^!pvn zWfaE#gO1jEuH5_e@H$7cf8IQ=@?ZA<$}Y=v>dy&7?%#6u4>?*N(AG1~#jn=UPq_H3 zar8V#|B<7AKgBzjfh%&(U9VblTBsmx|9tNB@*Kh@M0zre_;J(YH8y zxQk!P(O-1&X?OH=M}ObZ-T0ONw4-&espx)3YyXny@pPVg_Bnc*qi=F_+|fVAjojbo z=#-E=ThF&~EBC7%{b5J%bM!A<_??c{Ias+r>F8;W zzUb%|;3@kV3=VpbMGU>r(Z6!x-{a`dIC_htCph{Gj(*0)=eVPnIQmsbr(O8hGbri# zLr2#+da|Qi9Q_^KD1IG|Mn*IA-#c0xvSc4|m#;-G~+GsyW=JERk z%tE-CgY87xA{slGrez4*p8E$G|UrEW4S4mS`<|b9tIfRCWZtSX zZ&jJMd6~DlnYTHax9m%1{e6Dstv2&klXGAsM@GjFw- zx0=jbb>^)q^ENN@HaGJ&C-athS&-Q?FhBEFn|Z6ryrJoI+YYKSZ}T#5b2D#qGH;oe z1?)z!TMOoA-fA;%HJP{S%v)9FZC>VWZsu)H<}LHGAhXqBe&($<^H!62tIoVtW!~mx z-sWcB=49S@32&WPz}^X$mdsmi=B+04R-JjP%Dm0Xyv@zL&B?s+LO|@ruqjTZvq^S3Ub%-j6TTW#j8Ci7OEd8^92&C9&a&AiRY zzRk|Qx-BF=OtzG`T+F=HX5MNtZ`GN%s?6KG%-h_|+nmrF!u5OIr&3)ryXq3>d3Vfn zhj|N~Ont>Ilix=!=F+kGla-8d|MbhUx{edeFq ztkNd%&rs)XJ)h4y4>Mgny?^lzKSS*+IpyMIB8A7}@Kf4mGdUV(8Rf8KE@}3QSTP4j zdHYI^VwAv*JZX;fI`ni3+1`!-F|3-#hpTe@BB)8viL_$t4`;VV8rFA283IpW}CM16f1ZiVuxA~LbLgM4b>{gz-tGx8Pp zD`w(i?z7W9d%fJV=iT#NKiufdaqhi@#qzFAXVJJ9FMMBL_`Fyf=khY&&mym`)VWa3 z*!~?VE5*g0Z?J;Y|mvJsy=7rAW zDja@$`DMC#C@ls{MFcQXCY zn$oMA1MU-)`B~1O+PqVrVZW8QUmCyEgf}&YAZO)GKU%p8Cy?EhfJfagOwFi+(3O;?L6- zsVBvFCCrgNd)70*uhCtV_D+Fp-)!5mt@~=Xx;Nkz7xxbGC%?~d`Il3tBUfeXwCcC7 zXSOco_BrZ@ERXDWIp6%)_f0+&YRhkg?$=bCO_IJZk(Xa`?by^U>P9X7XwsFh|5j#_ zI?L}^FW*g6U)o#RJ~=fi=z5a72%ak8&dSC1K7|D5kXzx~j(^TaQ76<_4sL%mX5(ge zN%S@1LA|qSp&xxu-+-Tbbtu0m-$>|Oa!~J&+T-{YLO6|rCD?-?9V&M+IWpz!O4us`7JbzTh_a*%(W+tc$n_K1#y>^q%)(WyxW#qXH2KMIdR`J;1|dZZsK z6#f%du+nRJYJ#T;IcE-Nc+*{Q!7|bc?Ufr;2YUD8AhBVa`+P z`$(c^g9-;3#Dp^mBoTGx7USbUg`@MSU_1&coY#rWNKofcX9JoEyh=a;!_1q1E+!H(X29%b)i{(MB)bUB~bP{H>z~eF9tF2C@6P_K)GuN zr-3?eC3>l&&k>2K(5FD-A5=V#gNmp0+7wFNGZy2WpyGMRV!Q)XJX4_jCqenI1Lc1y zDE|qI@%;0lRhY~F81On!di?i;FM*2hN$`5`QBdj9xloxS6PR>Na&!lgQo3~BQ}*Sc z(jRr^=c!*Ze+ZQM7Etc%o%wuF<)n5bcWM0bH@w@S_=|3Hm~@zM7;_jnOv8uQ;oS~9 z9JV=3I!ri>IRuQq5hdNjPq131vyj|#IpQdHULG3J$^YI_=Q-_|9(7K)U5+`R@1u>` z%l{K&d-yWib7Q-WMspGQ8D3wzn#f4s>F3L=O&fZXYkz%?{zFG!CjYqqlB19EF8ZjW zKjiE^ziQF^{QUWU;8yxl-~W8k(Z0XYI+yHy|GL)M`~Khu#7FkNfBRGC-uE{;eoN@fA%jWU-a`rg-(=I-K{P+y!ijRM; z!+(f06O1se_b~l05Mer&N7v=iOY-Pbd9>C;_{%(3b@N^I6rkzP&N~+vpk7WQD*CEL&37iT2L~+ z@WWrm3Dv`_Tq@BsuiT2d^EEZZJo`zTY}B*N3w_n5s5`4ww<>S`BSgJd{cu(7?78*> zHU+<5vtz@q;^!DswCNzmk4O69GvN-vm}dW_Q}(@Get0}Rf_MFf$&lyW>W3fwgmo`| zVws}D`g6t?gs(PhWB+HqU!wt>XU&>=a?`%+f4k%3hOJ=SC#^o$yD0N74u{e=?{)li zo?Fi(_=O*r{EU(G&AI0ybK`gZ_pMVmzX)3Yz@|6DAn#=;{k1lM=}Ef@K|B1EZL8YN zzB5_nL~$+#$hoGB7{LbVulGKNei{byBzNi0gQPv#!JL5&N24)Y&QFhuK)+@D+V~yd z_gFtRd|FcF>hvq5INY`qu{i%cAZ(AJ<6- zXz$?EU6>u?f~wxp&h9hlb4Q^s8D{l_(pCPL`zu>9ZyWD)hv$OLLD{5DZ4d8RnEv+> zo7=uua&bHH+l8Bf(R@E=gmouf)!8M%KHVXyxEfw#f_hWWE)Tj64u>~-P~DxW`}q1s zC;HzioiKxbqg?l09%MbFn>#DT&)=yT4H63~_=ZVjV4$AzTA=)qZvUESV!@iyYnrLI z^_8VIAIm=eV4rxtL0IRgD=)7L_PsJM*!Q+6L+LiJIx-BsmEva0Zt{^n+`L_S&5_>W zLDkEACr0J3?<(|{F71fkSn)uP=%^if-eSOag#bx);CQg^%9_pfLkCc)0N*k#M zly$lIS-r8n%T#vKISG-u>r;e9xYcaOD3^};mYajF4_zMgSMh$1cohtj`a+!;Ux^!i z3#RwxgtpgEugsl(e5)z?8hW()cOJZpx_c*e_zvpwGV1j0hc9lvjk^F#-QAbL{z5uT zwISu*S?cfw+E4q~JNwAwzmlZBs7?}w zxz|^HN_Uh#<>kbJcD51vF$H~-;kz9_av#I}T*|ewq;18Qsh7P^B^H?eEi&@H26W54 zH}Soyw+Ax*RllG4|B1!p@A80!vYawh-=+9h7U@eB$H&hP z)T62@m%FIyb|mpma`EVkTlWTv`k<73B{Hh2cuD;$+W6rPiYwSPk6iTFFD-CJJ1UKR^CUtUsP`ETWoWPGlq z?Nmmhwb8MiwOWJp>s@}Vn!uW{`rsPwtIfB2Bj~H?=FVNUnXvq0))>e)n9BF ztKCjpRGx}QEA>(1y3&}WepRw|V!qv#*ZyMk|G%J3eYxz?{yU5KPyS{A`OL1VhtgA{ zc>Ty6%NQJQm2JnczM7ww+Az@tmN)RdH}N^f`s$0s$J1382cG>`=m{m(Ern*%W$F%T zQ+;eDeLcnENBZ<_vF-3b{o8?Of9c+f@mW@cPwc`#mHMIlGPt<;uNm7SjBzE5b@}(8 zmr@Vxz2sJAw(UlF^BD5Xw?_n3st>H&u3&yv{wDSMt^}{*c{Sw>I2yaiHo!)_o-pNlxmdZQ5_d zX>F7BW7=k$DPQg9n3P$!O%4yLzy0rA*{EDWC`Cec-{l3QRvm@xw z;6dNXJ_kE~t6fkho<(+PEEStExJ_D_Bulbf?w@=Zkga=+G{W={6%*Avrq zS2c3=9QB`9{%yOt3!U{{>YCeQgP(9e?b9EgqiLO8GG7VpdoBIflbQBy+saw&8ff2S zW>qWl!`e{)<>yX`pyFq1Y2Pon_Dz2;8K!*T`vLd5N0>kHEyzdo9mvR$rx-Jr1>AQ| zo{^4cC*aPEX)Z4mcjap|!Cl^w*|olmle90Dv1D82m-5<=Z@y0;JR{rw-?cAP-~7GP z9mHRK3F+J45kzZarJc2^KNm>LDAMBRP-)Wl25CBG<_2m{cI-=%&tFoxQa0X9W8i<- zzB)$+_T^Qq{=~?GLgia1-@|!~p88n(;>3bp^0%FP&((%HT>dU{`KxjmDvy5`ZVKhK z-IEtN@^$hq6{;(o=_)t^!~FpmCe;jPSjI z!sB+dKGC0|Jyn9ppERMt>D)6T8`jy}?;E^WXe{yHHHj`qZ-T5`2}VIHE9$$rfw@;+ zVQI{Ji}vZ|PW6F)tfg*M6^c(}W;Q-k+3%+BnG|w2^~S8bMYxl!<>ltZ=yv2MF-mnr z^7&Oq7AM`jS7yi;FL;@QKI2c2O}5jQsNTrE{HjikMt5V)tjwbR<$m0D|MA_2X}Msnk80bui!b^0rN{t*;4mPKC^qMaMY`e1UEAzabN)($X4QXB`+1Pke%IKbUi{+JTZPFlM`!V5 zsGMG)eQYaMPP4M*6rr3_Mclm*a<>O}e^A6-!%bO!4Y;c>;%@5AA$PRlNZx)crRjG3 z=I6)f&=Z97u%9wMOFyZ4@v@T#k!#qOY-K}@Pu=VX^?5D6N%jb~5@tDJrj1Mz?Egs3 zo)rj11@rO+;`-Af>1dd}XT{$au{(?1e=TD7yfwaxGRdgA+H^`rXc#zFk$_wVXE{NCcT zy!-mv!FJs4a<*;G36MGMc%JQJHJ3!s_@b8yJfAeOg5_gng?Gcp_VwBC8kuq5 z$r_$7U3F?D*8G5}lPdVITF;W&7 z_mM{(j&V57;>*aOq+N2l`n~e}GX1sLcN!eIh4d^7_Do&_)&%X7tAd9ox0b5zx%9IC zzT3!b!G6gd#2-aEDDr|`s_K~=w{@vg(Le{!f&1l z%l5(aYjZjXtCBb$Mi+RDa2Q+)hBLJ;8%`v5TpTn8GjA~bh-}r2sfn&T3A<`)&^63Z?bQJNK;kTiVMjF0ZL~Ca=Tu4&QDfiU^5M@eOg{X%g}a&C?*0sAP%`{KZ~si>@b2-f!*C{`{r$HeZlZkc8cVS6 zu^CGa(>8uNJ@UD)GT+;KC*Ql;4Si?iv9I3ujk3d8cZ)CKt~BHBb2lx`xNG{0VIlKd zGv@i>G#wcpa(7#vyF|Z_Pt%bRhohVuN!=#>1mnBv}*?fGGy!0}h=C9Fle1D5|6!V?2aY0vpyp!l(3-O%#kmX4~i0&iU zyO=&x<)pDh?o)UE?)#*G_N#uWP`MY1;|ptT96O1Zbp$qkIjJ?MhlBQd_esQH?e z4FY6=9q7y+c$oF!kiJa%+`#B_tz5;t-pSut8Hzo?^@@w?G2?QMu3hU0yFzPt^b6&x zv(d)Hf@P7}H9hPDsr=2&wbEsq@L#s!`#g%hC7rEg$#QdcM&;1<=0H{JC&nB$=_jtL z=iYtC8v|ABfvoxt>!&uq?ELFZ{439%=bXwL%*kfHHBfKcN8!9zT72HfZw$UB-c5-G zqB}2C)b@>H{{*^_ouu7{W#@vje}j3U!uvDok=8rIc_Ud)=}_Ku(yj`vv4}_8F9)i3 z;eTLB341(B(Jz;=W-yF3gW;@`^PR&7qkMa^WZyN^*K493+qAD^3hPFxD}$dLERFu6 z1Nlt#@M7dB2h-bDtR6P5rhUYHU#y61`DL0q@m$HIT8;hfWx=zrmM)xeOXQkgTtFVK zh?F<~2;G|2SiU;qGhcizI9|JEUhvBX{D{vq%zfQd8a0Rg1$E%xiK{n{QeX3VDz7FC z3$AE2`C;Y6wkv}w_U>Qtd`WrpB6K?9ue^Ha!DXcJcG7wqX}*=TFGaV`cLA5!?*b~` za*J&LEOmbcYZm?NRV)7~yxv5&Abv^Ch3&|cjjg}R^XMV=9{u*_TE$iFeVa;dV5}K$ z``!fWObzIVD}qS#e~=g6yp8&=d8*1U#(Q`k|1{~79>&jClSUr4^^ZL$%#|h^e_jXh zHhW2au5(l5x$+m?R(*8j>QR;S^~**Ut{1WXf$Domr;+1`Lr330^WZTx7L$p9^K}~7o}6bhEa8gg<2aTp2w6H zzc!RG^IMxXoe8Yq+~6LRDb&NU$IB#>%qQrj|BVv&vn7Re_NutzH}(ouj-L^ z|MZ&!^?f%dx;WoL`_Ij{iV?w9<=s@=uxY;hZ0VxI58q(sM_*JNyIFV3_apb8CJyD~ zh4dm?E5Cz0u3*kk8R6VosE_h}iR$(zaXawHu%Gm;8Bbljk~&#VyPLo_i-+-zQM<=& z;xWc$=6ni!`-VjSM;PndKZ;Dvc%E8IT?=NLeFo}Jt|NRCN5*Hbcke)_Asw;$mlE2q z?R%{5y&JhSyaz&l)9fD#yU{rEjOq^kfb1!cYWB&ON8Fh4^O8vOD0D3^P}gN|)&hPr z@T~ejwdGF61AT+E^IMDytPiBhET0bQZ|a|!CkFFt+xdp6{07c!S!7b}4$_(~D0J*tmK zhGq8t#0CazKAAN~uU{aa7^B)Quh%$3PYkkH@8v=N z4)Q&Hl`X$tw*+SY$eULM{k_-o``^5bqP7z3XG>+d(yVvY*T?7^cF^|TS}Fdvk5Rt+ zcdHAreSkH$?^cIp-K+d`4jmb(yoP+~y(<(ZX&bmJF!Af4P4>2A=W1wc`_mt@@gDdX z@5Djz8dyoZi6dd`D|yn+*<}7v^5Y5B=Td!tJ3>CQ#`PfIF#dj!smo?>U;}$=BC*=` ziHjMdqc!b0`D({n>5-K0I?t;1fA)H{Wh)aT&^PzeheYSle@+dyo<-(Jkgh^9S#Oc? zuY>hW)z3nH^7S84^e8>#jdhSxN1Q@`|`VGKq}67Funu^y)-^+0}`z z#KQw6uK1J)brf8@Fe4`ANN!zw5L()BkF5DO1;;9 z9gT6`%|X`aKgZrH(O$-g_L5hT3EQ3>esFT^>Tq5gTJ&QyGPpi ziCI5E%<-7w=qZ*Cra7#1IMd;5i;>xZjYE|)pYL#?!-T`74wpHscX-t5i-RW|l77W2 zTn{p7uz9opOB3_b@K9j2 z9`s)o(p^d}^Loo9`pUq}C4*mnfBeC(=Fi8{^r07!bu@M*A1-0snUJj;$SOP7`|9P@ zdfFfQoT_BWoqeWmN7;w;bmG&MwC@u1whfr48B1gr8x~Yc7S+4broKt<{BruOsp+il zVo_{RAMv8});{fuM_9+IzHkTnwJ1EJ=z~)454|rA`U|D04H?|`Wj3b)8558tdxD*{6Ys76$Azw6>1KXDJQ9>YQCh(TYPPRQ#I$cZ zID$OU^;70F9m8#&D-NGye7VBsdxdpZiN9Xl%757HYmDS@w}(y5gCB zwRA%BB^4 zwM5s#$hg|*@Knv&%avB^F3J2h4J~(zh`aVjzeQbnnzF4Zo!ERo7_Gi+W#x>Z`iTeM zH{Qoz?pZIrS8kZE)T<3$MPHr{mCaq0jrK7&sg6WOHvibc<62>PZ+k+)X~VK=4Z;a zo-4WB>OnMqRE$AJ!Tbrz?CoC-R4t4IwNplotL@b}it?b=_#MfeHCN)M^xC--DVyhh zIikkrgR$q_$qQH5xwR=j@pwqVd@7vvF(C)Un_^>xiVy%ey|${CJog6IAV_Orp$% zQVxTHYo!4G;^r@qkK^y-r&$?e7IQBBU{eJsbygBQt>E3~==cz-C z+gl&+9jITY&zu&;9b>VF%k zF1Gg|(q;SB6nPXi`q68Re$>l!$ha>~f=@Vqy{>o9-|Sg2+QiGw3lvxF=PcxQ(O+l# z@CL$)5S9-k+t*q?inHqBI}hH@9OgFWinlUXTuR@%1Rc?0&Wl(bk>Y0SqxJVI>Oqg& zTW@(-^Y6SfV01x>m(gc&@7Lq>qng90FC7?b=P+hY^CWxxf^q0ht^P`NT=o&k;gtEo zl4$c(-oxPDyYz-#2iLE^uR@JffZPgZ${`Dk6&_Y303FK2w-^TWb* zsGYPa&pr#^I|)yE$0dLHS?&R|>C@a&{FHx>;+FPwui8^BZhhPP*slg^{t!F4^Zo22 zj@|DBYySV1M>3J=f3wtPVh9 zlo_+(mtyW6r4M8Of6dOdLH{!5-#eZfJQr+R9aM3jL6vno&bW;-Z!6?B_WSC`ZNE$( zTy=0nFy}1gnhA4QWlaUL*jnZXl`2o>mpc}ZJ}y58GCKXN4z;s@PC#R2tTd?pZb?uc zBa9yA7b?@osDD13$`ZmMuhZn?rTF(2(SN4vi97k6n4&gj(?ggUooq#NxY<+vGBTv} zuo3FwRLQ)qj8zs-5_a!s$_`!DrQ*=z&Ml54KQ84iyuRV*+#UDWwL8_1o}jY!+wf4> zJ|C7%tgMM{MxGlM{ACB_5dFH!J65amj*co^hJ4teD*9J)H_o`LEaI;FF5DrHXw7bV z(6MbKbTq5IcsoI%qbKT0r7iu4?c;Q2@-RII;iT^@non(*EXX*1lN`GP6)m5ocABtQv zy8R~~tBInIHEkFk6))7jcBkXjQ>4#M-vkf*yv2D(#)cI-yW_`%J^wIZ=2{A4**hPr zZT&4{9`(2rnNW2s^=gIfABxnOByu40z;cb{%4gHpxO3jo&PAUdeYwt#AX{SZ$M=Ke z%M$jV%IyT)O3&2GnPvvmy>FES`<|z-{V`?r3TK<8%a+_Bxy0P;vRyssuse*->* zTdntOhu=ibvTD7!sQ>Hj{&UGq3C>L^&Ax6a9r^k5W9mjgTh{sa$#cGD&c821-cUMp z?)^uUtHPCD->1X#Q#u~XtYu{DU0Vh1gF8-t#QARJ?_~0~pS)c|eV>Jy@>Klt^EBum zs9JLs^47es4a(0OS=0Oxa!r1E{tISaChfk4`L?M8R__{vPTizADKaZ#wA$6vlY{z< z-WxqZ@w}tfc>C5f< zg4|aG*ED~avuui&#!lbI{=DRx=0BkvY4;n5V66j&q5RPg0ixOQu7jLeuEY%t52}ho!pI5u}Ys2W5k10P)JXIga z2ih5Ob@pD?DECiRFgH&yZ!vehI(h3B@1kEx4RPtb;5Q1ZLaTOXzg zw~G4}s3$h>Z62sUQ9P8#S^k#St_ve-v=>^kwPdM5_P-uc^JJ(UsE#$$clmZ9T5}nb zKgeb6CG%@izn5(nx1=X{vdG*NS%Ni<+n8J2${b@UbB!g;ITkY? zU38c^h*=jHctm$~L@^(U{V3dx#{C%PBA2nAT)HnxxEjy(>wIK#pZe812yZv?i`J+| zqU+va!Bv^h~mEoud;ArZ?R;UwmJMfBlHWf`g^y%~L6tRoI~f zK9<656t~f)o%3IMI zUuLhsGVZ(3eHx3XuR6!Cdg4Wj7ayM<%y~|u? z(lPxFWpEApi0AgeV`N|L8`rRJgz?A3`-a3}rDM8@d(f4M-*2QNx_ZWMUf~=hzgO7% zp!oPZK@#Y|ef-05Z@4f}zX+W`+V90+&9USeOouO z$)A=4R(mPYBxSV6ql#=+dS!fbG0As8BsqZT7CHtW~f^Qm%Skfs9Z8BDWeNR2RBGzqGHLI_1;3xYf2@*0=g4%iKu&SKXIi zUzerJD_tTP)vi^ZBi-UzLA#S4NbTVHlB=2<=<~Ej|AzWw+Je7_BP>s8oa`A|K)pEq~_8O zl2>SV`f0aaXRlWql3pIU069kE$}6-L?o>Q>_Up8>b=Llz>?yxq_H?8+uovPQR-{3T_1F9U|+~tc)h&D?N|B|`;{KCyv4Vhe4%~y zSC$6aduGn!Yp-1DHs!ta-_#%Cmqgx`yI$t9h4@){<;o-f=IWc;o0lmKf6k@9N*bC- z!!JItbb8Z_Yo_;-ueIdUo3#D!P@m3{{)YRQTi4jI6>b~48x9m4^JYFi>LXGg%*N5@ zqvm1AzO;91FP`Ci4%pA3yxvVXY3!5-imOoNtbCI!B_4guYbqjFH%~>sth|x_SM5!6 zOwlRcvwL*1va_Pn@dWVW( z*KB)|@of}w42YlBX4~1bmHH@UcUkbP?)I>H^AFyayez2iXPy3K(jBflUdB*g;`2uJ zBnm(AY+@f&6MCT4@QPCZoBo)w^A95{r$;7@N6$B7Vq_BXjQs`%{iEp*L)(FE>b$dvCx$z)Am zWgp;`vD(kE2kt)VLQ^oQhWTCj;ql|l+7x*=z3p?MxFbI?mYTS84*3di_q^hcooL^N zefw7YRlmDQS2z8c&xg^BC+hQ*4>}tudt--uJ>#8$deL5PHnR8?tfk>6VC?hxlOX>! zzLVyz_TSuGqdoPNtm*$Z`q1BS7Gw%C({o^|ls3wJW_xI(572kiau%-LnZ1DiW)Eh2 z%-J|AYipnBE%5bj_8>2P1vg(|ukiO6?~|?{Fft{3sl(;z?Npw>V2`F~A79nWwvb<) ziIw~*Ge6g|ZOH0&)n{q$;r(dt@icz^jX3;PkSaOx_(ibm_8~pYLx2JW$J)9{a(c9**^3&E)>iaxqfoYJI8eSIN+es7ikhJ|g@ zxx5Fyue}w+kWGgpqmDpUjUuy-WM0KRh>w(@w;IlVm|^t)Wt@?>_v@$+m(2K8#)4~- ziT;7>m8Zi^o+=-2L>JNj^WgA>e~28`oIz`e($@_z_uz`o^4{wi8!+#^2blr0x9OiR zFjjGo^%cJVKS*8uk&~mn46J@2N`2|QNB1s8_PsnWV&(;};MecJt_UVKmvtsS-9aB9 zc~`XdQ@38so?X?v#LNDCL-$Df*X&t%MR%^)_1y#&ckG<_H?AVwz`_Ob}QTY*nFF`kJn{sQ+l6G8;VHRWG>>f9U8abbQ ziLGSZVBVH7ryl&6yz^ltsrS1`vmK|e&g^gLmORKEK2i3h^pZ~+hm<#K28M4Q?jucAdJ|86v;G{OZuYAdM*t*kjFF?bg?rLsv2f_j?Ic z)@|cI`so>%YtI33ITn3V>ysnzYolLC8u`HHAu?UwJ_BpsaXI^3NT=>AwC%C*`54`w z`6I%4i@dgcZQrRjCH;zY{$7qz*>^KGO3v({oHgeEocYuu`f;O+LH`(y-2ba4+E}!GU~KSgv2XA^$(|kKkFz+-Mo%((MZ8W~;j6ywSWF+C=_6HNt~}CRa?8(@f5x8q zd#3)WoY{}7x+ybX2h~>nSe~FywD%XdxuF|}=2O-wbf<5zKZE^qUC(CLO0)SPeO-Hz zwF%X|WrWM#PU=bFyuK=u=z8OwfoFB++E=s(h`vH;&{*oz&_|j1e3yMD@5%EB<>dWn zoK}1l*N<=pz}|%*-BsbRJ^v*Bin&qwEB|$0p5o>6eK&RJjnq3B{|Kda1gh z{LxtJ>u3kEQGh!yzaTR#kWMtho~&r-j#%z;U64XT(GYRbiq&r0*t^y2}2sPdo^ z{wdD#mNRBtJrFspypy@+ze=OuLo$ne@^-S9PF!|!qdg`w3BOogU8=17nMU#SKYwog zQg#LRs#+d7y3#%WVs$`C9yil5;&Ck*Z1!mM0j zg!XNfV`iQ!`2X&{g~ToD_G3tES{gTQSkuz9Y-_l`v9)nqi?v#^qHfLlrVShN`EA+0ZOi7C#x+fwQjOc1 zTJx=&Het5DaYMuQjf3pWrTNZk6M@BVaAB?8-n4Q3nsup$rcJ@l>e&liq}S*@Sl_UT z(B`g(>$=VB8`sa;ux<1Gvl@49+1Rv>u-2s-*EO#ZJA3E(Hkh=wIO8pwakMK4^ADDj zzgzgV@$2RnpltIGYd!(<5t>l$BXd1MoDZ_!>3F=(;7Ol2$Ufyv5-?{E=pg$}4E3zC zFvvbYIM*|qa0>aKjqs}HBKC#iKNCfUo^#k2ir+XU2zr(m@$bJ+ox}}J2F1^Q{l$Jq z6er|D?$g7|g7)XeTl-_A zjHnDs-vRB=;;Aa)|KucV?}}+q`cDsG|I!fl=Z3I9KZN~-A?z;>VPAIjrPDWN2>Wtp z?}}+q{!AOf|I8umS#&c`vHV{+g#FSX?CXZGM+tDr@K-zgV(H)L>{l15Up-pU=PBm@ zjI(dYO`-OcZjqq8g6{!Yg%e+Pr& zcOlneQ2pt1_WDj&q4vA_ddt6!@C)^SFTLN|pTd8k{`HyZ*1j7k)W2+;VeO~jzmR>q z%lJoeRw#eR%(DJt76zqnrn6sG#DA-^KaPE&_|N1(t)61-qiP8Ih0cDAWiu##%ZBj3 zd5g#9x^*dH6h{<$ISPYhvyatQm=L)gDG zg#Ec8?9UHje_;swi$mC#u^_IeSow|_!k+ocCH+qs!hYHi_A`gDuX6Uq>R)mQ|0!pG zoXUH70r@00$EI&5jlWR;c0e67&*L=ULiW>cwf3`%^pExGczB*5{6hW9>vvfDc6x?F z@!MHv?Im9o3V-Ik*1nkh`H*HzJgh$y^uO>U);>Y}3x)sCDr+zKuaJG`$F02^rUs2a zCx)<3JNqPT3iU6EPgwqLk~gUTtatXs>i24AKgqHg6X7fi}4HK7jSnPtO8GgtXa=G z>CBHi^JC8Zs54&;_Tg?7_$_cD_?O@`XI>6+?r+vP%JJKn9|vXsjH6?Y9tZYe9tF{5 z&3fr$LGT^$5GeEg;G5t>&U_0v48G-{_@4i$<@*x&7W64l=Et4+GvHq617HMykAq)= zeiZyRI0<|cEOYb;>g6ctXF%Dn2NmzW`XGpboCgU04m<_!0gpTE1jj?~ci0C0BXleH z12E;V4iw+{p!iO4`1;Bq_%F~s4v&Kh=W+0lz@1<>xY6M$) zg8zuSR)?!W`CI1fXF8k$Du2c~`-^v5|7nM<;Op402gPqSsB)|a#V-LWzSA6D_^@?< z4wU6Pb&H?K{_-tHe@sm?P#q${bvv5Cn0bK3qh2XEC%N%`*e*V|c z$3eM&0&EBOgAv;KUW@UEK&5**$QsM61UM=ZY+PvZle57uVjlzdfs?@5_%F8@9|wxx z7>n^J_yydZxZU#M42Jl9@;KOz`7@y0cUp`;4yrvr1gibkgM0^d)=Y3e=BIDtyRgtF z!FQm$!ONfzf#UZBD1HYl#?LeUne>86*D_G)S!(f<7na)eq(P$s7 z#dr^>^mKqD2zM_S1>3-X!h9!q3QRhBm7|w}svon#4sa&;6L1=M8Y~BY3YLL?4)!ex zg0F$SpyGWBR6343`Wf)I(DmS-feB|{3CiC%Q2x@3gWyH*CGZS*($PJReg^y*<{b_n zci0B1{Fk$*WaO;Agmr%kJb?XC z@FLjh%x62ia7$p^p9Y7M|EDa*kAaHEUQqFP==UsL2fhJa3BC#T#I5}aupfFASVH(G z7aCpFtOKC@w}U?e9|e`p)s9}}=t+*|ketbn3m>%Mopjg%eg*$efH$e$S&Tml{wd}= z!HeKBQ1R|vV6hYYCGy`@l)y zbiyyU7#{~lpvPE@M?uxwGO!OkT^j@sf+s=6>o_QW?V$2yr=ur`4;0n^JDEDO+;{ho5 z7piSIFM$f@G$?b?dCbw};9Jmrb1lE~p!gjH74GAp_{{|W1DxdW;v8$9 z29IKX%F)LieaK;*GrvfuPnDk43tmC`PJuU&{*xBtC%|dY-4^3VLG{mvK;=`1#rS^k zibu$K-e;Ww z{{-`sps5!Y|KX@D^TA($v%y!vGH2gMV^zI52mT{? z22_7?3RJ#72P%FY4)=mbp;v(#=jy<*&@oW?IK^VT98^AzvlzcXC!qZ51+T^YoW=M{ zpz`lD_&&@}S&W|qO?oZHPk>**T{rk|;34qe!7ZTpt_H=Y9=skt%Pq$1K=D~-F}@TO zpBN~A<3Ra~g7Q~pF&=>OcahEmjQ4>id{FM5vlu^a?dy(Nj2{K%ZXu}rs|1yQWe$7k zbiM_B8Z0IMj)7_~QSiH92c5xZ!FEvP_YhcyyDgx~bv~$eG7}X47%2Ybj*dF|bsFa| z%+Gw-5)_|>j{d*cdms3yj`Ljj>>{KE%QgmK%UBKzmTeg$TYzk6 z!iiTPY_K<=fNT>NbypzSQV<}JuyI1_#a0tJQ5q2|DRq=)Nt9Hk!Q!vjGdIp*7cR^18zX%)$J`WrNehxSai~@&%-N4hpF95rNzXxmw zb^)7#OMxXo>QMxw9tA=#0Dc+td1T@jfYZR!zzHD3Jq%CPuOhR9rmc9z>fi&fqw^V z0RAno4mb|10R9LV0Mfs8K>Amz(OxP1eBdPb3xH?QFUi$dl?9A}X5s;>&LhxE;C@D< zJq^4b^pr+>5||HqLZdwnybko3MtcN!E$Cs5_7HF}=s}HkKX4Q1K8f9-12Q}dG}=sLhUYvI z6=+Wa8J-D^_9&3y8PRAD02!WsjrM6E!_%$NJ^^HSIyBl9K<2mgK<2j+AoE)xkom12 ziN$)U4M=-OfV9^Dq`feZ_6mWmz+6ElGUMSqA_r(s1L=MoNcST^x*r76{Sn}A0vmuT z{xsS_Amx^ec|gqlz>mXxftcrt`FTVp26@ z0R90m56Jvw0U6ITD6}e^8trMI3a3VU5=j5XfV4jXr2S!y_7G6zBaQX|koJ3kwBHS+ z{Vt7m6iEA>8toH66&@h%M}V|{RHJ-e6G;2mG(fZ~fV3afXm1A6 zekt&)z?Hz4fd#;C19O4j0-i_Z#C$ser1>cDo4`Kc9|LjrmKs-#0*63%00)4rz&`;V z1%3zE2>esvF5q{8K_J^f>jeG4W1trR7Xr_tP!eN6hGz`O@QiA-M}Q2^uts|b$nf+5 zX}S9-9Xy!(r8D4w0{ElePA1qdL9*A2V{OI0#cqINO=Vs?R+5R1wI4Z3H%7K5QsIK#bfZ4{9YjW z?LhK(0m+}bT8}f22@U}N9{eug1h4@}_dy`tuLRQl%vIX`An*y$tw8Em4*W2%0Qeg~ zcAn^N>Pl^Y07&{MZ~^=u&$X-;&?CTq0}cxI0-pli3Z&d-;8%g=K-ymir2UnG1wh)L zxI*_I#({K)yH}LE(}E|&yhZ3;g46T0ecX+p+^q*PT%|zzlPl)K^EAH|NPYzP@4yD3 zYlOzVTh?FG9q=2#NuTadjsp=T#RI??Fao6BLEvJ<$4cPefGz}H0G`j${hTS_Cqa(^ zj{`@5h{E8oMtcaz{4}W19sqs<_IiPHfSjj<$Y8TZI{;+-_yi}i^*CWa5K&ot6o{xP z-VCI@Lg91J?@7>8bM^SlAaDlsX&}?*D3JDd0%0{+snHGsPr$qg$o!lS1&1}-LqHWSjrIVL;W`bZ{VpKwM>X1=K-xc{(e41!ehvBXuM{{RJkns`)QZLT;0;`&Vh@xVyPon$)kaA1J9Db?%06$bbOaq~Ma7v>+351p4gho3C zWIT)mp?Yx_ko~V_AoEoXkny<-2$h37HQJRx%Bj$32Z5AR1myTxK9K2&b0%mnJ1Q6v z3=0MX{eqTY44I7XSWcCD!H8g3Fd*m`v;<=)m&(0hR4^hK77Pgb1uelCGLLdE7!`~N zh6MwHenCqx<`egVQ9+h#$_)z!1pR`RU<~C?`7an1j0lDW1A=}*OE8Aaq}&Te1tWrC z!GNG&&=QOxlPULtQNf5{STG>y7qkRp$aKoRAj=`?h+tSSAm|sg1Y^2fWe*5O1tWrC z!GNG&&=QOxvnu}uqk<8^uwX#YFK7wI;8?jAj0#2s!-4@pzn~=;L;lCV*#m-6!H8g3 zFd*m`1Soeo-krO0ycLx>-YL(tC&xSCne=4M>6{at(={i@J2qz=?-MzlIXT`oU%M}B zPLHqG*XPUeM(1_S17}_*-ox`o@E)8ug!kzDvH4!_xvOTbg89`WSHt}3A-sDF`wDZs zrwe=V?zy@5<{WSL&8PA1yd`=|j<@5M6L_D#wdd9xZ`ZBec#qyXhWGHTBm95G*b4l= zVg&E=D?yz`Ofhr}6H1*9p9**Pnx($@Np~ zu`}`AE$`0p&e-Q|_+?MyJz-DcJ!X&NJ#3HQJ!lW%-DmgX-DCIKK5yH*+u^GB-F@HF1h z>aJ?&Ts?yKK=mNrJ@viyuwUPe_sHJSy>PX681J@*_6GRg(293oLqFa<4ZV1GG@fV# zx3L}X6Nftw!_`xxPa)?#>lu621KH1dMxI5!9{i|h=%b$DkHYB0$32}Nhta?%JcFO` z41EGd-JkHB{sfHr+dTvAp22n)b+mg<5Zl^4?Zo!uo{r-lpLeLkGu#0>((7sI1GtP4ZEfw2FQ9!=3ay$cMa-iT#K1Km9Z7zdY0jv{~=P?-OaWe(aAS zo9{N?0+5Rq^}bHBcv%Gdh*$bu#jIM{Jo;js9&+I zd(p_G{c}R2?WgD&p?`$$Ao*s!@AvUt2AyTr_f~1zGV6KQ!!GTc^}C-H|KBD4|3Knv zo6v7lcl;g}`m@46B=o}~->ipw9{n21H|yI5Xdkp$?{$OZkATF_{nQ8YUln-|nfNW% z;V%)|toPj}>0{Rav0Xv;9}xE+XL>=VSs%Ac_^%0nzt$(qtY5ne-%;8(>*anZe6v38 zOG2CVaJ8i2-xo#R0NsQBme6 zPn3xMY_IWor}$^q-wp_E*6Z#Rd4nSFHqpnd$NfIa3;i?ehr=S@tf#$E;=}9@`9lfs zI2+n{u9x^V`%ji*yod74eizJHD%z~C?GpXWdSvz|X}@3eYew3UHtT`Ehx&tbmc-|i z5}rb#e+@d2-z)A1kl#pm3EhgkLE7v;__D-zv_PqE{crHd4@>$#EwtHBag(@jko27= z`UZvmXXIz)Ui8V5@R{|#-x2@H#r{pGzi8jA_y3H9$E;s(lJqv~)!!}gZ}zX8M|r0E zERpww#E)5je^%_9{RS_Ke=8+EJ|+53Ncz1ce6v63#}a>LKhsTOztqI1gl}BvA4+~P z`(HjH@nQD6yc6{w^<6La9}@k|ewK}rey4^1dGWtf=+6qjUniG!hs2Lr4}Fu!AGk_e z_?XaUKiesxBhZUazQmW=5B8vh-|R2@Ye^4n+p-=NzS+NaO7e%&Bcq~GnLe~9>Z z@~?97{}7JSGeN$Wmo)s*Jb}XmwtcklE1;lzXJKssn17|Q=Ig) z%RYHdKF9f-bgzpZLH*$5SGnTn$M}9a`8!?dd!Nhxue;JO>Id1Lr|8|%BKX8Tjq$@sFyV3{QIZ58vUHW)j@$E%>-0A;!UGf@T z_J>{iRJ!bc(G}i*an(Oxb=m)Smwu19%GUu`dhK(?Ux!Pd8(jL1yXr67C4YxYew{0R zKjjL~Ay@ercjb?$D}0=PbjI&bT=m2AE`5K)l^?#~%D>!i^%-+DyE~USwcV)s!@Bym?R>US)%#S;U>eWcyN2g zwjDZiIn8y%rJB?opwmqcRfNjxAFGXv(Fv*oZaJdgk=UA-$PX&jcR%SgPS$eI;X^uQ z5Sb}S!vJ5@0>jBNBd zq2z`G2lgIDnj!PRow8sui=h*#0|%?bsw0ZDQYq*BsA5y`z^3=95H{5!1EY!$?XIUs zEK-WM=Rjl92}fE5YL>GQ z#099roglYwdT84No6188lZ3X6xdVGpH?pKA#eU-f(EDol?b%0jHi_!-MJ1skvMhMt zw(XiO+p%?3Xv@~hP4{hbnrz!xxv4U=qjLL}t@mk*_ifs`X?s~vH=`1wl)4Gh@tP7;F45n^`dV|wncEJ+fEv%C zLn2L8Bsf_rP>8Xl^xc1WpQE;8l%V~oYowG2LyV{vS~Z-cD@N)dxO6O4C$rM9q(QBk zWQtBF#}vnO7MLn3;V3NC@kM$1L!hKOzJ_c@?mygM#A!>l`>N|<65^)`9e_P`dqa;Z z6Xm6p{gM#Bi#W@!8djYjDtu%uY61&rlu0#U3|A!?9%#m4c!tF&QvaLUY+v;uNFs%D z7-~Kc(gsHyC*2)tgbi0juoVzW$51Jlj-ixIFm%&hCzhoP>c(wbQHaY>z;_sPm#<2= zYNH~%s(7AVI1+q;d}Xu zs+2{YT~yT&Lfh(4?V}D+Nd|^+Xa~Iy*E;MYepaFXbENsf#u^02!BKfCEl0U&sBX&O zCWVuTZKj5_p2a6!UX#tV&j*?})IN$gxcOZqGP5bdY4auYNyU$)V=z-3>-+BD}DUuY@{26MfrSSa9SXR%4I4 z4Yh$Pzz%m}PZ>MFs4Uy~Kxo^&x?pOC^V9R#;p#&*h)1+# z(9>Ft_KeAVs`*mAH*Qe5{lOiT>LZ9xQ{2=!tRUv`4vtD)3RlBj94f(QhAwqB<9~{^ z1MRoqCKY8Wg~@Pq7tyX@R|YlxfhTH{SPk`iYa5^p+ty&XJ{t61e9CMAjg$~N_Z%om zBLa0o$wk;oTeoZHvA6De)5+87GR;w+m!PVA{J`G03SzuUeR6ottV2@#>{-(^{{W+A zk3?p?Lk#869^lwsJVkK|t;9&v;riy<-H!69BPz)_Q3hBwnntN{l;AR+9bC!pdI$|Q zU2}Cx%1~bI5#gEsh0`oeO1kaSSGO6ncfwE!*|f6~gA-e}ZB;qfp^a2^P!7=>s(5e% zy6d7SMJva~ls1wKR8dT6wuClrb;PJvu$c|Hty{`n3@NFW9!iwhJHnHN9SKd^#H`{e zRjG*8(7X@FG4QHc74aLZQozwUi-E1E3`>l%n*Z}$#x9sPhi_8e%aff?PcPUmj5 zaR+XSJ22sHRXTU8j5}~s+|dPV05w8}SSgXXa8w;7N;DX$K>=%H#g;Xp66>Z_cdlON zPduyEu3PgfrE6EMTjlrPRf3m)bqTq5mzF9^t6)Lf56^F?-@WJ1la0*>it%5uj@ZV1 zcO1Y}h4sCE``^DXQxKd7z;u#ThdCU}j~^Z`YvEpmOwR!38~AYEhfkl-n8xA~bS01G zp-?m0GW<_Jp-?4qr=b$a{XKjrk0JwD7xNVwWLXh{c|xH*NMcltV&Il%|Hr1YH)W}b8Y%dfncUoEp_k1EuKs*DON1{CLV_vCDRCMb9@Lr7{mmD#T zup$TvwM6}Q2i_F5d8yh*tsK!_iQlrgwrjyHmKB2|OcSbey8+xMt$w!x-;JLizsr5h zS@DR+_GR2^a#dve=W)j<3OWv2yy8|dA z@Rq*U!*_}@!njj5E}Qf%xbqM8I&dd3&+z|zuJ$Xuf@kyRoqE~Ot2O<)(7gA7d@s(7 zH|Nbmeje}mGV+(>J}#PhaJNFHy9CT#9KHp(w+p{@xZh-_<-hx>h1QvMdHHKwmj}-5 z#NFscxaVfZW38-v=a9#D_fGGEwa>zTpJ(1F+`IACu_b}GPT)?pV~7vz zi&|R;dI2dI#48ThIn_vje6PcPN(*5clnhwz)hy-LTBm&*`_KI(@5C*d!`kw^2V&3%6;8v*1M z=B-TkLAdXmim?pJeN&dB{GkkVV7+-SF}%cjD}cK-%^g9!$AWifE`~oeGxwsozNT z2zUPclOK0anR~^SL6?qSmd?n3sXAw;)j3^yo_uE_Jzqk4dT_U{7jdEOG9M?Wr}KM( zy0146^)K2RtFcz}4AX_~no$p%`ki%bI)6O{34hDd=A$y))AVvT-Mi!ZCnzsWXA9pc zG?{QmDZfLwLl<)Bm;TNyKJ~KD5!|7LPx8OUa(Jgra(H~XtZO}|=6Rm{+C8~X{@CYv z_IY2f&a?De^Ot?pX=cHV3Kzmo^dRiaBg!not)5n%<<~rv9z}bKENyqCMho`_Dz{mv zx0Mc0eT{z5%o)cjPEjumAiuDlVEFhAWt|XF$3N-2arNC+i8!+g)Lk}tZy-Ou4tE~t zN4?x}Y041&c^&EbGu+Ac1>kGh*1t~v*5{VI?DhRA>kV;_dxKdgrREFV=M%4=SpPuZ z-d69mAM^cdXdUmun!N6FOa2nFet_?1x^D#IuNil&K7^mCYjoXq?Wt#Q*Dk{y#+_?S zce+Q|UsPuJe)v(pGfqhR@tvnEcRI6t|MdKYyUya?CR1K0|7F~_tL3Qp>OehFnl5}! zH_OFMI(yWO^2p=2&#i|^k7eM)UY;i)`5_?rrBLS!cRHCo??K&h811hJeoL*zZw{dS zV07Dkmk!IPZn56lf%tz4==LAqj8~0Y-ud-2#D`U+{e-MuUy1&vd+K-xvugk4nf9d) zSMv8@**b~8^xuP5O)_YAlUD)VF9Ood8eJ{K{ z$BVeL-olcz_AvC1s&b1mg#XXZ(eZ2{jQIZ)%`AlT?GJ87oqOL4kfY+#E%4Bh5Xk2Ln3^_KD1$e{hFP!A`67XoiBV;mt~F71ve^t|PcsHCA#3=6H&S2v{? z>rvnOTDhAkm5(`G&MtCrB$UMEfI|peUelyzb>kO7HSXQhwAO0c$K_p|?zOnIYfnQx z*8He{G5v;t8H8$#HBs{eQUhrEr? z#eZM;=oiN&e%bN44l?mD`jQ?ox7uKeu%_?_#kLHeP`#vQRH!j2&V7|BlZLe(CrPGFa3Me!B3*gug3;`}KMN$nt}aCnfy5gwGF0 zI)0<@QJ1IX^IRD|nfMXm=W1&y{Ckn&4`4}j*mUZjhFXvh`&h2}Y5 zFt@XSbT#XEub11rRQGw=b>>xEvY(ar@v1at0_d>F?bOlqvcxTd;4Vi<^{2#WiK z-zWSI;Jq-905<`T0Fj4-%^K}SAks6~pwX@aqK+x%c>})+%mv;9%+mZI0|WbZ9|Dgm zskohy0c-}+ULBC~czzk}Z3Z&l0>Up9KKI#@?*lU4W}wto-~@03a1=;6BO2{~AoEKf z5Sc63tI=))R>8auxD!|eq+ajN_WdVu%~p4Mo018KiYqa6h@{@Q>mfR(^|fdL@huLI&!9pw2MK)VD;_bWBp zML@dG1*&)#K0T#AlW_Dt@JE3G;1H1Rd43xC{XoVC&rPHI3gPqIH1bPaa(id%s90vmywfEd4Kr5fby7qkRpaID-5 zMg=2+VZnf)U(gbaA)fGW_JCkiFd`Th3<&xK0m@yD*O!~)Z9bCYt*P^QgB3X4$uq>BsQ@E(~ric`AU=XcD< zsYvrj@E*Kk=n5QUl-mONy}5mOpU&;!`^ugxaR$?s-FTnBGIABT*YsTj3D=C`-LtTF zAtW!H#5h@_ZXJKYtVXuzv#IRX*P( zA9>Www=WU>O}pmH;-AsKhO|T8*MDo&DD>k(b3ZS`b4=(`q1%Lh zkhDX;dr3oQGoODO!oc%7Oh4fb@JO3><=2F7+VST6lwFX+rvm9g`|C7mu|Gn3OycKt zgq3sv-+w;e!;iG-cbpRc{9?aBXw$C$mdH2l@KS_@?(@a|+ak}jW1EC;+TA0tOZ%oD z`AMNozoHm%N51Jto)h<`-*>0zWBOrB#Qi7(gXgcsy=ezOAofkaqZ)Q7-#kqcKMe>M zpFxSA82sh)Dg0>P^tiBA9K&jew)yX#DAtcAAXN0uTyA#CrO)rz$)koGX89I(QmuxpTND- zz8B$g(*NwTzY~(3{FBf(iFV0j`_0K;=#tND=H$QZlJ`NE|9%&ZHcFEFuejuY&P8A0 za^LRqZ^|XF$Hm_SWu5xo<)Y<#3Mu-jbNR=1jMM!xSaZ^BpE~KkanU!p!t+}$+Tva( ztTk%H{%gnj;+oo8EXP)++_Xe)>S(iC$|<{(osQMEUv9QY?Eg&~rOsf?g_6##xk+v~ zTprTfbki!5nW@IawM$0;n-0YH-zNFPg^bP}uu071&7^vbFcfnw@lz%opI0mI)Mg&F z35q&o+|x(qMfdex)B>aKqOLPCxhL*WX15fKP-nKl_`0YCNLZDa&~PmHOif0&RlSAL z?BS7phs=(3X5U{@>ZoP(uFZc*7BXz|Gi!325A9cb`nWt?{ezOBcF*Y~Ol+h}5~`HO zl*{ZPOSW|J2^^NnhT1e+%p6&mi;f)|u2Qv<%~z=rt%}6Ow`RGeg{luX*M%BtAFnkV zypn7%8(iE5b5h1_Lv$`oM*#H(9+UpESI5DZEi?`jy~j0OT}AJcH@Bqde-SoaJNA&I zIL*Y{ci?gCS*qnZ6!Co{ZpYZGokH{Nwg@*#}X*8oTWqp<#w(#CG6DZ2d9|{gc9l ze3W3TT@^~wA@0RcPDE9+i9pDGW={c1{_ZAJh&WZj(oxB+wxJC>HkEDPxH+`(Jr$vQ zx0>bOcbk9iQVY7VLR~LIH%ryytJ3ufbRn_WJhebFm1nO(WJ$UR!b0Ppn+@Ee8c{LQxypDW`4H3Wg7hOkdowH%0jpOejv{U$CZL4|=&1NcpXr`#= zQrD4pqTR)Z^3Y_mdN6Q;@f!|eMF{4ZZ5_Fh(<%;HL{H$Ho|9_JI4a4taL z7`ATozobi;Byu%)90Ot;prxL&PMiIx0626+dmL}R9mtU%j;*nM%rPZC7?M>#cC8oV zcP)OG`=qYvnRDu=Sf9l;P0O&}1@bz$w)0J_DULj?*R&b42Wa*(&Gg#crSbJ9$?MrH ztj}<-`GJhQnNa@=KYQ4N^&N>dI9wC^BG&CJ#+tvFtS#fZ9E>mZ(qHNokpH=+i~pN7 zSw^onu@04MIgi2L*Uh?OSx<5f>plERpN;T$1N<+0VJ0-F*7R{bRvv!8H5Y3op&#kB z*^%u?;=I2CBKq@QoNrz8gslC7f9?3i*P))BbKNQG5QhF-`{#vw(q>&L_0+VEFC8zb zdRTtFKF_&!#jLfm7U*>`W(`tgp+rCSNrwe-karGi z#u$H$lK|EnQDwtTW8RPB-b|uWV6bUD<5$r{bv0bDaJcWnt}owRNx> z`O+CTdC<2N>$I18Ja3|thdirw3`0le`3QK_3LDz z-gyz-z*D-t^S@5FOId%VzF2##ZQLHZWyg*Oai+!&oH$jc&ZRIXi#&)eYwBBC#%-qT ztQpQ$w%ZQXHa1l6sl_JXLrL^wSUklI%+BWs2-E}eHA--3&PNzYbw16H@`VTcGFbPg zxbKkf2kIR@DegOkPdWHE#eKfG$mHHH{L&2WD`(-i&cg2(erE>xJNZ$>Bg4RATbuD+ zBm7M6O^7q`TM;8SVqT>gSO9DQ;?o}Fd>7E>d>1?ohBexp@8Z1fdLVX6srfFnY1F(H z<%~fe%HcPcayXwwIYU6o;W#4D9sp8K6i7MkK*|XN@%=6?2U1=Mkn)Ov_?`p{HQIh4 z<#GOt^74U{mj^^T7f-?PR$vTBx(j#9Zg%k+=!B?K`z zq0x>3VI?@O(H;ZRKb{*%y}2OG0PR47Hxv^A+ju3jagG|3{&J4q4=Lo|w-oV&BO71Jd}J_UaE|hvUSIUq1W5Q{%{@ z<1;|gre30+q|I}`*f;e?mGDhH!E>r<-w))2Z=a$~J@E^eDS4tl^CM|f59AAN>Wznl zHuc;E$b(V*`8xh{(kERs=2DaRcf+#N{$hm3Nf)~8vs^g&oL6zuy)J!jb;*0cW&ahI zyf3)i?|1WE^p9Njhg@{A%RlPMpLy-LE<+IITkhM0qZ+nsy%)!J@xyH_ zDRs;_THwerIGeUU_#PaaRf!$sG}N8x#ECF6%6Reif(d-0wct9BEUx-0c*1jywjSQM zo2QjI<0x@}nA%~VAmgsNA6}oE&iN;1!^OLIKgkAB;EvYo(Oe4!BE~!E0aCVVqn{!G+4{$jH z96!b+Ltc_0vD9{>W~hYRuqA#Xo5NI!K&qF{(@PxZn88FL7Rg2 zcV~PirT%Y~%E{0iAK?$xntCpEoQUloK9t9Q8_{S}i)K>Ci7vYT-Y0Tmg8csC&x%1F z+F5*rqlrx8I<$m#i**8l;WuRrgEnmAImdBmhd;_?e35s#PXK$coPA67A1(AR2i$w~ zF#Zw6J|D>M2+O|U@b=`rkrDJiQ)Gqp{+vv1Vvxx_eJ6qJi(3KDanCV5j$xsXJ%If| z17au6KdJfTrTB;ag%)+ho?#-#p!TAVjPaT6G&6ha@=C2U9oR=~?0pXVh_ASCp|S|} z>JTnJ(Ddu+kI(WRXP@8axvh_T0J%qz=8P-&lgIHDMdt~+X|vA~dl{8I?t`RzjM)&Y z5k_Csa~y5dw|4XYu;=(@{IBe+6hB0UiH~Ej=TY&i#*6ae@dbHN@RnMhHv?)JWa5kf zqbI}ZtKb#dX2~)B!xO~Mlct|Yb3U2+ff2>kc@_UMTP8hSLZQviCxt(tj8O*w)A?Tn zLq04Mcv9R4gzwA1-#iPS{SiKy-0z%)AD)F@Hw&Nrq>K5_{?x_zky-ex*Z5?L|E^iw zpPq%!b}k>kdZ(t(sPLuQPD#Hp;b%(UY2jx|pBdrjX7HaHEl0nP{aM68@euGPU^kHc zQT9Kt2WA1;&pfBYqVB;ZJqnur*FGTKoe-=6E(48ErRt~pf$Yx@z(0t}jtWKu!-4@p zzn~=;gCn{d5R3{&1jB*>LBF6S7=!=#H+w)ZDi{$A3kC%Jf&k_2YJ6jy{mpr#p_}=x z9f3Xew@iLD{k6?761jvW$hR8Sh``a)hT_^n4fTVW{ZPtZ_ zg*Nv*nf!aF*bfMw`GW2v^bF7M32o}5&x-%1e!E`y+O}ogjeqEVKnxBDzX-_ZllYNu z^5=U*o+&T9Sa#Zf*u{^z)ab>Wl*!&crT zck$vr&}qB_7dM5AgsCHb)B(ayTP0MHdv&WDoJW*i!cn61BJ+8nX*nt!nK+@8gG5yd zva_9*qlBe!Oq4NN5(h<>C(b%G7L@a}HsZ-1Kd?IK>_jT$ScxG@CZDwRtLDH?MHEKNBVvghw+A3ApQ8^!8h%q z^X;vwlarWlH?-+Tq54cCzc}Z9xlg+Jc75K7b;`{D`O*J6i#`<3ka`_+#&4*($;6yG{DhW~ zh3+}^OlOlJ95|z74(33;r+$V$+D{=nAN`%!oP0GWdL8-@*B_0}zh};Md!uUZJRj#b z>A7qR_RN`0Kj(Q(zqoK$l=G+Plby}B-iyA;-Yen8m_?zx59i2Wo%4%%p1>I-MjrZX z3pw|l>HH}l=E=YQiwnKaX6ruQe7FmF=IyQg>a$Bcb8(K>uLqvveD~{!5BmGm`|nye zg)>6f7yKunJ5FQl3nQGNENj({fzLg%ScO%)<(h#egySjiwR>@Z4CY)HBdlgVKGCma zIO(T5ju)x0q?!lNPqPqi_Vb*5S;j|v?q2sXI~L)Li>210y?=&2T?BENI`Ylv-*XU$-cvJ(ORkj(Bkw$iID1acCQ@r@kQc`A3&Wg#nR+1X#raKYJq^!9 zybk(Yi@Habn*p3b)C^gzaN|RLqRU2_wJVSZneF(+*TtN?C9!Uz%%6Nd8!RiCPkDWB zhEX2Ox)zkPS2OwX9Q4e@!#<+4d5iI4&Xrn({57NESLY#)8MS^bvIKZAucvj%Yrvo5 zY$!Fha)osU=T5DPK{wi)uj)sAW+cLhp(iVE6mfG*W4Hfy$(MU zuN*65INp!^t;sK`>w{T1_sMhI8Snfy>%12~1Fqv@ z@s9-)Y2!bfA^xMt?}sJ+izNQhoJ$-3$K+g1r1M+&CbVxry%k12J}YbG7^m~$_R{0L z9O2%G@NdAn!ZMs&rOyC!wh3a=COFBq66zx6v6w#B40UlLe_@?PcX@$F5`19MJ2jr`uEhJ_>B??ia-k@Gw~-tgVNmcWeBk>^GJ3}uIUOenqijpVm$ zQT$tB^u~Bx9^0F&cYk8d+^y4GyJfppf8!SGZz9@GXJOB**F+sy%6b>y$jaB|>vL9##uSO%BKQ9{F@@b6orM4U%gZL_|B=P2k&(LXTgxq1b*nF zrpQOzPd#D0)4AU)F7lyVI`?6Apz(10E*+oy5c!1hODDfU_<0%JM|^ah*?mm-ne^j5 z(0p3)gBK~`=Q$vJrtwRsU!(NTGo{~A;forQ8cL*km4nam@8EWXdeaApD+;lzqlMo|JDQP&q^Tr_{Dj^TY*D} z2>Q$ONpPM*aTJIk7uNu3f2Z&Zfz*rprKv|Q5Q!7?X|%I|)PoaDK>IxM3H68psmCCY zdT@U(<(>vo5AJWq7;SMSka}zeQje8Ds8~FWNTB&7kp7PX>Hjbg=^q@@Xb%GE|A0oj zA4vaC0B;8#1+D;czw>QC?iXJPNA$?N1|;X&wWT9u{l|QcfX|dgTJC*9;yCdD036&(?Gi8xgWG=)=8EN?H4|kC!g~Tbaw(scSnIV4*>53 zj$7J%2uSljpz=q|+r_*b$n}kW;LUUo`4Ev!|A_RD7{iM=AQ%;l2!;g%f__0uFb4Vf zH+w)ZDi{$A3kC%Jf&k?XCq~Sh#)%XY^Cs~gx^ft&O$=N)h|cp|^WCo%KAfq?%+Ku-x(@a!(>%6|z8y>_KLUA9`YAYc z((_#IPrBUyxr^rfqSO6(7ySX3ynk`=SGf37E`2!P=#uQKV1{ox$v$Y*A>Ti+AGm2@3q3=+YO-?403!xvG?(PmBw8IwTT z(-~HPy8TSv8qTRAwIMv?K5bY)bAL5F!SX#2ygXGA|B?O7Y8tcxSHD)4Z3u1(H9y&C z?u&E8onr~2tc}$sNz+>HU@?*$7ezV5F^b%rcy42sfn0a4#x7o5Q2V&9kD>Wl;t$ojdM#1AlrisTOD2!#w3xm%?t8-$4@gIabB<$^i`CH_Gt{rW=REpe9$yj zKl(#AXj)(PGk|f5lNf_3!Wag}UoET=gpj<%yie-b>q*?@0Xu4+-%I{<`#E1y`&y%r z9hVzPthr1wk0#77Wqd^CP#GWDzUjSOYad_s0G;BGv^NlI$&YD=FmCZAr40?5`NETl z-vZv1XlFM7bAdr1(xiAD5cyH9s8~%4mBZHWH%HqiOn+fM>p-sFz zCNw}jC3w?~dDvcb(w}wFJ6-e!7mYrClKc3w7@d@jhj;I-#i2mS%?f>mpxRfVcRD0( zzes#~kQp*z()c8cRucw8~KosF#y!=gY63SFc%hw_iQ!&Pix$ z+*|+4sh=m2XZV=<+0Z#K_(aqjbtmL8Y-6ZAMRbzL+3M#RxMP{7Bi0dqRJtq^5ky)e3P!s6nf{>6n{yfP z-=#kh8AlE%RO>I)n)WDYAI6vKXfF3@K#Ny7&dmEo+~*r`{G4Oy_u#Aq)D4*L)N?l+ z8}G)PoAsfX?FZ&eeYaH0CTk*E9aVbvj!sIomu;n9P2Hd_qXCK?j)g~2#uPr zGVVE-;KjKGG^an#xg_V^B&Y+`y?KaBHUB}oWjF(Y?!uT0c?okNW?o9qFXo-vEqwZ$ zPHv`oAcox|x^hiF&hJz6kOe?{<9CC|j)zm|#C&x6`JGGo zW~y3akF|AE<&KSI6`MjkDjwJp+I@E^jz;2z9*FM5lj*xB<{U%glT>DCP|6pc^Z22B zNzqb9>Sfx0)1XjPQuyqL^Sd}DI1a>LkmDryvq$hEe^ArG0Wt3fE`T}5+YzV5?LdBy zj{x~St^?vPSfkOd0MZ`E*C{Uxi1w9Qug&lJB=kezf)g6;7!X#1;~MQTAkwe6A4vB- z!smAs_Uta;BABC$sqx1nKYU!iFlSxD@khwC76QYXpB)hN3j!z~dwm-k zab~Nh2WP@gcqZ{4_r&2+jC$ z@_&sq64KP4Z^Av>4JMucLTHn&7=u)NlTTn((E#-f;!QL2+y=r)-vx$~zTZW^=%SCh zXvVwKJ=UEh(KRl5hl^h4(g$bEB)R{X%f1y#E>3KRn#M~qhrLO|NjeuQRDI}B^+nq{ zs?j2iABf4+wlQM`yfb{$eirEsxXOC3zGc2#m2qQ$!xO2gv}ckI*hm)zq^OEeF|9eE=_)@jam4(;$qx%7i^c)8DoS1jDu<-xiQoXPZz zbv%miE5F$%(Kj{UR<2F;tGo5|c{NMdUv&`sAu5*+dk%ga>+Y70cn-#}R&QxITjS~6 zgAwrY4c%UdYM;pOtC_2ZpK9-%FL?EPm(H^e-h?@S-}wdaornJI3jCG^t~z+X=W|QQ zTeIq;OHi-pEy7*GsIT*i(7t&V-{_@{*1_9oC*L}_$n)$H)b$zt*#Vh|r@Td1=(|c0 zM;)=Ntux_&zfk)68tb@epTz#{LMiTeJF|42=iry2)6y$F2N55YOaH=iFbu5sUb}i} zb@stEp68aN3(wN)t%G5-@s_^FI(Tg6LS>UTe|0*0P2TI$nmf~u`4N99N$S&v>br?1 zum=%;VlKf;cz%Rav1`hjn!po0FFQ zBx*~Xe<+Z-H?x7%}j zNC*b3p`2a4%dMYQuPIrhJ9;VoJSf!*vZ&o^>@N?~}$3pAQHWjmkQ`gzlAfZ*Z% zEqunX$bexhT8A@0l!;PT|A%*``tA3C5YoW{HQ$K=E|KO;1fA;Vz-LRXNHq6xFKcq`ytr_)r8hW%qk7G&?9Vgl7 z|K+HD_``u2kH>?)ovcNUr$J&*gj(MP|DO49*^F8LilXo;(;(qr!v4j= z{WR{Neg^9+k1e;3Pq@-BU7vmcYYn;P-mGh6xcOuM_V-jDfAJ~yU1=7>+E9+gc0aB5 zY-a}w@_^eNEFT!2d^8(TB7rfS+MV{8@FFa+v z@ROUYGrZfC=`gv7Yo@PNV-g(W;ClB7loQ6k$~O_Mqh71XF#?RKfXDE#UBvG>|7Y9i z?GN4y-8MnTa;*K__yTlR?V7ZCM#ZzvGiGd_d7ZMpfHKqlrF(V0K)IoR|Cu~-_L|w^ zIkCn#ZJv#o}sCox`MhxDogF8=EcFQAQ@$9u?m<}d3uBTIh|^uCS=?D9K6 zzOx_4b`;wmmyFkFt^OAGJ4v!;U?GnlRIYSQn2TKRbcZ7a;#Fb|>KhCA4S z%YdLWw!_nfg=Z~s9LC7GT=$ogc9&!KzcPFmlbtR;{-6Cs-uh+4Pih%9XT|GrzzFv< zVIL31&(Nm!skt}qT{rD%ciDB)tUulI-Fwz`S>YU?u8+gm=hgjB*t57Qf1&TaxeJ$i zvJSq4aXR$3%)yxaAqJyYDYMQ-}SLVQ<9ttA0?TFKGIXUtIF=3wkfp zVzuXJ2v zhw5L(a`o73B3|@dayZK>t#ii<#$_2N?C;bePU;aK|F{NyP{d8_iinLpAbBD;sXtk^ zA+_CkD1+Uz4!a(VQQ+IEWY!{H-@sV%#75o~z&UK$zO~>W?pmuHg4?BKR~=lIZB>TR@1*V*uE1I3KAfEZe_n^I zH!zkvag%l2w7Vw}pNvaij#WB&Mc^&S=%qWxcMLTDcgMN)(+e;D3jALB_JV^J$Fx1y z96W}xUlZpT-pVuSY0_z>gd6gb;_~E{$acT7uhWU{mV-93=4WvC(&otag${e+`47K9 zU6KFQ*!;EA7u5Q$A>{WD;XDNLmRau&;l_!<|jS76S}+Q}Szb8toq>NdR=Xpa6qnsF@3V^|hss9TQh zN|c4O_%3=JcY<*5Gv<_de#@&d_(NIFy3T!`i`na(zQ3Fpr!(Q8ya>)hNgoD&gLOHg zJ$@H32f#VKBwf;ti>6DT|H)~vEcAb08eFW7xfm~9+Wns{zv*(tz{qjGp zPde+`H8m6JSnQ2c@9H0Y5{L8Yee9f~P5c+y(=6s{g>IZ@s03df;1=f_O7VAWE?cEV z>f_!y4Q#>iu2riE4{Ta}*WLVwpjPM5wVVvkl`R#A>L15s@&mQhGW2Mpr3@e3z?oxh zfJ(*r>;i#ySjzl5&H0?b4`W0r{Bw$neUHF&?z#SrPcwe$+;g2BpHlqNx%YG86VE7q z>D-?aei!)Z+@F9WKK=M%t~o{jN-^mLKb?G>2cw=$;cF9qCiiIDU(`MKGxN!$Uqmm2 zv6v3&^cxpGrkB%(pZmD^WOCmqe6-oqy6>EY&wb^5GPyrD3*V1M_r=@?XW<{2h2J#` ze?<5VP$FIYu1BZjV*1qyKa=~>S=_4$e0Y#4{#J5=|04XI!bkrwt^Pf;xF4T|Z|)h- zq+e;SQZJ+aVc{2OYf@S@!S~Tw+;*~!q3BETRtoCOILs3JT3KP(tp=1 z?puYQN&n7S%Zv$*$Rjn2j5uR!==SV~v_92GvlZ|V4cbZq$ez)Z(4;({PNQ~0Iha{~aM z&G@C`?-G7_27YuF{)F%|A22DUo=ombgrCWM`7G|kv$$`b#eMrM?z?7j zKQN2?QQ=o07Sh#Eh1~RmCsX*>2|rW(RSJI^GSan=$~l^bCxTzP{4pr}O#Y7vKa>2S zd`izOfAjU4pGp6kS@;p*XVR}j_?hB&Vixx^v-qDU>l8EjUnKlY;VTz@rteeZEd0({ z_(QYsr@@b49ql;qOTa|0BRZg1csoRgJ(X=mw2dVc-$i+XZAe zcWSJv1X9lmja4gwABDYq;7h=1@edox4`+HwDC}Dmbapo&Zw6m_~aXNc~2Dl-muY+!H|R7Xebgqd@9c0XzZ> z0?$Cd%^Iu9fu9B)&{$OpWH?HIO!t)Ap^5)h;0Y-wCAqN{v+&K)MfVtO@|>|9aq`!+f2_s+BD8xqH6m?$2qgng-JSl*XzU@G00E0DczODfCg`?}6S4{2s6r z_!Z!Jv`3h4Fb}8lbqt6mRB&9QJqBdH8P#a>Tyy4|VIbvn15W{W0Xu*};5^vhtkEt6 z{yxmP5c(U?^E@VwfK}5#`WpkXJdFY8(;toY2$22`YqW=e^mh>W1z6~JC#0Lb`R z2c%x58toDw^;)UXE&@`oJRt4o0%_l;(ar+WJ~tHt?enO-Xnz36bn62$-Fh|J-N4_1 zc^B|`;0fSyV5`v0z~2U42mCs4J&@_UPGeO8kl~oQT8E<>NPnV0`qQb=t^>Bid>!y> zK(3)@`N;!*7xETptjYpD0drPrf53c%ObV=;0k(lYr?F}hNcR)KA(+QBR*eGbegyc3 zFdx=fH3X#lL5)>?K$gE=ApP&rSk(n&`HKSSf2YQ(6F|D}&{)+9r27^i{f}s@Y6jAM zBar?#XsoIO(tVA_s+~aUUkUsU%quijl>@1N0N4-n^%|?z0Y3)1RAW^UknRhC--fwg zV^toI?iT>R1@l~uRX!lyXKAdOxl-$Y4oLr}HC9aksecSe|Hm~}jREO?RAbc;kl`N$ z(*FUCRlPvE?*Y>P(;BO~fpp)cvFZen`gZ__VcxE>ss$K{V#2 z3Ie-8Z`N3~9?14l5s>Z{04e8uu4SDBP5{Xt5xNhk(jPbsIXxPyx`4-EuN_D^M}Q1Z zGm!o_YOHDi(*HV*Rl9&6g1yZ^x+?)vP63eqX9<7$3Qdmzsox;*E5Oshqrf(yD}i($ z5V{CR`FTR0N1>;CoI7v*4zM3M0_*`&PN$gH04ay(XVP9FkoNL{zYfe2^I;TL%IgE3 z0!D$1FP?`3-`?ULUAn8FM-S-H60!a5QLh~HVXF!(% zPXHGHp9W6nSk@PTJl~T1sL)~HM?mvjOX?W_b^_03Ykj8#dw`#Sc_;8UfjD2B=dJ|X zHQH@J59n5nb_?+1uonT+|1j_cU?Grl762*72ZWcwERD7Wq@43}b-l}TA}A*Yq~3i% z$~gk0oEjkI>;l4RaHmGQ5=c1}8tovEayA30PZ99TK%Rd|Ib%S|;dvWi1&1}-LqN(I z)MyU?DW@AqeIh{0DFrefi-3&BJRsw7XpWA@0U*<_1xWuIf%LBq2&=&wjdmDF|8{A# zxzCjTRRXDZDX<$@2z(K^0QebTF7T^B+zX)O4+1Hl_cenRl=GBqtjAIEdoP){m3q}Paf?>gc zpkL4ujG@pd_kvNuh+tSSAm|sg1Y^jA%DrGzFd`Th3<&xKEx{NZEBAs?!H8g3Fd*m` zv;=@p|^G0wY?cls2yvOE`&(HCW%pb+OCAT#<$9w*Y2;S{icJQRyE8DL0 zd8hNw<@>yo`BQlJT;F@W&pWbYbcxS9v}73X_8U5G@Oe+)(1Ul^4c&MT+%Smu_zf|< zM{gLzd-{fRc()a_7x=s_1+92T3%c;`FBrhPx1bO2k%CdYrwXR=o+y~aJ91;ojXrPZ zjZwTiZajf^&yBr!58pU~_u!2~c*ky>!2A4-k$3pK=Wd+A|LyPScn9KPX>@7UoIZcQ zf54yP?OoQl453-xwj8JIE^ooRcX=P)rl z#LCUBcz50$#e4MTF}#Ow9=SPd&iR`ox3t`XlYMU)#(VtM*sb8-I(94cxNYV(gygnq zyjxeatw6l2=*GKqMHKJ875#XRt{B66c*O|blPjk1Zn?enc7$X_1n(2KcjDc9dmrAX zZ|}i-==Nc}&)q&lla)OyVX|@haZx-_@gdpIbeH_tffXyj$0_t${CV`tY7wGmUp^XOia4q2Ifr5+K&2}^qoR~Q24(h^p8>hl7FAjxFcB6 z4+_0R+&?DtHsK!@dLH$G`;Q3ylGtw(`pv5}{|iFDF7#=k|4rylq3=L_KzUymdLimJ z(ys_zF7%ktbHslW{&SQE8D?Mh8tB7){$^f$E#icl|(r_h#PZXGjm)AB3KKt`Pstx`FlJkmqy`;2{< z^Jx(IW*x?RU`G4q`4PT{q|H3zmqdQ&mD*m_Zx(rG-k<#z+BfqEed2!?#=-dP7Wa8VuN3!YUTa+Z zH{SN|z*p4S{=4n<4ZRU0Q#J!mZ|A6q# zygtwWr~5pKZ*0m_w3)YGF5x%x+~-9nsqC03!N|N-7n$mlkonU$lomd zyF~t^@INo^%{*UW z758SIYE<+a5dJ~omk9k%k#7k-WztvD+$tf4A^C4nTQkp6MCkH;TTc5Pz2>AJ*X`Lj|9QlR zlmDBDZzuidF8-HY{ExW!%Uu2)b=l8#@&C<5f6FEBGcNaUKy#;lYhCWibMiYtIO!*l zj!yb!SA2ckB`?dx-{PYG&Sn37F1p1r>u|-#ms~W*Bc1w; zy4-)?WuNy{IPEV%`FGMBw{g;Mx$Ixz;%{)#O)mfc!R5Z+6@TAx@xSA8-|3S7T^HTu z3jZD#|CGzWW3Kc%?sDJlDu0i-%G2K>a-8w=c^7|!E5BhZG|7IJi{Ij+r(F8n?~0G* zF8jM(^zXaq7hV2uckwws&7x}IjO5`7SxlY?o7~zi1SAqmGxx9-Sr1trb=zPrgw5ECdo}3LtI_2ZzI78 znCg@^MLCbpOunpS!D7 zM%iLb3@1kZM8)nSv7+wh`_U-l>3*=d2jYHYO}2Wb(h%WaJs~p=~>M1VfuE zD=T=MpYzB-+$B=Gzp4Jfew+}P`Pe|m>4Kr%_02fwF4NJhD*71sh6B|#p}OYgM)A!} zmj&g$a#jy#^0pIpwVhuej7TaAt)mga;MK;NfF`$ifwWP6}i5Hj5+;1$$i$jv%NnFFxat$j%8GY8qg_5T!#Y>bNd_z)- zjxwXYq+$}cnQBVA$>k(&IgK%GCzq7C?KH+lcD%5}EmL%|DeWe*HolFhc@R8h94`oQ z_bR>;)>TPR%;chwFrpkqsSh?O+%8+AjS_B{_Y-d7ltT%{brcarlbv)q`(|-9r@sw~h3i&A%6NZq7-zJ;t*kRku zVNH>a+FFHy?j80R$h7w2jHFNe7N^^^?zHS}6`Qv5|gmJ-CM(Pq1!&SvF7gu|nB)ZYD1`6W_V3y{&84uJF-^vif*x zcl%C^9J?~BAgasu?%g{#d*jDt=@s79zO()5w%yy@W5brsW*?cl+_I~!Jw7PKZtSP&OKCH}JDS7EUCu`IqCj%uO-7f0#O;mRjb6O4xh3UX1-sGR-8;8zsBG7sFVN>xJY3eH`t-Ds`X$%&s>PG|jQqdYK{D+o?@ zp11Lg6kJ+1Ebf%4z)5oOzsk@lUg=0@^cwW4)JDMeS1%e;o+$5K}${k=-8;dfQL z*2Bi{*NtD;zYIBAbq11QY2(%H_=k$Nwwlg5y5!S75vOuxEEnN1oxj?M6?huTFZka9 zHHCkHbXvP{Z2)$#PSXMo5jY*jEW;JQFE@>I{guyb{auZE{!@mRJ`4ZB zf9u-V*?fNPx~O$%nzt=es&{XD<~DdXWyd`-`xDd|_M2|Qc1+WpQ=hx-#{Abm6&3#9 z{n5bxn_V;h@1AArw&}=qkIcRy+VO|j&5|veP>+8*Eut*>1ATwTxBu+(d~3nm0asan3wu}M=j$bZT=wSXB1?!rNc`U*PNlkKX|-`p z1GcEJ2UaPZaYt$r72A0Bq-ckDe-hrK)oo$S@Y4NOx3bUu8fANHkWn_mu`3pAhe_@s z>LY_at)aS7zfxJZkk=44&ML{Yfv|Z02zGkfs+8T;&lF#V_Y$YnzTP$&*VDSS$`89j zrLdb0ufb1gci%Z}+Ry)D^y2nAUyNRS@x@h7;;De(NaGyCS(z&vBne4|mqoq`k>o?2 zRCI3Mv7)tg-Tn7G*19^n_4Zw@>mFOpH`;ICb?=Joqs}L~wX<`Rd>(o%n-$)A$L+g> z>sGJGMolXpek{8x_0Yqusa302KD=smYSsOZw%-5HeUIJ$=$h38taxzsZ4(rI`D5F5 z?e6N@zO#Gtrc`(PQ>j}wy*sk65No;X)?KNlTX)?CmPF+?AeStT)JUDH7Os1XT($7I zKDcW5f>FYkTe!8)2>G%W-Uo6&vAeB#0zv;qddQW+v!rN7UzUCzaUEutdrZ#*=ixsW zyGLkLl$;JloHuS3$(=TkA1jXkDa1ez5*a5?WVcsxjm@!Nl0xsRS+Nge9?W8H=YNyZAcW%ek zE@&QCn^`rkwyPU0(wfsX^>xqJ_M*FsUTW=8j)Q#T4xQ54bG7w#!?l-d^L**t_K^xZpjb?f)Td0%}G$AS8j9G@TCi=J^_c1#vbKZ7<-80$+4$69vgdt z7`U#^K8T~z@#~Hod=v$2b z&qnVvS~{7^zuo9RvhXQJw;KIUqrYHu(3|`l(fmVs{#Z0TLwP$WgXlhWFx+|m$}c<@ z{k`$~i1C*mgu?Sif63?&ADgGqWWuB$CHJdzI_VWq2g!(bGK{eaQG-H2PnIF?P`>i65u?65)SLU_4xM$LX&oXy*TA;onMx zORqGZUTqPl8EeXD_04$r2NU%FOvIPoaXfxHLDwYm`D@c)yb zS10l#xJ*7<++xMEt!w9&ZQX4h+7ouOFSk|bJAr(cFSd8O{YbYqx8kAqmk2nnUfEjOtSs>>ZdSVNHEVNA zmtDKNci9S3*|zy^_HN3jm~ETn=dxsVZr5h$r|}32yPd4hj$8o^p_HqJxYTMG;_}%Yh5v8 z1Go5zws%bZ~wFU2>;#y7Qa4GJ+a0e-^T4l{-eNZJpZU4y5{syM zOmgdjTHpCtu#ZpJ0I&1Z9-f873bl#nOlJ1KMQTPY14tb^W=ao<J8`1un~fxUDAtx$!mh1>_#hHhkz85#ND)Ep2s18K<6&UTQpD z^HLM#=Rt`2F7GEf;xt5=WovkxS3ZHyYj-;yjWwM9ldimi;U+z;oi|>_>*L>~!Pu1|sa5eXU(1O^sTIU zfi=X#cfnV2XI~fXcu?O6PDeXf2x*;tbF_nZms_LE|JhFNp> zH&XMW=G?us5qaj`W4O-ny@nqMecsaygN?JtL_6}zi#%&?_qbS}n(mc2N7@|HjIPUW^XTVE!qj7A*YqfkI<)*{x`|``PY|^3cE!0d})bWea z@z>rOx$qUa{JIb)_a4SDzJ;M{Vaw+-$D3-RMIE1uj!$51yp1}X$Tv3nXuGDGhTG+@ zwf;{}_F>PlzJJ@8=!S-xH@h^SeoN-~#F|-)+G?U59WVFHyzNgvHFILk>_vCOr{me4 zney)>&E0&`3AKAFebCCVb1v5xxY2?ZI9!#$3zR~(Dv+4@(Nf<-oxL&()wqtVR!sS=J?;z zJ`FYFCy38y`4(7MGgm!^>%D{efY*)}k*&vnFYHSl@RQu7x}8y8w|rN+Shx2wj$jHQ z$V8e}-yY>@YT{|=AJ>xRS-$I7%;&w48=FHug+x9~FB)_7{SK}h*6{ng-=gyRwSIl4 zl=l=cv6WxPnqlLY#zr@UurJp}TW_ZxMQcAMqEE%YRiLqP_NME0JX_4K(bdJEeY2qO z!z<0-{9w(F+z+p`esfXnj+Ai1q#c8ouUI`yv-tjgr#`4WB-1-4dYNX>m#6cc+wsWe z>&~Z1%6WKvxtx+s-}7$ImFh{d=hYtit~Y(;#c@&V`xx(Xj34q>-nkEOJ&fl&GFAo_ zbek`6{^wKq#sd7b=lEi*?&JLCjEPzc@C$V`uqZkn>f#$W@_j(QGamLVRmR)t&wosR zJV(5W;q>kQs(l#boyK+cy;yp_X}b0AzIUbdRl)+#kZ=A+SDHhD^m zm6f&J3+jnChWKMiH;#J&-%F~ieZhUJlX(PomHLP6+pW6aN=D`niwisb_|5y6&4ro% zJox2n`BqU~KHbCEpnWifbFFGmdVgW!@KUvRNb^nVW&-_3^>KhX3v2t0;hOf>_jI2p zZ5vU(Z_wwzSvzfOo<8LH`h98M=W%<|$|K(pEl#l?I`G3QZl2@%=#Q?n&a~_11LL9_ z6t1{!bFdFO5C;&`Z>boAxs!2wyat7P8H9}PpZkQ=jOOuA162u=@Q-}$waxBJ6w~i zR<2~?RMNxfqtV}pbpz1fze~|yxoLh}sxB9&gKd^dL>B|;+Wur(%qkpeMD@FFb4ykdr zZ`!l~J>m~---?RhF5dcT?|f+Y(;GJLjO4koy&LV)RazX3y>=1QOHo1O^B+$|TXyZ* zO@hw$UEPm$u|~2v+D2?U4ZO)WD(Wn{VqRfz34}shx>WwUd_M7EYkDQJOf5pOktAux2i&U$B?E}hLKO510z2>7eHQb1B?JLUV z`B#!(dI56P(o4TUPUBdm^aTq~DN=>}2Q1vK%MtRO8YTRUg|~SABkH%od?xWA!P4u9 z@Wu%~VFNi=3ZG>aKi5YaA>VSsv+SeK0}0GFc}&ZWKb{yNlUTEPya0}Q4 z-UDv3co|UXnv9lRN5vmTPND3hDE=#;_?`e2Uv?eDZ$IexgY3c0mz|Y|z#O;{lrrJN z;2Q98umPm)=F8p#?@BxSj$6U~&>sY4=TZ5{o{0FaH*7I%0yFr_&f^M@XOn01&@I8KLCoK>^q8It6>&=3VIf(d@nPBkvzkor5iBZ2X;WOHJoMm z3hm8YasC-_i{dj;P`rcSlVA_{KCl~H2X=tGm3SgG$#4DjoCfXamUeszk|N@aXi4Bws%?QL{%qrlm*ph|-&Xhxso6RX$z!VEXl1 zlpKjS2zG(p;A(I^_+C(YJ&%FQL8?02;xXL}D!&CDoxTtEn)%Z2QNPf|@&q`{_$PTU zdQ1<1Y7Z?`J9#~(rN^Uk95jEPp{}J==1K)%HA@eVo z|3UCR{12G_e)I1I#s7Jbs>=3wbao%bKX3kf&3_Ll{@v!^W&WL@_;;B9CiBmMYw%|b z(0wUOUlXR+g332*{={+qt3c(OG5_V}-vTP%X7gWQ{_{ZP+hqQ8&3_iC`kn4EJq1+x zCV5QPgOUeu`3@5}9#xN1U<23(-VGMO6qpA$gSrn+1Jy6dYw}ufHmLr`+Uw*L$QIUQ z^*>~otbW%CUI5vGn|uab0-gd{qnq3Z-U}AMnPA>%-Op!0uLrk*>Ti@~@&ZtDuvY2h zP`{$iCaVxr!9mJ%Gk6AU1P4IrPxXP4qX0^dJg9v4fYgoCw-TSV(AR?tK(-*AzSVW0 z>UScT0w=g2cim1_rzY#MgH*O~z_4JLH_RDk3{!@Y;UM+p(i^JYMduB3h8e?@VPrT+ zWS8EsV3;?|8DGYgfMLNfZz3`!7tKTNuQ|YZq2>_BBQ-}k9;-RQQR-)?gwe%S{L;bC6IsiVU@ z>M7+PllM(T5G{M!a?+bp{$ZbdiOKsPO`bO!{bi#k82!gaKV)=Be-WPI-^9ftcME^f z7py*>wfIk1`WmDE+-SY`BY9pm`u`gJw?_9`{0l~Z*ytY^Ej!doKi2ARLMX50zu4qS zS^S^1_*;#hXSBQEiF=dLHyXdYMaSCbZK7$zu#f*e!lcL6Lt44BoX7Rrj^HPHuM1_Y zBdzEHGRyrB{-VP?f55`SbBo4jg`ae>8H+6Zn9=J9Q+RmJcox2*dr2qvGt{T(FwfV< zwdl~_zf2sL-o=ihT}GcZdb{Npo>NvDzX6kiIvC5 z=rv9huKS(bzcT*&JsIsXdXv##HF~bmzh!j6=wCFt%jo}Q^a7(-g33?#8M(2@W2cV3 z7kT6KeTnetlrJ9sXS9Eu{t85#W-q0T)XrTc3#kZxi`1O@#k)BK^}`PjUWVNyI;#p#M#xJkpPi zr$3yaKa-G0^YM86#}o7?68XI?K~GK8#|oIm`Q4j{uX%PnT=SSX&7M{nowNt`ZxZ$O zxrDs3yB_EFzZ3l5m5ASzh|eB>S^EE&2;ZJ454wGupKN2@uiPe-Rvq0-$-%soJe=W~ z_T51*)U8a4a<4V-S-fDG|B`x{e&;S;9WuR5#c*$|Z}>>t z#?58kPWUnf*J8Ow`iAUBhImUiMSa)%A8K8FAC`>dQRHV?nGY`j^HTr)4?k2MsmS7< z`-?`Jihiy4Ke)OS-D!{(b12DHQEziZu6pC$UZ-kndvNp4r#5f8uXFo`_Rf-OZZICO zdFRgUJ7Wb=Qd`0HrE_&#wiI6M$er7_Z-%Ns?0&3X zILi<&yO`Q?j6>)VF)u&JP$`?AY~S74-S+h6?vCxKS;wm3$t~ODVVd(!Cp#93c?gX) z>;{#(PuV6>(#nQ%EQ=6RBX=6!Ryj|%chX8KxMdr64$g~p zsi-Q8*TF6MtG#3XMJ;hjrTUL4lb5{WvC1RFaujE);Fy+r(MJY!;(a_Qc3+E1`a*Ql zy>@s|P7liB)ilsY)jM|vPIh&)m-Nm{XHJC9%2c}ukbmj_Cia(Auo2bWyI&#EeP;qfBhJj}Kr*%**r#N@5b}hpE zUi`#zIs!=s807`QNguo1u0^?ici=O{WY_u^Q=(`Pe)h;5SUDU`|2%JeSVME}n3%yeExcnL|Nqny7hmqNVonkf5|8RRp2cAGobjWT;kILvc6t%{a^gm zj}>3_sQ4*R{Nd&NRsZsr{K`+|RDSgq4!Cfwr)zy&1aaJYy4Jl12-muIAEXy~W%khQv*g@h82Mh~_dBdDx#xP|FxO7)vZ*E<$ z^=8HWJ2Hu{yljx#Hl?*r-&yfyVdb<)u(8cTkduKT4&5#{I4rM^yiJ%x{v68 zXSAOCMgIq*Pa7T5zf1h!uYC@=S1tTkjQ*n0UozT#*M^E5F#6w+M(bE=Pq|voMduua z61dUoM{>WzU*W;2KZssn9v`>(>MwG7pH$&%JQ@AE(W)1@ZAORd=Oli372Pi-=x-$G zsYH&)|8^q$)y1QBYM&MQ6670mR)?wv@9U@mZ_U3 z76VBX3v<(ZCgWu zr&9kAtLHbzF7}9&C`0Vo#6>E9m$S(F(b)7l?pd6H7d#u9TzTbxocVT(uFMxQ>n!ZIHVRWP{0y2*g;nRdTQ+w;$=kFx)1_nKe$x5w z6q}rd`EH2Z0!-q8t-F&GnLQwE6BH279@) z9-^b%9O8~4uFQ=#-<6(;To~tis7J|nrX*h(%hBe$8K%Gm(kqe1wn6B3f_XNF3yi1n z`7Zm&+Dmrzpm9#;KZffi&4~Ffe$F4%95vVuYpmu!^8K*rF!d1T%=`7;L=JuMJi77l zaPLoii+2k|*GOj@zXtTrdnWMSN{G`C?f5G17c3@Re&PKN#pC^({H$!lkL0r{TJvO-gl_Q-dyy8-jUS1lX|bP0seiw z8`44De!jM0D}B0E`SEvsA(ZdMoAT?p4>!W!y<4X^xe2_d2mfx`FT|IB3O^zq|NP`= z$348Kb8~%k3I2L7f_Io2+`Ej5$1~lI|G_&xDR?H^P2quOQHE*0eNNFf4K;A)F`<_|y%#QRjb76GVBsAg#eYukhVTwpuvzHq*vss~d7sgz@$YrGJb1rI@0KW? z^3{7O@8I1G=X@ zMPDr)FEq0x*vZoqq%*O%`;P4!yEkK5g_A9tIGRb5Fd%$Dg?=5 z&Yp9U)mnW1sTLmUy;`{L^K#X~8JC@_79O6js)ety^!0QU`f##2qpWqHYU#uCp|$&n z@^@Hz>&GL)yDWSja&S5#f9ZS5t>s@S{B;YL9%v=`gWk$T!Wj=n@NZ$h*}{5+^mvz{ z237Czi6LSl)BHgY*|XBu1>N`4--iDY3zuH*QfS$^LYHTL&iu3BUC{GD#+z)D$8-v0 z3YnedF+B-XI<1>3zw;n-#`)(!@jYq&(%+RF(%+RFM?mrE^O)WbiqG>PQ{HTkN2lkj za&<$4Pe{M_HsUpbR7qC${=oDk@J{@PX`ws73m{dImHsc79s-GyJ?}9+2+rsC3MhW( zK=G5^F7Z17icdc%K1V&e@3V_fA2gUg1d7i-a0w`Vfp>uGLGf$#n3kS#GyV%e@tfx{ z-2{r?T#sqyACBKq6082S=Fc@UKL@IQTEW}FwIETm>ffN#7gqUaK}&8;DrlPQ6p!gi zpz_f=l;qa+BDsg@mn#1SQ2bu^m_7|EzoVe!IAC;-(cMOG0-FfWflB|l$Mh;td@~?f zm94j_ey9uQPuYZJ_W#6ZF8(T43RL`Ao_2b-@}FY#B#$H3+ZMod8jl)HU?Zq6h$Xvm#zafKLf13=h$NyGvEqEO$xyjqDzfA-S@Z~o)ZI(ERYV3;?|8D#^xqBd8*^j~sm5I3cz(9Q||3XOJ7m$Ek;Y`&ZB_4EM|D zEI(a;avl7|f4ZZh=m$oJ`wdHic_Ellx83P93dv+BiKuLG#>Q z7S6L{8GSeT#nbD46sO-$E^+#I66rsl2>(JNd|HCun&5vWA>TU^^lvBl|4f44+Y=ZjV1ve{oDZfOnFtrJ(y#swAi$STKilWV`Q z9P}=n#lp(5!(wygP|s^)hg){89K~7vE7vMAued&ow-i{d_R1EiD`(>+xrT^Em9N-3 zcg5vuzv}#0>%A?e45gG;&pc`?D^qOEJLnOa!dFbk#cNDe>@?E)aL*L}+cfb+MYXE9 zg+u?Dno>vM@uy71rJ_nx+)QIE2UBmVT;AAoQcMG9)VNh@&-Hi9uOz%*)UV9bhsEnU z=tEVG?>mQ26|XQe30catxN}gE4_g3jPCuxv?T+e?mhOvh)za(H@s4Xz%PDH*G?$xy z9A%qfG)0>?s%Nus;a!WGwIPujsb?ddwy^o|lkPj@m^{j9pFl3qx=riPZOplA)w4Os zWKvH2#PYz+pl(EOaNnU|d`{U->>QI=hWx0HO>9_>aHH)zbdX-|Pd!8hCdqMU#V>k| zw(pS9gdLZXP`EuzzID2m&G#A3#}(h7apW2Ds(Lolc^KY9StW<&9K9*`K53MC8w7JI z=Hx{^8|LkryK7#rXE1jTyiwOn0=Jfi++m-fk^J5IJ7GL#RNjNox@J5qoNJByC*{?^ zTI}qans4P;V=P~PFUwQ5fSf(D9P6f3Ti74j-_06+igm^Ky8GQ`2Tk$~x1C^3v4*up z*55x`_tFo)qBVG}h1VQrALQ$`wvL*^-kH|rk!RV^*r=I4*Ne^T7rw`uuhwRH|NDi8 zZ@0C~{x8`6(mH+J0FU#mxAUEvXxzZE*%!UtG5O_briO``WwXB%?I65W>4xxQ?*4+- zOamX;U-~}lrmv2b4XH+FKTzpsM^m@XVNG`0xaey`wV7o+12!vM`!V;JytCP>!RB+T z!W({YWpOk9U%;LueX)`Kl68K+WF_Ukhw`srP4%SPlTbX_`lBzYz4!BX{UY>(nw5TC zIVbyz#I0eipE~-w;)?GrgopaqTCn`9<(1s~__nRdtNx4m8E>tPYwzi^tXa#RQv)`r z`e@tF1e&$tj$&Jv+cb=jE4hb|%v*M*g4_`{6F-K1HOXF}U#ZSOG=9RFRyl6mc~eebF8$5D2=)Rs%g`^wMMymSQ{nGLmtb#2kAf4Jvpk6uM_yE&oD7-U9Nn{^9muwC7Ti_hz>T6Xg9o@(#Y$^ZpLDHwPN969!N0qg|@0 znfg`n&NM{*eaeSECI4Fd!#>F1M4!Lp;+fp-!!Z0d>N*W!+N1d(*Q4l=F4$F5I_-aA zkB)0@8nXGl9*vn(r$on9F3FIp*EQ_JL%TB`U{`ONyM|_CA8aCgUSm86HoWME&C0Xb zZ{ZU^|1$mYvy@+DDqS1pcG-eWwl8rVg|vbH)p$#0{$*psikab>$*)_1jm!Ah;QMOj zysu^pRDDQ&muvp`5N)S?b*&E4mj?OvQ{L)N_52)d;P=V$U&jXEjS36x!TRmthAG;k zp0PEh@fkjY*z8j~sk~v|F2cUsjGJU1uhdor@>P3>yuzMb@!F+->0ZH}+l@?XZWM3H zn5R#@_zM|^D8_vD5yQAORL6I$sJnZ(->PrY7hZ^`9i*Rzwouym`R8fV?;`J)#ttvl zwW;tF_apJ1${6_VG1w;5wL)J$OWyi+l;U*Y*HF{=ocaM%h(`JGFKfS7%`T}Mf9S9A z_S3a9g><1mR!YC(t-k$-NbB~1vGFNhp+ARmg#Hz1@uJ;s)EIa*yMe)`tZe#zoc&0p zTSH#jM~q(n{7l)G)jj=6T`haRwd@hrabK(F{x*jD+*t1K*cJRrjk~``lS*~`+S|R{ z?1^8>TYutxYS-5^c5+_U&$ixB>Su34Zsuoh516N_nmdVo=O_;n#S7_K|1CMmr{5xzfryG3`HtYsK@=)JBVc2fvQGSRR)*LQ^-6ywVNw2!NNi0{_pSU_Ih0kgyT$BgGiF{&{oqP}p1vNJ?H$Ob`J2YiFc0vu`SAn2Cnwvh zE29@)qpjkyWom|nbp1fLDtwolE&>M^E9^$Ko59!m_C4UKb|LRAhb*mnF zG%BUv*uIVLikIlk+cs|Bv^icz+b& zXCL>NUJu?!yjD>0n?UiK3o=j3raY!+fsf$d2vWA}6p!giAlJnFdXO%WjXb7@iF7~y z=fO4LE1={!=P`X2lpJR~rcZ;CqaRfKBcS50u@SigzAd4ZZ@3pX@z?=@S-y5EP$0 zC_dew_{iR)+UIdle6pbGqXm?_3qZ*`&tqD4AjN;K$8-vmy!9Ys#{7#DydA!ChWkPB z-3LAlqMz&PzsqAf3%(cs1)%h8WdBk0nekpv^#dQ79(tcT_KdqMTDJ>YdD?e>`N0@c4d zK$;-C$zwVP-jDwpa1EFNZ;%`w(=DLtt=VIG0jPSL2R;DG&ZN>efNQ`ARC?K+1k=Ny z(qHtLz5w1wJlUUo3_J$X1oIDplDhy(Zk`i_=>wqT-VaJ{*@*(vJ)rtUH%QfIyF8{J z2k*f@YvC;x-fZDKd%1d@4yqmM4W-Ya_K>|xwZ{oi_1|aykAtqBK$SBCGX7Zyu;}N#8=(`&^G{)&g9)W`Qc#bdTvNpsx1@kijoo?=gL5jOTM2RQ;Ut zm_7-reg;7CIpHyV6jZ&+PN&Mz3$6wCf+}|>sB*Sixa@L@mL8wt&oXQT)lS0{PW3tn zBGUY`;41K>;W3b3w%=n~dVMOl#`(A5f5>C{Ah-hmeIV~=%$I(N+OOMVdM>yM|3)_F8;@TH#aDWLtH1)N{&@gYyYWov+HEgLlV|sMOm~Cg-{mpg z398+i!IdD-z^-33g7-o4P*<8vp&E+N;-NT6%YqV=buoS&wPmS0#`1?$nQ@ zZ$}kpQy$Z^K*gW#G2IACp3@8t8L-b#`Z4c=ZZ&KMC93qzz_j%59wq!N_e}MtGa#(8 zr#+@mfXnbdX8!%=zu)|O&Hs7x-v^3M-u(BP{~l1|TDSRknSUp!dg(C#P3E5iTkwC} z{26;CmwR7U@@0*tZk&9pK#G#hcy#Z{N{(jpUts?8K*`Z${&USg1xk)t=0Dy18$ro2 z#r!9kf4$Lw@^yAp-_E6b4C1Ze0q_=3dwz4k9LRIHvtyY8TcDZOOr8$1r8xNld~O7X zK=PVA2#yEOfDPa&kn3skF_0}%r~iknlk?Dv!95`FI5@pO%Ix(1W`GOurz}qIPx^&w zbg~>fNF@pf3=4*N!<=EpFl87S4wBfVH!K+D4ReMW!<1oUIEY-FjvX*880HOgh8e?@ zA>h(g)+f|=i?eGh*qMC3rWYHM{WZrpo~}8=@n~(o>`B%iLaFdT{XveW>(6lP9kU-r z!hK_VP#yFNgcrtM_YC6Hia%W5g2&IPRO& zGl}y_104G&9piXtQXj_ylMc#f^0CRNAYNa%p1iK#&+)?Ki}+l=KF>#(FJ3>4&xt7m zocB*TCZ8$89M4Y~()kU;HxPQ`z>TD8yx53>QqM!Ekcn(%pCv~qRIpMQA18B+d)&$94s3dgU(_zhWnJx9p> zjp`>>pZ)lWK4;3vkJFzdeVqPx)NP#p*NOB`Cc^)k z`iRH>*#td4!GCKa|CJ<;r)MvtjQ(PR-<^r{s<(Lh-$=xNdm{ho3HnzO>HljYf4#pD z=g+!%8NDr$-%W}1bqP9Y-|VQ3M-S;bYK%@k82nvgM7KV z+n-vrL7J$gU@u&m>T7wRmoR4Mp%fgGvSRpExL)Nu<%zn93oFr`zUA6=z60I-bCh<-u*;9lN(}t!hot+3D=w-nsq5dVh6xQIK`fo`<^QkCdh+Rs5O}fJ+=1=mG_gEvDHm`Jx zopr`|#c$uXxpT`lzVKd3P4=elTQZ5-RWy)@rM~vgHY#SlDm&IPr6?u2NAU3;ReAW} zGMkBENbo_WOdVah`uu)GdG$M8;<7S2pOUDKw48s=3=$^n6H3dtB!KG$G20}is)!i{ zlxHGNFkP~&d=&29-X`t#5L!H`_}TiOz~%|JjyG=KZ{gB~-cHI$z2mOk8@6u#h}S&+ zN%fAW-zMowddGnthoAo37M;6Rz2jWU#}9hPYu^DM?u9VQ`w)K|O;0%R`DMEaAGjr+ z+O08^c}P$AYW4yz%<<71j9=4Sx2_WPu;^%0_7VJ^?rPuIjm^~$W23XJExRfnVc6u+ zx}V&FTRp!E@LTA;RO+Hz#F^%ns#9jBOuShIz}>-LQ|vuFP!&j_M2a^(6Gfi|JML$l zkA**eMZM#kU$d|rVFT#rNf#lhdl~oyJ%wuD zf3H-}7ZY_`JJ-u1SyjJ0EB5z%W5r7ySCRQ<+Mpx@<&DXlLa#D!`cye|n7H=zc)C9~ zmT$45r`m%)ll0VT`Bt<1S!;57Yz@?t=)80?!6C^**&8O+40GLlspAXiH0ztwUx=3J zyXuO=+Src2$DW4HeLa zC|UH^H+S=+=?R+*d8@0?7J2H5bxEiDuKr!BE3bbZ>gpNVJK0y0*Nd)i^}#0e`66@| zC0n1`c3iYX*S+WreL?*(=+q6;M>>$H;RbYdDT8k#^r!gldo(6$md&0N`aH?Jt?ceP z4(-ss*tehB;AQCm#dO&t^!k!KE~0mR^AddA~< z*Iekgs+0T#E%%PpU3(cFB>B6tQnUst=N zkIr=w{Jp%UgNxkK{nwb1VXRgdd%M;bN7j+T`Iq+_%g6N_`dS!ABp1tT70dCW>GiFl zZF*>%8pcJX4{3v}<$Z6YJVCd%Alb1yrRy%}(^iu8*=42vQ=wmc{c34fywj&0;F?=8 zxg;ysTrpkzU7rm1n46GE^&iTiexmdEdp*}GCu=Gd>#~|$*OJf6@A74;)()kyxn%zf z9m=okI=Gd3K=#I~>A`=euKw`%+`P!!tkRe{^i1>;>uq0J%wKi)*KF++ubDc3Jq^?o z4)05KW6<-hEt^YyjQ4z0XKpUV7@})&+N9`GG^NzX!~Eo%%t5N%>jwzSGe(`#*ga$R zjSV$3Za>AnS@)dRc;6u@Q;K#B6KR$<&{<`XuJ=6XnWa~@F z&YH55y%9M=nbmHt4Hy?I%~f?@7;dX!d@a8>DBr>aKkg49kK~3=n5XVfaUalFse6X* z3yh~__l4ZJs9EDv7@yV0!+lGRDqsIsvp-P4S(q(4NV$T=}Ui`m0^lj^TQx z%r_Qz$K|uk0poe;I{qvAiQ29`HWr{S{SOn-Nme~JGB@B|ss6vEeg`!Ej>)+BT}e`r3uKcJXvRV80tI7!{d_k5Bk2rUuBBl(}vqt6z^+uYNAWC ze?EHY+w`Hz^Xb^NN!i1FD{-AW8+@uC)swD+k_=N1zt{Rs4`ui^{l0@TsXb(yPw^$6 z`cb96lAK@ZI#XJ`L!-2!m9OSH;kiV4hdH#`@5@}vC3!|ZZ-@{7viny1!+snoaNoI> zdDKr*cLghhKlv z`ov&-tjmqvkwX=8_Szf&ii$;I=t5Y`syctx^?$z=RaNDmED`8 z8~)|@)1IGhUC-J1&s5hFVpO( z=3Cq+TK)5Ge%&r)Tfslavs#KdlbcuB+U=|M+{Rv2a}+DPczT&j>p@yO93bCk!DqpE zJw=p}f7x?awe>3a-Wbw`vaFfp>!2OJYgpfDij_620l>d8JlpFXd(p}E`3`GP-(?+1 z?Gv7+(m?v2Nb6E&F9mtU?*HP9|!xPFDR>F&yReboF>%Iv~Jonwojz#32o>nFuJXH6o)@5+^k z_mrdKp{@OTjP_1vvUfUzz0;cy|8Lgq{wCNSVQ=lX>F=k=V|q>Fw=y?Htsmz6yMzx+ zUNI~gzF7-z(A%-`HcL{hF|m%b@KxKF)4G?|L7CUz$X;<{H$3*UPtfCdmDV`&)^2%g zw`<*VQr_Bks$@ex!mfTJc}hn9W!F*7jaP5qO8oNJf)TGF);x!5qNT$(MVG$A`c}A> zv`!;iFCU-od1vVBx@H=;AyM zAHTlTi^-Ms&Oh)_0aTleUSHp|HA$jNWjnhIWff}e{~N+ojj$`DxOv3k{_#fuj% ztKi?<+%m#*G(vWKU7OGuKeXpPdq7Jly{-k!=E1|{J<#TheioM zI!gEn3qJx@Dqn{+#1u+aDO~Sq$W^N!y_YAa_t7e)Z$K|xE?BK zaOVjmixJ_ME!_Iii1yKYwQ?#aT2>>{>%Ct&V>2TCUJE}&oJ!?ONf8To0R9wZ1pi~! zarP6ZQu^$5F1h)%Xuu_~|O?kKA+A<+6{~xgMYS&kvg=?Itl>a6+ z`Q=jXIFkQ93%AQ;ME<=NUM>HEg|pXNv3zG|`Ha_6c;;61o+=&Zru?~;e?<7>gm>~D z=_+t5xEzFKw#8$*86@lM0*~o=;1<1)3ceYf1a^S+p!i%w2=RFx6rUlF>GPoY40=qz z0*cQ$Q0Y&BzW^Que;zD=3{BaC9@7UvhPtd2@WAvw@T0_Q0iP%9W{*!afjRtVfy!^X z$8;mO7ykzEgW!2yZfyt8f{J&>WBLU69R5c@@$K{Y#6eKy>j721JgD;R^_boRich!4 zbQh@dJr0V`dXG=60VQ9H;XF|3nmndc;10s4gXp@>p8|do9HO#SPv<}yasFxWY49Yd z_yzEnz&uDN%kK4;aGI{h-Rz z3rhaHVK*rGyF8{lK*^H>CI5O*@-F~4fOA2`PkBr?g5o#H{2R>wBK=-+4}y~WG`JBQ z0G0lP$Miw)XYk(-s@%Gs!1VK=>{;jqQTgjSl>b^#<;;L8XA3xy@Me$c1)%uP^O$Y| zRqnZ97kHjZ`2@HM{1v4K9|cq3r@_lquKb5U`JVt?y@JZG05YUz4|+@=0F~cDP;zVnCCB3+x8m%2k7*3(IXTvPOlLvK(F}_3Tu^dM2PH>6C^=4180CKm zRJ;S=3*hsh@?8!p-zHG`ra-0$*;yXb(?OM=2X%D30T zJHe-**BHGV?1r8Ts{GSI$#IHIB}YFfIgWrgkZ+&I^dV4k6g;L6f|6q&sB(3KlA{BZ z9Ic?_m=10RFTzZC8hjEw3M$p_M0Pw{dVK*@Ok8mN{+LjSHgs4eS6V$2@Q!*Z?Ztn?*lu*I`ZrAm|g?^GX9O=oTc9QboS@37UGhiEd z3Vaqk2I_v_?=gK891nfOW4aeyPrQAg^2>Wnw}S7-U+;{_Uv`whwCo~DzRNI`KX%id z{}8D1odFeo%EC`t_zCbf{EvdI;2{e~2hOG61FAmOfJ(p0!ZQ{=4;23?7B0I=%D>*i zFH=f4;%@BiSF=O1zUGO_m+-m_7k2|6?AVeWoqMD?oRGy`a+dfK+vMpT~3_ zRJy$$(|bUr+XO29-vQ0@)#t>GR-t=s}O^W1#Bk5UBiR zuR-}A@R;5YDu3C50@Kff%6~8D$_Kjgc}&Yblq;Xd^d?a8mxCHFT0qI$>@j_z-q-gK zC^^o7;(G?9iL$3Xy6--U?@4IMF#wA1eo*Q1pwh`Ml+ty3OzXRlO4sQz-2p1yJa7-F z??8SSoCN+HcoyN*uKMny@EEA{{T|(SAJsn&K|c&01V0JN4pavyJ5V&i{57D`w-`2o zN|yqaZaS!RQ$WdonMtzbmz@);rtG_q%Ktq6D)%5L`Okq$HvlSKKd5v^J-Y8aDqbJ7 znR~IO`)`A}dSAkT`{1mtyoDMz>Hh}BE3ov^GJP-aNcoy6M zo&x!0Wv_!@`WOevan#e8c`kLeUB{*53%_kBpveGgLn zFGt>g*kk%U_yPRSf#P%4WBM2<{{7~E)clWt>Zg6?f5`j`;ClQIn*Raw-w*0K>^1-A z&3~WKd87A&%5M)y)n&Uqrny%;J87%TKV$yQpz5UwR5|B*Op92{)MFSLzscvo9`FqK zR#4@b14^D-K;`!)unU|4(np>BryMv9dJRZ_b#|eYE(OhhvOLLZti}o9fMLNfZZ&)zY^(wwO!;E3dFftsZ(Omw91;e~y&M;$`GK>rdsce_tuwa-s%o%13 zQ-+b@AcFA70p?_-f#h!SO z4`Se|cjA7ILla-;I5_b<$Agm!n6^4O=@iEk&hXWRNf$XEn)EuygVzbw33$JejF!14U`Lmbadc?I)VXQrIxxbKD@ zj9^`!lIJ*Z!%2?EZaBg5%#CMd7VE}~91q-d@Fuw3)X(w!O+y^_HTGaGYoPHY$HL8r zZbsUhPjMW+`7+1TQ_o;JD?e=?rnCB|9piXp+EI=}(_hDQ)`>R_yb1p|9pl*dmLqS0 z!&?q<+&|~Q99m~iFUP)HkKBs?t%o=sY%0)(`mUBtiZ0LT6%$Ci-$lA|2=E$vxKZ7+d~iA3mmlGHd3ipK5wPXM%j@g<(nr!q zq0Xeway;wovLcb|ASQrum*8!7HSz;WpA*EtT}eV*g7%!v&0X8JSgqbnye zSkS?Pdx-1K*^^3np9Ne;vj5a|i>LLSNzvgw`8zcDkUs49{DGzabxXg9aYW%^zvv#t zhsR&c@%(;I{P_Qt#n*F$=-)T`w~hYKM!#M15`M<$?^*g+jg}1oC2USihF-Duw@%g`ZV@)kO7kQ$)o5k=0)=<;dvw zM913iTa449n{M&pU$ywpS^TevKjD2A{u>tl8^q?L?eKXHfA zVSiv3{X^lp@5%jd$|5@K@7+v$iw^sN_rP0p*q`7NqJ_7lHn;bH%8 z8vR4zns>PZu-~=K=oIxLH_qaR{lX^Wcfbcne_{2j`HI}nS^BVlIK$}N z^*(%|@eBKRe`s{rPy2-N5Bp=ANGAC&6Hl(o;)ngOWfni|XPq_L$7apL@(=r!cNjf) zijVOZ#xLyG={a8ch5a`@M~e>oX%Aa?*dNopP2rpDdaCF8gDkoo^oKb8B1D}2S|YrT zdXI-6rvJog*

    `h(?5Ib$QkyOUSW?% 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 SJC91v>^#c<7-hmyIR67R5NpE# literal 0 HcmV?d00001 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/aes.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/aes.h new file mode 100644 index 0000000..2b6c683 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/aes.h @@ -0,0 +1,109 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_AES_H +#endif + +#include + +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1.h new file mode 100644 index 0000000..b9b7dca --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1.h @@ -0,0 +1,1125 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/asn1.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1_H +#define OPENSSL_ASN1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1_H +#endif + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#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 */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) +#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) +#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) +#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) +#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) +#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) +#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) +#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_freefunc_type(freefunc)) +#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) +#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) +#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) +#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) + +/* clang-format on */ + +#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; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) +#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) +#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) +#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) +#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) +#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) +#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) +#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) +#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) +#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) + +/* clang-format on */ + +/* size limits: this stuff is taken straight from RFC 5280 */ + +#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 is 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 **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); + +/*- + * 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; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) +#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) +#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) +#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) +#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) +#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) +#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_freefunc_type(freefunc)) +#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) +#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) +#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) +#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) +#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) +#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) +#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) +#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) +#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) +#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) +#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) +#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) +#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) +#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) +#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) +#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) +#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) +#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) +#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) +#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) +#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) +#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) +#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) +#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) +#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) +#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) +#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) +#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) +#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) +#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) +#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) +#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) +#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) +#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) +#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) +#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) +#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) +#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) +#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) +#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) +#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) +#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) +#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) +#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +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); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); + +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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1err.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1err.h new file mode 100644 index 0000000..9175614 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1err.h @@ -0,0 +1,140 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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 +#include +#include + +/* + * 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_GENERALIZEDTIME_IS_TOO_SHORT 232 +#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_UTCTIME_IS_TOO_SHORT 233 +#define ASN1_R_WRONG_INTEGER_TYPE 225 +#define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +#define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1t.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1t.h new file mode 100644 index 0000000..aa40de3 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asn1t.h @@ -0,0 +1,935 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/asn1t.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1T_H +#define OPENSSL_ASN1T_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1T_H +#endif + +#include +#include +#include + +#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 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) +#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) +#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) +#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) +#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) +#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) +#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_freefunc_type(freefunc)) +#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) +#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) +#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) +#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +/* 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/async.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/async.h new file mode 100644 index 0000000..9044385 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/async.h @@ -0,0 +1,102 @@ +/* + * Copyright 2015-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 + */ + +#include + +#ifndef OPENSSL_ASYNC_H +#define OPENSSL_ASYNC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASYNC_H +#endif + +#if defined(_WIN32) +#if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include 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 + +#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); + +typedef void *(*ASYNC_stack_alloc_fn)(size_t *num); +typedef void (*ASYNC_stack_free_fn)(void *addr); + +int ASYNC_set_mem_functions(ASYNC_stack_alloc_fn alloc_fn, + ASYNC_stack_free_fn free_fn); +void ASYNC_get_mem_functions(ASYNC_stack_alloc_fn *alloc_fn, + ASYNC_stack_free_fn *free_fn); + +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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asyncerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asyncerr.h new file mode 100644 index 0000000..41bd4a0 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/asyncerr.h @@ -0,0 +1,27 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bio.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bio.h new file mode 100644 index 0000000..3a0c96b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bio.h @@ -0,0 +1,1028 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/bio.h.in + * + * Copyright 1995-2025 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 + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_BIO_H +#define OPENSSL_BIO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BIO_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include + +#include +#include +#include + +#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_DGRAM_PAIR (26 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_DGRAM_MEM (27 | BIO_TYPE_SOURCE_SINK) + +/* Custom type starting index returned by BIO_get_new_index() */ +#define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF + +/* + * 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 + +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +#define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +#define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +#define BIO_CTRL_DGRAM_GET_CAPS 86 +#define BIO_CTRL_DGRAM_SET_CAPS 87 +#define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +#define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +#define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +#define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +#define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +#define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +#define BIO_DGRAM_CAP_NONE 0U +#define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +#define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +#define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +#define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + +#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 0x8000 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 +#define BIO_CB_RECVMMSG 0x07 +#define BIO_CB_SENDMMSG 0x08 + +/* + * 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 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) +#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) +#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) +#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) +#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) +#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) +#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) +#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) +#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk), ossl_check_BIO_freefunc_type(freefunc)) +#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) +#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) +#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) +#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) +#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) +#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) + +/* clang-format on */ + +/* 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 + +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + +/* + * #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_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +#define BIO_C_SET_SOCK_TYPE 157 +#define BIO_C_GET_SOCK_TYPE 158 +#define BIO_C_GET_DGRAM_BIO 159 + +#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) +#define BIO_set_tfo(b, n) BIO_ctrl(b, BIO_C_SET_TFO, (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_get_conn_mode(b) BIO_ctrl(b, BIO_C_GET_CONNECT, 4, NULL) +#define BIO_set_conn_mode(b, n) BIO_ctrl(b, BIO_C_SET_CONNECT_MODE, (n), NULL) +#define BIO_set_sock_type(b, t) BIO_ctrl(b, BIO_C_SET_SOCK_TYPE, (t), NULL) +#define BIO_get_sock_type(b) BIO_ctrl(b, BIO_C_GET_SOCK_TYPE, 0, NULL) +#define BIO_get0_dgram_bio(b, p) BIO_ctrl(b, BIO_C_GET_DGRAM_BIO, 0, (void *)(BIO **)(p)) + +/* 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) +#define BIO_set_tfo_accept(b, n) BIO_ctrl(b, BIO_C_SET_ACCEPT, 5, (n) ? (void *)"a" : 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_detect_peer_addr(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) +#define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +#define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +#define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +#define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +#define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +#define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +#define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +#define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +#define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +#define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +#define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +#define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) + +/* 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); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +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); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +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); +#ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +#endif +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_dgram_pair(void); +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_err_is_non_fatal(unsigned int errcode); +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_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); +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 +#define BIO_SOCK_TFO 0x20 + +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); +#ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +#endif + +/* + * 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_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_set_sendmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_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_set_recvmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts)(BIO *, const char *)); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*ossl_gets)(BIO *, char *, int)); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl)(BIO *, int, long, void *)); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create)(BIO *)); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *)); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl)(BIO *, int, + BIO_info_cb *)); +#ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom))(BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom))(BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom))(BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom))(BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom))(BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion))(BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom))(BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))(BIO *, int, + BIO_info_cb *); +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bioerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bioerr.h new file mode 100644 index 0000000..b4ee5c6 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bioerr.h @@ -0,0 +1,70 @@ +/* + * 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_BIOERR_H +#define OPENSSL_BIOERR_H +#pragma once + +#include +#include +#include + +/* + * 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_LOCAL_ADDR_NOT_AVAILABLE 111 +#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_NON_FATAL 112 +#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_TFO_DISABLED 106 +#define BIO_R_TFO_NO_KERNEL_SUPPORT 108 +#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_UNABLE_TO_TFO 109 +#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 +#define BIO_R_PORT_MISMATCH 150 +#define BIO_R_PEER_ADDR_NOT_AVAILABLE 151 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/blowfish.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/blowfish.h new file mode 100644 index 0000000..49c74e9 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/blowfish.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BLOWFISH_H +#endif + +#include + +#ifndef OPENSSL_NO_BF +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bn.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bn.h new file mode 100644 index 0000000..d210b8b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bn.h @@ -0,0 +1,588 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BN_H +#endif + +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include + +#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); +BIGNUM *BN_signed_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); +int BN_signed_bn2bin(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2lebin(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_native2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2native(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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bnerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bnerr.h new file mode 100644 index 0000000..dbbcd69 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/bnerr.h @@ -0,0 +1,45 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/buffer.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/buffer.h new file mode 100644 index 0000000..09b35e8 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/buffer.h @@ -0,0 +1,60 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BUFFER_H +#endif + +#include +#ifndef OPENSSL_CRYPTO_H +#include +#endif +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/buffererr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/buffererr.h new file mode 100644 index 0000000..4fa0da4 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/buffererr.h @@ -0,0 +1,23 @@ +/* + * 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 +#include +#include + +/* + * BUF reason codes. + */ + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/byteorder.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/byteorder.h new file mode 100644 index 0000000..393f34b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/byteorder.h @@ -0,0 +1,339 @@ +/* + * Copyright 2025 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_BYTEORDER_H +#define OPENSSL_BYTEORDER_H +#pragma once + +#include +#include + +/* + * "Modern" compilers do a decent job of optimising these functions to just a + * couple of instruction ([swap +] store, or load [+ swap]) when either no + * swapping is required, or a suitable swap instruction is available. + */ + +#if defined(_MSC_VER) && _MSC_VER >= 1300 +#include +#pragma intrinsic(_byteswap_ushort) +#pragma intrinsic(_byteswap_ulong) +#pragma intrinsic(_byteswap_uint64) +#define OSSL_HTOBE16(x) _byteswap_ushort(x) +#define OSSL_HTOBE32(x) _byteswap_ulong(x) +#define OSSL_HTOBE64(x) _byteswap_uint64(x) +#define OSSL_BE16TOH(x) _byteswap_ushort(x) +#define OSSL_BE32TOH(x) _byteswap_ulong(x) +#define OSSL_BE64TOH(x) _byteswap_uint64(x) +#define OSSL_HTOLE16(x) (x) +#define OSSL_HTOLE32(x) (x) +#define OSSL_HTOLE64(x) (x) +#define OSSL_LE16TOH(x) (x) +#define OSSL_LE32TOH(x) (x) +#define OSSL_LE64TOH(x) (x) + +#elif defined(__GLIBC__) && defined(__GLIBC_PREREQ) +#if (__GLIBC_PREREQ(2, 19)) && defined(_DEFAULT_SOURCE) +#include +#define OSSL_HTOBE16(x) htobe16(x) +#define OSSL_HTOBE32(x) htobe32(x) +#define OSSL_HTOBE64(x) htobe64(x) +#define OSSL_BE16TOH(x) be16toh(x) +#define OSSL_BE32TOH(x) be32toh(x) +#define OSSL_BE64TOH(x) be64toh(x) +#define OSSL_HTOLE16(x) htole16(x) +#define OSSL_HTOLE32(x) htole32(x) +#define OSSL_HTOLE64(x) htole64(x) +#define OSSL_LE16TOH(x) le16toh(x) +#define OSSL_LE32TOH(x) le32toh(x) +#define OSSL_LE64TOH(x) le64toh(x) +#endif + +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__OpenBSD__) +#include +#else +#include +#endif +#define OSSL_HTOBE16(x) htobe16(x) +#define OSSL_HTOBE32(x) htobe32(x) +#define OSSL_HTOBE64(x) htobe64(x) +#define OSSL_BE16TOH(x) be16toh(x) +#define OSSL_BE32TOH(x) be32toh(x) +#define OSSL_BE64TOH(x) be64toh(x) +#define OSSL_HTOLE16(x) htole16(x) +#define OSSL_HTOLE32(x) htole32(x) +#define OSSL_HTOLE64(x) htole64(x) +#define OSSL_LE16TOH(x) le16toh(x) +#define OSSL_LE32TOH(x) le32toh(x) +#define OSSL_LE64TOH(x) le64toh(x) + +#elif defined(__APPLE__) +#include +#define OSSL_HTOBE16(x) OSSwapHostToBigInt16(x) +#define OSSL_HTOBE32(x) OSSwapHostToBigInt32(x) +#define OSSL_HTOBE64(x) OSSwapHostToBigInt64(x) +#define OSSL_BE16TOH(x) OSSwapBigToHostInt16(x) +#define OSSL_BE32TOH(x) OSSwapBigToHostInt32(x) +#define OSSL_BE64TOH(x) OSSwapBigToHostInt64(x) +#define OSSL_HTOLE16(x) OSSwapHostToLittleInt16(x) +#define OSSL_HTOLE32(x) OSSwapHostToLittleInt32(x) +#define OSSL_HTOLE64(x) OSSwapHostToLittleInt64(x) +#define OSSL_LE16TOH(x) OSSwapLittleToHostInt16(x) +#define OSSL_LE32TOH(x) OSSwapLittleToHostInt32(x) +#define OSSL_LE64TOH(x) OSSwapLittleToHostInt64(x) + +#endif + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u16_le(unsigned char *out, uint16_t val) +{ +#ifdef OSSL_HTOLE16 + uint16_t t = OSSL_HTOLE16(val); + + memcpy(out, (unsigned char *)&t, 2); + return out + 2; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u16_be(unsigned char *out, uint16_t val) +{ +#ifdef OSSL_HTOBE16 + uint16_t t = OSSL_HTOBE16(val); + + memcpy(out, (unsigned char *)&t, 2); + return out + 2; +#else + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u32_le(unsigned char *out, uint32_t val) +{ +#ifdef OSSL_HTOLE32 + uint32_t t = OSSL_HTOLE32(val); + + memcpy(out, (unsigned char *)&t, 4); + return out + 4; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 24) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u32_be(unsigned char *out, uint32_t val) +{ +#ifdef OSSL_HTOBE32 + uint32_t t = OSSL_HTOBE32(val); + + memcpy(out, (unsigned char *)&t, 4); + return out + 4; +#else + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u64_le(unsigned char *out, uint64_t val) +{ +#ifdef OSSL_HTOLE64 + uint64_t t = OSSL_HTOLE64(val); + + memcpy(out, (unsigned char *)&t, 8); + return out + 8; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 32) & 0xff; + *out++ = (val >> 40) & 0xff; + *out++ = (val >> 48) & 0xff; + *out++ = (val >> 56) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u64_be(unsigned char *out, uint64_t val) +{ +#ifdef OSSL_HTOLE64 + uint64_t t = OSSL_HTOBE64(val); + + memcpy(out, (unsigned char *)&t, 8); + return out + 8; +#else + *out++ = (val >> 56) & 0xff; + *out++ = (val >> 48) & 0xff; + *out++ = (val >> 40) & 0xff; + *out++ = (val >> 32) & 0xff; + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u16_le(uint16_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE16TOH + uint16_t t; + + memcpy((unsigned char *)&t, in, 2); + *val = OSSL_LE16TOH(t); + return in + 2; +#else + uint16_t b0 = *in++; + uint16_t b1 = *in++; + + *val = b0 | (b1 << 8); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u16_be(uint16_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE16TOH + uint16_t t; + + memcpy((unsigned char *)&t, in, 2); + *val = OSSL_BE16TOH(t); + return in + 2; +#else + uint16_t b1 = *in++; + uint16_t b0 = *in++; + + *val = b0 | (b1 << 8); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u32_le(uint32_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE32TOH + uint32_t t; + + memcpy((unsigned char *)&t, in, 4); + *val = OSSL_LE32TOH(t); + return in + 4; +#else + uint32_t b0 = *in++; + uint32_t b1 = *in++; + uint32_t b2 = *in++; + uint32_t b3 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u32_be(uint32_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE32TOH + uint32_t t; + + memcpy((unsigned char *)&t, in, 4); + *val = OSSL_BE32TOH(t); + return in + 4; +#else + uint32_t b3 = *in++; + uint32_t b2 = *in++; + uint32_t b1 = *in++; + uint32_t b0 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u64_le(uint64_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE64TOH + uint64_t t; + + memcpy((unsigned char *)&t, in, 8); + *val = OSSL_LE64TOH(t); + return in + 8; +#else + uint64_t b0 = *in++; + uint64_t b1 = *in++; + uint64_t b2 = *in++; + uint64_t b3 = *in++; + uint64_t b4 = *in++; + uint64_t b5 = *in++; + uint64_t b6 = *in++; + uint64_t b7 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) + | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u64_be(uint64_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE64TOH + uint64_t t; + + memcpy((unsigned char *)&t, in, 8); + *val = OSSL_BE64TOH(t); + return in + 8; +#else + uint64_t b7 = *in++; + uint64_t b6 = *in++; + uint64_t b5 = *in++; + uint64_t b4 = *in++; + uint64_t b3 = *in++; + uint64_t b2 = *in++; + uint64_t b1 = *in++; + uint64_t b0 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) + | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); + return in; +#endif +} + +#undef OSSL_HTOBE16 +#undef OSSL_HTOBE32 +#undef OSSL_HTOBE64 +#undef OSSL_BE16TOH +#undef OSSL_BE32TOH +#undef OSSL_BE64TOH +#undef OSSL_HTOLE16 +#undef OSSL_HTOLE32 +#undef OSSL_HTOLE64 +#undef OSSL_LE16TOH +#undef OSSL_LE32TOH +#undef OSSL_LE64TOH + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/camellia.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/camellia.h new file mode 100644 index 0000000..aec94e4 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/camellia.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CAMELLIA_H +#endif + +#include + +#ifndef OPENSSL_NO_CAMELLIA +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cast.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cast.h new file mode 100644 index 0000000..af94312 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cast.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CAST_H +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmac.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmac.h new file mode 100644 index 0000000..c72da7e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmac.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMAC_H +#endif + +#ifndef OPENSSL_NO_CMAC + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmp.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmp.h new file mode 100644 index 0000000..c5478a6 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmp.h @@ -0,0 +1,741 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/cmp.h.in + * + * Copyright 2007-2026 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMP_H +#define OPENSSL_CMP_H + +#include +#ifndef OPENSSL_NO_CMP + +#include +#include +#include +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_CMP_PVNO_2 2 +#define OSSL_CMP_PVNO_3 3 +#define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ + +/*- + * 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_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 +#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; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) +#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) +#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) +#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) +#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) +#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) +#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) +#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) +#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) +#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) +#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + +/* clang-format on */ + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +#define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +#define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +#define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +#define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +#define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +#define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + +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) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) +#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) +#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) +#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) +#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) +#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) +#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) +#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) +#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) +#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) +#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) + +/* clang-format on */ +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; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) +#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) + +/* clang-format on */ +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) **sk_p, + OSSL_CMP_ITAV *itav); +void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + +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); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const 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 +#define OSSL_CMP_OPT_USE_TLS 13 +/* 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 +#define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 +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); +#ifndef OPENSSL_NO_HTTP +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); +#endif +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); +#define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore +X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +#define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore +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); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_CTX_get0_geninfo_ITAVs(const 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_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); +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_validatedSrvCert(const OSSL_CMP_CTX *ctx); +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); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_HDR_get0_geninfo_ITAVs(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); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(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 */ +#ifndef OPENSSL_NO_HTTP +OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); +#endif + +/* 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); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); +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_GENM 21 +#define OSSL_CMP_ERROR 23 +#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); + +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CMP) */ +#endif /* !defined(OPENSSL_CMP_H) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmp_util.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmp_util.h new file mode 100644 index 0000000..a0ee20f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmp_util.h @@ -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 +#ifndef OPENSSL_NO_CMP + +#include +#include + +#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) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmperr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmperr.h new file mode 100644 index 0000000..b07ac6d --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmperr.h @@ -0,0 +1,132 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#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_EXPECTED_POLLREQ 104 +#define CMP_R_FAILED_BUILDING_OWN_CHAIN 164 +#define CMP_R_FAILED_EXTRACTING_CENTRAL_GEN_KEY 203 +#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_GENERATE_CERTREQTEMPLATE 197 +#define CMP_R_GENERATE_CRLSTATUS 198 +#define CMP_R_GETTING_GENP 192 +#define CMP_R_GET_ITAV 199 +#define CMP_R_INVALID_ARGS 100 +#define CMP_R_INVALID_GENP 193 +#define CMP_R_INVALID_KEYSPEC 202 +#define CMP_R_INVALID_OPTION 174 +#define CMP_R_INVALID_ROOTCAKEYUPDATE 195 +#define CMP_R_MISSING_CENTRAL_GEN_KEY 204 +#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_UNCLEAN_CTX 191 +#define CMP_R_UNEXPECTED_CENTRAL_GEN_KEY 205 +#define CMP_R_UNEXPECTED_CERTPROFILE 196 +#define CMP_R_UNEXPECTED_CRLSTATUSLIST 201 +#define CMP_R_UNEXPECTED_PKIBODY 133 +#define CMP_R_UNEXPECTED_PKISTATUS 185 +#define CMP_R_UNEXPECTED_POLLREQ 105 +#define CMP_R_UNEXPECTED_PVNO 153 +#define CMP_R_UNEXPECTED_SENDER 106 +#define CMP_R_UNKNOWN_ALGORITHM_ID 134 +#define CMP_R_UNKNOWN_CERT_TYPE 135 +#define CMP_R_UNKNOWN_CRL_ISSUER 200 +#define CMP_R_UNKNOWN_PKISTATUS 186 +#define CMP_R_UNSUPPORTED_ALGORITHM 136 +#define CMP_R_UNSUPPORTED_KEY_TYPE 137 +#define CMP_R_UNSUPPORTED_PKIBODY 101 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cms.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cms.h new file mode 100644 index 0000000..2c10cd3 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cms.h @@ -0,0 +1,524 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/cms.h.in + * + * Copyright 2008-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMS_H +#define OPENSSL_CMS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMS_H +#endif + +#include + +#ifndef OPENSSL_NO_CMS +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; +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; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) +#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) +#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) +#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) +#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) +#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) +#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) +#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) +#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) +#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) +#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) +#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) +#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) +#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) +#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) +#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) +#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) +#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) +#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) +#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) +#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) +#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) +#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) +#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) +#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) +#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) +#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) +#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) +#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) +#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) +#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) +#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) +#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) +#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) +#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) +#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + +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 +#define CMS_RECIPINFO_KEM 5 + +/* 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 +#define CMS_NO_SIGNING_TIME 0x400000 + +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); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, 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 *libctx, + 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 *libctx, 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 *libctx, + 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 *libctx, + 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 *libctx, 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 *libctx, + 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 *libctx, + const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, 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); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +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 *libctx); + +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); + +int CMS_RecipientInfo_kemri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_kemri_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +EVP_CIPHER_CTX *CMS_RecipientInfo_kemri_get0_ctx(CMS_RecipientInfo *ri); +X509_ALGOR *CMS_RecipientInfo_kemri_get0_kdf_alg(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kemri_set_ukm(CMS_RecipientInfo *ri, + const unsigned char *ukm, + int ukmLength); + +/* 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmserr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmserr.h new file mode 100644 index 0000000..49c22c2 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cmserr.h @@ -0,0 +1,128 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#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_IN_ENVELOPED_DATA 200 +#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_ERROR_UNSUPPORTED_STATIC_KEY_AGREEMENT 196 +#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_KEM 197 +#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_OPERATION_UNSUPPORTED 182 +#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_UNKNOWN_KDF_ALGORITHM 198 +#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_KDF_ALGORITHM 199 +#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_SIGNATURE_ALGORITHM 195 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/comp.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/comp.h new file mode 100644 index 0000000..0363a33 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/comp.h @@ -0,0 +1,101 @@ +/* + * Copyright 2015-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_COMP_H +#define OPENSSL_COMP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_COMP_H +#endif + +#include + +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_COMP + +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); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define COMP_zlib_cleanup() \ + while (0) \ + continue +#endif + +#ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +#endif + +#endif + +typedef struct ssl_comp_st SSL_COMP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/comperr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/comperr.h new file mode 100644 index 0000000..90ec7c1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/comperr.h @@ -0,0 +1,36 @@ +/* + * 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 +#include +#include + +#ifndef OPENSSL_NO_COMP + +/* + * COMP reason codes. + */ +#define COMP_R_BROTLI_DECODE_ERROR 102 +#define COMP_R_BROTLI_ENCODE_ERROR 103 +#define COMP_R_BROTLI_NOT_SUPPORTED 104 +#define COMP_R_ZLIB_DEFLATE_ERROR 99 +#define COMP_R_ZLIB_INFLATE_ERROR 100 +#define COMP_R_ZLIB_NOT_SUPPORTED 101 +#define COMP_R_ZSTD_COMPRESS_ERROR 105 +#define COMP_R_ZSTD_DECODE_ERROR 106 +#define COMP_R_ZSTD_DECOMPRESS_ERROR 107 +#define COMP_R_ZSTD_NOT_SUPPORTED 108 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conf.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conf.h new file mode 100644 index 0000000..b00136c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conf.h @@ -0,0 +1,219 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/conf.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CONF_H +#define OPENSSL_CONF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) +#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) +#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) +#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) +#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) +#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) +#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) +#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_freefunc_type(freefunc)) +#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) +#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) +#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) +#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) +DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) +#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) +#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conf_api.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conf_api.h new file mode 100644 index 0000000..f3f3c64 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conf_api.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_API_H +#endif + +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conferr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conferr.h new file mode 100644 index 0000000..0b984dd --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conferr.h @@ -0,0 +1,50 @@ +/* + * 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_CONFERR_H +#define OPENSSL_CONFERR_H +#pragma once + +#include +#include +#include + +/* + * 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_RECURSIVE_SECTION_REFERENCE 126 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/configuration.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/configuration.h new file mode 100644 index 0000000..bf368a7 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/configuration.h @@ -0,0 +1,238 @@ +/* + * WARNING: do not edit! + * Generated by configdata.pm from ../../openssl-3.6.2/Configurations/common0.tmpl, ../../openssl-3.6.2/Configurations/unix-Makefile.tmpl + * via Makefile.in + * + * 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: + */ + +/* clang-format off */ +# ifndef OPENSSL_SYS_iOS +# define OPENSSL_SYS_iOS 1 +# endif +# define OPENSSL_CONFIGURED_API 30600 +# ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +# endif +# ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +# endif +# ifndef OPENSSL_NO_ACVP_TESTS +# define OPENSSL_NO_ACVP_TESTS +# endif +# ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +# endif +# ifndef OPENSSL_NO_ALLOCFAIL_TESTS +# define OPENSSL_NO_ALLOCFAIL_TESTS +# endif +# ifndef OPENSSL_NO_APPS +# define OPENSSL_NO_APPS +# endif +# ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +# endif +# ifndef OPENSSL_NO_ASYNC +# define OPENSSL_NO_ASYNC +# endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif +# ifndef OPENSSL_NO_CAPIENG +# define OPENSSL_NO_CAPIENG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif +# ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +# endif +# ifndef OPENSSL_NO_DOCS +# define OPENSSL_NO_DOCS +# endif +# ifndef OPENSSL_NO_DSO +# define OPENSSL_NO_DSO +# endif +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +# endif +# ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +# endif +# ifndef OPENSSL_NO_ENGINE +# define OPENSSL_NO_ENGINE +# endif +# ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +# endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif +# ifndef OPENSSL_NO_FIPS_POST +# define OPENSSL_NO_FIPS_POST +# endif +# ifndef OPENSSL_NO_FIPS_SECURITYCHECKS +# define OPENSSL_NO_FIPS_SECURITYCHECKS +# endif +# ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +# endif +# ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +# endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif +# ifndef OPENSSL_NO_KTLS +# define OPENSSL_NO_KTLS +# endif +# ifndef OPENSSL_NO_LMS +# define OPENSSL_NO_LMS +# endif +# ifndef OPENSSL_NO_LOADERENG +# define OPENSSL_NO_LOADERENG +# endif +# ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +# endif +# ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +# endif +# ifndef OPENSSL_NO_PADLOCKENG +# define OPENSSL_NO_PADLOCKENG +# endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif +# ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +# endif +# ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +# endif +# ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +# endif +# ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +# endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TESTS +# define OPENSSL_NO_TESTS +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif +# ifndef OPENSSL_NO_TRACE +# define OPENSSL_NO_TRACE +# endif +# ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +# endif +# ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +# endif +# ifndef OPENSSL_NO_UPLINK +# define OPENSSL_NO_UPLINK +# endif +# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +# endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif +# ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +# endif + +/* clang-format on */ + +/* Generate 80386 code? */ +/* clang-format off */ +# undef I386_ONLY +/* clang-format on */ + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) + /* clang-format off */ +# undef BN_LLONG + /* clang-format on */ + /* Only one for the following should be defined */ + /* clang-format off */ +# define SIXTY_FOUR_BIT_LONG + /* clang-format on */ + /* clang-format off */ +# undef SIXTY_FOUR_BIT + /* clang-format on */ + /* clang-format off */ +# undef THIRTY_TWO_BIT +/* clang-format on */ +#endif + +/* clang-format off */ +# define RC4_INT unsigned char +/* clang-format on */ + +#if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +#define OPENSSL_NO_COMP_ALG +#else +#undef OPENSSL_NO_COMP_ALG +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_CONFIGURATION_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conftypes.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conftypes.h new file mode 100644 index 0000000..f2d2be1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/conftypes.h @@ -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 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core.h new file mode 100644 index 0000000..a883173 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core.h @@ -0,0 +1,235 @@ +/* + * 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_H +#define OPENSSL_CORE_H +#pragma once + +#include +#include + +#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); +}; + +#define OSSL_DISPATCH_END \ + { 0, NULL } + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_dispatch.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_dispatch.h new file mode 100644 index 0000000..d645916 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_dispatch.h @@ -0,0 +1,1061 @@ +/* + * Copyright 2019-2026 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 +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Generic function pointer for provider method arrays, or other contexts where + * functions of various signatures must occupy a common slot in an array of + * structures. + */ +typedef void (*OSSL_FUNC)(void); + +/*- + * 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)) + +/* New seeding functions prototypes with the 101-104 series */ +#define OSSL_FUNC_CLEANUP_USER_ENTROPY 96 +#define OSSL_FUNC_CLEANUP_USER_NONCE 97 +#define OSSL_FUNC_GET_USER_ENTROPY 98 +#define OSSL_FUNC_GET_USER_NONCE 99 + +#define OSSL_FUNC_INDICATOR_CB 95 +OSSL_CORE_MAKE_FUNC(void, indicator_cb, (OPENSSL_CORE_CTX *ctx, OSSL_INDICATOR_CALLBACK **cb)) +#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(size_t, get_user_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(void, cleanup_user_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(size_t, get_user_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)) +OSSL_CORE_MAKE_FUNC(void, cleanup_user_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)) + +/* Additional error functions provided by the core */ +#define OSSL_FUNC_CORE_COUNT_TO_MARK 120 +OSSL_CORE_MAKE_FUNC(int, core_count_to_mark, (const OSSL_CORE_HANDLE *prov)) + +/* 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)) +#define OSSL_FUNC_PROVIDER_RANDOM_BYTES 1032 +OSSL_CORE_MAKE_FUNC(int, provider_random_bytes, (void *provctx, int which, void *buf, size_t n, unsigned int strength)) + +/* Libssl related functions */ +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_SEND 2001 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_send, + (SSL *s, const unsigned char *buf, size_t buf_len, + size_t *consumed, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RECV_RCD 2002 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_recv_rcd, + (SSL *s, const unsigned char **buf, size_t *bytes_read, + void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RELEASE_RCD 2003 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_release_rcd, + (SSL *s, size_t bytes_read, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_YIELD_SECRET 2004 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_yield_secret, + (SSL *s, uint32_t prot_level, int direction, + const unsigned char *secret, size_t secret_len, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_GOT_TRANSPORT_PARAMS 2005 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_got_transport_params, + (SSL *s, const unsigned char *params, size_t params_len, + void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_ALERT 2006 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_alert, + (SSL *s, unsigned char alert_code, void *arg)) + +/* 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 +#define OSSL_OP_SKEYMGMT 15 +/* 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 +#define OSSL_FUNC_DIGEST_SQUEEZE 14 +#define OSSL_FUNC_DIGEST_COPYCTX 15 + +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_squeeze, + (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(void, digest_copyctx, (void *outctx, void *inctx)) + +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 +#define OSSL_FUNC_CIPHER_PIPELINE_ENCRYPT_INIT 15 +#define OSSL_FUNC_CIPHER_PIPELINE_DECRYPT_INIT 16 +#define OSSL_FUNC_CIPHER_PIPELINE_UPDATE 17 +#define OSSL_FUNC_CIPHER_PIPELINE_FINAL 18 +#define OSSL_FUNC_CIPHER_ENCRYPT_SKEY_INIT 19 +#define OSSL_FUNC_CIPHER_DECRYPT_SKEY_INIT 20 + +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(int, cipher_pipeline_encrypt_init, + (void *cctx, + const unsigned char *key, size_t keylen, + size_t numpipes, const unsigned char **iv, size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_decrypt_init, + (void *cctx, + const unsigned char *key, size_t keylen, + size_t numpipes, const unsigned char **iv, size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_update, + (void *cctx, size_t numpipes, + unsigned char **out, size_t *outl, const size_t *outsize, + const unsigned char **in, const size_t *inl)) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_final, + (void *cctx, size_t numpipes, + unsigned char **out, size_t *outl, const size_t *outsize)) +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)) +OSSL_CORE_MAKE_FUNC(int, cipher_encrypt_skey_init, (void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_decrypt_skey_init, (void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[])) + +/* 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 +#define OSSL_FUNC_MAC_INIT_SKEY 13 + +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[])) +OSSL_CORE_MAKE_FUNC(int, mac_init_skey, (void *mctx, void *key, const OSSL_PARAM params[])) + +/*- + * Symmetric key management + * + * The Key Management takes care of provider side of symmetric key objects, and + * includes 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, and the secret key. + * + * Key objects are created with OSSL_FUNC_skeymgmt_import() (there is no + * dedicated memory allocation function), exported with + * OSSL_FUNC_skeymgmt_export() and destroyed with OSSL_FUNC_keymgmt_free(). + * + */ + +/* Key data subset selection - individual bits */ +#define OSSL_SKEYMGMT_SELECT_PARAMETERS 0x01 +#define OSSL_SKEYMGMT_SELECT_SECRET_KEY 0x02 + +/* Key data subset selection - combinations */ +#define OSSL_SKEYMGMT_SELECT_ALL \ + (OSSL_SKEYMGMT_SELECT_PARAMETERS | OSSL_SKEYMGMT_SELECT_SECRET_KEY) + +#define OSSL_FUNC_SKEYMGMT_FREE 1 +#define OSSL_FUNC_SKEYMGMT_IMPORT 2 +#define OSSL_FUNC_SKEYMGMT_EXPORT 3 +#define OSSL_FUNC_SKEYMGMT_GENERATE 4 +#define OSSL_FUNC_SKEYMGMT_GET_KEY_ID 5 +#define OSSL_FUNC_SKEYMGMT_IMP_SETTABLE_PARAMS 6 +#define OSSL_FUNC_SKEYMGMT_GEN_SETTABLE_PARAMS 7 + +OSSL_CORE_MAKE_FUNC(void, skeymgmt_free, (void *keydata)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + skeymgmt_imp_settable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, skeymgmt_import, (void *provctx, int selection, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, skeymgmt_export, + (void *keydata, int selection, + OSSL_CALLBACK *param_cb, void *cbarg)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + skeymgmt_gen_settable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, skeymgmt_generate, (void *provctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const char *, skeymgmt_get_key_id, (void *keydata)) + +/* 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 +#define OSSL_FUNC_KDF_SET_SKEY 12 +#define OSSL_FUNC_KDF_DERIVE_SKEY 13 + +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[])) +OSSL_CORE_MAKE_FUNC(int, kdf_set_skey, + (void *kctx, void *skeydata, const char *paramname)) +OSSL_CORE_MAKE_FUNC(void *, kdf_derive_skey, (void *ctx, const char *key_type, void *provctx, OSSL_FUNC_skeymgmt_import_fn *import, size_t keylen, 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 +#define OSSL_FUNC_KEYMGMT_GEN_GET_PARAMS 15 +#define OSSL_FUNC_KEYMGMT_GEN_GETTABLE_PARAMS 16 + +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(int, keymgmt_gen_get_params, + (void *genctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_gen_gettable_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)) + +/* Extended import and export functions */ +#define OSSL_FUNC_KEYMGMT_IMPORT_TYPES_EX 45 +#define OSSL_FUNC_KEYMGMT_EXPORT_TYPES_EX 46 +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types_ex, + (void *provctx, int selection)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types_ex, + (void *provctx, 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 +#define OSSL_FUNC_KEYEXCH_DERIVE_SKEY 11 + +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)) +OSSL_CORE_MAKE_FUNC(void *, keyexch_derive_skey, (void *ctx, const char *key_type, void *provctx, OSSL_FUNC_skeymgmt_import_fn *import, size_t keylen, const OSSL_PARAM params[])) + +/* 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 +#define OSSL_FUNC_SIGNATURE_QUERY_KEY_TYPES 26 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_INIT 27 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_UPDATE 28 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_FINAL 29 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_INIT 30 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_UPDATE 31 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_FINAL 32 + +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_sign_message_init, + (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_sign_message_update, + (void *ctx, const unsigned char *in, size_t inlen)) +OSSL_CORE_MAKE_FUNC(int, signature_sign_message_final, + (void *ctx, unsigned char *sig, + size_t *siglen, size_t sigsize)) +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_message_init, + (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_verify_message_update, + (void *ctx, const unsigned char *in, size_t inlen)) +/* + * signature_verify_final requires that the signature to be verified against + * is specified via an OSSL_PARAM. + */ +OSSL_CORE_MAKE_FUNC(int, signature_verify_message_final, (void *ctx)) +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)) +OSSL_CORE_MAKE_FUNC(const char **, signature_query_key_types, (void)) + +/* 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 +#define OSSL_FUNC_KEM_AUTH_ENCAPSULATE_INIT 12 +#define OSSL_FUNC_KEM_AUTH_DECAPSULATE_INIT 13 + +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_auth_encapsulate_init, (void *ctx, void *provkey, void *authprivkey, 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_auth_decapsulate_init, (void *ctx, void *provkey, void *authpubkey, 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 +#define OSSL_FUNC_STORE_DELETE 9 +#define OSSL_FUNC_STORE_OPEN_EX 10 +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)) +OSSL_CORE_MAKE_FUNC(int, store_delete, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) +OSSL_CORE_MAKE_FUNC(void *, store_open_ex, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_names.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_names.h new file mode 100644 index 0000000..9e45b4d --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_names.h @@ -0,0 +1,588 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/core_names.h.in + * + * Copyright 2019-2025 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 + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CORE_NAMES_H +#define OPENSSL_CORE_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* 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" + +/* Known CIPHER names (not a complete list) */ +#define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* 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_256_192 "SHA2-256/192" +#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" + +/* 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" + +/* Known KDF names */ +#define OSSL_KDF_NAME_HKDF "HKDF" +#define OSSL_KDF_NAME_HKDF_SHA256 "HKDF-SHA256" +#define OSSL_KDF_NAME_HKDF_SHA384 "HKDF-SHA384" +#define OSSL_KDF_NAME_HKDF_SHA512 "HKDF-SHA512" +#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" +#define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* 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" + +/* 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" + +/* PROV_SKEY well known key types */ +#define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +#define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ALG_PARAM_SECURITY_CATEGORY "security-category" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# 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" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# 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_MIN_TLS "tls-min-tls" +# 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_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_HMAC_PARAM_MAC OSSL_CIPHER_PARAM_AEAD_TAG +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_ENCRYPT_THEN_MAC "encrypt-then-mac" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# 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_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_CMS_KEMRI_KDF_ALGORITHM "kemri-kdf-alg" +# define OSSL_PKEY_PARAM_CMS_RI_TYPE "ri-type" +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# 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_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# 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_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# 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_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# 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_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# 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_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SECURITY_CATEGORY OSSL_ALG_PARAM_SECURITY_CATEGORY +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# 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_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_object.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_object.h new file mode 100644 index 0000000..df0c794 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/core_object.h @@ -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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crmf.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crmf.h new file mode 100644 index 0000000..8b73b11 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crmf.h @@ -0,0 +1,279 @@ +/*- + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/crmf.h.in + * + * Copyright 2007-2025 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. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRMF_H +#define OPENSSL_CRMF_H + +#include + +#ifndef OPENSSL_NO_CRMF +#include +#include +#include +#include /* for GENERAL_NAME etc. */ +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include + +#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_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + +typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) +#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) +#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) +#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) +#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) +#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) +#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + +/* clang-format on */ + +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) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) +#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) +#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) +#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) +#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) +#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) +#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) + +/* clang-format on */ + +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) +DECLARE_ASN1_DUP_FUNCTION(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); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(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); +const ASN1_INTEGER *OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(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); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char *OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +#ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CRMF) */ +#endif /* !defined(OPENSSL_CRMF_H) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crmferr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crmferr.h new file mode 100644 index 0000000..2215394 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crmferr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#ifndef OPENSSL_NO_CRMF + +/* + * CRMF reason codes. + */ +#define CRMF_R_BAD_PBM_ITERATIONCOUNT 100 +#define CRMF_R_CMS_NOT_SUPPORTED 122 +#define CRMF_R_CRMFERROR 102 +#define CRMF_R_ERROR 103 +#define CRMF_R_ERROR_DECODING_CERTIFICATE 104 +#define CRMF_R_ERROR_DECODING_ENCRYPTEDKEY 123 +#define CRMF_R_ERROR_DECRYPTING_CERTIFICATE 105 +#define CRMF_R_ERROR_DECRYPTING_ENCRYPTEDKEY 124 +#define CRMF_R_ERROR_DECRYPTING_ENCRYPTEDVALUE 125 +#define CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY 106 +#define CRMF_R_ERROR_SETTING_PURPOSE 126 +#define CRMF_R_ERROR_VERIFYING_ENCRYPTEDKEY 127 +#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_CENTRAL_KEYGEN 128 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crypto.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crypto.h new file mode 100644 index 0000000..2dd16ac --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/crypto.h @@ -0,0 +1,619 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/crypto.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRYPTO_H +#define OPENSSL_CRYPTO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CRYPTO_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef CHARSET_EBCDIC +#include +#endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#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_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *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); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, 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_malloc_array(num, size) \ + CRYPTO_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_calloc(num, size) \ + CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc_array(num, size, alignment, freeptr) \ + CRYPTO_aligned_alloc_array(num, size, alignment, freeptr, \ + 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_realloc_array(addr, num, size) \ + CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_clear_realloc_array(addr, old_num, num, size) \ + CRYPTO_clear_realloc_array(addr, old_num, num, size, \ + 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_malloc_array(num, size) \ + CRYPTO_secure_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_calloc(num, size) \ + CRYPTO_secure_calloc(num, size, 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_strtoul(const char *str, char **endptr, int base, unsigned long *num); +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 +#define OPENSSL_WINCTX 10 + +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 +#define OPENSSL_INFO_WINDOWS_CONTEXT 1009 + +int OPENSSL_issetugid(void); + +struct crypto_ex_data_st { + OSSL_LIB_CTX *ctx; + STACK_OF(void) *sk; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) +#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) +#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) +#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) +#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) +#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) +#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) +#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) +#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) +#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) +#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) +#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) +#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) +#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk), ossl_check_void_freefunc_type(freefunc)) +#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) +#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) +#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) +#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) +#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) +#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) +#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) +#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * 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_malloc_array(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_calloc(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc_array(size_t num, size_t size, + size_t align, void **freeptr, + const char *file, int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +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); +void *CRYPTO_realloc_array(void *addr, size_t num, size_t size, + const char *file, int line); +void *CRYPTO_clear_realloc_array(void *addr, size_t old_num, size_t num, + size_t size, 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); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc_array(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_calloc(size_t num, size_t size, + 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 */ + +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +#define CRYPTO_MEM_CHECK_MAX_FS 256 + +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 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 +#else +#include +#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); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cryptoerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cryptoerr.h new file mode 100644 index 0000000..626e3e9 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cryptoerr.h @@ -0,0 +1,54 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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 +#include +#include + +/* + * 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_NAMES 132 +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cryptoerr_legacy.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cryptoerr_legacy.h new file mode 100644 index 0000000..b1388a5 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cryptoerr_legacy.h @@ -0,0 +1,1466 @@ +/* + * 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 + */ + +/* + * This header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public {lib}err.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_CRYPTOERR_LEGACY_H +#define OPENSSL_CRYPTOERR_LEGACY_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASN1_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASYNC_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BIO_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BN_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BUF_strings(void); +#ifndef OPENSSL_NO_CMS +OSSL_DEPRECATEDIN_3_0 int ERR_load_CMS_strings(void); +#endif +#ifndef OPENSSL_NO_COMP +OSSL_DEPRECATEDIN_3_0 int ERR_load_COMP_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_CONF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_CRYPTO_strings(void); +#ifndef OPENSSL_NO_CT +OSSL_DEPRECATEDIN_3_0 int ERR_load_CT_strings(void); +#endif +#ifndef OPENSSL_NO_DH +OSSL_DEPRECATEDIN_3_0 int ERR_load_DH_strings(void); +#endif +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 int ERR_load_DSA_strings(void); +#endif +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 int ERR_load_EC_strings(void); +#endif +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int ERR_load_ENGINE_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_ERR_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_EVP_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_KDF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OBJ_strings(void); +#ifndef OPENSSL_NO_OCSP +OSSL_DEPRECATEDIN_3_0 int ERR_load_OCSP_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_PEM_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS12_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS7_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RAND_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RSA_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OSSL_STORE_strings(void); +#ifndef OPENSSL_NO_TS +OSSL_DEPRECATEDIN_3_0 int ERR_load_TS_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_UI_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509V3_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * ASN1 function codes. + */ +#define ASN1_F_A2D_ASN1_OBJECT 0 +#define ASN1_F_A2I_ASN1_INTEGER 0 +#define ASN1_F_A2I_ASN1_STRING 0 +#define ASN1_F_APPEND_EXP 0 +#define ASN1_F_ASN1_BIO_INIT 0 +#define ASN1_F_ASN1_BIT_STRING_SET_BIT 0 +#define ASN1_F_ASN1_CB 0 +#define ASN1_F_ASN1_CHECK_TLEN 0 +#define ASN1_F_ASN1_COLLECT 0 +#define ASN1_F_ASN1_D2I_EX_PRIMITIVE 0 +#define ASN1_F_ASN1_D2I_FP 0 +#define ASN1_F_ASN1_D2I_READ_BIO 0 +#define ASN1_F_ASN1_DIGEST 0 +#define ASN1_F_ASN1_DO_ADB 0 +#define ASN1_F_ASN1_DO_LOCK 0 +#define ASN1_F_ASN1_DUP 0 +#define ASN1_F_ASN1_ENC_SAVE 0 +#define ASN1_F_ASN1_EX_C2I 0 +#define ASN1_F_ASN1_FIND_END 0 +#define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 0 +#define ASN1_F_ASN1_GENERATE_V3 0 +#define ASN1_F_ASN1_GET_INT64 0 +#define ASN1_F_ASN1_GET_OBJECT 0 +#define ASN1_F_ASN1_GET_UINT64 0 +#define ASN1_F_ASN1_I2D_BIO 0 +#define ASN1_F_ASN1_I2D_FP 0 +#define ASN1_F_ASN1_ITEM_D2I_FP 0 +#define ASN1_F_ASN1_ITEM_DUP 0 +#define ASN1_F_ASN1_ITEM_EMBED_D2I 0 +#define ASN1_F_ASN1_ITEM_EMBED_NEW 0 +#define ASN1_F_ASN1_ITEM_FLAGS_I2D 0 +#define ASN1_F_ASN1_ITEM_I2D_BIO 0 +#define ASN1_F_ASN1_ITEM_I2D_FP 0 +#define ASN1_F_ASN1_ITEM_PACK 0 +#define ASN1_F_ASN1_ITEM_SIGN 0 +#define ASN1_F_ASN1_ITEM_SIGN_CTX 0 +#define ASN1_F_ASN1_ITEM_UNPACK 0 +#define ASN1_F_ASN1_ITEM_VERIFY 0 +#define ASN1_F_ASN1_MBSTRING_NCOPY 0 +#define ASN1_F_ASN1_OBJECT_NEW 0 +#define ASN1_F_ASN1_OUTPUT_DATA 0 +#define ASN1_F_ASN1_PCTX_NEW 0 +#define ASN1_F_ASN1_PRIMITIVE_NEW 0 +#define ASN1_F_ASN1_SCTX_NEW 0 +#define ASN1_F_ASN1_SIGN 0 +#define ASN1_F_ASN1_STR2TYPE 0 +#define ASN1_F_ASN1_STRING_GET_INT64 0 +#define ASN1_F_ASN1_STRING_GET_UINT64 0 +#define ASN1_F_ASN1_STRING_SET 0 +#define ASN1_F_ASN1_STRING_TABLE_ADD 0 +#define ASN1_F_ASN1_STRING_TO_BN 0 +#define ASN1_F_ASN1_STRING_TYPE_NEW 0 +#define ASN1_F_ASN1_TEMPLATE_EX_D2I 0 +#define ASN1_F_ASN1_TEMPLATE_NEW 0 +#define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 0 +#define ASN1_F_ASN1_TIME_ADJ 0 +#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 0 +#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 0 +#define ASN1_F_ASN1_UTCTIME_ADJ 0 +#define ASN1_F_ASN1_VERIFY 0 +#define ASN1_F_B64_READ_ASN1 0 +#define ASN1_F_B64_WRITE_ASN1 0 +#define ASN1_F_BIO_NEW_NDEF 0 +#define ASN1_F_BITSTR_CB 0 +#define ASN1_F_BN_TO_ASN1_STRING 0 +#define ASN1_F_C2I_ASN1_BIT_STRING 0 +#define ASN1_F_C2I_ASN1_INTEGER 0 +#define ASN1_F_C2I_ASN1_OBJECT 0 +#define ASN1_F_C2I_IBUF 0 +#define ASN1_F_C2I_UINT64_INT 0 +#define ASN1_F_COLLECT_DATA 0 +#define ASN1_F_D2I_ASN1_OBJECT 0 +#define ASN1_F_D2I_ASN1_UINTEGER 0 +#define ASN1_F_D2I_AUTOPRIVATEKEY 0 +#define ASN1_F_D2I_PRIVATEKEY 0 +#define ASN1_F_D2I_PUBLICKEY 0 +#define ASN1_F_DO_BUF 0 +#define ASN1_F_DO_CREATE 0 +#define ASN1_F_DO_DUMP 0 +#define ASN1_F_DO_TCREATE 0 +#define ASN1_F_I2A_ASN1_OBJECT 0 +#define ASN1_F_I2D_ASN1_BIO_STREAM 0 +#define ASN1_F_I2D_ASN1_OBJECT 0 +#define ASN1_F_I2D_DSA_PUBKEY 0 +#define ASN1_F_I2D_EC_PUBKEY 0 +#define ASN1_F_I2D_PRIVATEKEY 0 +#define ASN1_F_I2D_PUBLICKEY 0 +#define ASN1_F_I2D_RSA_PUBKEY 0 +#define ASN1_F_LONG_C2I 0 +#define ASN1_F_NDEF_PREFIX 0 +#define ASN1_F_NDEF_SUFFIX 0 +#define ASN1_F_OID_MODULE_INIT 0 +#define ASN1_F_PARSE_TAGGING 0 +#define ASN1_F_PKCS5_PBE2_SET_IV 0 +#define ASN1_F_PKCS5_PBE2_SET_SCRYPT 0 +#define ASN1_F_PKCS5_PBE_SET 0 +#define ASN1_F_PKCS5_PBE_SET0_ALGOR 0 +#define ASN1_F_PKCS5_PBKDF2_SET 0 +#define ASN1_F_PKCS5_SCRYPT_SET 0 +#define ASN1_F_SMIME_READ_ASN1 0 +#define ASN1_F_SMIME_TEXT 0 +#define ASN1_F_STABLE_GET 0 +#define ASN1_F_STBL_MODULE_INIT 0 +#define ASN1_F_UINT32_C2I 0 +#define ASN1_F_UINT32_NEW 0 +#define ASN1_F_UINT64_C2I 0 +#define ASN1_F_UINT64_NEW 0 +#define ASN1_F_X509_CRL_ADD0_REVOKED 0 +#define ASN1_F_X509_INFO_NEW 0 +#define ASN1_F_X509_NAME_ENCODE 0 +#define ASN1_F_X509_NAME_EX_D2I 0 +#define ASN1_F_X509_NAME_EX_NEW 0 +#define ASN1_F_X509_PKEY_NEW 0 + +/* + * ASYNC function codes. + */ +#define ASYNC_F_ASYNC_CTX_NEW 0 +#define ASYNC_F_ASYNC_INIT_THREAD 0 +#define ASYNC_F_ASYNC_JOB_NEW 0 +#define ASYNC_F_ASYNC_PAUSE_JOB 0 +#define ASYNC_F_ASYNC_START_FUNC 0 +#define ASYNC_F_ASYNC_START_JOB 0 +#define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 0 + +/* + * BIO function codes. + */ +#define BIO_F_ACPT_STATE 0 +#define BIO_F_ADDRINFO_WRAP 0 +#define BIO_F_ADDR_STRINGS 0 +#define BIO_F_BIO_ACCEPT 0 +#define BIO_F_BIO_ACCEPT_EX 0 +#define BIO_F_BIO_ACCEPT_NEW 0 +#define BIO_F_BIO_ADDR_NEW 0 +#define BIO_F_BIO_BIND 0 +#define BIO_F_BIO_CALLBACK_CTRL 0 +#define BIO_F_BIO_CONNECT 0 +#define BIO_F_BIO_CONNECT_NEW 0 +#define BIO_F_BIO_CTRL 0 +#define BIO_F_BIO_GETS 0 +#define BIO_F_BIO_GET_HOST_IP 0 +#define BIO_F_BIO_GET_NEW_INDEX 0 +#define BIO_F_BIO_GET_PORT 0 +#define BIO_F_BIO_LISTEN 0 +#define BIO_F_BIO_LOOKUP 0 +#define BIO_F_BIO_LOOKUP_EX 0 +#define BIO_F_BIO_MAKE_PAIR 0 +#define BIO_F_BIO_METH_NEW 0 +#define BIO_F_BIO_NEW 0 +#define BIO_F_BIO_NEW_DGRAM_SCTP 0 +#define BIO_F_BIO_NEW_FILE 0 +#define BIO_F_BIO_NEW_MEM_BUF 0 +#define BIO_F_BIO_NREAD 0 +#define BIO_F_BIO_NREAD0 0 +#define BIO_F_BIO_NWRITE 0 +#define BIO_F_BIO_NWRITE0 0 +#define BIO_F_BIO_PARSE_HOSTSERV 0 +#define BIO_F_BIO_PUTS 0 +#define BIO_F_BIO_READ 0 +#define BIO_F_BIO_READ_EX 0 +#define BIO_F_BIO_READ_INTERN 0 +#define BIO_F_BIO_SOCKET 0 +#define BIO_F_BIO_SOCKET_NBIO 0 +#define BIO_F_BIO_SOCK_INFO 0 +#define BIO_F_BIO_SOCK_INIT 0 +#define BIO_F_BIO_WRITE 0 +#define BIO_F_BIO_WRITE_EX 0 +#define BIO_F_BIO_WRITE_INTERN 0 +#define BIO_F_BUFFER_CTRL 0 +#define BIO_F_CONN_CTRL 0 +#define BIO_F_CONN_STATE 0 +#define BIO_F_DGRAM_SCTP_NEW 0 +#define BIO_F_DGRAM_SCTP_READ 0 +#define BIO_F_DGRAM_SCTP_WRITE 0 +#define BIO_F_DOAPR_OUTCH 0 +#define BIO_F_FILE_CTRL 0 +#define BIO_F_FILE_READ 0 +#define BIO_F_LINEBUFFER_CTRL 0 +#define BIO_F_LINEBUFFER_NEW 0 +#define BIO_F_MEM_WRITE 0 +#define BIO_F_NBIOF_NEW 0 +#define BIO_F_SLG_WRITE 0 +#define BIO_F_SSL_NEW 0 + +/* + * BN function codes. + */ +#define BN_F_BNRAND 0 +#define BN_F_BNRAND_RANGE 0 +#define BN_F_BN_BLINDING_CONVERT_EX 0 +#define BN_F_BN_BLINDING_CREATE_PARAM 0 +#define BN_F_BN_BLINDING_INVERT_EX 0 +#define BN_F_BN_BLINDING_NEW 0 +#define BN_F_BN_BLINDING_UPDATE 0 +#define BN_F_BN_BN2DEC 0 +#define BN_F_BN_BN2HEX 0 +#define BN_F_BN_COMPUTE_WNAF 0 +#define BN_F_BN_CTX_GET 0 +#define BN_F_BN_CTX_NEW 0 +#define BN_F_BN_CTX_START 0 +#define BN_F_BN_DIV 0 +#define BN_F_BN_DIV_RECP 0 +#define BN_F_BN_EXP 0 +#define BN_F_BN_EXPAND_INTERNAL 0 +#define BN_F_BN_GENCB_NEW 0 +#define BN_F_BN_GENERATE_DSA_NONCE 0 +#define BN_F_BN_GENERATE_PRIME_EX 0 +#define BN_F_BN_GF2M_MOD 0 +#define BN_F_BN_GF2M_MOD_EXP 0 +#define BN_F_BN_GF2M_MOD_MUL 0 +#define BN_F_BN_GF2M_MOD_SOLVE_QUAD 0 +#define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 0 +#define BN_F_BN_GF2M_MOD_SQR 0 +#define BN_F_BN_GF2M_MOD_SQRT 0 +#define BN_F_BN_LSHIFT 0 +#define BN_F_BN_MOD_EXP2_MONT 0 +#define BN_F_BN_MOD_EXP_MONT 0 +#define BN_F_BN_MOD_EXP_MONT_CONSTTIME 0 +#define BN_F_BN_MOD_EXP_MONT_WORD 0 +#define BN_F_BN_MOD_EXP_RECP 0 +#define BN_F_BN_MOD_EXP_SIMPLE 0 +#define BN_F_BN_MOD_INVERSE 0 +#define BN_F_BN_MOD_INVERSE_NO_BRANCH 0 +#define BN_F_BN_MOD_LSHIFT_QUICK 0 +#define BN_F_BN_MOD_SQRT 0 +#define BN_F_BN_MONT_CTX_NEW 0 +#define BN_F_BN_MPI2BN 0 +#define BN_F_BN_NEW 0 +#define BN_F_BN_POOL_GET 0 +#define BN_F_BN_RAND 0 +#define BN_F_BN_RAND_RANGE 0 +#define BN_F_BN_RECP_CTX_NEW 0 +#define BN_F_BN_RSHIFT 0 +#define BN_F_BN_SET_WORDS 0 +#define BN_F_BN_STACK_PUSH 0 +#define BN_F_BN_USUB 0 + +/* + * BUF function codes. + */ +#define BUF_F_BUF_MEM_GROW 0 +#define BUF_F_BUF_MEM_GROW_CLEAN 0 +#define BUF_F_BUF_MEM_NEW 0 + +#ifndef OPENSSL_NO_CMS +/* + * CMS function codes. + */ +#define CMS_F_CHECK_CONTENT 0 +#define CMS_F_CMS_ADD0_CERT 0 +#define CMS_F_CMS_ADD0_RECIPIENT_KEY 0 +#define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 0 +#define CMS_F_CMS_ADD1_RECEIPTREQUEST 0 +#define CMS_F_CMS_ADD1_RECIPIENT_CERT 0 +#define CMS_F_CMS_ADD1_SIGNER 0 +#define CMS_F_CMS_ADD1_SIGNINGTIME 0 +#define CMS_F_CMS_COMPRESS 0 +#define CMS_F_CMS_COMPRESSEDDATA_CREATE 0 +#define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 0 +#define CMS_F_CMS_COPY_CONTENT 0 +#define CMS_F_CMS_COPY_MESSAGEDIGEST 0 +#define CMS_F_CMS_DATA 0 +#define CMS_F_CMS_DATAFINAL 0 +#define CMS_F_CMS_DATAINIT 0 +#define CMS_F_CMS_DECRYPT 0 +#define CMS_F_CMS_DECRYPT_SET1_KEY 0 +#define CMS_F_CMS_DECRYPT_SET1_PASSWORD 0 +#define CMS_F_CMS_DECRYPT_SET1_PKEY 0 +#define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 0 +#define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 0 +#define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 0 +#define CMS_F_CMS_DIGEST_VERIFY 0 +#define CMS_F_CMS_ENCODE_RECEIPT 0 +#define CMS_F_CMS_ENCRYPT 0 +#define CMS_F_CMS_ENCRYPTEDCONTENT_INIT 0 +#define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 0 +#define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 0 +#define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 0 +#define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 0 +#define CMS_F_CMS_ENVELOPEDDATA_CREATE 0 +#define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 0 +#define CMS_F_CMS_ENVELOPED_DATA_INIT 0 +#define CMS_F_CMS_ENV_ASN1_CTRL 0 +#define CMS_F_CMS_FINAL 0 +#define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 0 +#define CMS_F_CMS_GET0_CONTENT 0 +#define CMS_F_CMS_GET0_ECONTENT_TYPE 0 +#define CMS_F_CMS_GET0_ENVELOPED 0 +#define CMS_F_CMS_GET0_REVOCATION_CHOICES 0 +#define CMS_F_CMS_GET0_SIGNED 0 +#define CMS_F_CMS_MSGSIGDIGEST_ADD1 0 +#define CMS_F_CMS_RECEIPTREQUEST_CREATE0 0 +#define CMS_F_CMS_RECEIPT_VERIFY 0 +#define CMS_F_CMS_RECIPIENTINFO_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 0 +#define CMS_F_CMS_SD_ASN1_CTRL 0 +#define CMS_F_CMS_SET1_IAS 0 +#define CMS_F_CMS_SET1_KEYID 0 +#define CMS_F_CMS_SET1_SIGNERIDENTIFIER 0 +#define CMS_F_CMS_SET_DETACHED 0 +#define CMS_F_CMS_SIGN 0 +#define CMS_F_CMS_SIGNED_DATA_INIT 0 +#define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 0 +#define CMS_F_CMS_SIGNERINFO_SIGN 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 0 +#define CMS_F_CMS_SIGN_RECEIPT 0 +#define CMS_F_CMS_SI_CHECK_ATTRIBUTES 0 +#define CMS_F_CMS_STREAM 0 +#define CMS_F_CMS_UNCOMPRESS 0 +#define CMS_F_CMS_VERIFY 0 +#define CMS_F_KEK_UNWRAP_KEY 0 +#endif + +#ifndef OPENSSL_NO_COMP +/* + * COMP function codes. + */ +#define COMP_F_BIO_ZLIB_FLUSH 0 +#define COMP_F_BIO_ZLIB_NEW 0 +#define COMP_F_BIO_ZLIB_READ 0 +#define COMP_F_BIO_ZLIB_WRITE 0 +#define COMP_F_COMP_CTX_NEW 0 +#endif + +/* + * CONF function codes. + */ +#define CONF_F_CONF_DUMP_FP 0 +#define CONF_F_CONF_LOAD 0 +#define CONF_F_CONF_LOAD_FP 0 +#define CONF_F_CONF_PARSE_LIST 0 +#define CONF_F_DEF_LOAD 0 +#define CONF_F_DEF_LOAD_BIO 0 +#define CONF_F_GET_NEXT_FILE 0 +#define CONF_F_MODULE_ADD 0 +#define CONF_F_MODULE_INIT 0 +#define CONF_F_MODULE_LOAD_DSO 0 +#define CONF_F_MODULE_RUN 0 +#define CONF_F_NCONF_DUMP_BIO 0 +#define CONF_F_NCONF_DUMP_FP 0 +#define CONF_F_NCONF_GET_NUMBER_E 0 +#define CONF_F_NCONF_GET_SECTION 0 +#define CONF_F_NCONF_GET_STRING 0 +#define CONF_F_NCONF_LOAD 0 +#define CONF_F_NCONF_LOAD_BIO 0 +#define CONF_F_NCONF_LOAD_FP 0 +#define CONF_F_NCONF_NEW 0 +#define CONF_F_PROCESS_INCLUDE 0 +#define CONF_F_SSL_MODULE_INIT 0 +#define CONF_F_STR_COPY 0 + +/* + * CRYPTO function codes. + */ +#define CRYPTO_F_CMAC_CTX_NEW 0 +#define CRYPTO_F_CRYPTO_DUP_EX_DATA 0 +#define CRYPTO_F_CRYPTO_FREE_EX_DATA 0 +#define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 0 +#define CRYPTO_F_CRYPTO_MEMDUP 0 +#define CRYPTO_F_CRYPTO_NEW_EX_DATA 0 +#define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 0 +#define CRYPTO_F_CRYPTO_OCB128_INIT 0 +#define CRYPTO_F_CRYPTO_SET_EX_DATA 0 +#define CRYPTO_F_GET_AND_LOCK 0 +#define CRYPTO_F_OPENSSL_ATEXIT 0 +#define CRYPTO_F_OPENSSL_BUF2HEXSTR 0 +#define CRYPTO_F_OPENSSL_FOPEN 0 +#define CRYPTO_F_OPENSSL_HEXSTR2BUF 0 +#define CRYPTO_F_OPENSSL_INIT_CRYPTO 0 +#define CRYPTO_F_OPENSSL_LH_NEW 0 +#define CRYPTO_F_OPENSSL_SK_DEEP_COPY 0 +#define CRYPTO_F_OPENSSL_SK_DUP 0 +#define CRYPTO_F_PKEY_HMAC_INIT 0 +#define CRYPTO_F_PKEY_POLY1305_INIT 0 +#define CRYPTO_F_PKEY_SIPHASH_INIT 0 +#define CRYPTO_F_SK_RESERVE 0 + +#ifndef OPENSSL_NO_CT +/* + * CT function codes. + */ +#define CT_F_CTLOG_NEW 0 +#define CT_F_CTLOG_NEW_FROM_BASE64 0 +#define CT_F_CTLOG_NEW_FROM_CONF 0 +#define CT_F_CTLOG_STORE_LOAD_CTX_NEW 0 +#define CT_F_CTLOG_STORE_LOAD_FILE 0 +#define CT_F_CTLOG_STORE_LOAD_LOG 0 +#define CT_F_CTLOG_STORE_NEW 0 +#define CT_F_CT_BASE64_DECODE 0 +#define CT_F_CT_POLICY_EVAL_CTX_NEW 0 +#define CT_F_CT_V1_LOG_ID_FROM_PKEY 0 +#define CT_F_I2O_SCT 0 +#define CT_F_I2O_SCT_LIST 0 +#define CT_F_I2O_SCT_SIGNATURE 0 +#define CT_F_O2I_SCT 0 +#define CT_F_O2I_SCT_LIST 0 +#define CT_F_O2I_SCT_SIGNATURE 0 +#define CT_F_SCT_CTX_NEW 0 +#define CT_F_SCT_CTX_VERIFY 0 +#define CT_F_SCT_NEW 0 +#define CT_F_SCT_NEW_FROM_BASE64 0 +#define CT_F_SCT_SET0_LOG_ID 0 +#define CT_F_SCT_SET1_EXTENSIONS 0 +#define CT_F_SCT_SET1_LOG_ID 0 +#define CT_F_SCT_SET1_SIGNATURE 0 +#define CT_F_SCT_SET_LOG_ENTRY_TYPE 0 +#define CT_F_SCT_SET_SIGNATURE_NID 0 +#define CT_F_SCT_SET_VERSION 0 +#endif + +#ifndef OPENSSL_NO_DH +/* + * DH function codes. + */ +#define DH_F_COMPUTE_KEY 0 +#define DH_F_DHPARAMS_PRINT_FP 0 +#define DH_F_DH_BUILTIN_GENPARAMS 0 +#define DH_F_DH_CHECK_EX 0 +#define DH_F_DH_CHECK_PARAMS_EX 0 +#define DH_F_DH_CHECK_PUB_KEY_EX 0 +#define DH_F_DH_CMS_DECRYPT 0 +#define DH_F_DH_CMS_SET_PEERKEY 0 +#define DH_F_DH_CMS_SET_SHARED_INFO 0 +#define DH_F_DH_METH_DUP 0 +#define DH_F_DH_METH_NEW 0 +#define DH_F_DH_METH_SET1_NAME 0 +#define DH_F_DH_NEW_BY_NID 0 +#define DH_F_DH_NEW_METHOD 0 +#define DH_F_DH_PARAM_DECODE 0 +#define DH_F_DH_PKEY_PUBLIC_CHECK 0 +#define DH_F_DH_PRIV_DECODE 0 +#define DH_F_DH_PRIV_ENCODE 0 +#define DH_F_DH_PUB_DECODE 0 +#define DH_F_DH_PUB_ENCODE 0 +#define DH_F_DO_DH_PRINT 0 +#define DH_F_GENERATE_KEY 0 +#define DH_F_PKEY_DH_CTRL_STR 0 +#define DH_F_PKEY_DH_DERIVE 0 +#define DH_F_PKEY_DH_INIT 0 +#define DH_F_PKEY_DH_KEYGEN 0 +#endif + +#ifndef OPENSSL_NO_DSA +/* + * DSA function codes. + */ +#define DSA_F_DSAPARAMS_PRINT 0 +#define DSA_F_DSAPARAMS_PRINT_FP 0 +#define DSA_F_DSA_BUILTIN_PARAMGEN 0 +#define DSA_F_DSA_BUILTIN_PARAMGEN2 0 +#define DSA_F_DSA_DO_SIGN 0 +#define DSA_F_DSA_DO_VERIFY 0 +#define DSA_F_DSA_METH_DUP 0 +#define DSA_F_DSA_METH_NEW 0 +#define DSA_F_DSA_METH_SET1_NAME 0 +#define DSA_F_DSA_NEW_METHOD 0 +#define DSA_F_DSA_PARAM_DECODE 0 +#define DSA_F_DSA_PRINT_FP 0 +#define DSA_F_DSA_PRIV_DECODE 0 +#define DSA_F_DSA_PRIV_ENCODE 0 +#define DSA_F_DSA_PUB_DECODE 0 +#define DSA_F_DSA_PUB_ENCODE 0 +#define DSA_F_DSA_SIGN 0 +#define DSA_F_DSA_SIGN_SETUP 0 +#define DSA_F_DSA_SIG_NEW 0 +#define DSA_F_OLD_DSA_PRIV_DECODE 0 +#define DSA_F_PKEY_DSA_CTRL 0 +#define DSA_F_PKEY_DSA_CTRL_STR 0 +#define DSA_F_PKEY_DSA_KEYGEN 0 +#endif + +#ifndef OPENSSL_NO_EC +/* + * EC function codes. + */ +#define EC_F_BN_TO_FELEM 0 +#define EC_F_D2I_ECPARAMETERS 0 +#define EC_F_D2I_ECPKPARAMETERS 0 +#define EC_F_D2I_ECPRIVATEKEY 0 +#define EC_F_DO_EC_KEY_PRINT 0 +#define EC_F_ECDH_CMS_DECRYPT 0 +#define EC_F_ECDH_CMS_SET_SHARED_INFO 0 +#define EC_F_ECDH_COMPUTE_KEY 0 +#define EC_F_ECDH_SIMPLE_COMPUTE_KEY 0 +#define EC_F_ECDSA_DO_SIGN_EX 0 +#define EC_F_ECDSA_DO_VERIFY 0 +#define EC_F_ECDSA_SIGN_EX 0 +#define EC_F_ECDSA_SIGN_SETUP 0 +#define EC_F_ECDSA_SIG_NEW 0 +#define EC_F_ECDSA_VERIFY 0 +#define EC_F_ECD_ITEM_VERIFY 0 +#define EC_F_ECKEY_PARAM2TYPE 0 +#define EC_F_ECKEY_PARAM_DECODE 0 +#define EC_F_ECKEY_PRIV_DECODE 0 +#define EC_F_ECKEY_PRIV_ENCODE 0 +#define EC_F_ECKEY_PUB_DECODE 0 +#define EC_F_ECKEY_PUB_ENCODE 0 +#define EC_F_ECKEY_TYPE2PARAM 0 +#define EC_F_ECPARAMETERS_PRINT 0 +#define EC_F_ECPARAMETERS_PRINT_FP 0 +#define EC_F_ECPKPARAMETERS_PRINT 0 +#define EC_F_ECPKPARAMETERS_PRINT_FP 0 +#define EC_F_ECP_NISTZ256_GET_AFFINE 0 +#define EC_F_ECP_NISTZ256_INV_MOD_ORD 0 +#define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 0 +#define EC_F_ECP_NISTZ256_POINTS_MUL 0 +#define EC_F_ECP_NISTZ256_PRE_COMP_NEW 0 +#define EC_F_ECP_NISTZ256_WINDOWED_MUL 0 +#define EC_F_ECX_KEY_OP 0 +#define EC_F_ECX_PRIV_ENCODE 0 +#define EC_F_ECX_PUB_ENCODE 0 +#define EC_F_EC_ASN1_GROUP2CURVE 0 +#define EC_F_EC_ASN1_GROUP2FIELDID 0 +#define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 0 +#define EC_F_EC_GF2M_SIMPLE_FIELD_INV 0 +#define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 0 +#define EC_F_EC_GF2M_SIMPLE_LADDER_POST 0 +#define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 0 +#define EC_F_EC_GF2M_SIMPLE_OCT2POINT 0 +#define EC_F_EC_GF2M_SIMPLE_POINT2OCT 0 +#define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 0 +#define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_GFP_MONT_FIELD_DECODE 0 +#define EC_F_EC_GFP_MONT_FIELD_ENCODE 0 +#define EC_F_EC_GFP_MONT_FIELD_INV 0 +#define EC_F_EC_GFP_MONT_FIELD_MUL 0 +#define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 0 +#define EC_F_EC_GFP_MONT_FIELD_SQR 0 +#define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP224_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP256_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP521_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NIST_FIELD_MUL 0 +#define EC_F_EC_GFP_NIST_FIELD_SQR 0 +#define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_FIELD_INV 0 +#define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 0 +#define EC_F_EC_GFP_SIMPLE_OCT2POINT 0 +#define EC_F_EC_GFP_SIMPLE_POINT2OCT 0 +#define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 0 +#define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_GROUP_CHECK 0 +#define EC_F_EC_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GROUP_COPY 0 +#define EC_F_EC_GROUP_GET_CURVE 0 +#define EC_F_EC_GROUP_GET_CURVE_GF2M 0 +#define EC_F_EC_GROUP_GET_CURVE_GFP 0 +#define EC_F_EC_GROUP_GET_DEGREE 0 +#define EC_F_EC_GROUP_GET_ECPARAMETERS 0 +#define EC_F_EC_GROUP_GET_ECPKPARAMETERS 0 +#define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 0 +#define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 0 +#define EC_F_EC_GROUP_NEW 0 +#define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 0 +#define EC_F_EC_GROUP_NEW_FROM_DATA 0 +#define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 0 +#define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 0 +#define EC_F_EC_GROUP_SET_CURVE 0 +#define EC_F_EC_GROUP_SET_CURVE_GF2M 0 +#define EC_F_EC_GROUP_SET_CURVE_GFP 0 +#define EC_F_EC_GROUP_SET_GENERATOR 0 +#define EC_F_EC_GROUP_SET_SEED 0 +#define EC_F_EC_KEY_CHECK_KEY 0 +#define EC_F_EC_KEY_COPY 0 +#define EC_F_EC_KEY_GENERATE_KEY 0 +#define EC_F_EC_KEY_NEW 0 +#define EC_F_EC_KEY_NEW_METHOD 0 +#define EC_F_EC_KEY_OCT2PRIV 0 +#define EC_F_EC_KEY_PRINT 0 +#define EC_F_EC_KEY_PRINT_FP 0 +#define EC_F_EC_KEY_PRIV2BUF 0 +#define EC_F_EC_KEY_PRIV2OCT 0 +#define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 0 +#define EC_F_EC_KEY_SIMPLE_CHECK_KEY 0 +#define EC_F_EC_KEY_SIMPLE_OCT2PRIV 0 +#define EC_F_EC_KEY_SIMPLE_PRIV2OCT 0 +#define EC_F_EC_PKEY_CHECK 0 +#define EC_F_EC_PKEY_PARAM_CHECK 0 +#define EC_F_EC_POINTS_MAKE_AFFINE 0 +#define EC_F_EC_POINTS_MUL 0 +#define EC_F_EC_POINT_ADD 0 +#define EC_F_EC_POINT_BN2POINT 0 +#define EC_F_EC_POINT_CMP 0 +#define EC_F_EC_POINT_COPY 0 +#define EC_F_EC_POINT_DBL 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_INVERT 0 +#define EC_F_EC_POINT_IS_AT_INFINITY 0 +#define EC_F_EC_POINT_IS_ON_CURVE 0 +#define EC_F_EC_POINT_MAKE_AFFINE 0 +#define EC_F_EC_POINT_NEW 0 +#define EC_F_EC_POINT_OCT2POINT 0 +#define EC_F_EC_POINT_POINT2BUF 0 +#define EC_F_EC_POINT_POINT2OCT 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_TO_INFINITY 0 +#define EC_F_EC_PRE_COMP_NEW 0 +#define EC_F_EC_SCALAR_MUL_LADDER 0 +#define EC_F_EC_WNAF_MUL 0 +#define EC_F_EC_WNAF_PRECOMPUTE_MULT 0 +#define EC_F_I2D_ECPARAMETERS 0 +#define EC_F_I2D_ECPKPARAMETERS 0 +#define EC_F_I2D_ECPRIVATEKEY 0 +#define EC_F_I2O_ECPUBLICKEY 0 +#define EC_F_NISTP224_PRE_COMP_NEW 0 +#define EC_F_NISTP256_PRE_COMP_NEW 0 +#define EC_F_NISTP521_PRE_COMP_NEW 0 +#define EC_F_O2I_ECPUBLICKEY 0 +#define EC_F_OLD_EC_PRIV_DECODE 0 +#define EC_F_OSSL_ECDH_COMPUTE_KEY 0 +#define EC_F_OSSL_ECDSA_SIGN_SIG 0 +#define EC_F_OSSL_ECDSA_VERIFY_SIG 0 +#define EC_F_PKEY_ECD_CTRL 0 +#define EC_F_PKEY_ECD_DIGESTSIGN 0 +#define EC_F_PKEY_ECD_DIGESTSIGN25519 0 +#define EC_F_PKEY_ECD_DIGESTSIGN448 0 +#define EC_F_PKEY_ECX_DERIVE 0 +#define EC_F_PKEY_EC_CTRL 0 +#define EC_F_PKEY_EC_CTRL_STR 0 +#define EC_F_PKEY_EC_DERIVE 0 +#define EC_F_PKEY_EC_INIT 0 +#define EC_F_PKEY_EC_KDF_DERIVE 0 +#define EC_F_PKEY_EC_KEYGEN 0 +#define EC_F_PKEY_EC_PARAMGEN 0 +#define EC_F_PKEY_EC_SIGN 0 +#define EC_F_VALIDATE_ECX_DERIVE 0 +#endif + +#ifndef OPENSSL_NO_ENGINE +/* + * ENGINE function codes. + */ +#define ENGINE_F_DIGEST_UPDATE 0 +#define ENGINE_F_DYNAMIC_CTRL 0 +#define ENGINE_F_DYNAMIC_GET_DATA_CTX 0 +#define ENGINE_F_DYNAMIC_LOAD 0 +#define ENGINE_F_DYNAMIC_SET_DATA_CTX 0 +#define ENGINE_F_ENGINE_ADD 0 +#define ENGINE_F_ENGINE_BY_ID 0 +#define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 0 +#define ENGINE_F_ENGINE_CTRL 0 +#define ENGINE_F_ENGINE_CTRL_CMD 0 +#define ENGINE_F_ENGINE_CTRL_CMD_STRING 0 +#define ENGINE_F_ENGINE_FINISH 0 +#define ENGINE_F_ENGINE_GET_CIPHER 0 +#define ENGINE_F_ENGINE_GET_DIGEST 0 +#define ENGINE_F_ENGINE_GET_FIRST 0 +#define ENGINE_F_ENGINE_GET_LAST 0 +#define ENGINE_F_ENGINE_GET_NEXT 0 +#define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 0 +#define ENGINE_F_ENGINE_GET_PKEY_METH 0 +#define ENGINE_F_ENGINE_GET_PREV 0 +#define ENGINE_F_ENGINE_INIT 0 +#define ENGINE_F_ENGINE_LIST_ADD 0 +#define ENGINE_F_ENGINE_LIST_REMOVE 0 +#define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 0 +#define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 0 +#define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 0 +#define ENGINE_F_ENGINE_NEW 0 +#define ENGINE_F_ENGINE_PKEY_ASN1_FIND_STR 0 +#define ENGINE_F_ENGINE_REMOVE 0 +#define ENGINE_F_ENGINE_SET_DEFAULT_STRING 0 +#define ENGINE_F_ENGINE_SET_ID 0 +#define ENGINE_F_ENGINE_SET_NAME 0 +#define ENGINE_F_ENGINE_TABLE_REGISTER 0 +#define ENGINE_F_ENGINE_UNLOCKED_FINISH 0 +#define ENGINE_F_ENGINE_UP_REF 0 +#define ENGINE_F_INT_CLEANUP_ITEM 0 +#define ENGINE_F_INT_CTRL_HELPER 0 +#define ENGINE_F_INT_ENGINE_CONFIGURE 0 +#define ENGINE_F_INT_ENGINE_MODULE_INIT 0 +#define ENGINE_F_OSSL_HMAC_INIT 0 +#endif + +/* + * EVP function codes. + */ +#define EVP_F_AESNI_INIT_KEY 0 +#define EVP_F_AESNI_XTS_INIT_KEY 0 +#define EVP_F_AES_GCM_CTRL 0 +#define EVP_F_AES_INIT_KEY 0 +#define EVP_F_AES_OCB_CIPHER 0 +#define EVP_F_AES_T4_INIT_KEY 0 +#define EVP_F_AES_T4_XTS_INIT_KEY 0 +#define EVP_F_AES_WRAP_CIPHER 0 +#define EVP_F_AES_XTS_INIT_KEY 0 +#define EVP_F_ALG_MODULE_INIT 0 +#define EVP_F_ARIA_CCM_INIT_KEY 0 +#define EVP_F_ARIA_GCM_CTRL 0 +#define EVP_F_ARIA_GCM_INIT_KEY 0 +#define EVP_F_ARIA_INIT_KEY 0 +#define EVP_F_B64_NEW 0 +#define EVP_F_CAMELLIA_INIT_KEY 0 +#define EVP_F_CHACHA20_POLY1305_CTRL 0 +#define EVP_F_CMLL_T4_INIT_KEY 0 +#define EVP_F_DES_EDE3_WRAP_CIPHER 0 +#define EVP_F_DO_SIGVER_INIT 0 +#define EVP_F_ENC_NEW 0 +#define EVP_F_EVP_CIPHERINIT_EX 0 +#define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 0 +#define EVP_F_EVP_CIPHER_CTX_COPY 0 +#define EVP_F_EVP_CIPHER_CTX_CTRL 0 +#define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 0 +#define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 0 +#define EVP_F_EVP_DECRYPTFINAL_EX 0 +#define EVP_F_EVP_DECRYPTUPDATE 0 +#define EVP_F_EVP_DIGESTFINALXOF 0 +#define EVP_F_EVP_DIGESTINIT_EX 0 +#define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 0 +#define EVP_F_EVP_ENCRYPTFINAL_EX 0 +#define EVP_F_EVP_ENCRYPTUPDATE 0 +#define EVP_F_EVP_MD_CTX_COPY_EX 0 +#define EVP_F_EVP_MD_SIZE 0 +#define EVP_F_EVP_OPENINIT 0 +#define EVP_F_EVP_PBE_ALG_ADD 0 +#define EVP_F_EVP_PBE_ALG_ADD_TYPE 0 +#define EVP_F_EVP_PBE_CIPHERINIT 0 +#define EVP_F_EVP_PBE_SCRYPT 0 +#define EVP_F_EVP_PKCS82PKEY 0 +#define EVP_F_EVP_PKEY2PKCS8 0 +#define EVP_F_EVP_PKEY_ASN1_ADD0 0 +#define EVP_F_EVP_PKEY_CHECK 0 +#define EVP_F_EVP_PKEY_COPY_PARAMETERS 0 +#define EVP_F_EVP_PKEY_CTX_CTRL 0 +#define EVP_F_EVP_PKEY_CTX_CTRL_STR 0 +#define EVP_F_EVP_PKEY_CTX_DUP 0 +#define EVP_F_EVP_PKEY_CTX_MD 0 +#define EVP_F_EVP_PKEY_DECRYPT 0 +#define EVP_F_EVP_PKEY_DECRYPT_INIT 0 +#define EVP_F_EVP_PKEY_DECRYPT_OLD 0 +#define EVP_F_EVP_PKEY_DERIVE 0 +#define EVP_F_EVP_PKEY_DERIVE_INIT 0 +#define EVP_F_EVP_PKEY_DERIVE_SET_PEER 0 +#define EVP_F_EVP_PKEY_ENCRYPT 0 +#define EVP_F_EVP_PKEY_ENCRYPT_INIT 0 +#define EVP_F_EVP_PKEY_ENCRYPT_OLD 0 +#define EVP_F_EVP_PKEY_GET0_DH 0 +#define EVP_F_EVP_PKEY_GET0_DSA 0 +#define EVP_F_EVP_PKEY_GET0_EC_KEY 0 +#define EVP_F_EVP_PKEY_GET0_HMAC 0 +#define EVP_F_EVP_PKEY_GET0_POLY1305 0 +#define EVP_F_EVP_PKEY_GET0_RSA 0 +#define EVP_F_EVP_PKEY_GET0_SIPHASH 0 +#define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 0 +#define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 0 +#define EVP_F_EVP_PKEY_KEYGEN 0 +#define EVP_F_EVP_PKEY_KEYGEN_INIT 0 +#define EVP_F_EVP_PKEY_METH_ADD0 0 +#define EVP_F_EVP_PKEY_METH_NEW 0 +#define EVP_F_EVP_PKEY_NEW 0 +#define EVP_F_EVP_PKEY_NEW_CMAC_KEY 0 +#define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 0 +#define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 0 +#define EVP_F_EVP_PKEY_PARAMGEN 0 +#define EVP_F_EVP_PKEY_PARAMGEN_INIT 0 +#define EVP_F_EVP_PKEY_PARAM_CHECK 0 +#define EVP_F_EVP_PKEY_PUBLIC_CHECK 0 +#define EVP_F_EVP_PKEY_SET1_ENGINE 0 +#define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 0 +#define EVP_F_EVP_PKEY_SIGN 0 +#define EVP_F_EVP_PKEY_SIGN_INIT 0 +#define EVP_F_EVP_PKEY_VERIFY 0 +#define EVP_F_EVP_PKEY_VERIFY_INIT 0 +#define EVP_F_EVP_PKEY_VERIFY_RECOVER 0 +#define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 0 +#define EVP_F_EVP_SIGNFINAL 0 +#define EVP_F_EVP_VERIFYFINAL 0 +#define EVP_F_INT_CTX_NEW 0 +#define EVP_F_OK_NEW 0 +#define EVP_F_PKCS5_PBE_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_PBE_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 0 +#define EVP_F_PKEY_SET_TYPE 0 +#define EVP_F_RC2_MAGIC_TO_METH 0 +#define EVP_F_RC5_CTRL 0 +#define EVP_F_R_32_12_16_INIT_KEY 0 +#define EVP_F_S390X_AES_GCM_CTRL 0 +#define EVP_F_UPDATE 0 + +/* + * KDF function codes. + */ +#define KDF_F_PKEY_HKDF_CTRL_STR 0 +#define KDF_F_PKEY_HKDF_DERIVE 0 +#define KDF_F_PKEY_HKDF_INIT 0 +#define KDF_F_PKEY_SCRYPT_CTRL_STR 0 +#define KDF_F_PKEY_SCRYPT_CTRL_UINT64 0 +#define KDF_F_PKEY_SCRYPT_DERIVE 0 +#define KDF_F_PKEY_SCRYPT_INIT 0 +#define KDF_F_PKEY_SCRYPT_SET_MEMBUF 0 +#define KDF_F_PKEY_TLS1_PRF_CTRL_STR 0 +#define KDF_F_PKEY_TLS1_PRF_DERIVE 0 +#define KDF_F_PKEY_TLS1_PRF_INIT 0 +#define KDF_F_TLS1_PRF_ALG 0 + +/* + * KDF reason codes. + */ +#define KDF_R_INVALID_DIGEST 0 +#define KDF_R_MISSING_ITERATION_COUNT 0 +#define KDF_R_MISSING_KEY 0 +#define KDF_R_MISSING_MESSAGE_DIGEST 0 +#define KDF_R_MISSING_PARAMETER 0 +#define KDF_R_MISSING_PASS 0 +#define KDF_R_MISSING_SALT 0 +#define KDF_R_MISSING_SECRET 0 +#define KDF_R_MISSING_SEED 0 +#define KDF_R_UNKNOWN_PARAMETER_TYPE 0 +#define KDF_R_VALUE_ERROR 0 +#define KDF_R_VALUE_MISSING 0 + +/* + * OBJ function codes. + */ +#define OBJ_F_OBJ_ADD_OBJECT 0 +#define OBJ_F_OBJ_ADD_SIGID 0 +#define OBJ_F_OBJ_CREATE 0 +#define OBJ_F_OBJ_DUP 0 +#define OBJ_F_OBJ_NAME_NEW_INDEX 0 +#define OBJ_F_OBJ_NID2LN 0 +#define OBJ_F_OBJ_NID2OBJ 0 +#define OBJ_F_OBJ_NID2SN 0 +#define OBJ_F_OBJ_TXT2OBJ 0 + +#ifndef OPENSSL_NO_OCSP +/* + * OCSP function codes. + */ +#define OCSP_F_D2I_OCSP_NONCE 0 +#define OCSP_F_OCSP_BASIC_ADD1_STATUS 0 +#define OCSP_F_OCSP_BASIC_SIGN 0 +#define OCSP_F_OCSP_BASIC_SIGN_CTX 0 +#define OCSP_F_OCSP_BASIC_VERIFY 0 +#define OCSP_F_OCSP_CERT_ID_NEW 0 +#define OCSP_F_OCSP_CHECK_DELEGATED 0 +#define OCSP_F_OCSP_CHECK_IDS 0 +#define OCSP_F_OCSP_CHECK_ISSUER 0 +#define OCSP_F_OCSP_CHECK_VALIDITY 0 +#define OCSP_F_OCSP_MATCH_ISSUERID 0 +#define OCSP_F_OCSP_PARSE_URL 0 +#define OCSP_F_OCSP_REQUEST_SIGN 0 +#define OCSP_F_OCSP_REQUEST_VERIFY 0 +#define OCSP_F_OCSP_RESPONSE_GET1_BASIC 0 +#define OCSP_F_PARSE_HTTP_LINE1 0 +#endif + +/* + * PEM function codes. + */ +#define PEM_F_B2I_DSS 0 +#define PEM_F_B2I_PVK_BIO 0 +#define PEM_F_B2I_RSA 0 +#define PEM_F_CHECK_BITLEN_DSA 0 +#define PEM_F_CHECK_BITLEN_RSA 0 +#define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 0 +#define PEM_F_D2I_PKCS8PRIVATEKEY_FP 0 +#define PEM_F_DO_B2I 0 +#define PEM_F_DO_B2I_BIO 0 +#define PEM_F_DO_BLOB_HEADER 0 +#define PEM_F_DO_I2B 0 +#define PEM_F_DO_PK8PKEY 0 +#define PEM_F_DO_PK8PKEY_FP 0 +#define PEM_F_DO_PVK_BODY 0 +#define PEM_F_DO_PVK_HEADER 0 +#define PEM_F_GET_HEADER_AND_DATA 0 +#define PEM_F_GET_NAME 0 +#define PEM_F_I2B_PVK 0 +#define PEM_F_I2B_PVK_BIO 0 +#define PEM_F_LOAD_IV 0 +#define PEM_F_PEM_ASN1_READ 0 +#define PEM_F_PEM_ASN1_READ_BIO 0 +#define PEM_F_PEM_ASN1_WRITE 0 +#define PEM_F_PEM_ASN1_WRITE_BIO 0 +#define PEM_F_PEM_DEF_CALLBACK 0 +#define PEM_F_PEM_DO_HEADER 0 +#define PEM_F_PEM_GET_EVP_CIPHER_INFO 0 +#define PEM_F_PEM_READ 0 +#define PEM_F_PEM_READ_BIO 0 +#define PEM_F_PEM_READ_BIO_DHPARAMS 0 +#define PEM_F_PEM_READ_BIO_EX 0 +#define PEM_F_PEM_READ_BIO_PARAMETERS 0 +#define PEM_F_PEM_READ_BIO_PRIVATEKEY 0 +#define PEM_F_PEM_READ_DHPARAMS 0 +#define PEM_F_PEM_READ_PRIVATEKEY 0 +#define PEM_F_PEM_SIGNFINAL 0 +#define PEM_F_PEM_WRITE 0 +#define PEM_F_PEM_WRITE_BIO 0 +#define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 0 +#define PEM_F_PEM_WRITE_PRIVATEKEY 0 +#define PEM_F_PEM_X509_INFO_READ 0 +#define PEM_F_PEM_X509_INFO_READ_BIO 0 +#define PEM_F_PEM_X509_INFO_WRITE_BIO 0 + +/* + * PKCS12 function codes. + */ +#define PKCS12_F_OPENSSL_ASC2UNI 0 +#define PKCS12_F_OPENSSL_UNI2ASC 0 +#define PKCS12_F_OPENSSL_UNI2UTF8 0 +#define PKCS12_F_OPENSSL_UTF82UNI 0 +#define PKCS12_F_PKCS12_CREATE 0 +#define PKCS12_F_PKCS12_GEN_MAC 0 +#define PKCS12_F_PKCS12_INIT 0 +#define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 0 +#define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 0 +#define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 0 +#define PKCS12_F_PKCS12_KEY_GEN_ASC 0 +#define PKCS12_F_PKCS12_KEY_GEN_UNI 0 +#define PKCS12_F_PKCS12_KEY_GEN_UTF8 0 +#define PKCS12_F_PKCS12_NEWPASS 0 +#define PKCS12_F_PKCS12_PACK_P7DATA 0 +#define PKCS12_F_PKCS12_PACK_P7ENCDATA 0 +#define PKCS12_F_PKCS12_PARSE 0 +#define PKCS12_F_PKCS12_PBE_CRYPT 0 +#define PKCS12_F_PKCS12_PBE_KEYIVGEN 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 0 +#define PKCS12_F_PKCS12_SETUP_MAC 0 +#define PKCS12_F_PKCS12_SET_MAC 0 +#define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 0 +#define PKCS12_F_PKCS12_UNPACK_P7DATA 0 +#define PKCS12_F_PKCS12_VERIFY_MAC 0 +#define PKCS12_F_PKCS8_ENCRYPT 0 +#define PKCS12_F_PKCS8_SET0_PBE 0 + +/* + * PKCS7 function codes. + */ +#define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 0 +#define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 0 +#define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 0 +#define PKCS7_F_PKCS7_ADD_CERTIFICATE 0 +#define PKCS7_F_PKCS7_ADD_CRL 0 +#define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 0 +#define PKCS7_F_PKCS7_ADD_SIGNATURE 0 +#define PKCS7_F_PKCS7_ADD_SIGNER 0 +#define PKCS7_F_PKCS7_BIO_ADD_DIGEST 0 +#define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 0 +#define PKCS7_F_PKCS7_CTRL 0 +#define PKCS7_F_PKCS7_DATADECODE 0 +#define PKCS7_F_PKCS7_DATAFINAL 0 +#define PKCS7_F_PKCS7_DATAINIT 0 +#define PKCS7_F_PKCS7_DATAVERIFY 0 +#define PKCS7_F_PKCS7_DECRYPT 0 +#define PKCS7_F_PKCS7_DECRYPT_RINFO 0 +#define PKCS7_F_PKCS7_ENCODE_RINFO 0 +#define PKCS7_F_PKCS7_ENCRYPT 0 +#define PKCS7_F_PKCS7_FINAL 0 +#define PKCS7_F_PKCS7_FIND_DIGEST 0 +#define PKCS7_F_PKCS7_GET0_SIGNERS 0 +#define PKCS7_F_PKCS7_RECIP_INFO_SET 0 +#define PKCS7_F_PKCS7_SET_CIPHER 0 +#define PKCS7_F_PKCS7_SET_CONTENT 0 +#define PKCS7_F_PKCS7_SET_DIGEST 0 +#define PKCS7_F_PKCS7_SET_TYPE 0 +#define PKCS7_F_PKCS7_SIGN 0 +#define PKCS7_F_PKCS7_SIGNATUREVERIFY 0 +#define PKCS7_F_PKCS7_SIGNER_INFO_SET 0 +#define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 0 +#define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 0 +#define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 0 +#define PKCS7_F_PKCS7_VERIFY 0 + +/* + * RAND function codes. + */ +#define RAND_F_DATA_COLLECT_METHOD 0 +#define RAND_F_DRBG_BYTES 0 +#define RAND_F_DRBG_GET_ENTROPY 0 +#define RAND_F_DRBG_SETUP 0 +#define RAND_F_GET_ENTROPY 0 +#define RAND_F_RAND_BYTES 0 +#define RAND_F_RAND_DRBG_ENABLE_LOCKING 0 +#define RAND_F_RAND_DRBG_GENERATE 0 +#define RAND_F_RAND_DRBG_GET_ENTROPY 0 +#define RAND_F_RAND_DRBG_GET_NONCE 0 +#define RAND_F_RAND_DRBG_INSTANTIATE 0 +#define RAND_F_RAND_DRBG_NEW 0 +#define RAND_F_RAND_DRBG_RESEED 0 +#define RAND_F_RAND_DRBG_RESTART 0 +#define RAND_F_RAND_DRBG_SET 0 +#define RAND_F_RAND_DRBG_SET_DEFAULTS 0 +#define RAND_F_RAND_DRBG_UNINSTANTIATE 0 +#define RAND_F_RAND_LOAD_FILE 0 +#define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 0 +#define RAND_F_RAND_POOL_ADD 0 +#define RAND_F_RAND_POOL_ADD_BEGIN 0 +#define RAND_F_RAND_POOL_ADD_END 0 +#define RAND_F_RAND_POOL_ATTACH 0 +#define RAND_F_RAND_POOL_BYTES_NEEDED 0 +#define RAND_F_RAND_POOL_GROW 0 +#define RAND_F_RAND_POOL_NEW 0 +#define RAND_F_RAND_PSEUDO_BYTES 0 +#define RAND_F_RAND_WRITE_FILE 0 + +/* + * RSA function codes. + */ +#define RSA_F_CHECK_PADDING_MD 0 +#define RSA_F_ENCODE_PKCS1 0 +#define RSA_F_INT_RSA_VERIFY 0 +#define RSA_F_OLD_RSA_PRIV_DECODE 0 +#define RSA_F_PKEY_PSS_INIT 0 +#define RSA_F_PKEY_RSA_CTRL 0 +#define RSA_F_PKEY_RSA_CTRL_STR 0 +#define RSA_F_PKEY_RSA_SIGN 0 +#define RSA_F_PKEY_RSA_VERIFY 0 +#define RSA_F_PKEY_RSA_VERIFYRECOVER 0 +#define RSA_F_RSA_ALGOR_TO_MD 0 +#define RSA_F_RSA_BUILTIN_KEYGEN 0 +#define RSA_F_RSA_CHECK_KEY 0 +#define RSA_F_RSA_CHECK_KEY_EX 0 +#define RSA_F_RSA_CMS_DECRYPT 0 +#define RSA_F_RSA_CMS_VERIFY 0 +#define RSA_F_RSA_ITEM_VERIFY 0 +#define RSA_F_RSA_METH_DUP 0 +#define RSA_F_RSA_METH_NEW 0 +#define RSA_F_RSA_METH_SET1_NAME 0 +#define RSA_F_RSA_MGF1_TO_MD 0 +#define RSA_F_RSA_MULTIP_INFO_NEW 0 +#define RSA_F_RSA_NEW_METHOD 0 +#define RSA_F_RSA_NULL 0 +#define RSA_F_RSA_NULL_PRIVATE_DECRYPT 0 +#define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 0 +#define RSA_F_RSA_NULL_PUBLIC_DECRYPT 0 +#define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 0 +#define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 0 +#define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 0 +#define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 0 +#define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 0 +#define RSA_F_RSA_PADDING_ADD_NONE 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 0 +#define RSA_F_RSA_PADDING_ADD_SSLV23 0 +#define RSA_F_RSA_PADDING_ADD_X931 0 +#define RSA_F_RSA_PADDING_CHECK_NONE 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 0 +#define RSA_F_RSA_PADDING_CHECK_SSLV23 0 +#define RSA_F_RSA_PADDING_CHECK_X931 0 +#define RSA_F_RSA_PARAM_DECODE 0 +#define RSA_F_RSA_PRINT 0 +#define RSA_F_RSA_PRINT_FP 0 +#define RSA_F_RSA_PRIV_DECODE 0 +#define RSA_F_RSA_PRIV_ENCODE 0 +#define RSA_F_RSA_PSS_GET_PARAM 0 +#define RSA_F_RSA_PSS_TO_CTX 0 +#define RSA_F_RSA_PUB_DECODE 0 +#define RSA_F_RSA_SETUP_BLINDING 0 +#define RSA_F_RSA_SIGN 0 +#define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 0 +#define RSA_F_RSA_VERIFY 0 +#define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 0 +#define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 0 +#define RSA_F_SETUP_TBUF 0 + +/* + * OSSL_STORE function codes. + */ +#define OSSL_STORE_F_FILE_CTRL 0 +#define OSSL_STORE_F_FILE_FIND 0 +#define OSSL_STORE_F_FILE_GET_PASS 0 +#define OSSL_STORE_F_FILE_LOAD 0 +#define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 0 +#define OSSL_STORE_F_FILE_NAME_TO_URI 0 +#define OSSL_STORE_F_FILE_OPEN 0 +#define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 0 +#define OSSL_STORE_F_OSSL_STORE_EXPECT 0 +#define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 0 +#define OSSL_STORE_F_OSSL_STORE_FIND 0 +#define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 0 +#define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 0 +#define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 0 +#define OSSL_STORE_F_OSSL_STORE_OPEN 0 +#define OSSL_STORE_F_OSSL_STORE_OPEN_INT 0 +#define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 0 +#define OSSL_STORE_F_TRY_DECODE_PARAMS 0 +#define OSSL_STORE_F_TRY_DECODE_PKCS12 0 +#define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 0 + +#ifndef OPENSSL_NO_TS +/* + * TS function codes. + */ +#define TS_F_DEF_SERIAL_CB 0 +#define TS_F_DEF_TIME_CB 0 +#define TS_F_ESS_ADD_SIGNING_CERT 0 +#define TS_F_ESS_ADD_SIGNING_CERT_V2 0 +#define TS_F_ESS_CERT_ID_NEW_INIT 0 +#define TS_F_ESS_CERT_ID_V2_NEW_INIT 0 +#define TS_F_ESS_SIGNING_CERT_NEW_INIT 0 +#define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 0 +#define TS_F_INT_TS_RESP_VERIFY_TOKEN 0 +#define TS_F_PKCS7_TO_TS_TST_INFO 0 +#define TS_F_TS_ACCURACY_SET_MICROS 0 +#define TS_F_TS_ACCURACY_SET_MILLIS 0 +#define TS_F_TS_ACCURACY_SET_SECONDS 0 +#define TS_F_TS_CHECK_IMPRINTS 0 +#define TS_F_TS_CHECK_NONCES 0 +#define TS_F_TS_CHECK_POLICY 0 +#define TS_F_TS_CHECK_SIGNING_CERTS 0 +#define TS_F_TS_CHECK_STATUS_INFO 0 +#define TS_F_TS_COMPUTE_IMPRINT 0 +#define TS_F_TS_CONF_INVALID 0 +#define TS_F_TS_CONF_LOAD_CERT 0 +#define TS_F_TS_CONF_LOAD_CERTS 0 +#define TS_F_TS_CONF_LOAD_KEY 0 +#define TS_F_TS_CONF_LOOKUP_FAIL 0 +#define TS_F_TS_CONF_SET_DEFAULT_ENGINE 0 +#define TS_F_TS_GET_STATUS_TEXT 0 +#define TS_F_TS_MSG_IMPRINT_SET_ALGO 0 +#define TS_F_TS_REQ_SET_MSG_IMPRINT 0 +#define TS_F_TS_REQ_SET_NONCE 0 +#define TS_F_TS_REQ_SET_POLICY_ID 0 +#define TS_F_TS_RESP_CREATE_RESPONSE 0 +#define TS_F_TS_RESP_CREATE_TST_INFO 0 +#define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 0 +#define TS_F_TS_RESP_CTX_ADD_MD 0 +#define TS_F_TS_RESP_CTX_ADD_POLICY 0 +#define TS_F_TS_RESP_CTX_NEW 0 +#define TS_F_TS_RESP_CTX_SET_ACCURACY 0 +#define TS_F_TS_RESP_CTX_SET_CERTS 0 +#define TS_F_TS_RESP_CTX_SET_DEF_POLICY 0 +#define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 0 +#define TS_F_TS_RESP_CTX_SET_STATUS_INFO 0 +#define TS_F_TS_RESP_GET_POLICY 0 +#define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 0 +#define TS_F_TS_RESP_SET_STATUS_INFO 0 +#define TS_F_TS_RESP_SET_TST_INFO 0 +#define TS_F_TS_RESP_SIGN 0 +#define TS_F_TS_RESP_VERIFY_SIGNATURE 0 +#define TS_F_TS_TST_INFO_SET_ACCURACY 0 +#define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 0 +#define TS_F_TS_TST_INFO_SET_NONCE 0 +#define TS_F_TS_TST_INFO_SET_POLICY_ID 0 +#define TS_F_TS_TST_INFO_SET_SERIAL 0 +#define TS_F_TS_TST_INFO_SET_TIME 0 +#define TS_F_TS_TST_INFO_SET_TSA 0 +#define TS_F_TS_VERIFY 0 +#define TS_F_TS_VERIFY_CERT 0 +#define TS_F_TS_VERIFY_CTX_NEW 0 +#endif + +/* + * UI function codes. + */ +#define UI_F_CLOSE_CONSOLE 0 +#define UI_F_ECHO_CONSOLE 0 +#define UI_F_GENERAL_ALLOCATE_BOOLEAN 0 +#define UI_F_GENERAL_ALLOCATE_PROMPT 0 +#define UI_F_NOECHO_CONSOLE 0 +#define UI_F_OPEN_CONSOLE 0 +#define UI_F_UI_CONSTRUCT_PROMPT 0 +#define UI_F_UI_CREATE_METHOD 0 +#define UI_F_UI_CTRL 0 +#define UI_F_UI_DUP_ERROR_STRING 0 +#define UI_F_UI_DUP_INFO_STRING 0 +#define UI_F_UI_DUP_INPUT_BOOLEAN 0 +#define UI_F_UI_DUP_INPUT_STRING 0 +#define UI_F_UI_DUP_USER_DATA 0 +#define UI_F_UI_DUP_VERIFY_STRING 0 +#define UI_F_UI_GET0_RESULT 0 +#define UI_F_UI_GET_RESULT_LENGTH 0 +#define UI_F_UI_NEW_METHOD 0 +#define UI_F_UI_PROCESS 0 +#define UI_F_UI_SET_RESULT 0 +#define UI_F_UI_SET_RESULT_EX 0 + +/* + * X509 function codes. + */ +#define X509_F_ADD_CERT_DIR 0 +#define X509_F_BUILD_CHAIN 0 +#define X509_F_BY_FILE_CTRL 0 +#define X509_F_CHECK_NAME_CONSTRAINTS 0 +#define X509_F_CHECK_POLICY 0 +#define X509_F_DANE_I2D 0 +#define X509_F_DIR_CTRL 0 +#define X509_F_GET_CERT_BY_SUBJECT 0 +#define X509_F_I2D_X509_AUX 0 +#define X509_F_LOOKUP_CERTS_SK 0 +#define X509_F_NETSCAPE_SPKI_B64_DECODE 0 +#define X509_F_NETSCAPE_SPKI_B64_ENCODE 0 +#define X509_F_NEW_DIR 0 +#define X509_F_X509AT_ADD1_ATTR 0 +#define X509_F_X509V3_ADD_EXT 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 0 +#define X509_F_X509_ATTRIBUTE_GET0_DATA 0 +#define X509_F_X509_ATTRIBUTE_SET1_DATA 0 +#define X509_F_X509_CHECK_PRIVATE_KEY 0 +#define X509_F_X509_CRL_DIFF 0 +#define X509_F_X509_CRL_METHOD_NEW 0 +#define X509_F_X509_CRL_PRINT_FP 0 +#define X509_F_X509_EXTENSION_CREATE_BY_NID 0 +#define X509_F_X509_EXTENSION_CREATE_BY_OBJ 0 +#define X509_F_X509_GET_PUBKEY_PARAMETERS 0 +#define X509_F_X509_LOAD_CERT_CRL_FILE 0 +#define X509_F_X509_LOAD_CERT_FILE 0 +#define X509_F_X509_LOAD_CRL_FILE 0 +#define X509_F_X509_LOOKUP_METH_NEW 0 +#define X509_F_X509_LOOKUP_NEW 0 +#define X509_F_X509_NAME_ADD_ENTRY 0 +#define X509_F_X509_NAME_CANON 0 +#define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 0 +#define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 0 +#define X509_F_X509_NAME_ENTRY_SET_OBJECT 0 +#define X509_F_X509_NAME_ONELINE 0 +#define X509_F_X509_NAME_PRINT 0 +#define X509_F_X509_OBJECT_NEW 0 +#define X509_F_X509_PRINT_EX_FP 0 +#define X509_F_X509_PUBKEY_DECODE 0 +#define X509_F_X509_PUBKEY_GET 0 +#define X509_F_X509_PUBKEY_GET0 0 +#define X509_F_X509_PUBKEY_SET 0 +#define X509_F_X509_REQ_CHECK_PRIVATE_KEY 0 +#define X509_F_X509_REQ_PRINT_EX 0 +#define X509_F_X509_REQ_PRINT_FP 0 +#define X509_F_X509_REQ_TO_X509 0 +#define X509_F_X509_STORE_ADD_CERT 0 +#define X509_F_X509_STORE_ADD_CRL 0 +#define X509_F_X509_STORE_ADD_LOOKUP 0 +#define X509_F_X509_STORE_CTX_GET1_ISSUER 0 +#define X509_F_X509_STORE_CTX_INIT 0 +#define X509_F_X509_STORE_CTX_NEW 0 +#define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 0 +#define X509_F_X509_STORE_NEW 0 +#define X509_F_X509_TO_X509_REQ 0 +#define X509_F_X509_TRUST_ADD 0 +#define X509_F_X509_TRUST_SET 0 +#define X509_F_X509_VERIFY_CERT 0 +#define X509_F_X509_VERIFY_PARAM_NEW 0 + +/* + * X509V3 function codes. + */ +#define X509V3_F_A2I_GENERAL_NAME 0 +#define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 0 +#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 0 +#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 0 +#define X509V3_F_BIGNUM_TO_STRING 0 +#define X509V3_F_COPY_EMAIL 0 +#define X509V3_F_COPY_ISSUER 0 +#define X509V3_F_DO_DIRNAME 0 +#define X509V3_F_DO_EXT_I2D 0 +#define X509V3_F_DO_EXT_NCONF 0 +#define X509V3_F_GNAMES_FROM_SECTNAME 0 +#define X509V3_F_I2S_ASN1_ENUMERATED 0 +#define X509V3_F_I2S_ASN1_IA5STRING 0 +#define X509V3_F_I2S_ASN1_INTEGER 0 +#define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 0 +#define X509V3_F_LEVEL_ADD_NODE 0 +#define X509V3_F_NOTICE_SECTION 0 +#define X509V3_F_NREF_NOS 0 +#define X509V3_F_POLICY_CACHE_CREATE 0 +#define X509V3_F_POLICY_CACHE_NEW 0 +#define X509V3_F_POLICY_DATA_NEW 0 +#define X509V3_F_POLICY_SECTION 0 +#define X509V3_F_PROCESS_PCI_VALUE 0 +#define X509V3_F_R2I_CERTPOL 0 +#define X509V3_F_R2I_PCI 0 +#define X509V3_F_S2I_ASN1_IA5STRING 0 +#define X509V3_F_S2I_ASN1_INTEGER 0 +#define X509V3_F_S2I_ASN1_OCTET_STRING 0 +#define X509V3_F_S2I_SKEY_ID 0 +#define X509V3_F_SET_DIST_POINT_NAME 0 +#define X509V3_F_SXNET_ADD_ID_ASC 0 +#define X509V3_F_SXNET_ADD_ID_INTEGER 0 +#define X509V3_F_SXNET_ADD_ID_ULONG 0 +#define X509V3_F_SXNET_GET_ID_ASC 0 +#define X509V3_F_SXNET_GET_ID_ULONG 0 +#define X509V3_F_TREE_INIT 0 +#define X509V3_F_V2I_ASIDENTIFIERS 0 +#define X509V3_F_V2I_ASN1_BIT_STRING 0 +#define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 0 +#define X509V3_F_V2I_AUTHORITY_KEYID 0 +#define X509V3_F_V2I_BASIC_CONSTRAINTS 0 +#define X509V3_F_V2I_CRLD 0 +#define X509V3_F_V2I_EXTENDED_KEY_USAGE 0 +#define X509V3_F_V2I_GENERAL_NAMES 0 +#define X509V3_F_V2I_GENERAL_NAME_EX 0 +#define X509V3_F_V2I_IDP 0 +#define X509V3_F_V2I_IPADDRBLOCKS 0 +#define X509V3_F_V2I_ISSUER_ALT 0 +#define X509V3_F_V2I_NAME_CONSTRAINTS 0 +#define X509V3_F_V2I_POLICY_CONSTRAINTS 0 +#define X509V3_F_V2I_POLICY_MAPPINGS 0 +#define X509V3_F_V2I_SUBJECT_ALT 0 +#define X509V3_F_V2I_TLS_FEATURE 0 +#define X509V3_F_V3_GENERIC_EXTENSION 0 +#define X509V3_F_X509V3_ADD1_I2D 0 +#define X509V3_F_X509V3_ADD_VALUE 0 +#define X509V3_F_X509V3_EXT_ADD 0 +#define X509V3_F_X509V3_EXT_ADD_ALIAS 0 +#define X509V3_F_X509V3_EXT_I2D 0 +#define X509V3_F_X509V3_EXT_NCONF 0 +#define X509V3_F_X509V3_GET_SECTION 0 +#define X509V3_F_X509V3_GET_STRING 0 +#define X509V3_F_X509V3_GET_VALUE_BOOL 0 +#define X509V3_F_X509V3_PARSE_LIST 0 +#define X509V3_F_X509_PURPOSE_ADD 0 +#define X509V3_F_X509_PURPOSE_SET 0 + +/* + * Compatibility defines. + */ +#define EVP_R_OPERATON_NOT_INITIALIZED EVP_R_OPERATION_NOT_INITIALIZED + +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ct.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ct.h new file mode 100644 index 0000000..083ac4e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ct.h @@ -0,0 +1,574 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ct.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CT_H +#define OPENSSL_CT_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CT_H +#endif + +#include + +#ifndef OPENSSL_NO_CT +#include +#include +#include +#include +#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 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) +#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) +#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) +#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) +#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) +#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) +#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) +#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) +#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk), ossl_check_SCT_freefunc_type(freefunc)) +#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) +#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) +#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) +#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) +#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) +#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) +#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) +#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) +#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) +#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) +#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) +#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) +#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_freefunc_type(freefunc)) +#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) +#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) +#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) +#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) +#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) + +/* clang-format on */ + +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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cterr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cterr.h new file mode 100644 index 0000000..950b7b3 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/cterr.h @@ -0,0 +1,43 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/decoder.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/decoder.h new file mode 100644 index 0000000..8194c24 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/decoder.h @@ -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 + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/decodererr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/decodererr.h new file mode 100644 index 0000000..5fdeace --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/decodererr.h @@ -0,0 +1,26 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/des.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/des.h new file mode 100644 index 0000000..daaef4e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/des.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DES_H +#endif + +#include + +#ifndef OPENSSL_NO_DES +#ifdef __cplusplus +extern "C" { +#endif +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dh.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dh.h new file mode 100644 index 0000000..6d0abe2 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dh.h @@ -0,0 +1,333 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DH_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * DH parameter generation types used by EVP_PKEY_CTX_set_dh_paramgen_type() + * Note that additions/changes to this set of values requires corresponding + * adjustments to range checks in dh_gen() + */ +#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 +#endif +#ifndef OPENSSL_NO_DH +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include + +#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, some of them shared with DH_check_pub_key */ +/* + * 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 /* +DH_check_pub_key */ +#define DH_CHECK_INVALID_J_VALUE 0x40 +#define DH_MODULUS_TOO_SMALL 0x80 +#define DH_MODULUS_TOO_LARGE 0x100 /* +DH_check_pub_key */ + +/* 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((void *(*)(void))DH_new, \ + (d2i_of_void *)d2i_DHparams, \ + (fp), \ + (void **)(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((void *(*)(void))DH_new, \ + (d2i_of_void *)d2i_DHxparams, \ + (fp), \ + (void **)(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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dherr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dherr.h new file mode 100644 index 0000000..753659b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dherr.h @@ -0,0 +1,57 @@ +/* + * 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_DHERR_H +#define OPENSSL_DHERR_H +#pragma once + +#include +#include +#include + +#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_INVALID_SIZE 129 +#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_Q_TOO_LARGE 130 +#define DH_R_SHARED_INFO_ERROR 113 +#define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dsa.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dsa.h new file mode 100644 index 0000000..61baa64 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dsa.h @@ -0,0 +1,273 @@ +/* + * 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_DSA_H +#define OPENSSL_DSA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DSA_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_DSA +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#ifndef OPENSSL_NO_STDIO +#include +#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((void *(*)(void))DSA_new, \ + (d2i_of_void *)d2i_DSAparams, (fp), \ + (void **)(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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dsaerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dsaerr.h new file mode 100644 index 0000000..cc5f4bf --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dsaerr.h @@ -0,0 +1,42 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dtls1.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dtls1.h new file mode 100644 index 0000000..0b42948 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/dtls1.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DTLS1_H +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/e_os2.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/e_os2.h new file mode 100644 index 0000000..86a572b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/e_os2.h @@ -0,0 +1,306 @@ +/* + * Copyright 1995-2024 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_E_OS2_H +#endif + +#include + +#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 implementer 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 +#endif +#define OPENSSL_USE_BUILD_DATE +#if defined(OPENSSL_THREADS) && defined(_SPT_MODEL_) +#define SPT_THREAD_SIGNAL 1 +#define SPT_THREAD_AWARE 1 +#include +#elif defined(OPENSSL_THREADS) && defined(_PUT_MODEL_) +#include +#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 +#include +#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; +typedef UINTN uintptr_t; +#elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__osf__) || defined(__sgi) || defined(__hpux) || defined(OPENSSL_SYS_VMS) || defined(__OpenBSD__) +#include +#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 +#include +#else +#include +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/e_ostime.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/e_ostime.h new file mode 100644 index 0000000..c0f1c54 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/e_ostime.h @@ -0,0 +1,38 @@ +/* + * Copyright 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_E_OSTIME_H +#define OPENSSL_E_OSTIME_H +#pragma once + +#include +#include +#include + +/* + * This header guarantees that 'struct timeval' will be available. It includes + * the minimum headers needed to facilitate this. This may still be a + * substantial set of headers on some platforms (e.g. on Win32). + */ + +#if defined(OPENSSL_SYS_WINDOWS) +#if !defined(_WINSOCKAPI_) +/* + * winsock2.h defines _WINSOCK2API_ and both winsock2.h and winsock.h define + * _WINSOCKAPI_. Both of these provide struct timeval. Don't include + * winsock2.h if either header has been included to avoid breakage with + * applications that prefer to use over . + */ +#include +#endif +#else +#include +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ebcdic.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ebcdic.h new file mode 100644 index 0000000..f2171bb --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ebcdic.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_EBCDIC_H +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ec.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ec.h new file mode 100644 index 0000000..cdde09c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ec.h @@ -0,0 +1,1569 @@ +/* + * Copyright 2002-2023 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_EC_H +#define OPENSSL_EC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_EC_H +#endif + +#include +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Values for EVP_PKEY_CTX_set_ec_param_enc() */ +#define OPENSSL_EC_EXPLICIT_CURVE 0x000 +#define OPENSSL_EC_NAMED_CURVE 0x001 + +int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid); +int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx, int param_enc); +int EVP_PKEY_CTX_set_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx, int cofactor_mode); +int EVP_PKEY_CTX_get_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_type(EVP_PKEY_CTX *ctx, int kdf); +int EVP_PKEY_CTX_get_ecdh_kdf_type(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_get_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); + +int EVP_PKEY_CTX_set_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int len); +int EVP_PKEY_CTX_get_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len); + +int EVP_PKEY_CTX_set0_ecdh_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_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm); +#endif + +#define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +#define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +#define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +#define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) + +/* KDF types */ +#define EVP_PKEY_ECDH_KDF_NONE 1 +#define EVP_PKEY_ECDH_KDF_X9_63 2 +/* + * The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +#define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x04 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +const char *OSSL_EC_curve_nid2name(int nid); + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#ifndef OPENSSL_NO_EC +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include + +#ifndef OPENSSL_ECC_MAX_FIELD_BITS +#define OPENSSL_ECC_MAX_FIELD_BITS 661 +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_method_st EC_METHOD; +#endif +typedef struct ec_group_st EC_GROUP; +typedef struct ec_point_st EC_POINT; +typedef struct ecpk_parameters_st ECPKPARAMETERS; +typedef struct ec_parameters_st ECPARAMETERS; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nist_method(void); + +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp521_method(void); +#endif /* OPENSSL_NO_EC_NISTP_64_GCC_128 */ + +#ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GF2m_simple_method(void); + +#endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** + * Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +OSSL_DEPRECATEDIN_3_0 EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +OSSL_DEPRECATEDIN_3_0 void EC_GROUP_clear_free(EC_GROUP *group); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +OSSL_DEPRECATEDIN_3_0 int EC_METHOD_get_field_type(const EC_METHOD *meth); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Sets the generator and its order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used montgomery data (possibly NULL). + */ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +/** Gets the field of an EC_GROUP + * \param group EC_GROUP object + * \return the group field + */ +const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group); + +/** Returns the field type of the EC_GROUP. + * \param group EC_GROUP object + * \return NID of the underlying field type OID. + */ +int EC_GROUP_get_field_type(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameters of an ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GFp(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GFp(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_EC2M +/** Sets the parameter of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GF2m(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); +#endif /* OPENSSL_NO_EC2M */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if the groups are equal, 1 if not, or -1 on error + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +#ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +#endif + +/** + * Creates a EC_GROUP object with a curve specified by parameters. + * The parameters may be explicit or a named curve, + * \param params A list of parameters describing the group. + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \return newly created EC_GROUP object with specified parameters or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[], + OSSL_LIB_CTX *libctx, const char *propq); + +/** + * Creates an OSSL_PARAM array with the parameters describing the given + * EC_GROUP. + * The resulting parameters may contain an explicit or a named curve depending + * on the EC_GROUP. + * \param group pointer to the EC_GROUP object + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param bnctx BN_CTX object (optional) + * \return newly created OSSL_PARAM array with the parameters + * describing the given EC_GROUP or NULL if an error occurred + */ +OSSL_PARAM *EC_GROUP_to_params(const EC_GROUP *group, OSSL_LIB_CTX *libctx, + const char *propq, BN_CTX *bnctx); + +/** + * Creates a EC_GROUP object with a curve specified by a NID + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name_ex(OSSL_LIB_CTX *libctx, const char *propq, + int nid); + +/** + * Creates a EC_GROUP object with a curve specified by a NID. Same as + * EC_GROUP_new_by_curve_name_ex but the libctx and propq are always + * NULL. + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r is not zero, + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); +int EC_GROUP_check_named_curve(const EC_GROUP *group, int nist_only, + BN_CTX *ctx); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the affine coordinates of an EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the x9.62 compressed coordinates of a EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +#ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Encodes an EC_POINT object to an allocated octet string + * \param group underlying EC_GROUP object + * \param point EC_POINT object + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 BIGNUM *EC_POINT_point2bn(const EC_GROUP *, + const EC_POINT *, + point_conversion_form_t form, + BIGNUM *, BN_CTX *); +OSSL_DEPRECATEDIN_3_0 EC_POINT *EC_POINT_bn2point(const EC_GROUP *, + const BIGNUM *, + EC_POINT *, BN_CTX *); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if the point is on the curve, 0 if not, or -1 on error + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 if the points are not equal, 0 if they are, or -1 on error + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_POINT_make_affine(const EC_GROUP *group, + EC_POINT *point, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n + sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number further summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, + const BIGNUM *n, size_t num, + const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_have_precompute_mult(const EC_GROUP *group); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +DECLARE_ASN1_ITEM(ECPKPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPKPARAMETERS) +DECLARE_ASN1_ITEM(ECPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +#ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +#endif + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +#define d2i_ECPKParameters_bio(bp, x) \ + ASN1_d2i_bio_of(EC_GROUP, NULL, d2i_ECPKParameters, bp, x) +#define i2d_ECPKParameters_bio(bp, x) \ + ASN1_i2d_bio_of(EC_GROUP, i2d_ECPKParameters, bp, x) +#define d2i_ECPKParameters_fp(fp, x) \ + (EC_GROUP *)ASN1_d2i_fp(NULL, (d2i_of_void *)d2i_ECPKParameters, (fp), \ + (void **)(x)) +#define i2d_ECPKParameters_fp(fp, x) \ + ASN1_i2d_fp((i2d_of_void *)i2d_ECPKParameters, (fp), (void *)(x)) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print(BIO *bp, const EC_GROUP *x, + int off); +#ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, + int off); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +/* some values for the encoding_flag */ +#define EC_PKEY_NO_PARAMETERS 0x001 +#define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +#define EC_FLAG_SM2_RANGE 0x0004 +#define EC_FLAG_COFACTOR_ECDH 0x1000 +#define EC_FLAG_CHECK_NAMED_GROUP 0x2000 +#define EC_FLAG_CHECK_NAMED_GROUP_NIST 0x4000 +#define EC_FLAG_CHECK_NAMED_GROUP_MASK \ + (EC_FLAG_CHECK_NAMED_GROUP | EC_FLAG_CHECK_NAMED_GROUP_NIST) + +/* Deprecated flags - it was using 0x01..0x02 */ +#define EC_FLAG_NON_FIPS_ALLOW 0x0000 +#define EC_FLAG_FIPS_CHECKED 0x0000 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** + * Creates a new EC_KEY object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_ex(OSSL_LIB_CTX *ctx, const char *propq); + +/** + * Creates a new EC_KEY object. Same as calling EC_KEY_new_ex with a + * NULL library context + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new(void); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_get_flags(const EC_KEY *key); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_clear_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \param propq Any property query string + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name_ex(OSSL_LIB_CTX *ctx, + const char *propq, + int nid); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. Same as calling EC_KEY_new_by_curve_name_ex with a NULL + * library context and property query string. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +OSSL_DEPRECATEDIN_3_0 void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +OSSL_DEPRECATEDIN_3_0 const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +OSSL_DEPRECATEDIN_3_0 unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +OSSL_DEPRECATEDIN_3_0 point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_conv_form(EC_KEY *eckey, + point_conversion_form_t cform); +#endif /*OPENSSL_NO_DEPRECATED_3_0 */ + +#define EC_KEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EC_KEY, l, p, newf, dupf, freef) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_check_key(const EC_KEY *key); + +/** Indicates if an EC_KEY can be used for signing. + * \param eckey the EC_KEY object + * \return 1 if can sign and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_can_sign(const EC_KEY *eckey); + +/** Sets a public key from affine coordinates performing + * necessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, + BIGNUM *x, + BIGNUM *y); + +/** Encodes an EC_KEY public key to an allocated octet string + * \param key key to encode + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_key2buf(const EC_KEY *key, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/** Decodes a EC_KEY public key from a octet string + * \param key key to decode + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, + size_t len, BN_CTX *ctx); + +/** Decodes an EC_KEY private key from an octet string + * \param key key to decode + * \param buf memory buffer with the encoded private key + * \param len length of the encoded key + * \return 1 on success and 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, + size_t len); + +/** Encodes a EC_KEY private key to an octet string + * \param key key to encode + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_priv2oct(const EC_KEY *key, + unsigned char *buf, size_t len); + +/** Encodes an EC_KEY private key to an allocated octet string + * \param eckey key to encode + * \param pbuf returns pointer to allocated buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_priv2buf(const EC_KEY *eckey, + unsigned char **pbuf); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey(EC_KEY **key, + const unsigned char **in, + long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey(const EC_KEY *key, + unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECParameters(EC_KEY **key, + const unsigned char **in, + long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec parameters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECParameters(const EC_KEY *key, + unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes an ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *o2i_ECPublicKey(EC_KEY **key, + const unsigned char **in, long len); + +/** Encodes an ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out); + +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +#ifndef OPENSSL_NO_STDIO +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); +#endif /* OPENSSL_NO_STDIO */ + +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +OSSL_DEPRECATEDIN_3_0 int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + const unsigned char *sinfo, + size_t sinfolen, const EVP_MD *md); + +OSSL_DEPRECATEDIN_3_0 int ECDH_compute_key(void *out, size_t outlen, + const EC_POINT *pub_key, + const EC_KEY *ecdh, + void *(*KDF)(const void *in, + size_t inlen, void *out, + size_t *outlen)); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +typedef struct ECDSA_SIG_st ECDSA_SIG; + +/** Allocates and initialize a ECDSA_SIG structure + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_SIG_new(void); + +/** frees a ECDSA_SIG structure + * \param sig pointer to the ECDSA_SIG structure + */ +void ECDSA_SIG_free(ECDSA_SIG *sig); + +/** i2d_ECDSA_SIG encodes content of ECDSA_SIG (note: this function modifies *pp + * (*pp += length of the DER encoded signature)). + * \param sig pointer to the ECDSA_SIG object + * \param pp pointer to a unsigned char pointer for the output or NULL + * \return the length of the DER encoded ECDSA_SIG object or a negative value + * on error + */ +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ECDSA_SIG, ECDSA_SIG) + +/** d2i_ECDSA_SIG decodes an ECDSA signature (note: this function modifies *pp + * (*pp += len)). + * \param sig pointer to ECDSA_SIG pointer (may be NULL) + * \param pp memory buffer with the DER encoded signature + * \param len length of the buffer + * \return pointer to the decoded ECDSA_SIG structure (or NULL) + */ + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r + * \param s pointer to BIGNUM for s + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Computes the ECDSA signature of the given hash value using + * the supplied private key and returns the created signature. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, + int dgst_len, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, + int dgstlen, const BIGNUM *kinv, + const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the supplied signature is a valid ECDSA + * signature of the supplied hash value using the supplied public key. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param sig ECDSA_SIG structure + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, + const ECDSA_SIG *sig, EC_KEY *eckey); + +/** Precompute parts of the signing operation + * \param eckey EC_KEY object containing a private EC key + * \param ctx BN_CTX object (optional) + * \param kinv BIGNUM pointer for the inverse of k + * \param rp BIGNUM pointer for x coordinate of k * generator + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, + BIGNUM **kinv, BIGNUM **rp); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig memory for the DER encoded created signature + * \param siglen pointer to the length of the returned signature + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign(int type, const unsigned char *dgst, + int dgstlen, unsigned char *sig, + unsigned int *siglen, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig buffer to hold the DER encoded signature + * \param siglen pointer to the length of the returned signature + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign_ex(int type, const unsigned char *dgst, + int dgstlen, unsigned char *sig, + unsigned int *siglen, const BIGNUM *kinv, + const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the given signature is valid ECDSA signature + * of the supplied hash value using the specified public key. + * \param type this parameter is ignored + * \param dgst pointer to the hash value + * \param dgstlen length of the hash value + * \param sig pointer to the DER encoded signature + * \param siglen length of the DER encoded signature + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_verify(int type, const unsigned char *dgst, + int dgstlen, const unsigned char *sig, + int siglen, EC_KEY *eckey); + +/** Returns the maximum length of the DER encoded signature + * \param eckey EC_KEY object + * \return numbers of bytes required for the DER encoded signature + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +OSSL_DEPRECATEDIN_3_0 EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, + int (*init)(EC_KEY *key), + void (*finish)(EC_KEY *key), + int (*copy)(EC_KEY *dest, const EC_KEY *src), + int (*set_group)(EC_KEY *key, const EC_GROUP *grp), + int (*set_private)(EC_KEY *key, const BIGNUM *priv_key), + int (*set_public)(EC_KEY *key, const EC_POINT *pub_key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, + int (*ckey)(unsigned char **psec, size_t *pseclen, + const EC_POINT *pub_key, const EC_KEY *ecdh)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, + int (*sign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, + int (*verify)(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (*verify_sig)(const unsigned char *dgst, + int dgst_len, const ECDSA_SIG *sig, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, const EC_POINT *pub_key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, int (**pkeygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +#define EVP_EC_gen(curve) \ + EVP_PKEY_Q_keygen(NULL, NULL, "EC", (char *)(strstr(curve, ""))) +/* strstr is used to enable type checking for the variadic string arg */ +#define ECParameters_dup(x) ASN1_dup_of(EC_KEY, i2d_ECParameters, \ + d2i_ECParameters, x) + +#ifndef __cplusplus +#if defined(__SUNPRO_C) +#if __SUNPRO_C >= 0x520 +#pragma error_messages(default, E_ARRAY_OF_INCOMPLETE_NONAME, E_ARRAY_OF_INCOMPLETE) +#endif +#endif +#endif + +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecdh.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecdh.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecdh.h @@ -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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecdsa.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecdsa.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecdsa.h @@ -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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecerr.h new file mode 100644 index 0000000..e4d26aa --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ecerr.h @@ -0,0 +1,102 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/encoder.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/encoder.h new file mode 100644 index 0000000..9138c07 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/encoder.h @@ -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 + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/encodererr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/encodererr.h new file mode 100644 index 0000000..e07174c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/encodererr.h @@ -0,0 +1,26 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/engine.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/engine.h new file mode 100644 index 0000000..73f6d86 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/engine.h @@ -0,0 +1,841 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ENGINE_H +#endif + +#include + +#ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include +#include +#include +#include +#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 is 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 */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/engineerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/engineerr.h new file mode 100644 index 0000000..7cdfb8a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/engineerr.h @@ -0,0 +1,61 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/err.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/err.h new file mode 100644 index 0000000..a15ac6a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/err.h @@ -0,0 +1,517 @@ +/* + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ERR_H +#define OPENSSL_ERR_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ERR_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#include +#endif + +#include +#include +#include +#include + +#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 +#include + +#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; + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) +#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) +#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +/* 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); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ess.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ess.h new file mode 100644 index 0000000..4758cf1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ess.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ess.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ESS_H +#define OPENSSL_ESS_H +#pragma once + +#include + +#include +#include +#include + +#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; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) +#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) +#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) +#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) +#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) +#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) +#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) + +/* clang-format on */ + +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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/esserr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/esserr.h new file mode 100644 index 0000000..4688129 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/esserr.h @@ -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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/evp.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/evp.h new file mode 100644 index 0000000..de6f503 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/evp.h @@ -0,0 +1,2290 @@ +/* + * Copyright 1995-2025 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_EVP_H +#define OPENSSL_EVP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ENVELOPE_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#define EVP_MAX_MD_SIZE 64 /* longest known is SHA512 */ +#define EVP_MAX_KEY_LENGTH 64 +#define EVP_MAX_IV_LENGTH 16 +#define EVP_MAX_BLOCK_LENGTH 32 +#define EVP_MAX_AEAD_TAG_LENGTH 16 + +/* Maximum pipes in cipher pipelining */ +#define EVP_MAX_PIPES 32 + +#define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +#define PKCS5_DEFAULT_ITER 2048 + +#include + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PK_RSA 0x0001 +#define EVP_PK_DSA 0x0002 +#define EVP_PK_DH 0x0004 +#define EVP_PK_EC 0x0008 +#define EVP_PKT_SIGN 0x0010 +#define EVP_PKT_ENC 0x0020 +#define EVP_PKT_EXCH 0x0040 +#define EVP_PKS_RSA 0x0100 +#define EVP_PKS_DSA 0x0200 +#define EVP_PKS_EC 0x0400 +#endif + +#define EVP_PKEY_NONE NID_undef +#define EVP_PKEY_RSA NID_rsaEncryption +#define EVP_PKEY_RSA2 NID_rsa +#define EVP_PKEY_RSA_PSS NID_rsassaPss +#define EVP_PKEY_DSA NID_dsa +#define EVP_PKEY_DSA1 NID_dsa_2 +#define EVP_PKEY_DSA2 NID_dsaWithSHA +#define EVP_PKEY_DSA3 NID_dsaWithSHA1 +#define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +#define EVP_PKEY_DH NID_dhKeyAgreement +#define EVP_PKEY_DHX NID_dhpublicnumber +#define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +#define EVP_PKEY_SM2 NID_sm2 +#define EVP_PKEY_HMAC NID_hmac +#define EVP_PKEY_CMAC NID_cmac +#define EVP_PKEY_SCRYPT NID_id_scrypt +#define EVP_PKEY_TLS1_PRF NID_tls1_prf +#define EVP_PKEY_HKDF NID_hkdf +#define EVP_PKEY_POLY1305 NID_poly1305 +#define EVP_PKEY_SIPHASH NID_siphash +#define EVP_PKEY_X25519 NID_X25519 +#define EVP_PKEY_ED25519 NID_ED25519 +#define EVP_PKEY_X448 NID_X448 +#define EVP_PKEY_ED448 NID_ED448 +#define EVP_PKEY_ML_DSA_44 NID_ML_DSA_44 +#define EVP_PKEY_ML_DSA_65 NID_ML_DSA_65 +#define EVP_PKEY_ML_DSA_87 NID_ML_DSA_87 +#define EVP_PKEY_SLH_DSA_SHA2_128S NID_SLH_DSA_SHA2_128s +#define EVP_PKEY_SLH_DSA_SHA2_128F NID_SLH_DSA_SHA2_128f +#define EVP_PKEY_SLH_DSA_SHA2_192S NID_SLH_DSA_SHA2_192s +#define EVP_PKEY_SLH_DSA_SHA2_192F NID_SLH_DSA_SHA2_192f +#define EVP_PKEY_SLH_DSA_SHA2_256S NID_SLH_DSA_SHA2_256s +#define EVP_PKEY_SLH_DSA_SHA2_256F NID_SLH_DSA_SHA2_256f +#define EVP_PKEY_SLH_DSA_SHAKE_128S NID_SLH_DSA_SHAKE_128s +#define EVP_PKEY_SLH_DSA_SHAKE_128F NID_SLH_DSA_SHAKE_128f +#define EVP_PKEY_SLH_DSA_SHAKE_192S NID_SLH_DSA_SHAKE_192s +#define EVP_PKEY_SLH_DSA_SHAKE_192F NID_SLH_DSA_SHAKE_192f +#define EVP_PKEY_SLH_DSA_SHAKE_256S NID_SLH_DSA_SHAKE_256s +#define EVP_PKEY_SLH_DSA_SHAKE_256F NID_SLH_DSA_SHAKE_256f + +/* Special indicator that the object is uniquely provider side */ +#define EVP_PKEY_KEYMGMT -1 + +/* Easy to use macros for EVP_PKEY related selections */ +#define EVP_PKEY_KEY_PARAMETERS \ + (OSSL_KEYMGMT_SELECT_ALL_PARAMETERS) +#define EVP_PKEY_PRIVATE_KEY \ + (EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PRIVATE_KEY) +#define EVP_PKEY_PUBLIC_KEY \ + (EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PUBLIC_KEY) +#define EVP_PKEY_KEYPAIR \ + (EVP_PKEY_PUBLIC_KEY | OSSL_KEYMGMT_SELECT_PRIVATE_KEY) + +#ifdef __cplusplus +extern "C" { +#endif + +int EVP_set_default_properties(OSSL_LIB_CTX *libctx, const char *propq); +char *EVP_get1_default_properties(OSSL_LIB_CTX *libctx); +int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx); +int EVP_default_properties_enable_fips(OSSL_LIB_CTX *libctx, int enable); + +#define EVP_PKEY_MO_SIGN 0x0001 +#define EVP_PKEY_MO_VERIFY 0x0002 +#define EVP_PKEY_MO_ENCRYPT 0x0004 +#define EVP_PKEY_MO_DECRYPT 0x0008 + +#ifndef EVP_MD +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 void EVP_MD_meth_free(EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, const void *data, size_t count)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, unsigned char *md)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, const EVP_MD_CTX *from)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, int p1, void *p2)); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_result_size(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); +#endif +/* digest can only handle a single block */ +#define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +#define EVP_MD_FLAG_XOF 0x0002 + +/* DigestAlgorithmIdentifier flags... */ + +#define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +#define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +#define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +#define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +#define EVP_MD_CTRL_DIGALGID 0x1 +#define EVP_MD_CTRL_MICALG 0x2 +#define EVP_MD_CTRL_XOF_LEN 0x3 +#define EVP_MD_CTRL_TLSTREE 0x4 + +/* Minimum Algorithm specific ctrl value */ + +#define EVP_MD_CTRL_ALG_CTRL 0x1000 + +#endif /* !EVP_MD */ + +/* values for EVP_MD_CTX flags */ + +#define EVP_MD_CTX_FLAG_ONESHOT 0x0001 /* digest update will be \ + * called once only */ +#define EVP_MD_CTX_FLAG_CLEANED 0x0002 /* context has already been \ + * cleaned */ +#define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data \ + * in EVP_MD_CTX_reset */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +/* This flag has no effect from openssl-3.0 onwards */ +#define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +#define EVP_MD_CTX_FLAG_PAD_MASK 0xF0 /* RSA mode to use */ +#define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00 /* PKCS#1 v1.5 mode */ +#define EVP_MD_CTX_FLAG_PAD_X931 0x10 /* X9.31 mode */ +#define EVP_MD_CTX_FLAG_PAD_PSS 0x20 /* PSS mode */ + +#define EVP_MD_CTX_FLAG_NO_INIT 0x0100 /* Don't initialize md_data */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +#define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 and 0x0800 are reserved for internal usage */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, + int (*init)(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, + int (*do_cipher)(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup)(EVP_CIPHER_CTX *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters)(EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters)(EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl)(EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, int type, + int arg, void *ptr); +#endif + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +#define EVP_CIPH_STREAM_CIPHER 0x0 +#define EVP_CIPH_ECB_MODE 0x1 +#define EVP_CIPH_CBC_MODE 0x2 +#define EVP_CIPH_CFB_MODE 0x3 +#define EVP_CIPH_OFB_MODE 0x4 +#define EVP_CIPH_CTR_MODE 0x5 +#define EVP_CIPH_GCM_MODE 0x6 +#define EVP_CIPH_CCM_MODE 0x7 +#define EVP_CIPH_XTS_MODE 0x10001 +#define EVP_CIPH_WRAP_MODE 0x10002 +#define EVP_CIPH_OCB_MODE 0x10003 +#define EVP_CIPH_SIV_MODE 0x10004 +#define EVP_CIPH_GCM_SIV_MODE 0x10005 +#define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +#define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +#define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +#define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +#define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +#define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +#define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +#define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +#define EVP_CIPH_CUSTOM_COPY 0x400 +/* Don't use standard iv length function */ +#define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* Legacy and no longer relevant: Allow use default ASN1 get/set iv */ +#define EVP_CIPH_FLAG_DEFAULT_ASN1 0 +/* Free: 0x1000 */ +/* Buffer length in bits not bytes: CFB1 mode only */ +#define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Deprecated FIPS flag: was 0x4000 */ +#define EVP_CIPH_FLAG_FIPS 0 +/* Deprecated FIPS flag: was 0x8000 */ +#define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0 + +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +#define EVP_CIPH_FLAG_CTS 0x4000 +#define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +#define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +#define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 +/* Cipher can handle pipeline operations */ +#define EVP_CIPH_FLAG_PIPELINE 0X800000 +/* For provider implementations that handle ASN1 get/set param themselves */ +#define EVP_CIPH_FLAG_CUSTOM_ASN1 0x1000000 +/* For ciphers generating unprotected CMS attributes */ +#define EVP_CIPH_FLAG_CIPHER_WITH_MAC 0x2000000 +/* For supplementary wrap cipher support */ +#define EVP_CIPH_FLAG_GET_WRAP_CIPHER 0x4000000 +#define EVP_CIPH_FLAG_INVERSE_CIPHER 0x8000000 +#define EVP_CIPH_FLAG_ENC_THEN_MAC 0x10000000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +#define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +#define EVP_CTRL_INIT 0x0 +#define EVP_CTRL_SET_KEY_LENGTH 0x1 +#define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +#define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +#define EVP_CTRL_GET_RC5_ROUNDS 0x4 +#define EVP_CTRL_SET_RC5_ROUNDS 0x5 +#define EVP_CTRL_RAND_KEY 0x6 +#define EVP_CTRL_PBE_PRF_NID 0x7 +#define EVP_CTRL_COPY 0x8 +#define EVP_CTRL_AEAD_SET_IVLEN 0x9 +#define EVP_CTRL_AEAD_GET_TAG 0x10 +#define EVP_CTRL_AEAD_SET_TAG 0x11 +#define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +#define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +#define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +#define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +#define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +#define EVP_CTRL_GCM_IV_GEN 0x13 +#define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +#define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +#define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +#define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +#define EVP_CTRL_CCM_SET_L 0x14 +#define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +#define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +#define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +#define EVP_CTRL_GCM_SET_IV_INV 0x18 + +#define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +#define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +#define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +#define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +#define EVP_CTRL_SSL3_MASTER_SECRET 0x1d + +/* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ +#define EVP_CTRL_SET_SBOX 0x1e +/* + * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a + * pre-allocated buffer with specified size + */ +#define EVP_CTRL_SBOX_USED 0x1f +/* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, + * 0 switches meshing off + */ +#define EVP_CTRL_KEY_MESH 0x20 +/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ +#define EVP_CTRL_BLOCK_PADDING_MODE 0x21 + +/* Set the output buffers to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 +/* Set the input buffers to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 +/* Set the input buffer lengths to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 +/* Get the IV length used by the cipher */ +#define EVP_CTRL_GET_IVLEN 0x25 +/* 0x26 is unused */ +/* Tell the cipher it's doing a speed test (SIV disallows multiple ops) */ +#define EVP_CTRL_SET_SPEED 0x27 +/* Get the unprotectedAttrs from cipher ctx */ +#define EVP_CTRL_PROCESS_UNPROTECTED 0x28 +/* Get the supplementary wrap cipher */ +#define EVP_CTRL_GET_WRAP_CIPHER 0x29 +/* TLSTREE key diversification */ +#define EVP_CTRL_TLSTREE 0x2A + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +#define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +#define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +#define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +#define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +#define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +#define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +#define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +#define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +#define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +#define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + +/* Password based encryption function */ +typedef int(EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +typedef int(EVP_PBE_KEYGEN_EX)(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de, OSSL_LIB_CTX *libctx, const char *propq); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PKEY_assign_RSA(pkey, rsa) EVP_PKEY_assign((pkey), EVP_PKEY_RSA, \ + (rsa)) +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_6 +#ifndef OPENSSL_NO_DSA +#define EVP_PKEY_assign_DSA(pkey, dsa) EVP_PKEY_assign((pkey), EVP_PKEY_DSA, \ + (dsa)) +#endif +#endif + +#if !defined(OPENSSL_NO_DH) && !defined(OPENSSL_NO_DEPRECATED_3_0) +#define EVP_PKEY_assign_DH(pkey, dh) EVP_PKEY_assign((pkey), EVP_PKEY_DH, (dh)) +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +#define EVP_PKEY_assign_EC_KEY(pkey, eckey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_EC, \ + (eckey)) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_6 +#ifndef OPENSSL_NO_SIPHASH +#define EVP_PKEY_assign_SIPHASH(pkey, shkey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_SIPHASH, \ + (shkey)) +#endif + +#ifndef OPENSSL_NO_POLY1305 +#define EVP_PKEY_assign_POLY1305(pkey, polykey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_POLY1305, \ + (polykey)) +#endif +#endif + +/* Add some extra combinations */ +#define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +#define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +#define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +#define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_get_type(const EVP_MD *md); +#define EVP_MD_type EVP_MD_get_type +#define EVP_MD_nid EVP_MD_get_type +const char *EVP_MD_get0_name(const EVP_MD *md); +#define EVP_MD_name EVP_MD_get0_name +const char *EVP_MD_get0_description(const EVP_MD *md); +int EVP_MD_is_a(const EVP_MD *md, const char *name); +int EVP_MD_names_do_all(const EVP_MD *md, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_MD_get0_provider(const EVP_MD *md); +int EVP_MD_get_pkey_type(const EVP_MD *md); +#define EVP_MD_pkey_type EVP_MD_get_pkey_type +int EVP_MD_get_size(const EVP_MD *md); +#define EVP_MD_size EVP_MD_get_size +int EVP_MD_get_block_size(const EVP_MD *md); +#define EVP_MD_block_size EVP_MD_get_block_size +unsigned long EVP_MD_get_flags(const EVP_MD *md); +#define EVP_MD_flags EVP_MD_get_flags +int EVP_MD_xof(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_get0_md(const EVP_MD_CTX *ctx); +EVP_MD *EVP_MD_CTX_get1_md(EVP_MD_CTX *ctx); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update)(EVP_MD_CTX *ctx, + const void *data, size_t count)); +#endif +int EVP_MD_CTX_get_size_ex(const EVP_MD_CTX *ctx); + +#define EVP_MD_CTX_get0_name(e) EVP_MD_get0_name(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_get_size(e) EVP_MD_CTX_get_size_ex(e) +#define EVP_MD_CTX_size EVP_MD_CTX_get_size_ex +#define EVP_MD_CTX_get_block_size(e) EVP_MD_get_block_size(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_block_size EVP_MD_CTX_get_block_size +#define EVP_MD_CTX_get_type(e) EVP_MD_get_type(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_type EVP_MD_CTX_get_type +EVP_PKEY_CTX *EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX *ctx); +#define EVP_MD_CTX_pkey_ctx EVP_MD_CTX_get_pkey_ctx +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_get0_md_data(const EVP_MD_CTX *ctx); +#define EVP_MD_CTX_md_data EVP_MD_CTX_get0_md_data + +int EVP_CIPHER_get_nid(const EVP_CIPHER *cipher); +#define EVP_CIPHER_nid EVP_CIPHER_get_nid +const char *EVP_CIPHER_get0_name(const EVP_CIPHER *cipher); +#define EVP_CIPHER_name EVP_CIPHER_get0_name +const char *EVP_CIPHER_get0_description(const EVP_CIPHER *cipher); +int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name); +int EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_CIPHER_get0_provider(const EVP_CIPHER *cipher); +int EVP_CIPHER_get_block_size(const EVP_CIPHER *cipher); +#define EVP_CIPHER_block_size EVP_CIPHER_get_block_size +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +#endif +int EVP_CIPHER_get_key_length(const EVP_CIPHER *cipher); +#define EVP_CIPHER_key_length EVP_CIPHER_get_key_length +int EVP_CIPHER_get_iv_length(const EVP_CIPHER *cipher); +#define EVP_CIPHER_iv_length EVP_CIPHER_get_iv_length +unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER *cipher); +#define EVP_CIPHER_flags EVP_CIPHER_get_flags +int EVP_CIPHER_get_mode(const EVP_CIPHER *cipher); +#define EVP_CIPHER_mode EVP_CIPHER_get_mode +int EVP_CIPHER_get_type(const EVP_CIPHER *cipher); +#define EVP_CIPHER_type EVP_CIPHER_get_type +EVP_CIPHER *EVP_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_CIPHER_can_pipeline(const EVP_CIPHER *cipher, int enc); +int EVP_CIPHER_up_ref(EVP_CIPHER *cipher); +void EVP_CIPHER_free(EVP_CIPHER *cipher); + +const EVP_CIPHER *EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX *ctx); +EVP_CIPHER *EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_encrypting EVP_CIPHER_CTX_is_encrypting +int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_nid EVP_CIPHER_CTX_get_nid +int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_block_size EVP_CIPHER_CTX_get_block_size +int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_key_length EVP_CIPHER_CTX_get_key_length +int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_iv_length EVP_CIPHER_CTX_get_iv_length +int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_tag_length EVP_CIPHER_CTX_get_tag_length +#ifndef OPENSSL_NO_DEPRECATED_3_0 +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +#endif +int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +#endif +int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_num EVP_CIPHER_CTX_get_num +int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +EVP_CIPHER_CTX *EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX *in); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); +void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); +#define EVP_CIPHER_CTX_get0_name(c) EVP_CIPHER_get0_name(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_get_type(c) EVP_CIPHER_get_type(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_type EVP_CIPHER_CTX_get_type +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(c)) +#endif +#define EVP_CIPHER_CTX_get_mode(c) EVP_CIPHER_get_mode(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_mode EVP_CIPHER_CTX_get_mode + +#define EVP_ENCODE_LENGTH(l) ((((l) + 2) / 3 * 4) + ((l) / 48 + 1) * 2 + 80) +#define EVP_DECODE_LENGTH(l) (((l) + 3) / 4 * 3 + 80) + +#define EVP_SignInit_ex(a, b, c) EVP_DigestInit_ex(a, b, c) +#define EVP_SignInit(a, b) EVP_DigestInit(a, b) +#define EVP_SignUpdate(a, b, c) EVP_DigestUpdate(a, b, c) +#define EVP_VerifyInit_ex(a, b, c) EVP_DigestInit_ex(a, b, c) +#define EVP_VerifyInit(a, b) EVP_DigestInit(a, b) +#define EVP_VerifyUpdate(a, b, c) EVP_DigestUpdate(a, b, c) +#define EVP_OpenUpdate(a, b, c, d, e) EVP_DecryptUpdate(a, b, c, d, e) +#define EVP_SealUpdate(a, b, c, d, e) EVP_EncryptUpdate(a, b, c, d, e) + +#ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +#else +#define BIO_set_md(b, md) BIO_ctrl(b, BIO_C_SET_MD, 0, (void *)(md)) +#endif +#define BIO_get_md(b, mdp) BIO_ctrl(b, BIO_C_GET_MD, 0, (mdp)) +#define BIO_get_md_ctx(b, mdcp) BIO_ctrl(b, BIO_C_GET_MD_CTX, 0, (mdcp)) +#define BIO_set_md_ctx(b, mdcp) BIO_ctrl(b, BIO_C_SET_MD_CTX, 0, (mdcp)) +#define BIO_get_cipher_status(b) BIO_ctrl(b, BIO_C_GET_CIPHER_STATUS, 0, NULL) +#define BIO_get_cipher_ctx(b, c_pp) BIO_ctrl(b, BIO_C_GET_CIPHER_CTX, 0, (c_pp)) + +__owur int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, + const unsigned char *in, unsigned int inl); + +#define EVP_add_cipher_alias(n, alias) \ + OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n)) +#define EVP_add_digest_alias(n, alias) \ + OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n)) +#define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias, OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS); +#define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias, OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS); + +int EVP_MD_get_params(const EVP_MD *digest, OSSL_PARAM params[]); +int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[]); +int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest); +const OSSL_PARAM *EVP_MD_settable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_gettable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_CTX_settable_params(EVP_MD_CTX *ctx); +const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx); +int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +EVP_MD_CTX *EVP_MD_CTX_new(void); +int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); +#define EVP_MD_CTX_create() EVP_MD_CTX_new() +#define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) +#define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) +__owur EVP_MD_CTX *EVP_MD_CTX_dup(const EVP_MD_CTX *in); +__owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +__owur int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type, + const OSSL_PARAM params[]); +__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, + ENGINE *impl); +__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, + size_t cnt); +__owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, + const EVP_MD *type, ENGINE *impl); +__owur int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name, + const char *propq, const void *data, size_t datalen, + unsigned char *md, size_t *mdlen); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *out, + size_t outlen); +__owur int EVP_DigestSqueeze(EVP_MD_CTX *ctx, unsigned char *out, + size_t outlen); + +__owur EVP_MD *EVP_MD_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); + +int EVP_MD_up_ref(EVP_MD *md); +void EVP_MD_free(EVP_MD *md); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +__owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, + const unsigned char *data, int datal, int count, + unsigned char *key, unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +__owur int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +__owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +__owur int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); +__owur int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); + +__owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +__owur int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +__owur int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +__owur int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +__owur int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv, int enc); +__owur int EVP_CipherInit_SKEY(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + EVP_SKEY *skey, const unsigned char *iv, size_t iv_len, + int enc, const OSSL_PARAM params[]); +__owur int EVP_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc, const OSSL_PARAM params[]); +__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_CipherPipelineEncryptInit(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, + const unsigned char *key, size_t keylen, + size_t numpipes, + const unsigned char **iv, size_t ivlen); +__owur int EVP_CipherPipelineDecryptInit(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, + const unsigned char *key, size_t keylen, + size_t numpipes, + const unsigned char **iv, size_t ivlen); +__owur int EVP_CipherPipelineUpdate(EVP_CIPHER_CTX *ctx, + unsigned char **out, size_t *outl, + const size_t *outsize, + const unsigned char **in, const size_t *inl); +__owur int EVP_CipherPipelineFinal(EVP_CIPHER_CTX *ctx, + unsigned char **outm, size_t *outl, + const size_t *outsize); +__owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); +__owur int EVP_SignFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *propq); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); +__owur int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey, + OSSL_LIB_CTX *libctx, const char *propq); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +__owur int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +__owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, + const unsigned char *iv, EVP_PKEY *priv); +__owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +__owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +__owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, const EVP_ENCODE_CTX *sctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) +#define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) +#endif +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); +int EVP_CIPHER_get_params(EVP_CIPHER *cipher, OSSL_PARAM params[]); +int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX *ctx, const OSSL_PARAM params[]); +int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_CIPHER_gettable_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_settable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX *ctx); +const OSSL_PARAM *EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX *ctx); + +int EVP_CIPHER_CTX_set_algor_params(EVP_CIPHER_CTX *ctx, const X509_ALGOR *alg); +int EVP_CIPHER_CTX_get_algor_params(EVP_CIPHER_CTX *ctx, X509_ALGOR *alg); +int EVP_CIPHER_CTX_get_algor(EVP_CIPHER_CTX *ctx, X509_ALGOR **alg); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +const EVP_MD *EVP_md_null(void); +#ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +#endif +#ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +#endif +#ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +const EVP_MD *EVP_md5_sha1(void); +#endif +#ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +#endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); + +#ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +#endif +#ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +#endif +#ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +#endif +#ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(void); +#endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +#ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +#define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +#define EVP_des_ede_cfb EVP_des_ede_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +#define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +#endif +#ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +#ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +#endif +#endif +#ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +#define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +#endif +#ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +#define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +#endif +#ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +#define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +#endif +#ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +#define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +#endif +#ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +#define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +#endif +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +#define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_128_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +#define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_192_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +#define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +#ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +#define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +#define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +#define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +#endif +#ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +#define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_128_ctr(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +#define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ctr(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +#define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +#endif +#ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +#ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +#endif +#endif + +#ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +#define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +#endif + +#ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +#define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, \ + NULL) +#define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, \ + NULL) + +#ifdef OPENSSL_LOAD_CONF +#define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() +#else +#define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() +#endif + +#define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +#define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +#define EVP_cleanup() \ + while (0) \ + continue +#endif + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); + +void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_CIPHER *cipher, void *arg), + void *arg); + +void EVP_MD_do_all(void (*fn)(const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *ciph, const char *from, + const char *to, void *x), + void *arg); +void EVP_MD_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MD *md, void *arg), + void *arg); + +/* MAC stuff */ + +EVP_MAC *EVP_MAC_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_MAC_up_ref(EVP_MAC *mac); +void EVP_MAC_free(EVP_MAC *mac); +const char *EVP_MAC_get0_name(const EVP_MAC *mac); +const char *EVP_MAC_get0_description(const EVP_MAC *mac); +int EVP_MAC_is_a(const EVP_MAC *mac, const char *name); +const OSSL_PROVIDER *EVP_MAC_get0_provider(const EVP_MAC *mac); +int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]); + +EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac); +void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx); +EVP_MAC_CTX *EVP_MAC_CTX_dup(const EVP_MAC_CTX *src); +EVP_MAC *EVP_MAC_CTX_get0_mac(EVP_MAC_CTX *ctx); +int EVP_MAC_CTX_get_params(EVP_MAC_CTX *ctx, OSSL_PARAM params[]); +int EVP_MAC_CTX_set_params(EVP_MAC_CTX *ctx, const OSSL_PARAM params[]); + +size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX *ctx); +size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX *ctx); +unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *propq, + const char *subalg, const OSSL_PARAM *params, + const void *key, size_t keylen, + const unsigned char *data, size_t datalen, + unsigned char *out, size_t outsize, size_t *outlen); +int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_MAC_init_SKEY(EVP_MAC_CTX *ctx, EVP_SKEY *skey, const OSSL_PARAM params[]); +int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen); +int EVP_MAC_final(EVP_MAC_CTX *ctx, + unsigned char *out, size_t *outl, size_t outsize); +int EVP_MAC_finalXOF(EVP_MAC_CTX *ctx, unsigned char *out, size_t outsize); +const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_gettable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_settable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_CTX_gettable_params(EVP_MAC_CTX *ctx); +const OSSL_PARAM *EVP_MAC_CTX_settable_params(EVP_MAC_CTX *ctx); + +void EVP_MAC_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MAC *mac, void *arg), + void *arg); +int EVP_MAC_names_do_all(const EVP_MAC *mac, + void (*fn)(const char *name, void *data), + void *data); + +/* RAND stuff */ +EVP_RAND *EVP_RAND_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_RAND_up_ref(EVP_RAND *rand); +void EVP_RAND_free(EVP_RAND *rand); +const char *EVP_RAND_get0_name(const EVP_RAND *rand); +const char *EVP_RAND_get0_description(const EVP_RAND *md); +int EVP_RAND_is_a(const EVP_RAND *rand, const char *name); +const OSSL_PROVIDER *EVP_RAND_get0_provider(const EVP_RAND *rand); +int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[]); + +EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent); +int EVP_RAND_CTX_up_ref(EVP_RAND_CTX *ctx); +void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx); +EVP_RAND *EVP_RAND_CTX_get0_rand(EVP_RAND_CTX *ctx); +int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[]); +int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx); +const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx); + +void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_RAND *rand, void *arg), + void *arg); +int EVP_RAND_names_do_all(const EVP_RAND *rand, + void (*fn)(const char *name, void *data), + void *data); + +__owur int EVP_RAND_instantiate(EVP_RAND_CTX *ctx, unsigned int strength, + int prediction_resistance, + const unsigned char *pstr, size_t pstr_len, + const OSSL_PARAM params[]); +int EVP_RAND_uninstantiate(EVP_RAND_CTX *ctx); +__owur int EVP_RAND_generate(EVP_RAND_CTX *ctx, unsigned char *out, + size_t outlen, unsigned int strength, + int prediction_resistance, + const unsigned char *addin, size_t addin_len); +int EVP_RAND_reseed(EVP_RAND_CTX *ctx, int prediction_resistance, + const unsigned char *ent, size_t ent_len, + const unsigned char *addin, size_t addin_len); +__owur int EVP_RAND_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen); +__owur int EVP_RAND_enable_locking(EVP_RAND_CTX *ctx); + +int EVP_RAND_verify_zeroization(EVP_RAND_CTX *ctx); +unsigned int EVP_RAND_get_strength(EVP_RAND_CTX *ctx); +int EVP_RAND_get_state(EVP_RAND_CTX *ctx); + +#define EVP_RAND_STATE_UNINITIALISED 0 +#define EVP_RAND_STATE_READY 1 +#define EVP_RAND_STATE_ERROR 2 + +/* PKEY stuff */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, + int enc_key_len, + EVP_PKEY *private_key); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, + int key_len, EVP_PKEY *pub_key); +#endif +int EVP_PKEY_is_a(const EVP_PKEY *pkey, const char *name); +int EVP_PKEY_type_names_do_all(const EVP_PKEY *pkey, + void (*fn)(const char *name, void *data), + void *data); +int EVP_PKEY_type(int type); +int EVP_PKEY_get_id(const EVP_PKEY *pkey); +#define EVP_PKEY_id EVP_PKEY_get_id +int EVP_PKEY_get_base_id(const EVP_PKEY *pkey); +#define EVP_PKEY_base_id EVP_PKEY_get_base_id +int EVP_PKEY_get_bits(const EVP_PKEY *pkey); +#define EVP_PKEY_bits EVP_PKEY_get_bits +int EVP_PKEY_get_security_bits(const EVP_PKEY *pkey); +#define EVP_PKEY_security_bits EVP_PKEY_get_security_bits +int EVP_PKEY_get_security_category(const EVP_PKEY *pkey); +int EVP_PKEY_get_size(const EVP_PKEY *pkey); +#define EVP_PKEY_size EVP_PKEY_get_size +int EVP_PKEY_can_sign(const EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY *pkey, EVP_KEYMGMT *keymgmt); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +#endif +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +OSSL_DEPRECATEDIN_3_0 +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +#ifndef OPENSSL_NO_POLY1305 +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +#endif +#ifndef OPENSSL_NO_SIPHASH +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +#endif + +struct rsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); + +#ifndef OPENSSL_NO_DSA +struct dsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct dsa_st *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +#endif + +#ifndef OPENSSL_NO_DH +struct dh_st; +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +OSSL_DEPRECATEDIN_3_0 const struct dh_st *EVP_PKEY_get0_DH(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +#endif + +#ifndef OPENSSL_NO_EC +struct ec_key_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct ec_key_st *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); +const char *EVP_PKEY_get0_description(const EVP_PKEY *pkey); +const OSSL_PROVIDER *EVP_PKEY_get0_provider(const EVP_PKEY *key); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey_ex(int type, EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey_ex(EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(const EVP_PKEY *a, unsigned char **pp); +int i2d_PKCS8PrivateKey(const EVP_PKEY *a, unsigned char **pp); + +int i2d_KeyParams(const EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_KeyParams(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_KeyParams_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_KeyParams_bio(int type, EVP_PKEY **a, BIO *in); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b); +int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); +#endif + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +#ifndef OPENSSL_NO_STDIO +int EVP_PKEY_print_public_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +#endif + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); +int EVP_PKEY_get_default_digest_name(EVP_PKEY *pkey, + char *mdname, size_t mdname_sz); +int EVP_PKEY_digestsign_supports_digest(EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *name, const char *propq); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_set1_encoded_public_key in + * preference + */ +#define EVP_PKEY_set1_tls_encodedpoint(pkey, pt, ptlen) \ + EVP_PKEY_set1_encoded_public_key((pkey), (pt), (ptlen)) +#endif + +int EVP_PKEY_set1_encoded_public_key(EVP_PKEY *pkey, + const unsigned char *pub, size_t publen); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_get1_encoded_public_key in + * preference + */ +#define EVP_PKEY_get1_tls_encodedpoint(pkey, ppt) \ + EVP_PKEY_get1_encoded_public_key((pkey), (ppt)) +#endif + +size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY *pkey, unsigned char **ppub); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +#ifndef OPENSSL_NO_SCRYPT +int EVP_PBE_scrypt(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); +int EVP_PBE_scrypt_ex(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de); +int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +#endif + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +int EVP_PBE_CipherInit_ex(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +#define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +#define EVP_PBE_TYPE_PRF 0x1 +/* Is a PKCS#5 v2.0 KDF */ +#define EVP_PBE_TYPE_KDF 0x2 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +int EVP_PBE_find_ex(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen, EVP_PBE_KEYGEN_EX **pkeygen_ex); +void EVP_PBE_cleanup(void); +int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); + +#define ASN1_PKEY_ALIAS 0x1 +#define ASN1_PKEY_DYNAMIC 0x2 +#define ASN1_PKEY_SIGPARAM_NULL 0x4 + +#define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +#define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +#define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +#define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +#define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +#define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +#define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 +#define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa +#define ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED 0xb + +#ifndef OPENSSL_NO_DEPRECATED_3_6 +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_get_count(void); +OSSL_DEPRECATEDIN_3_6 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +OSSL_DEPRECATEDIN_3_6 +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +OSSL_DEPRECATEDIN_3_6 +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_add_alias(int to, int from); +OSSL_DEPRECATEDIN_3_6 +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +OSSL_DEPRECATEDIN_3_6 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_6 EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +OSSL_DEPRECATEDIN_3_6 void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +OSSL_DEPRECATEDIN_3_6 void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode)(EVP_PKEY *pk, + const X509_PUBKEY *pub), + int (*pub_encode)(X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp)(const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size)(const EVP_PKEY *pk), + int (*pkey_bits)(const EVP_PKEY *pk)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode)(EVP_PKEY *pk, + const PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode)(PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode)(EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode)(const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing)(const EVP_PKEY *pk), + int (*param_copy)(EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp)(const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl)(EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify)(EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + const void *data, + const X509_ALGOR *a, + const ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign)(EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + const void *data, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set)(X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key)(EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key)(EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key)(const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key)(const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits)(const EVP_PKEY + *pk)); +#endif /* OPENSSL_NO_DEPRECATED_3_6 */ + +int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, const void *id, int len); +int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id); +int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len); + +int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX *ctx, const char *op); + +const char *EVP_PKEY_get0_type_name(const EVP_PKEY *key); + +#define EVP_PKEY_OP_UNDEFINED 0 +#define EVP_PKEY_OP_PARAMGEN (1 << 1) +#define EVP_PKEY_OP_KEYGEN (1 << 2) +#define EVP_PKEY_OP_FROMDATA (1 << 3) +#define EVP_PKEY_OP_SIGN (1 << 4) +#define EVP_PKEY_OP_VERIFY (1 << 5) +#define EVP_PKEY_OP_VERIFYRECOVER (1 << 6) +#define EVP_PKEY_OP_SIGNCTX (1 << 7) +#define EVP_PKEY_OP_VERIFYCTX (1 << 8) +#define EVP_PKEY_OP_ENCRYPT (1 << 9) +#define EVP_PKEY_OP_DECRYPT (1 << 10) +#define EVP_PKEY_OP_DERIVE (1 << 11) +#define EVP_PKEY_OP_ENCAPSULATE (1 << 12) +#define EVP_PKEY_OP_DECAPSULATE (1 << 13) +#define EVP_PKEY_OP_SIGNMSG (1 << 14) +#define EVP_PKEY_OP_VERIFYMSG (1 << 15) +/* Update the following when adding new EVP_PKEY_OPs */ +#define EVP_PKEY_OP_ALL ((1 << 16) - 1) + +#define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG \ + | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \ + | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +#define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +#define EVP_PKEY_OP_TYPE_DERIVE \ + (EVP_PKEY_OP_DERIVE) + +#define EVP_PKEY_OP_TYPE_DATA \ + (EVP_PKEY_OP_FROMDATA) + +#define EVP_PKEY_OP_TYPE_KEM \ + (EVP_PKEY_OP_ENCAPSULATE | EVP_PKEY_OP_DECAPSULATE) + +#define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +#define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_ALL & ~EVP_PKEY_OP_TYPE_GEN) + +int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key, + int keylen); + +#define EVP_PKEY_CTRL_MD 1 +#define EVP_PKEY_CTRL_PEER_KEY 2 +#define EVP_PKEY_CTRL_SET_MAC_KEY 6 +#define EVP_PKEY_CTRL_DIGESTINIT 7 +/* Used by GOST key encryption in TLS */ +#define EVP_PKEY_CTRL_SET_IV 8 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +#define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 +#define EVP_PKEY_CTRL_PKCS7_SIGN 5 +#define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +#define EVP_PKEY_CTRL_CMS_DECRYPT 10 +#define EVP_PKEY_CTRL_CMS_SIGN 11 +#endif +#define EVP_PKEY_CTRL_CIPHER 12 +#define EVP_PKEY_CTRL_GET_MD 13 +#define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 +#define EVP_PKEY_CTRL_SET1_ID 15 +#define EVP_PKEY_CTRL_GET1_ID 16 +#define EVP_PKEY_CTRL_GET1_ID_LEN 17 + +#define EVP_PKEY_ALG_CTRL 0x1000 + +#define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +#define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +OSSL_DEPRECATEDIN_3_0 EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, + const EVP_PKEY_METHOD *src); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 size_t EVP_PKEY_meth_get_count(void); +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); +#endif + +EVP_KEYMGMT *EVP_KEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEYMGMT_up_ref(EVP_KEYMGMT *keymgmt); +void EVP_KEYMGMT_free(EVP_KEYMGMT *keymgmt); +const OSSL_PROVIDER *EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_name(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_description(const EVP_KEYMGMT *keymgmt); +int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name); +void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYMGMT *keymgmt, void *arg), + void *arg); +int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_gen_gettable_params(const EVP_KEYMGMT *keymgmt); + +EVP_SKEYMGMT *EVP_SKEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_SKEYMGMT_up_ref(EVP_SKEYMGMT *keymgmt); +void EVP_SKEYMGMT_free(EVP_SKEYMGMT *keymgmt); +const OSSL_PROVIDER *EVP_SKEYMGMT_get0_provider(const EVP_SKEYMGMT *keymgmt); +const char *EVP_SKEYMGMT_get0_name(const EVP_SKEYMGMT *keymgmt); +const char *EVP_SKEYMGMT_get0_description(const EVP_SKEYMGMT *keymgmt); +int EVP_SKEYMGMT_is_a(const EVP_SKEYMGMT *keymgmt, const char *name); +void EVP_SKEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_SKEYMGMT *keymgmt, void *arg), + void *arg); +int EVP_SKEYMGMT_names_do_all(const EVP_SKEYMGMT *keymgmt, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_SKEYMGMT_get0_gen_settable_params(const EVP_SKEYMGMT *skeymgmt); +const OSSL_PARAM *EVP_SKEYMGMT_get0_imp_settable_params(const EVP_SKEYMGMT *skeymgmt); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_name(OSSL_LIB_CTX *libctx, + const char *name, + const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX *libctx, + EVP_PKEY *pkey, const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(const EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX *ctx, const char *keytype); + +int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX *ctx, OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_algor_params(EVP_PKEY_CTX *ctx, const X509_ALGOR *alg); +int EVP_PKEY_CTX_get_algor_params(EVP_PKEY_CTX *ctx, X509_ALGOR *alg); +int EVP_PKEY_CTX_get_algor(EVP_PKEY_CTX *ctx, X509_ALGOR **alg); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); +EVP_PKEY *EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, + const char *propq, + const unsigned char *priv, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, const char *propq, + const unsigned char *pub, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); +#endif + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_signature(EVP_PKEY_CTX *pctx, + const unsigned char *sig, size_t siglen); + +void EVP_SIGNATURE_free(EVP_SIGNATURE *signature); +int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature); +OSSL_PROVIDER *EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE *signature); +EVP_SIGNATURE *EVP_SIGNATURE_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_SIGNATURE_is_a(const EVP_SIGNATURE *signature, const char *name); +const char *EVP_SIGNATURE_get0_name(const EVP_SIGNATURE *signature); +const char *EVP_SIGNATURE_get0_description(const EVP_SIGNATURE *signature); +void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_SIGNATURE *signature, + void *data), + void *data); +int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig); +const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig); + +void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher); +int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher); +OSSL_PROVIDER *EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER *cipher); +EVP_ASYM_CIPHER *EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER *cipher, const char *name); +const char *EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER *cipher); +const char *EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER *cipher); +void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_ASYM_CIPHER *cipher, + void *arg), + void *arg); +int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *ciph); +const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *ciph); + +void EVP_KEM_free(EVP_KEM *wrap); +int EVP_KEM_up_ref(EVP_KEM *wrap); +OSSL_PROVIDER *EVP_KEM_get0_provider(const EVP_KEM *wrap); +EVP_KEM *EVP_KEM_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEM_is_a(const EVP_KEM *wrap, const char *name); +const char *EVP_KEM_get0_name(const EVP_KEM *wrap); +const char *EVP_KEM_get0_description(const EVP_KEM *wrap); +void EVP_KEM_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEM *wrap, void *arg), void *arg); +int EVP_KEM_names_do_all(const EVP_KEM *wrap, + void (*fn)(const char *name, void *data), void *data); +const OSSL_PARAM *EVP_KEM_gettable_ctx_params(const EVP_KEM *kem); +const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_sign_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_sign_message_init(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_sign_message_update(EVP_PKEY_CTX *ctx, + const unsigned char *in, size_t inlen); +int EVP_PKEY_sign_message_final(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_verify_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_message_init(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_verify_message_update(EVP_PKEY_CTX *ctx, + const unsigned char *in, size_t inlen); +int EVP_PKEY_verify_message_final(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX *ctx, + const OSSL_PARAM params[]); +int EVP_PKEY_verify_recover_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, + const OSSL_PARAM params[]); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer, + int validate_peer); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); +EVP_SKEY *EVP_PKEY_derive_SKEY(EVP_PKEY_CTX *ctx, EVP_SKEYMGMT *mgmt, + const char *key_type, const char *propquery, + size_t keylen, const OSSL_PARAM params[]); + +int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpriv, + const OSSL_PARAM params[]); +int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, + unsigned char *wrappedkey, size_t *wrappedkeylen, + unsigned char *genkey, size_t *genkeylen); +int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpub, + const OSSL_PARAM params[]); +int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, + unsigned char *unwrapped, size_t *unwrappedlen, + const unsigned char *wrapped, size_t wrappedlen); +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_fromdata(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, + OSSL_PARAM param[]); +const OSSL_PARAM *EVP_PKEY_fromdata_settable(EVP_PKEY_CTX *ctx, int selection); + +int EVP_PKEY_todata(const EVP_PKEY *pkey, int selection, OSSL_PARAM **params); +int EVP_PKEY_export(const EVP_PKEY *pkey, int selection, + OSSL_CALLBACK *export_cb, void *export_cbarg); + +const OSSL_PARAM *EVP_PKEY_gettable_params(const EVP_PKEY *pkey); +int EVP_PKEY_get_params(const EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_get_int_param(const EVP_PKEY *pkey, const char *key_name, + int *out); +int EVP_PKEY_get_size_t_param(const EVP_PKEY *pkey, const char *key_name, + size_t *out); +int EVP_PKEY_get_bn_param(const EVP_PKEY *pkey, const char *key_name, + BIGNUM **bn); +int EVP_PKEY_get_utf8_string_param(const EVP_PKEY *pkey, const char *key_name, + char *str, size_t max_buf_sz, size_t *out_sz); +int EVP_PKEY_get_octet_string_param(const EVP_PKEY *pkey, const char *key_name, + unsigned char *buf, size_t max_buf_sz, + size_t *out_sz); + +const OSSL_PARAM *EVP_PKEY_settable_params(const EVP_PKEY *pkey); +int EVP_PKEY_set_params(EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_set_int_param(EVP_PKEY *pkey, const char *key_name, int in); +int EVP_PKEY_set_size_t_param(EVP_PKEY *pkey, const char *key_name, size_t in); +int EVP_PKEY_set_bn_param(EVP_PKEY *pkey, const char *key_name, + const BIGNUM *bn); +int EVP_PKEY_set_utf8_string_param(EVP_PKEY *pkey, const char *key_name, + const char *str); +int EVP_PKEY_set_octet_string_param(EVP_PKEY *pkey, const char *key_name, + const unsigned char *buf, size_t bsize); + +int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY *pkey); +int EVP_PKEY_get_field_type(const EVP_PKEY *pkey); + +EVP_PKEY *EVP_PKEY_Q_keygen(OSSL_LIB_CTX *libctx, const char *propq, + const char *type, ...); +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_generate(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx); + +#define EVP_PKEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EVP_PKEY, l, p, newf, dupf, freef) +int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg); +void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, int (*copy)(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, void (*cleanup)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, int (*paramgen_init)(EVP_PKEY_CTX *ctx), + int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, int (*keygen_init)(EVP_PKEY_CTX *ctx), + int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, int (*sign_init)(EVP_PKEY_CTX *ctx), + int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, int (*verify_init)(EVP_PKEY_CTX *ctx), + int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, int (*verify_recover_init)(EVP_PKEY_CTX *ctx), + int (*verify_recover)(EVP_PKEY_CTX *ctx, unsigned char *sig, + size_t *siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, int (*encrypt_init)(EVP_PKEY_CTX *ctx), + int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, int (*decrypt_init)(EVP_PKEY_CTX *ctx), + int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, int (*derive_init)(EVP_PKEY_CTX *ctx), + int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), + int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign)(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify)(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, int (*digest_custom)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, int (**pinit)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, int (**pcopy)(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, void (**pcleanup)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD *pmeth, int (**pparamgen_init)(EVP_PKEY_CTX *ctx), + int (**pparamgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD *pmeth, int (**pkeygen_init)(EVP_PKEY_CTX *ctx), + int (**pkeygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD *pmeth, int (**psign_init)(EVP_PKEY_CTX *ctx), + int (**psign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD *pmeth, int (**pverify_init)(EVP_PKEY_CTX *ctx), + int (**pverify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init)(EVP_PKEY_CTX *ctx), + int (**pverify_recover)(EVP_PKEY_CTX *ctx, unsigned char *sig, + size_t *siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**psignctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**pverifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, + int siglen, EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD *pmeth, int (**pencrypt_init)(EVP_PKEY_CTX *ctx), + int (**pencryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD *pmeth, int (**pdecrypt_init)(EVP_PKEY_CTX *ctx), + int (**pdecrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD *pmeth, int (**pderive_init)(EVP_PKEY_CTX *ctx), + int (**pderive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, + int (**pctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), + int (**pctrl_str)(EVP_PKEY_CTX *ctx, const char *type, + const char *value)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestsign(const EVP_PKEY_METHOD *pmeth, + int (**digestsign)(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestverify(const EVP_PKEY_METHOD *pmeth, + int (**digestverify)(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digest_custom(const EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); +#endif + +void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange); +EVP_KEYEXCH *EVP_KEYEXCH_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +OSSL_PROVIDER *EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_is_a(const EVP_KEYEXCH *keyexch, const char *name); +const char *EVP_KEYEXCH_get0_name(const EVP_KEYEXCH *keyexch); +const char *EVP_KEYEXCH_get0_description(const EVP_KEYEXCH *keyexch); +void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYEXCH *keyexch, void *data), + void *data); +int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch); +const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch); + +void EVP_add_alg_module(void); + +int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX *ctx, const char *name); +int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX *ctx, char *name, size_t namelen); +int EVP_PKEY_get_group_name(const EVP_PKEY *pkey, char *name, size_t name_sz, + size_t *gname_len); + +OSSL_LIB_CTX *EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX *ctx); +const char *EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX *ctx); +const OSSL_PROVIDER *EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX *ctx); + +int EVP_SKEY_is_a(const EVP_SKEY *skey, const char *name); +EVP_SKEY *EVP_SKEY_import(OSSL_LIB_CTX *libctx, const char *skeymgmtname, const char *propquery, + int selection, const OSSL_PARAM *params); +EVP_SKEY *EVP_SKEY_generate(OSSL_LIB_CTX *libctx, const char *skeymgmtname, + const char *propquery, const OSSL_PARAM *params); +EVP_SKEY *EVP_SKEY_import_raw_key(OSSL_LIB_CTX *libctx, const char *skeymgmtname, + unsigned char *key, size_t keylen, + const char *propquery); +EVP_SKEY *EVP_SKEY_import_SKEYMGMT(OSSL_LIB_CTX *libctx, EVP_SKEYMGMT *skeymgmt, + int selection, const OSSL_PARAM *params); +int EVP_SKEY_get0_raw_key(const EVP_SKEY *skey, const unsigned char **key, + size_t *len); +const char *EVP_SKEY_get0_key_id(const EVP_SKEY *skey); +int EVP_SKEY_export(const EVP_SKEY *skey, int selection, + OSSL_CALLBACK *export_cb, void *export_cbarg); +int EVP_SKEY_up_ref(EVP_SKEY *skey); +void EVP_SKEY_free(EVP_SKEY *skey); +const char *EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY *skey); +const char *EVP_SKEY_get0_provider_name(const EVP_SKEY *skey); +EVP_SKEY *EVP_SKEY_to_provider(EVP_SKEY *skey, OSSL_LIB_CTX *libctx, + OSSL_PROVIDER *prov, const char *propquery); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/evperr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/evperr.h new file mode 100644 index 0000000..06dd95f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/evperr.h @@ -0,0 +1,146 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_EVPERR_H +#define OPENSSL_EVPERR_H +#pragma once + +#include +#include +#include + +/* + * EVP reason codes. + */ +#define EVP_R_AES_KEY_SETUP_FAILED 143 +#define EVP_R_ARIA_KEY_SETUP_FAILED 176 +#define EVP_R_BAD_ALGORITHM_NAME 200 +#define EVP_R_BAD_DECRYPT 100 +#define EVP_R_BAD_KEY_LENGTH 195 +#define EVP_R_BUFFER_TOO_SMALL 155 +#define EVP_R_CACHE_CONSTANTS_FAILED 225 +#define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +#define EVP_R_CANNOT_GET_PARAMETERS 197 +#define EVP_R_CANNOT_SET_PARAMETERS 198 +#define EVP_R_CIPHER_NOT_GCM_MODE 184 +#define EVP_R_CIPHER_PARAMETER_ERROR 122 +#define EVP_R_COMMAND_NOT_SUPPORTED 147 +#define EVP_R_CONFLICTING_ALGORITHM_NAME 201 +#define EVP_R_COPY_ERROR 173 +#define EVP_R_CTRL_NOT_IMPLEMENTED 132 +#define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +#define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +#define EVP_R_DECODE_ERROR 114 +#define EVP_R_DEFAULT_QUERY_PARSE_ERROR 210 +#define EVP_R_DIFFERENT_KEY_TYPES 101 +#define EVP_R_DIFFERENT_PARAMETERS 153 +#define EVP_R_ERROR_LOADING_SECTION 165 +#define EVP_R_EXPECTING_AN_HMAC_KEY 174 +#define EVP_R_EXPECTING_AN_RSA_KEY 127 +#define EVP_R_EXPECTING_A_DH_KEY 128 +#define EVP_R_EXPECTING_A_DSA_KEY 129 +#define EVP_R_EXPECTING_A_ECX_KEY 219 +#define EVP_R_EXPECTING_A_EC_KEY 142 +#define EVP_R_EXPECTING_A_POLY1305_KEY 164 +#define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +#define EVP_R_FINAL_ERROR 188 +#define EVP_R_GENERATE_ERROR 214 +#define EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED 229 +#define EVP_R_GET_RAW_KEY_FAILED 182 +#define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +#define EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS 204 +#define EVP_R_INACCESSIBLE_KEY 203 +#define EVP_R_INITIALIZATION_ERROR 134 +#define EVP_R_INPUT_NOT_INITIALIZED 111 +#define EVP_R_INVALID_CUSTOM_LENGTH 185 +#define EVP_R_INVALID_DIGEST 152 +#define EVP_R_INVALID_IV_LENGTH 194 +#define EVP_R_INVALID_KEY 163 +#define EVP_R_INVALID_KEY_LENGTH 130 +#define EVP_R_INVALID_LENGTH 221 +#define EVP_R_INVALID_NULL_ALGORITHM 218 +#define EVP_R_INVALID_OPERATION 148 +#define EVP_R_INVALID_PROVIDER_FUNCTIONS 193 +#define EVP_R_INVALID_SALT_LENGTH 186 +#define EVP_R_INVALID_SECRET_LENGTH 223 +#define EVP_R_INVALID_SEED_LENGTH 220 +#define EVP_R_INVALID_VALUE 222 +#define EVP_R_KEYMGMT_EXPORT_FAILURE 205 +#define EVP_R_KEY_SETUP_FAILED 180 +#define EVP_R_LOCKING_NOT_SUPPORTED 213 +#define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +#define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +#define EVP_R_METHOD_NOT_SUPPORTED 144 +#define EVP_R_MISSING_PARAMETERS 103 +#define EVP_R_NOT_ABLE_TO_COPY_CTX 190 +#define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +#define EVP_R_NO_CIPHER_SET 131 +#define EVP_R_NO_DEFAULT_DIGEST 158 +#define EVP_R_NO_DIGEST_SET 139 +#define EVP_R_NO_IMPORT_FUNCTION 206 +#define EVP_R_NO_KEYMGMT_AVAILABLE 199 +#define EVP_R_NO_KEYMGMT_PRESENT 196 +#define EVP_R_NO_KEY_SET 154 +#define EVP_R_NO_OPERATION_SET 149 +#define EVP_R_NULL_MAC_PKEY_CTX 208 +#define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +#define EVP_R_OPERATION_NOT_INITIALIZED 151 +#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE 226 +#define EVP_R_OUTPUT_WOULD_OVERFLOW 202 +#define EVP_R_PARAMETER_TOO_LARGE 187 +#define EVP_R_PARTIALLY_OVERLAPPING 162 +#define EVP_R_PBKDF2_ERROR 181 +#define EVP_R_PIPELINE_NOT_SUPPORTED 230 +#define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +#define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +#define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +#define EVP_R_PROVIDER_ASYM_CIPHER_FAILURE 232 +#define EVP_R_PROVIDER_ASYM_CIPHER_NOT_SUPPORTED 235 +#define EVP_R_PROVIDER_KEYMGMT_FAILURE 233 +#define EVP_R_PROVIDER_KEYMGMT_NOT_SUPPORTED 236 +#define EVP_R_PROVIDER_SIGNATURE_FAILURE 234 +#define EVP_R_PROVIDER_SIGNATURE_NOT_SUPPORTED 237 +#define EVP_R_PUBLIC_KEY_NOT_RSA 106 +#define EVP_R_SETTING_XOF_FAILED 227 +#define EVP_R_SET_DEFAULT_PROPERTY_FAILURE 209 +#define EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE 228 +#define EVP_R_TOO_MANY_PIPES 231 +#define EVP_R_TOO_MANY_RECORDS 183 +#define EVP_R_UNABLE_TO_ENABLE_LOCKING 212 +#define EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE 215 +#define EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH 216 +#define EVP_R_UNABLE_TO_LOCK_CONTEXT 211 +#define EVP_R_UNABLE_TO_SET_CALLBACKS 217 +#define EVP_R_UNKNOWN_BITS 166 +#define EVP_R_UNKNOWN_CIPHER 160 +#define EVP_R_UNKNOWN_DIGEST 161 +#define EVP_R_UNKNOWN_KEY_TYPE 207 +#define EVP_R_UNKNOWN_MAX_SIZE 167 +#define EVP_R_UNKNOWN_OPTION 169 +#define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +#define EVP_R_UNKNOWN_SECURITY_BITS 168 +#define EVP_R_UNSUPPORTED_ALGORITHM 156 +#define EVP_R_UNSUPPORTED_CIPHER 107 +#define EVP_R_UNSUPPORTED_KEYLENGTH 123 +#define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +#define EVP_R_UNSUPPORTED_KEY_SIZE 108 +#define EVP_R_UNSUPPORTED_KEY_TYPE 224 +#define EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS 135 +#define EVP_R_UNSUPPORTED_PRF 125 +#define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +#define EVP_R_UNSUPPORTED_SALT_TYPE 126 +#define EVP_R_UPDATE_ERROR 189 +#define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +#define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +#define EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE 191 +#define EVP_R_XTS_DUPLICATED_KEYS 192 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/fips_names.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/fips_names.h new file mode 100644 index 0000000..3e310bb --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/fips_names.h @@ -0,0 +1,50 @@ +/* + * Copyright 2019-2024 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_FIPS_NAMES_H +#define OPENSSL_FIPS_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Parameter names that the FIPS Provider defines + * All parameters are of type: OSSL_PARAM_UTF8_STRING + */ + +/* The following 4 Parameters are used for FIPS Self Testing */ + +/* The calculated MAC of the module file */ +#define OSSL_PROV_FIPS_PARAM_MODULE_MAC "module-mac" +/* The Version number for the fips install process */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_VERSION "install-version" +/* The calculated MAC of the install status indicator */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_MAC "install-mac" +/* The install status indicator */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_STATUS "install-status" + +/* + * A boolean that determines if the FIPS conditional test errors result in + * the module entering an error state. + * Type: OSSL_PARAM_UTF8_STRING + */ +#define OSSL_PROV_FIPS_PARAM_CONDITIONAL_ERRORS "conditional-errors" + +/* The following are provided for backwards compatibility */ +#define OSSL_PROV_FIPS_PARAM_SECURITY_CHECKS OSSL_PROV_PARAM_SECURITY_CHECKS +#define OSSL_PROV_FIPS_PARAM_TLS1_PRF_EMS_CHECK OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK +#define OSSL_PROV_FIPS_PARAM_DRBG_TRUNC_DIGEST OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_FIPS_NAMES_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/fipskey.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/fipskey.h new file mode 100644 index 0000000..072beca --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/fipskey.h @@ -0,0 +1,47 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/fipskey.h.in + * + * Copyright 2020-2024 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_FIPSKEY_H +#define OPENSSL_FIPSKEY_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The FIPS validation HMAC key, usable as an array initializer. + */ +/* clang-format off */ +#define FIPS_KEY_ELEMENTS \ + 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 +/* clang-format on */ + +/* + * The FIPS validation key, as a string. + */ +/* clang-format off */ +#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* clang-format on */ + +/* + * The FIPS provider vendor name, as a string. + */ +/* clang-format off */ +#define FIPS_VENDOR "OpenSSL non-compliant FIPS Provider" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/hmac.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/hmac.h new file mode 100644 index 0000000..cb866b2 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/hmac.h @@ -0,0 +1,62 @@ +/* + * 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_HMAC_H +#define OPENSSL_HMAC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_HMAC_H +#endif + +#include + +#include + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HMAC_MAX_MD_CBLOCK 200 /* Deprecated */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 size_t HMAC_size(const HMAC_CTX *e); +OSSL_DEPRECATEDIN_3_0 HMAC_CTX *HMAC_CTX_new(void); +OSSL_DEPRECATEDIN_3_0 int HMAC_CTX_reset(HMAC_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_free(HMAC_CTX *ctx); +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur int HMAC_Init(HMAC_CTX *ctx, + const void *key, int len, + const EVP_MD *md); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +OSSL_DEPRECATEDIN_3_0 int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +OSSL_DEPRECATEDIN_3_0 __owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); +#endif + +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *data, size_t data_len, + unsigned char *md, unsigned int *md_len); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/hpke.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/hpke.h new file mode 100644 index 0000000..12496ff --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/hpke.h @@ -0,0 +1,169 @@ +/* + * Copyright 2022-2024 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 + */ + +/* APIs and data structures for HPKE (RFC9180) */ +#ifndef OSSL_HPKE_H +#define OSSL_HPKE_H +#pragma once + +#include + +/* HPKE modes */ +#define OSSL_HPKE_MODE_BASE 0 /* Base mode */ +#define OSSL_HPKE_MODE_PSK 1 /* Pre-shared key mode */ +#define OSSL_HPKE_MODE_AUTH 2 /* Authenticated mode */ +#define OSSL_HPKE_MODE_PSKAUTH 3 /* PSK+authenticated mode */ + +/* + * Max for ikm, psk, pskid, info and exporter contexts. + * RFC9180, section 7.2.1 RECOMMENDS 64 octets but we have test vectors from + * Appendix A.6.1 with a 66 octet IKM so we'll allow that. + */ +#define OSSL_HPKE_MAX_PARMLEN 66 +#define OSSL_HPKE_MIN_PSKLEN 32 +#define OSSL_HPKE_MAX_INFOLEN 1024 + +/* + * The (16bit) HPKE algorithm ID IANA codepoints + * If/when new IANA codepoints are added there are tables in + * crypto/hpke/hpke_util.c that must also be updated. + */ +#define OSSL_HPKE_KEM_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_KEM_ID_P256 0x0010 /* NIST P-256 */ +#define OSSL_HPKE_KEM_ID_P384 0x0011 /* NIST P-384 */ +#define OSSL_HPKE_KEM_ID_P521 0x0012 /* NIST P-521 */ +#define OSSL_HPKE_KEM_ID_X25519 0x0020 /* Curve25519 */ +#define OSSL_HPKE_KEM_ID_X448 0x0021 /* Curve448 */ + +#define OSSL_HPKE_KDF_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA256 0x0001 /* HKDF-SHA256 */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA384 0x0002 /* HKDF-SHA384 */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA512 0x0003 /* HKDF-SHA512 */ + +#define OSSL_HPKE_AEAD_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_AEAD_ID_AES_GCM_128 0x0001 /* AES-GCM-128 */ +#define OSSL_HPKE_AEAD_ID_AES_GCM_256 0x0002 /* AES-GCM-256 */ +#define OSSL_HPKE_AEAD_ID_CHACHA_POLY1305 0x0003 /* Chacha20-Poly1305 */ +#define OSSL_HPKE_AEAD_ID_EXPORTONLY 0xFFFF /* export-only fake ID */ + +/* strings for suite components */ +#define OSSL_HPKE_KEMSTR_P256 "P-256" /* KEM id 0x10 */ +#define OSSL_HPKE_KEMSTR_P384 "P-384" /* KEM id 0x11 */ +#define OSSL_HPKE_KEMSTR_P521 "P-521" /* KEM id 0x12 */ +#define OSSL_HPKE_KEMSTR_X25519 "X25519" /* KEM id 0x20 */ +#define OSSL_HPKE_KEMSTR_X448 "X448" /* KEM id 0x21 */ +#define OSSL_HPKE_KDFSTR_256 "hkdf-sha256" /* KDF id 1 */ +#define OSSL_HPKE_KDFSTR_384 "hkdf-sha384" /* KDF id 2 */ +#define OSSL_HPKE_KDFSTR_512 "hkdf-sha512" /* KDF id 3 */ +#define OSSL_HPKE_AEADSTR_AES128GCM "aes-128-gcm" /* AEAD id 1 */ +#define OSSL_HPKE_AEADSTR_AES256GCM "aes-256-gcm" /* AEAD id 2 */ +#define OSSL_HPKE_AEADSTR_CP "chacha20-poly1305" /* AEAD id 3 */ +#define OSSL_HPKE_AEADSTR_EXP "exporter" /* AEAD id 0xff */ + +/* + * Roles for use in creating an OSSL_HPKE_CTX, most + * important use of this is to control nonce reuse. + */ +#define OSSL_HPKE_ROLE_SENDER 0 +#define OSSL_HPKE_ROLE_RECEIVER 1 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + uint16_t kem_id; /* Key Encapsulation Method id */ + uint16_t kdf_id; /* Key Derivation Function id */ + uint16_t aead_id; /* AEAD alg id */ +} OSSL_HPKE_SUITE; + +/** + * Suite constants, use this like: + * OSSL_HPKE_SUITE myvar = OSSL_HPKE_SUITE_DEFAULT; + */ +#ifndef OPENSSL_NO_ECX +#define OSSL_HPKE_SUITE_DEFAULT \ + { \ + OSSL_HPKE_KEM_ID_X25519, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#else +#define OSSL_HPKE_SUITE_DEFAULT \ + { \ + OSSL_HPKE_KEM_ID_P256, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#endif + +typedef struct ossl_hpke_ctx_st OSSL_HPKE_CTX; + +OSSL_HPKE_CTX *OSSL_HPKE_CTX_new(int mode, OSSL_HPKE_SUITE suite, int role, + OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_HPKE_CTX_free(OSSL_HPKE_CTX *ctx); + +int OSSL_HPKE_encap(OSSL_HPKE_CTX *ctx, + unsigned char *enc, size_t *enclen, + const unsigned char *pub, size_t publen, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_seal(OSSL_HPKE_CTX *ctx, + unsigned char *ct, size_t *ctlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *pt, size_t ptlen); + +int OSSL_HPKE_keygen(OSSL_HPKE_SUITE suite, + unsigned char *pub, size_t *publen, EVP_PKEY **priv, + const unsigned char *ikm, size_t ikmlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_decap(OSSL_HPKE_CTX *ctx, + const unsigned char *enc, size_t enclen, + EVP_PKEY *recippriv, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_open(OSSL_HPKE_CTX *ctx, + unsigned char *pt, size_t *ptlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *ct, size_t ctlen); + +int OSSL_HPKE_export(OSSL_HPKE_CTX *ctx, + unsigned char *secret, + size_t secretlen, + const unsigned char *label, + size_t labellen); + +int OSSL_HPKE_CTX_set1_authpriv(OSSL_HPKE_CTX *ctx, EVP_PKEY *priv); +int OSSL_HPKE_CTX_set1_authpub(OSSL_HPKE_CTX *ctx, + const unsigned char *pub, + size_t publen); +int OSSL_HPKE_CTX_set1_psk(OSSL_HPKE_CTX *ctx, + const char *pskid, + const unsigned char *psk, size_t psklen); + +int OSSL_HPKE_CTX_set1_ikme(OSSL_HPKE_CTX *ctx, + const unsigned char *ikme, size_t ikmelen); + +int OSSL_HPKE_CTX_set_seq(OSSL_HPKE_CTX *ctx, uint64_t seq); +int OSSL_HPKE_CTX_get_seq(OSSL_HPKE_CTX *ctx, uint64_t *seq); + +int OSSL_HPKE_suite_check(OSSL_HPKE_SUITE suite); +int OSSL_HPKE_get_grease_value(const OSSL_HPKE_SUITE *suite_in, + OSSL_HPKE_SUITE *suite, + unsigned char *enc, size_t *enclen, + unsigned char *ct, size_t ctlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_str2suite(const char *str, OSSL_HPKE_SUITE *suite); +size_t OSSL_HPKE_get_ciphertext_size(OSSL_HPKE_SUITE suite, size_t clearlen); +size_t OSSL_HPKE_get_public_encap_size(OSSL_HPKE_SUITE suite); +size_t OSSL_HPKE_get_recommended_ikmelen(OSSL_HPKE_SUITE suite); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/http.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/http.h new file mode 100644 index 0000000..91aa923 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/http.h @@ -0,0 +1,117 @@ +/* + * Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Siemens AG 2018-2020 + * + * 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_HTTP_H +#define OPENSSL_HTTP_H +#pragma once + +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_HTTP_NAME "http" +#define OSSL_HTTPS_NAME "https" +#define OSSL_HTTP_PREFIX OSSL_HTTP_NAME "://" +#define OSSL_HTTPS_PREFIX OSSL_HTTPS_NAME "://" +#define OSSL_HTTP_PORT "80" +#define OSSL_HTTPS_PORT "443" +#define OPENSSL_NO_PROXY "NO_PROXY" +#define OPENSSL_HTTP_PROXY "HTTP_PROXY" +#define OPENSSL_HTTPS_PROXY "HTTPS_PROXY" + +/* We want to have this even in case of OPENSSL_NO_HTTP */ +int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); + +#ifndef OPENSSL_NO_HTTP + +#define OSSL_HTTP_DEFAULT_MAX_LINE_LEN (4 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_RESP_LEN (100 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_CRL_LEN (32 * 1024 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_RESP_HDR_LINES 256 + +/* Low-level HTTP API */ +OSSL_HTTP_REQ_CTX *OSSL_HTTP_REQ_CTX_new(BIO *wbio, BIO *rbio, int buf_size); +void OSSL_HTTP_REQ_CTX_free(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_set_request_line(OSSL_HTTP_REQ_CTX *rctx, int method_POST, + const char *server, const char *port, + const char *path); +int OSSL_HTTP_REQ_CTX_add1_header(OSSL_HTTP_REQ_CTX *rctx, + const char *name, const char *value); +int OSSL_HTTP_REQ_CTX_set_expected(OSSL_HTTP_REQ_CTX *rctx, + const char *content_type, int asn1, + int timeout, int keep_alive); +int OSSL_HTTP_REQ_CTX_set1_req(OSSL_HTTP_REQ_CTX *rctx, const char *content_type, + const ASN1_ITEM *it, const ASN1_VALUE *req); +int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_nbio_d2i(OSSL_HTTP_REQ_CTX *rctx, + ASN1_VALUE **pval, const ASN1_ITEM *it); +BIO *OSSL_HTTP_REQ_CTX_exchange(OSSL_HTTP_REQ_CTX *rctx); +BIO *OSSL_HTTP_REQ_CTX_get0_mem_bio(const OSSL_HTTP_REQ_CTX *rctx); +size_t OSSL_HTTP_REQ_CTX_get_resp_len(const OSSL_HTTP_REQ_CTX *rctx); +void OSSL_HTTP_REQ_CTX_set_max_response_length(OSSL_HTTP_REQ_CTX *rctx, + unsigned long len); +void OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines(OSSL_HTTP_REQ_CTX *rctx, + size_t count); +int OSSL_HTTP_is_alive(const OSSL_HTTP_REQ_CTX *rctx); + +/* High-level HTTP API */ +typedef BIO *(*OSSL_HTTP_bio_cb_t)(BIO *bio, void *arg, int connect, int detail); +OSSL_HTTP_REQ_CTX *OSSL_HTTP_open(const char *server, const char *port, + const char *proxy, const char *no_proxy, + int use_ssl, BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, int overall_timeout); +int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port, + const char *proxyuser, const char *proxypass, + int timeout, BIO *bio_err, const char *prog); +int OSSL_HTTP_set1_request(OSSL_HTTP_REQ_CTX *rctx, const char *path, + const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +BIO *OSSL_HTTP_exchange(OSSL_HTTP_REQ_CTX *rctx, char **redirection_url); +BIO *OSSL_HTTP_get(const char *url, const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout); +BIO *OSSL_HTTP_transfer(OSSL_HTTP_REQ_CTX **prctx, + const char *server, const char *port, + const char *path, int use_ssl, + const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +int OSSL_HTTP_close(OSSL_HTTP_REQ_CTX *rctx, int ok); + +/* Auxiliary functions */ +int OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); +const char *OSSL_HTTP_adapt_proxy(const char *proxy, const char *no_proxy, + const char *server, int use_ssl); + +#endif /* !defined(OPENSSL_NO_HTTP) */ +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_HTTP_H) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/httperr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/httperr.h new file mode 100644 index 0000000..4c1cc6a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/httperr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2026 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_HTTPERR_H +#define OPENSSL_HTTPERR_H +#pragma once + +#include +#include +#include + +/* + * HTTP reason codes. + */ +#define HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN 108 +#define HTTP_R_CONNECT_FAILURE 100 +#define HTTP_R_CONTENT_TYPE_MISMATCH 131 +#define HTTP_R_ERROR_PARSING_ASN1_LENGTH 109 +#define HTTP_R_ERROR_PARSING_CONTENT_LENGTH 119 +#define HTTP_R_ERROR_PARSING_URL 101 +#define HTTP_R_ERROR_RECEIVING 103 +#define HTTP_R_ERROR_SENDING 102 +#define HTTP_R_FAILED_READING_DATA 128 +#define HTTP_R_HEADER_PARSE_ERROR 126 +#define HTTP_R_INCONSISTENT_CONTENT_LENGTH 120 +#define HTTP_R_INVALID_PORT_NUMBER 123 +#define HTTP_R_INVALID_URL_PATH 125 +#define HTTP_R_INVALID_URL_SCHEME 124 +#define HTTP_R_MAX_RESP_LEN_EXCEEDED 117 +#define HTTP_R_MISSING_ASN1_ENCODING 110 +#define HTTP_R_MISSING_CONTENT_TYPE 121 +#define HTTP_R_MISSING_REDIRECT_LOCATION 111 +#define HTTP_R_RECEIVED_ERROR 105 +#define HTTP_R_RECEIVED_WRONG_HTTP_VERSION 106 +#define HTTP_R_REDIRECTION_FROM_HTTPS_TO_HTTP 112 +#define HTTP_R_REDIRECTION_NOT_ENABLED 116 +#define HTTP_R_RESPONSE_LINE_TOO_LONG 113 +#define HTTP_R_RESPONSE_PARSE_ERROR 104 +#define HTTP_R_RESPONSE_TOO_MANY_HDRLINES 130 +#define HTTP_R_RETRY_TIMEOUT 129 +#define HTTP_R_SERVER_CANCELED_CONNECTION 127 +#define HTTP_R_SOCK_NOT_SUPPORTED 122 +#define HTTP_R_STATUS_CODE_UNSUPPORTED 114 +#define HTTP_R_TLS_NOT_ENABLED 107 +#define HTTP_R_TOO_MANY_REDIRECTIONS 115 +#define HTTP_R_UNEXPECTED_CONTENT_TYPE 118 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/idea.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/idea.h new file mode 100644 index 0000000..674a941 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/idea.h @@ -0,0 +1,82 @@ +/* + * 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_IDEA_H +#define OPENSSL_IDEA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_IDEA_H +#endif + +#include + +#ifndef OPENSSL_NO_IDEA +#ifdef __cplusplus +extern "C" { +#endif + +#define IDEA_BLOCK 8 +#define IDEA_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef unsigned int IDEA_INT; + +#define IDEA_ENCRYPT 1 +#define IDEA_DECRYPT 0 + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *IDEA_options(void); +OSSL_DEPRECATEDIN_3_0 void IDEA_ecb_encrypt(const unsigned char *in, + unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_encrypt_key(const unsigned char *key, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, + IDEA_KEY_SCHEDULE *dk); +OSSL_DEPRECATEDIN_3_0 void IDEA_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num); +OSSL_DEPRECATEDIN_3_0 void IDEA_encrypt(unsigned long *in, + IDEA_KEY_SCHEDULE *ks); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define idea_options IDEA_options +#define idea_ecb_encrypt IDEA_ecb_encrypt +#define idea_set_encrypt_key IDEA_set_encrypt_key +#define idea_set_decrypt_key IDEA_set_decrypt_key +#define idea_cbc_encrypt IDEA_cbc_encrypt +#define idea_cfb64_encrypt IDEA_cfb64_encrypt +#define idea_ofb64_encrypt IDEA_ofb64_encrypt +#define idea_encrypt IDEA_encrypt +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/indicator.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/indicator.h new file mode 100644 index 0000000..66d6f42 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/indicator.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024 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_INDICATOR_H +#define OPENSSL_INDICATOR_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef int(OSSL_INDICATOR_CALLBACK)(const char *type, const char *desc, + const OSSL_PARAM params[]); + +void OSSL_INDICATOR_set_callback(OSSL_LIB_CTX *libctx, + OSSL_INDICATOR_CALLBACK *cb); +void OSSL_INDICATOR_get_callback(OSSL_LIB_CTX *libctx, + OSSL_INDICATOR_CALLBACK **cb); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_INDICATOR_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/kdf.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/kdf.h new file mode 100644 index 0000000..f3267ea --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/kdf.h @@ -0,0 +1,141 @@ +/* + * Copyright 2016-2025 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_KDF_H +#define OPENSSL_KDF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_KDF_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int EVP_KDF_up_ref(EVP_KDF *kdf); +void EVP_KDF_free(EVP_KDF *kdf); +EVP_KDF *EVP_KDF_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); + +EVP_KDF_CTX *EVP_KDF_CTX_new(EVP_KDF *kdf); +void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx); +EVP_KDF_CTX *EVP_KDF_CTX_dup(const EVP_KDF_CTX *src); +const char *EVP_KDF_get0_description(const EVP_KDF *kdf); +int EVP_KDF_is_a(const EVP_KDF *kdf, const char *name); +const char *EVP_KDF_get0_name(const EVP_KDF *kdf); +const OSSL_PROVIDER *EVP_KDF_get0_provider(const EVP_KDF *kdf); +const EVP_KDF *EVP_KDF_CTX_kdf(EVP_KDF_CTX *ctx); + +void EVP_KDF_CTX_reset(EVP_KDF_CTX *ctx); +size_t EVP_KDF_CTX_get_kdf_size(EVP_KDF_CTX *ctx); +int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_KDF_CTX_set_SKEY(EVP_KDF_CTX *ctx, EVP_SKEY *key, const char *paramname); +EVP_SKEY *EVP_KDF_derive_SKEY(EVP_KDF_CTX *ctx, EVP_SKEYMGMT *mgmt, + const char *key_type, const char *propquery, + size_t keylen, const OSSL_PARAM params[]); +int EVP_KDF_get_params(EVP_KDF *kdf, OSSL_PARAM params[]); +int EVP_KDF_CTX_get_params(EVP_KDF_CTX *ctx, OSSL_PARAM params[]); +int EVP_KDF_CTX_set_params(EVP_KDF_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_KDF_gettable_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_gettable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_settable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_CTX_gettable_params(EVP_KDF_CTX *ctx); +const OSSL_PARAM *EVP_KDF_CTX_settable_params(EVP_KDF_CTX *ctx); + +void EVP_KDF_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KDF *kdf, void *arg), + void *arg); +int EVP_KDF_names_do_all(const EVP_KDF *kdf, + void (*fn)(const char *name, void *data), + void *data); + +#define EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND 0 +#define EVP_KDF_HKDF_MODE_EXTRACT_ONLY 1 +#define EVP_KDF_HKDF_MODE_EXPAND_ONLY 2 + +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV 65 +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_SRV_TO_CLI 66 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_CLI_TO_SRV 67 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_SRV_TO_CLI 68 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_CLI_TO_SRV 69 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_SRV_TO_CLI 70 + +/**** The legacy PKEY-based KDF API follows. ****/ + +#define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) +#define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_TLS_SEED (EVP_PKEY_ALG_CTRL + 2) +#define EVP_PKEY_CTRL_HKDF_MD (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_HKDF_SALT (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_HKDF_KEY (EVP_PKEY_ALG_CTRL + 5) +#define EVP_PKEY_CTRL_HKDF_INFO (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_HKDF_MODE (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_PASS (EVP_PKEY_ALG_CTRL + 8) +#define EVP_PKEY_CTRL_SCRYPT_SALT (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_SCRYPT_N (EVP_PKEY_ALG_CTRL + 10) +#define EVP_PKEY_CTRL_SCRYPT_R (EVP_PKEY_ALG_CTRL + 11) +#define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) +#define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) + +#define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND \ + EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND +#define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY \ + EVP_KDF_HKDF_MODE_EXTRACT_ONLY +#define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY \ + EVP_KDF_HKDF_MODE_EXPAND_ONLY + +int EVP_PKEY_CTX_set_tls1_prf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_tls1_prf_secret(EVP_PKEY_CTX *pctx, + const unsigned char *sec, int seclen); + +int EVP_PKEY_CTX_add1_tls1_prf_seed(EVP_PKEY_CTX *pctx, + const unsigned char *seed, int seedlen); + +int EVP_PKEY_CTX_set_hkdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_hkdf_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set1_hkdf_key(EVP_PKEY_CTX *ctx, + const unsigned char *key, int keylen); + +int EVP_PKEY_CTX_add1_hkdf_info(EVP_PKEY_CTX *ctx, + const unsigned char *info, int infolen); + +int EVP_PKEY_CTX_set_hkdf_mode(EVP_PKEY_CTX *ctx, int mode); +#define EVP_PKEY_CTX_hkdf_mode EVP_PKEY_CTX_set_hkdf_mode + +int EVP_PKEY_CTX_set1_pbe_pass(EVP_PKEY_CTX *ctx, const char *pass, + int passlen); + +int EVP_PKEY_CTX_set1_scrypt_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set_scrypt_N(EVP_PKEY_CTX *ctx, uint64_t n); + +int EVP_PKEY_CTX_set_scrypt_r(EVP_PKEY_CTX *ctx, uint64_t r); + +int EVP_PKEY_CTX_set_scrypt_p(EVP_PKEY_CTX *ctx, uint64_t p); + +int EVP_PKEY_CTX_set_scrypt_maxmem_bytes(EVP_PKEY_CTX *ctx, + uint64_t maxmem_bytes); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/kdferr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/kdferr.h new file mode 100644 index 0000000..a2c1f24 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/kdferr.h @@ -0,0 +1,16 @@ +/* + * 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_KDFERR_H +#define OPENSSL_KDFERR_H +#pragma once + +#include + +#endif /* !defined(OPENSSL_KDFERR_H) */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/lhash.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/lhash.h new file mode 100644 index 0000000..dab9372 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/lhash.h @@ -0,0 +1,417 @@ +/* + * Copyright 1995-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef OPENSSL_LHASH_H +#define OPENSSL_LHASH_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_LHASH_H +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC)(const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK)(const void *, const void *, OPENSSL_LH_COMPFUNC cfn); +typedef unsigned long (*OPENSSL_LH_HASHFUNC)(const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK)(const void *, OPENSSL_LH_HASHFUNC hfn); +typedef void (*OPENSSL_LH_DOALL_FUNC)(void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK)(void *, OPENSSL_LH_DOALL_FUNC doall); +typedef void (*OPENSSL_LH_DOALL_FUNCARG)(void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK)(void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +#define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +#define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) \ + { \ + const o_type *a = arg; \ + return name##_hash(a); \ + } +#define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +#define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +#define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) \ + { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a, b); \ + } +#define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +#define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +#define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) \ + { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); \ + } +#define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + +#define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void OPENSSL_LH_flush(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +#ifndef OPENSSL_NO_STDIO +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _LHASH OPENSSL_LHASH +#define LHASH_NODE OPENSSL_LH_NODE +#define lh_error OPENSSL_LH_error +#define lh_new OPENSSL_LH_new +#define lh_free OPENSSL_LH_free +#define lh_insert OPENSSL_LH_insert +#define lh_delete OPENSSL_LH_delete +#define lh_retrieve OPENSSL_LH_retrieve +#define lh_doall OPENSSL_LH_doall +#define lh_doall_arg OPENSSL_LH_doall_arg +#define lh_strhash OPENSSL_LH_strhash +#define lh_num_items OPENSSL_LH_num_items +#ifndef OPENSSL_NO_STDIO +#define lh_stats OPENSSL_LH_stats +#define lh_node_stats OPENSSL_LH_node_stats +#define lh_node_usage_stats OPENSSL_LH_node_usage_stats +#endif +#define lh_stats_bio OPENSSL_LH_stats_bio +#define lh_node_stats_bio OPENSSL_LH_node_stats_bio +#define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +#endif + +/* Type checking... */ + +#define LHASH_OF(type) struct lhash_st_##type + +/* Helper macro for internal use */ +#define DEFINE_LHASH_OF_INTERNAL(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ + typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ + typedef void (*lh_##type##_doallfunc)(type * a); \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type * \ + ossl_check_##type##_lh_plain_type(type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + { \ + return (const OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + { \ + return (OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + { \ + return (OPENSSL_LH_COMPFUNC)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + { \ + return (OPENSSL_LH_HASHFUNC)hfn; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + { \ + return (OPENSSL_LH_DOALL_FUNC)dfn; \ + } \ + LHASH_OF(type) + +#ifndef OPENSSL_NO_DEPRECATED_3_1 +#define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +#else +#define DEFINE_LHASH_OF_DEPRECATED(type) +#endif + +#define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ + (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ + } \ + LHASH_OF(type) + +#define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ + } \ + LHASH_OF(type) + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) +#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) +#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) +DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) +#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) +#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/macros.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/macros.h new file mode 100644 index 0000000..598d3fc --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/macros.h @@ -0,0 +1,361 @@ +/* + * Copyright 2019-2026 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_MACROS_H +#define OPENSSL_MACROS_H +#pragma once + +#include +#include + +/* Helper macros for CPP string composition */ +#define OPENSSL_MSTR_HELPER(x) #x +#define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x) + +/* + * Sometimes OPENSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Generic deprecation macro + * + * If OPENSSL_SUPPRESS_DEPRECATED is defined, then OSSL_DEPRECATED and + * OSSL_DEPRECATED_FOR become no-ops + */ +#ifndef OSSL_DEPRECATED +#undef OSSL_DEPRECATED_FOR +#ifndef OPENSSL_SUPPRESS_DEPRECATED +#if defined(_MSC_VER) +/* + * MSVC supports __declspec(deprecated) since MSVC 2003 (13.10), + * and __declspec(deprecated(message)) since MSVC 2005 (14.00) + */ +#if _MSC_VER >= 1400 +#define OSSL_DEPRECATED(since) \ + __declspec(deprecated("Since OpenSSL " #since)) +#define OSSL_DEPRECATED_FOR(since, message) \ + __declspec(deprecated("Since OpenSSL " #since ";" message)) +#elif _MSC_VER >= 1310 +#define OSSL_DEPRECATED(since) __declspec(deprecated) +#define OSSL_DEPRECATED_FOR(since, message) __declspec(deprecated) +#endif +#elif defined(__GNUC__) +/* + * According to GCC documentation, deprecations with message appeared in + * GCC 4.5.0 + */ +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +#define OSSL_DEPRECATED(since) \ + __attribute__((deprecated("Since OpenSSL " #since))) +#define OSSL_DEPRECATED_FOR(since, message) \ + __attribute__((deprecated("Since OpenSSL " #since ";" message))) +#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +#define OSSL_DEPRECATED(since) __attribute__((deprecated)) +#define OSSL_DEPRECATED_FOR(since, message) __attribute__((deprecated)) +#endif +#elif defined(__SUNPRO_C) +#if (__SUNPRO_C >= 0x5130) +#define OSSL_DEPRECATED(since) __attribute__((deprecated)) +#define OSSL_DEPRECATED_FOR(since, message) __attribute__((deprecated)) +#endif +#endif +#endif +#endif + +/* + * Still not defined? Then define no-op macros. This means these macros + * are unsuitable for use in a typedef. + */ +#ifndef OSSL_DEPRECATED +#define OSSL_DEPRECATED(since) extern +#define OSSL_DEPRECATED_FOR(since, message) extern +#endif + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . If this is + * undefined, the value of the macro OPENSSL_CONFIGURED_API (defined in + * ) is the default. + * + * For any version number up until version 1.1.x, is expected to be + * the calculated version number 0xMNNFFPPSL. + * For version numbers 3.0 and on, is expected to be a computation + * of the major and minor numbers in decimal using this formula: + * + * MAJOR * 10000 + MINOR * 100 + * + * So version 3.0 becomes 30000, version 3.2 becomes 30200, etc. + */ + +/* + * We use the OPENSSL_API_COMPAT value to define API level macros. These + * macros are used to enable or disable features at that API version boundary. + */ + +#ifdef OPENSSL_API_LEVEL +#error "OPENSSL_API_LEVEL must not be defined by application" +#endif + +/* + * We figure out what API level was intended by simple numeric comparison. + * The lowest old style number we recognise is 0x00908000L, so we take some + * safety margin and assume that anything below 0x00900000L is a new style + * number. This allows new versions up to and including v943.71.83. + */ +#ifdef OPENSSL_API_COMPAT +#if OPENSSL_API_COMPAT < 0x900000L +#define OPENSSL_API_LEVEL (OPENSSL_API_COMPAT) +#else +#define OPENSSL_API_LEVEL \ + (((OPENSSL_API_COMPAT >> 28) & 0xF) * 10000 \ + + ((OPENSSL_API_COMPAT >> 20) & 0xFF) * 100 \ + + ((OPENSSL_API_COMPAT >> 12) & 0xFF)) +#endif +#endif + +/* + * If OPENSSL_API_COMPAT wasn't given, we use default numbers to set + * the API compatibility level. + */ +#ifndef OPENSSL_API_LEVEL +#if OPENSSL_CONFIGURED_API > 0 +#define OPENSSL_API_LEVEL (OPENSSL_CONFIGURED_API) +#else +#define OPENSSL_API_LEVEL \ + (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +#endif +#endif + +#if OPENSSL_API_LEVEL > OPENSSL_CONFIGURED_API +#error "The requested API level higher than the configured API compatibility level" +#endif + +/* + * Check of sane values. + */ +/* Can't go higher than the current version. */ +#if OPENSSL_API_LEVEL > (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif +/* OpenSSL will have no version 2.y.z */ +#if OPENSSL_API_LEVEL < 30000 && OPENSSL_API_LEVEL >= 20000 +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif +/* Below 0.9.8 is unacceptably low */ +#if OPENSSL_API_LEVEL < 908 +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif + +/* + * Define macros for deprecation and simulated removal purposes. + * + * The macros OSSL_DEPRECATEDIN_{major}_{minor} are always defined for + * all OpenSSL versions we care for. They can be used as attributes + * in function declarations where appropriate. + * + * The macros OPENSSL_NO_DEPRECATED_{major}_{minor} are defined for + * all OpenSSL versions up to or equal to the version given with + * OPENSSL_API_COMPAT. They are used as guards around anything that's + * deprecated up to that version, as an effect of the developer option + * 'no-deprecated'. + */ + +#undef OPENSSL_NO_DEPRECATED_3_6 +#undef OPENSSL_NO_DEPRECATED_3_5 +#undef OPENSSL_NO_DEPRECATED_3_4 +#undef OPENSSL_NO_DEPRECATED_3_1 +#undef OPENSSL_NO_DEPRECATED_3_0 +#undef OPENSSL_NO_DEPRECATED_1_1_1 +#undef OPENSSL_NO_DEPRECATED_1_1_0 +#undef OPENSSL_NO_DEPRECATED_1_0_2 +#undef OPENSSL_NO_DEPRECATED_1_0_1 +#undef OPENSSL_NO_DEPRECATED_1_0_0 +#undef OPENSSL_NO_DEPRECATED_0_9_8 + +#if OPENSSL_API_LEVEL >= 30600 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_6 OSSL_DEPRECATED(3.6) +#define OSSL_DEPRECATEDIN_3_6_FOR(msg) OSSL_DEPRECATED_FOR(3.6, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_6 +#endif +#else +#define OSSL_DEPRECATEDIN_3_6 +#define OSSL_DEPRECATEDIN_3_6_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30500 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_5 OSSL_DEPRECATED(3.5) +#define OSSL_DEPRECATEDIN_3_5_FOR(msg) OSSL_DEPRECATED_FOR(3.5, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_5 +#endif +#else +#define OSSL_DEPRECATEDIN_3_5 +#define OSSL_DEPRECATEDIN_3_5_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30400 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_4 OSSL_DEPRECATED(3.4) +#define OSSL_DEPRECATEDIN_3_4_FOR(msg) OSSL_DEPRECATED_FOR(3.4, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_4 +#endif +#else +#define OSSL_DEPRECATEDIN_3_4 +#define OSSL_DEPRECATEDIN_3_4_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30100 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_1 OSSL_DEPRECATED(3.1) +#define OSSL_DEPRECATEDIN_3_1_FOR(msg) OSSL_DEPRECATED_FOR(3.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_1 +#endif +#else +#define OSSL_DEPRECATEDIN_3_1 +#define OSSL_DEPRECATEDIN_3_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30000 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_0 OSSL_DEPRECATED(3.0) +#define OSSL_DEPRECATEDIN_3_0_FOR(msg) OSSL_DEPRECATED_FOR(3.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_0 +#endif +#else +#define OSSL_DEPRECATEDIN_3_0 +#define OSSL_DEPRECATEDIN_3_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10101 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_1_1 OSSL_DEPRECATED(1.1.1) +#define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) OSSL_DEPRECATED_FOR(1.1.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_1_1 +#endif +#else +#define OSSL_DEPRECATEDIN_1_1_1 +#define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10100 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_1_0 OSSL_DEPRECATED(1.1.0) +#define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) OSSL_DEPRECATED_FOR(1.1.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_1_0 +#endif +#else +#define OSSL_DEPRECATEDIN_1_1_0 +#define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10002 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_2 OSSL_DEPRECATED(1.0.2) +#define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) OSSL_DEPRECATED_FOR(1.0.2, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_2 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_2 +#define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10001 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_1 OSSL_DEPRECATED(1.0.1) +#define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) OSSL_DEPRECATED_FOR(1.0.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_1 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_1 +#define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10000 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_0 OSSL_DEPRECATED(1.0.0) +#define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) OSSL_DEPRECATED_FOR(1.0.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_0 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_0 +#define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 908 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_0_9_8 OSSL_DEPRECATED(0.9.8) +#define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) OSSL_DEPRECATED_FOR(0.9.8, msg) +#else +#define OPENSSL_NO_DEPRECATED_0_9_8 +#endif +#else +#define OSSL_DEPRECATEDIN_0_9_8 +#define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) +#endif + +/* + * Make our own variants of __FILE__ and __LINE__, depending on configuration + */ + +#ifndef OPENSSL_FILE +#ifdef OPENSSL_NO_FILENAMES +#define OPENSSL_FILE "" +#define OPENSSL_LINE 0 +#else +#define OPENSSL_FILE __FILE__ +#define OPENSSL_LINE __LINE__ +#endif +#endif + +/* + * __func__ was standardized in C99, so for any compiler that claims + * to implement that language level or newer, we assume we can safely + * use that symbol. + * + * GNU C also provides __FUNCTION__ since version 2, which predates + * C99. We can, however, only use this if __STDC_VERSION__ exists, + * as it's otherwise not allowed according to ISO C standards (C90). + * (compiling with GNU C's -pedantic tells us so) + * + * If none of the above applies, we check if the compiler is MSVC, + * and use __FUNCTION__ if that's the case. + */ +#ifndef OPENSSL_FUNC +#if defined(__STDC_VERSION__) +#if __STDC_VERSION__ >= 199901L +#define OPENSSL_FUNC __func__ +#elif defined(__GNUC__) && __GNUC__ >= 2 +#define OPENSSL_FUNC __FUNCTION__ +#endif +#elif defined(_MSC_VER) +#define OPENSSL_FUNC __FUNCTION__ +#endif +/* + * If all these possibilities are exhausted, we give up and use a + * static string. + */ +#ifndef OPENSSL_FUNC +#define OPENSSL_FUNC "(unknown function)" +#endif +#endif + +#ifndef OSSL_CRYPTO_ALLOC +#if defined(__GNUC__) +#define OSSL_CRYPTO_ALLOC __attribute__((__malloc__)) +#elif defined(_MSC_VER) +#define OSSL_CRYPTO_ALLOC __declspec(restrict) +#else +#define OSSL_CRYPTO_ALLOC +#endif +#endif + +#endif /* OPENSSL_MACROS_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md2.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md2.h new file mode 100644 index 0000000..10d9a0f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md2.h @@ -0,0 +1,56 @@ +/* + * 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_MD2_H +#define OPENSSL_MD2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD2_H +#endif + +#include + +#ifndef OPENSSL_NO_MD2 +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD2_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +typedef unsigned char MD2_INT; + +#define MD2_BLOCK 16 + +typedef struct MD2state_st { + unsigned int num; + unsigned char data[MD2_BLOCK]; + MD2_INT cksm[MD2_BLOCK]; + MD2_INT state[MD2_BLOCK]; +} MD2_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *MD2_options(void); +OSSL_DEPRECATEDIN_3_0 int MD2_Init(MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD2_Update(MD2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MD2_Final(unsigned char *md, MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD2(const unsigned char *d, size_t n, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md4.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md4.h new file mode 100644 index 0000000..d60fe4a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md4.h @@ -0,0 +1,63 @@ +/* + * 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_MD4_H +#define OPENSSL_MD4_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD4_H +#endif + +#include + +#ifndef OPENSSL_NO_MD4 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD4_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD4_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define MD4_LONG unsigned int + +#define MD4_CBLOCK 64 +#define MD4_LBLOCK (MD4_CBLOCK / 4) + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD4_Init(MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD4_Update(MD4_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD4_Final(unsigned char *md, MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD4(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD4_Transform(MD4_CTX *c, const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md5.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md5.h new file mode 100644 index 0000000..0ec3d1c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/md5.h @@ -0,0 +1,62 @@ +/* + * 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_MD5_H +#define OPENSSL_MD5_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD5_H +#endif + +#include + +#ifndef OPENSSL_NO_MD5 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD5_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD5_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define MD5_LONG unsigned int + +#define MD5_CBLOCK 64 +#define MD5_LBLOCK (MD5_CBLOCK / 4) + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD5_Init(MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD5_Update(MD5_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD5_Final(unsigned char *md, MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD5(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD5_Transform(MD5_CTX *c, const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/mdc2.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/mdc2.h new file mode 100644 index 0000000..46c9652 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/mdc2.h @@ -0,0 +1,55 @@ +/* + * 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_MDC2_H +#define OPENSSL_MDC2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MDC2_H +#endif + +#include + +#ifndef OPENSSL_NO_MDC2 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MDC2_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define MDC2_BLOCK 8 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + unsigned int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MDC2_Init(MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MDC2_Update(MDC2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MDC2_Final(unsigned char *md, MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MDC2(const unsigned char *d, size_t n, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ml_kem.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ml_kem.h new file mode 100644 index 0000000..fe5b0e2 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ml_kem.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024-2025 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_ML_KEM_H +#define OPENSSL_ML_KEM_H +#pragma once + +#define OSSL_ML_KEM_SHARED_SECRET_BYTES 32 + +#define OSSL_ML_KEM_512_BITS 512 +#define OSSL_ML_KEM_512_SECURITY_BITS 128 +#define OSSL_ML_KEM_512_CIPHERTEXT_BYTES 768 +#define OSSL_ML_KEM_512_PUBLIC_KEY_BYTES 800 + +#define OSSL_ML_KEM_768_BITS 768 +#define OSSL_ML_KEM_768_SECURITY_BITS 192 +#define OSSL_ML_KEM_768_CIPHERTEXT_BYTES 1088 +#define OSSL_ML_KEM_768_PUBLIC_KEY_BYTES 1184 + +#define OSSL_ML_KEM_1024_BITS 1024 +#define OSSL_ML_KEM_1024_SECURITY_BITS 256 +#define OSSL_ML_KEM_1024_CIPHERTEXT_BYTES 1568 +#define OSSL_ML_KEM_1024_PUBLIC_KEY_BYTES 1568 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/modes.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/modes.h new file mode 100644 index 0000000..df11114 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/modes.h @@ -0,0 +1,219 @@ +/* + * Copyright 2008-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_MODES_H +#define OPENSSL_MODES_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MODES_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +typedef void (*block128_f)(const unsigned char in[16], + unsigned char out[16], const void *key); + +typedef void (*cbc128_f)(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int enc); + +typedef void (*ecb128_f)(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + int enc); + +typedef void (*ctr128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16]); + +typedef void (*ccm128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16], + unsigned char cmac[16]); + +void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); +void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); + +void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], unsigned int *num, + block128_f block); + +void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], + unsigned int *num, ctr128_f ctr); + +void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + block128_f block); + +void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, + size_t bits, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); + +size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +typedef struct gcm128_context GCM128_CONTEXT; + +GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); +void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); +void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, + size_t len); +int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); + +typedef struct ccm128_context CCM128_CONTEXT; + +void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, + unsigned int M, unsigned int L, void *key, + block128_f block); +int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, + size_t nlen, size_t mlen); +void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, + size_t alen); +int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); + +typedef struct xts128_context XTS128_CONTEXT; + +int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + +size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); +size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); +size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); + +#ifndef OPENSSL_NO_OCB +typedef struct ocb128_context OCB128_CONTEXT; + +typedef void (*ocb128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + size_t start_block_num, + unsigned char offset_i[16], + const unsigned char L_[][16], + unsigned char checksum[16]); + +OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src, + void *keyenc, void *keydec); +int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv, + size_t len, size_t taglen); +int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx); +#endif /* OPENSSL_NO_OCB */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/obj_mac.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/obj_mac.h new file mode 100644 index 0000000..236e88f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/obj_mac.h @@ -0,0 +1,6695 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2025 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_OBJ_MAC_H +# define OPENSSL_OBJ_MAC_H +# pragma once + +#define SN_undef "UNDEF" +#define LN_undef "undefined" +#define NID_undef 0 +#define OBJ_undef 0L + +#define SN_itu_t "ITU-T" +#define LN_itu_t "itu-t" +#define NID_itu_t 645 +#define OBJ_itu_t 0L + +#define NID_ccitt 404 +#define OBJ_ccitt OBJ_itu_t + +#define SN_iso "ISO" +#define LN_iso "iso" +#define NID_iso 181 +#define OBJ_iso 1L + +#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" +#define LN_joint_iso_itu_t "joint-iso-itu-t" +#define NID_joint_iso_itu_t 646 +#define OBJ_joint_iso_itu_t 2L + +#define NID_joint_iso_ccitt 393 +#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t + +#define SN_member_body "member-body" +#define LN_member_body "ISO Member Body" +#define NID_member_body 182 +#define OBJ_member_body OBJ_iso,2L + +#define SN_identified_organization "identified-organization" +#define NID_identified_organization 676 +#define OBJ_identified_organization OBJ_iso,3L + +#define SN_gmac "GMAC" +#define LN_gmac "gmac" +#define NID_gmac 1195 +#define OBJ_gmac OBJ_iso,0L,9797L,3L,4L + +#define SN_hmac_md5 "HMAC-MD5" +#define LN_hmac_md5 "hmac-md5" +#define NID_hmac_md5 780 +#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L + +#define SN_hmac_sha1 "HMAC-SHA1" +#define LN_hmac_sha1 "hmac-sha1" +#define NID_hmac_sha1 781 +#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L + +#define SN_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#define SN_international_organizations "international-organizations" +#define LN_international_organizations "International Organizations" +#define NID_international_organizations 647 +#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L + +#define SN_wap "wap" +#define NID_wap 678 +#define OBJ_wap OBJ_international_organizations,43L + +#define SN_wap_wsg "wap-wsg" +#define NID_wap_wsg 679 +#define OBJ_wap_wsg OBJ_wap,1L + +#define SN_selected_attribute_types "selected-attribute-types" +#define LN_selected_attribute_types "Selected Attribute Types" +#define NID_selected_attribute_types 394 +#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L + +#define SN_clearance "clearance" +#define NID_clearance 395 +#define OBJ_clearance OBJ_selected_attribute_types,55L + +#define SN_ISO_US "ISO-US" +#define LN_ISO_US "ISO US Member Body" +#define NID_ISO_US 183 +#define OBJ_ISO_US OBJ_member_body,840L + +#define SN_X9_57 "X9-57" +#define LN_X9_57 "X9.57" +#define NID_X9_57 184 +#define OBJ_X9_57 OBJ_ISO_US,10040L + +#define SN_X9cm "X9cm" +#define LN_X9cm "X9.57 CM ?" +#define NID_X9cm 185 +#define OBJ_X9cm OBJ_X9_57,4L + +#define SN_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#define SN_dsa "DSA" +#define LN_dsa "dsaEncryption" +#define NID_dsa 116 +#define OBJ_dsa OBJ_X9cm,1L + +#define SN_dsaWithSHA1 "DSA-SHA1" +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define NID_dsaWithSHA1 113 +#define OBJ_dsaWithSHA1 OBJ_X9cm,3L + +#define SN_ansi_X9_62 "ansi-X9-62" +#define LN_ansi_X9_62 "ANSI X9.62" +#define NID_ansi_X9_62 405 +#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L + +#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L + +#define SN_X9_62_prime_field "prime-field" +#define NID_X9_62_prime_field 406 +#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L + +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_characteristic_two_field 407 +#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L + +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L + +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_onBasis 681 +#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L + +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_tpBasis 682 +#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L + +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_ppBasis 683 +#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L + +#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L + +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_id_ecPublicKey 408 +#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L + +#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L + +#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L + +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_c2pnb163v1 684 +#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L + +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v2 685 +#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L + +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v3 686 +#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L + +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb176v1 687 +#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L + +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2tnb191v1 688 +#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L + +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v2 689 +#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L + +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v3 690 +#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L + +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2onb191v4 691 +#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L + +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v5 692 +#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L + +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2pnb208w1 693 +#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L + +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2tnb239v1 694 +#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L + +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v2 695 +#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L + +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v3 696 +#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L + +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2onb239v4 697 +#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L + +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v5 698 +#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L + +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2pnb272w1 699 +#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L + +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb304w1 700 +#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L + +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2tnb359v1 701 +#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L + +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2pnb368w1 702 +#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L + +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2tnb431r1 703 +#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L + +#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L + +#define SN_X9_62_prime192v1 "prime192v1" +#define NID_X9_62_prime192v1 409 +#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L + +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v2 410 +#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L + +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v3 411 +#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L + +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime239v1 412 +#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L + +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v2 413 +#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L + +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v3 414 +#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L + +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_X9_62_prime256v1 415 +#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L + +#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L + +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_ecdsa_with_SHA1 416 +#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L + +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_Recommended 791 +#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L + +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Specified 792 +#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L + +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_SHA224 793 +#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L + +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA256 794 +#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L + +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA384 795 +#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L + +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA512 796 +#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L + +#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L + +#define SN_secp112r1 "secp112r1" +#define NID_secp112r1 704 +#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L + +#define SN_secp112r2 "secp112r2" +#define NID_secp112r2 705 +#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L + +#define SN_secp128r1 "secp128r1" +#define NID_secp128r1 706 +#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L + +#define SN_secp128r2 "secp128r2" +#define NID_secp128r2 707 +#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L + +#define SN_secp160k1 "secp160k1" +#define NID_secp160k1 708 +#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L + +#define SN_secp160r1 "secp160r1" +#define NID_secp160r1 709 +#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L + +#define SN_secp160r2 "secp160r2" +#define NID_secp160r2 710 +#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L + +#define SN_secp192k1 "secp192k1" +#define NID_secp192k1 711 +#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L + +#define SN_secp224k1 "secp224k1" +#define NID_secp224k1 712 +#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L + +#define SN_secp224r1 "secp224r1" +#define NID_secp224r1 713 +#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L + +#define SN_secp256k1 "secp256k1" +#define NID_secp256k1 714 +#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L + +#define SN_secp384r1 "secp384r1" +#define NID_secp384r1 715 +#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L + +#define SN_secp521r1 "secp521r1" +#define NID_secp521r1 716 +#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L + +#define SN_sect113r1 "sect113r1" +#define NID_sect113r1 717 +#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L + +#define SN_sect113r2 "sect113r2" +#define NID_sect113r2 718 +#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L + +#define SN_sect131r1 "sect131r1" +#define NID_sect131r1 719 +#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L + +#define SN_sect131r2 "sect131r2" +#define NID_sect131r2 720 +#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L + +#define SN_sect163k1 "sect163k1" +#define NID_sect163k1 721 +#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L + +#define SN_sect163r1 "sect163r1" +#define NID_sect163r1 722 +#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L + +#define SN_sect163r2 "sect163r2" +#define NID_sect163r2 723 +#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L + +#define SN_sect193r1 "sect193r1" +#define NID_sect193r1 724 +#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L + +#define SN_sect193r2 "sect193r2" +#define NID_sect193r2 725 +#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L + +#define SN_sect233k1 "sect233k1" +#define NID_sect233k1 726 +#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L + +#define SN_sect233r1 "sect233r1" +#define NID_sect233r1 727 +#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L + +#define SN_sect239k1 "sect239k1" +#define NID_sect239k1 728 +#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L + +#define SN_sect283k1 "sect283k1" +#define NID_sect283k1 729 +#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L + +#define SN_sect283r1 "sect283r1" +#define NID_sect283r1 730 +#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L + +#define SN_sect409k1 "sect409k1" +#define NID_sect409k1 731 +#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L + +#define SN_sect409r1 "sect409r1" +#define NID_sect409r1 732 +#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L + +#define SN_sect571k1 "sect571k1" +#define NID_sect571k1 733 +#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L + +#define SN_sect571r1 "sect571r1" +#define NID_sect571r1 734 +#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L + +#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L + +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L + +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L + +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L + +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L + +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L + +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L + +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L + +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L + +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L + +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L + +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L + +#define SN_cast5_cbc "CAST5-CBC" +#define LN_cast5_cbc "cast5-cbc" +#define NID_cast5_cbc 108 +#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L + +#define SN_cast5_ecb "CAST5-ECB" +#define LN_cast5_ecb "cast5-ecb" +#define NID_cast5_ecb 109 + +#define SN_cast5_cfb64 "CAST5-CFB" +#define LN_cast5_cfb64 "cast5-cfb" +#define NID_cast5_cfb64 110 + +#define SN_cast5_ofb64 "CAST5-OFB" +#define LN_cast5_ofb64 "cast5-ofb" +#define NID_cast5_ofb64 111 + +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L + +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define LN_id_PasswordBasedMAC "password based MAC" +#define NID_id_PasswordBasedMAC 782 +#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L + +#define SN_id_DHBasedMac "id-DHBasedMac" +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define NID_id_DHBasedMac 783 +#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L + +#define SN_rsadsi "rsadsi" +#define LN_rsadsi "RSA Data Security, Inc." +#define NID_rsadsi 1 +#define OBJ_rsadsi OBJ_ISO_US,113549L + +#define SN_pkcs "pkcs" +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define NID_pkcs 2 +#define OBJ_pkcs OBJ_rsadsi,1L + +#define SN_pkcs1 "pkcs1" +#define NID_pkcs1 186 +#define OBJ_pkcs1 OBJ_pkcs,1L + +#define LN_rsaEncryption "rsaEncryption" +#define NID_rsaEncryption 6 +#define OBJ_rsaEncryption OBJ_pkcs1,1L + +#define SN_md2WithRSAEncryption "RSA-MD2" +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define NID_md2WithRSAEncryption 7 +#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L + +#define SN_md4WithRSAEncryption "RSA-MD4" +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define NID_md4WithRSAEncryption 396 +#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L + +#define SN_md5WithRSAEncryption "RSA-MD5" +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define NID_md5WithRSAEncryption 8 +#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L + +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define NID_sha1WithRSAEncryption 65 +#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L + +#define SN_rsaesOaep "RSAES-OAEP" +#define LN_rsaesOaep "rsaesOaep" +#define NID_rsaesOaep 919 +#define OBJ_rsaesOaep OBJ_pkcs1,7L + +#define SN_mgf1 "MGF1" +#define LN_mgf1 "mgf1" +#define NID_mgf1 911 +#define OBJ_mgf1 OBJ_pkcs1,8L + +#define SN_pSpecified "PSPECIFIED" +#define LN_pSpecified "pSpecified" +#define NID_pSpecified 935 +#define OBJ_pSpecified OBJ_pkcs1,9L + +#define SN_rsassaPss "RSASSA-PSS" +#define LN_rsassaPss "rsassaPss" +#define NID_rsassaPss 912 +#define OBJ_rsassaPss OBJ_pkcs1,10L + +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define NID_sha256WithRSAEncryption 668 +#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L + +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define NID_sha384WithRSAEncryption 669 +#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L + +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define NID_sha512WithRSAEncryption 670 +#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L + +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define NID_sha224WithRSAEncryption 671 +#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L + +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#define SN_pkcs3 "pkcs3" +#define NID_pkcs3 27 +#define OBJ_pkcs3 OBJ_pkcs,3L + +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_dhKeyAgreement 28 +#define OBJ_dhKeyAgreement OBJ_pkcs3,1L + +#define SN_pkcs5 "pkcs5" +#define NID_pkcs5 187 +#define OBJ_pkcs5 OBJ_pkcs,5L + +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define NID_pbeWithMD2AndDES_CBC 9 +#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L + +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define NID_pbeWithMD5AndDES_CBC 10 +#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L + +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L + +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L + +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L + +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L + +#define LN_id_pbkdf2 "PBKDF2" +#define NID_id_pbkdf2 69 +#define OBJ_id_pbkdf2 OBJ_pkcs5,12L + +#define LN_pbes2 "PBES2" +#define NID_pbes2 161 +#define OBJ_pbes2 OBJ_pkcs5,13L + +#define LN_pbmac1 "PBMAC1" +#define NID_pbmac1 162 +#define OBJ_pbmac1 OBJ_pkcs5,14L + +#define SN_pkcs7 "pkcs7" +#define NID_pkcs7 20 +#define OBJ_pkcs7 OBJ_pkcs,7L + +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7_data 21 +#define OBJ_pkcs7_data OBJ_pkcs7,1L + +#define LN_pkcs7_signed "pkcs7-signedData" +#define NID_pkcs7_signed 22 +#define OBJ_pkcs7_signed OBJ_pkcs7,2L + +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define NID_pkcs7_enveloped 23 +#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L + +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_signedAndEnveloped 24 +#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L + +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_digest 25 +#define OBJ_pkcs7_digest OBJ_pkcs7,5L + +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_encrypted 26 +#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L + +#define SN_pkcs9 "pkcs9" +#define NID_pkcs9 47 +#define OBJ_pkcs9 OBJ_pkcs,9L + +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9_emailAddress 48 +#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L + +#define LN_pkcs9_unstructuredName "unstructuredName" +#define NID_pkcs9_unstructuredName 49 +#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L + +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_contentType 50 +#define OBJ_pkcs9_contentType OBJ_pkcs9,3L + +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_messageDigest 51 +#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L + +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_signingTime 52 +#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L + +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_countersignature 53 +#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L + +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_challengePassword 54 +#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L + +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_unstructuredAddress 55 +#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L + +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_extCertAttributes 56 +#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L + +#define SN_ext_req "extReq" +#define LN_ext_req "Extension Request" +#define NID_ext_req 172 +#define OBJ_ext_req OBJ_pkcs9,14L + +#define SN_SMIMECapabilities "SMIME-CAPS" +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define NID_SMIMECapabilities 167 +#define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +#define SN_SMIME "SMIME" +#define LN_SMIME "S/MIME" +#define NID_SMIME 188 +#define OBJ_SMIME OBJ_pkcs9,16L + +#define SN_id_smime_mod "id-smime-mod" +#define NID_id_smime_mod 189 +#define OBJ_id_smime_mod OBJ_SMIME,0L + +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_ct 190 +#define OBJ_id_smime_ct OBJ_SMIME,1L + +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_aa 191 +#define OBJ_id_smime_aa OBJ_SMIME,2L + +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_alg 192 +#define OBJ_id_smime_alg OBJ_SMIME,3L + +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_cd 193 +#define OBJ_id_smime_cd OBJ_SMIME,4L + +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_spq 194 +#define OBJ_id_smime_spq OBJ_SMIME,5L + +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_cti 195 +#define OBJ_id_smime_cti OBJ_SMIME,6L + +#define SN_id_smime_ori "id-smime-ori" +#define NID_id_smime_ori 1499 +#define OBJ_id_smime_ori OBJ_SMIME,13L + +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_mod_cms 196 +#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L + +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_ess 197 +#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L + +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_oid 198 +#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L + +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_msg_v3 199 +#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L + +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L + +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L + +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L + +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L + +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_ct_receipt 204 +#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L + +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_authData 205 +#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L + +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_publishCert 206 +#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L + +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L + +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L + +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_contentInfo 209 +#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L + +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L + +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L + +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_compressedData 786 +#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L + +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#define SN_id_ct_routeOriginAuthz "id-ct-routeOriginAuthz" +#define NID_id_ct_routeOriginAuthz 1234 +#define OBJ_id_ct_routeOriginAuthz OBJ_id_smime_ct,24L + +#define SN_id_ct_rpkiManifest "id-ct-rpkiManifest" +#define NID_id_ct_rpkiManifest 1235 +#define OBJ_id_ct_rpkiManifest OBJ_id_smime_ct,26L + +#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" +#define NID_id_ct_asciiTextWithCRLF 787 +#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L + +#define SN_id_ct_xml "id-ct-xml" +#define NID_id_ct_xml 1060 +#define OBJ_id_ct_xml OBJ_id_smime_ct,28L + +#define SN_id_ct_rpkiGhostbusters "id-ct-rpkiGhostbusters" +#define NID_id_ct_rpkiGhostbusters 1236 +#define OBJ_id_ct_rpkiGhostbusters OBJ_id_smime_ct,35L + +#define SN_id_ct_resourceTaggedAttest "id-ct-resourceTaggedAttest" +#define NID_id_ct_resourceTaggedAttest 1237 +#define OBJ_id_ct_resourceTaggedAttest OBJ_id_smime_ct,36L + +#define SN_id_ct_geofeedCSVwithCRLF "id-ct-geofeedCSVwithCRLF" +#define NID_id_ct_geofeedCSVwithCRLF 1246 +#define OBJ_id_ct_geofeedCSVwithCRLF OBJ_id_smime_ct,47L + +#define SN_id_ct_signedChecklist "id-ct-signedChecklist" +#define NID_id_ct_signedChecklist 1247 +#define OBJ_id_ct_signedChecklist OBJ_id_smime_ct,48L + +#define SN_id_ct_ASPA "id-ct-ASPA" +#define NID_id_ct_ASPA 1250 +#define OBJ_id_ct_ASPA OBJ_id_smime_ct,49L + +#define SN_id_ct_signedTAL "id-ct-signedTAL" +#define NID_id_ct_signedTAL 1284 +#define OBJ_id_ct_signedTAL OBJ_id_smime_ct,50L + +#define SN_id_ct_rpkiSignedPrefixList "id-ct-rpkiSignedPrefixList" +#define NID_id_ct_rpkiSignedPrefixList 1320 +#define OBJ_id_ct_rpkiSignedPrefixList OBJ_id_smime_ct,51L + +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_smime_aa_receiptRequest 212 +#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L + +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_securityLabel 213 +#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L + +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_mlExpandHistory 214 +#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L + +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_contentHint 215 +#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L + +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_msgSigDigest 216 +#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L + +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_encapContentType 217 +#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L + +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_contentIdentifier 218 +#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L + +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_macValue 219 +#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L + +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_equivalentLabels 220 +#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L + +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_contentReference 221 +#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L + +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_encrypKeyPref 222 +#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L + +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_signingCertificate 223 +#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L + +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L + +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_timeStampToken 225 +#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L + +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L + +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_commitmentType 227 +#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L + +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_signerLocation 228 +#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L + +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerAttr 229 +#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L + +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L + +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L + +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L + +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L + +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_certValues 234 +#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L + +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_revocationValues 235 +#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L + +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L + +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L + +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L + +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_signatureType 239 +#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L + +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_dvcs_dvc 240 +#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L + +#define SN_id_aa_ets_attrCertificateRefs "id-aa-ets-attrCertificateRefs" +#define NID_id_aa_ets_attrCertificateRefs 1261 +#define OBJ_id_aa_ets_attrCertificateRefs OBJ_id_smime_aa,44L + +#define SN_id_aa_ets_attrRevocationRefs "id-aa-ets-attrRevocationRefs" +#define NID_id_aa_ets_attrRevocationRefs 1262 +#define OBJ_id_aa_ets_attrRevocationRefs OBJ_id_smime_aa,45L + +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#define SN_id_aa_ets_archiveTimestampV2 "id-aa-ets-archiveTimestampV2" +#define NID_id_aa_ets_archiveTimestampV2 1280 +#define OBJ_id_aa_ets_archiveTimestampV2 OBJ_id_smime_aa,48L + +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L + +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L + +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_3DESwrap 243 +#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L + +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_RC2wrap 244 +#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L + +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_ESDH 245 +#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L + +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L + +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L + +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_alg_PWRI_KEK 893 +#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L + +#define SN_HKDF_SHA256 "id-alg-hkdf-with-sha256" +#define LN_HKDF_SHA256 "HKDF-SHA256" +#define NID_HKDF_SHA256 1496 +#define OBJ_HKDF_SHA256 OBJ_id_smime_alg,28L + +#define SN_HKDF_SHA384 "id-alg-hkdf-with-sha384" +#define LN_HKDF_SHA384 "HKDF-SHA384" +#define NID_HKDF_SHA384 1497 +#define OBJ_HKDF_SHA384 OBJ_id_smime_alg,29L + +#define SN_HKDF_SHA512 "id-alg-hkdf-with-sha512" +#define LN_HKDF_SHA512 "HKDF-SHA512" +#define NID_HKDF_SHA512 1498 +#define OBJ_HKDF_SHA512 OBJ_id_smime_alg,30L + +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_smime_cd_ldap 248 +#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L + +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L + +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L + +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L + +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L + +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L + +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L + +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L + +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L + +#define SN_id_smime_ori_kem "id-smime-ori-kem" +#define NID_id_smime_ori_kem 1500 +#define OBJ_id_smime_ori_kem OBJ_id_smime_ori,3L + +#define LN_friendlyName "friendlyName" +#define NID_friendlyName 156 +#define OBJ_friendlyName OBJ_pkcs9,20L + +#define LN_localKeyID "localKeyID" +#define NID_localKeyID 157 +#define OBJ_localKeyID OBJ_pkcs9,21L + +#define OBJ_ms_corp 1L,3L,6L,1L,4L,1L,311L + +#define SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name OBJ_ms_corp,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet OBJ_ms_corp,17L,2L + +#define OBJ_certTypes OBJ_pkcs9,22L + +#define LN_x509Certificate "x509Certificate" +#define NID_x509Certificate 158 +#define OBJ_x509Certificate OBJ_certTypes,1L + +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_sdsiCertificate 159 +#define OBJ_sdsiCertificate OBJ_certTypes,2L + +#define OBJ_crlTypes OBJ_pkcs9,23L + +#define LN_x509Crl "x509Crl" +#define NID_x509Crl 160 +#define OBJ_x509Crl OBJ_crlTypes,1L + +#define SN_id_aa_CMSAlgorithmProtection "id-aa-CMSAlgorithmProtection" +#define NID_id_aa_CMSAlgorithmProtection 1263 +#define OBJ_id_aa_CMSAlgorithmProtection OBJ_pkcs9,52L + +#define OBJ_pkcs12 OBJ_pkcs,12L + +#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L + +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L + +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L + +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L + +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L + +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L + +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L + +#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L + +#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L + +#define LN_keyBag "keyBag" +#define NID_keyBag 150 +#define OBJ_keyBag OBJ_pkcs12_BagIds,1L + +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L + +#define LN_certBag "certBag" +#define NID_certBag 152 +#define OBJ_certBag OBJ_pkcs12_BagIds,3L + +#define LN_crlBag "crlBag" +#define NID_crlBag 153 +#define OBJ_crlBag OBJ_pkcs12_BagIds,4L + +#define LN_secretBag "secretBag" +#define NID_secretBag 154 +#define OBJ_secretBag OBJ_pkcs12_BagIds,5L + +#define LN_safeContentsBag "safeContentsBag" +#define NID_safeContentsBag 155 +#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L + +#define SN_md2 "MD2" +#define LN_md2 "md2" +#define NID_md2 3 +#define OBJ_md2 OBJ_rsadsi,2L,2L + +#define SN_md4 "MD4" +#define LN_md4 "md4" +#define NID_md4 257 +#define OBJ_md4 OBJ_rsadsi,2L,4L + +#define SN_md5 "MD5" +#define LN_md5 "md5" +#define NID_md5 4 +#define OBJ_md5 OBJ_rsadsi,2L,5L + +#define SN_md5_sha1 "MD5-SHA1" +#define LN_md5_sha1 "md5-sha1" +#define NID_md5_sha1 114 + +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_hmacWithMD5 797 +#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L + +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithSHA1 163 +#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +#define SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#define SN_SM2_with_SM3 "SM2-SM3" +#define LN_SM2_with_SM3 "SM2-with-SM3" +#define NID_SM2_with_SM3 1204 +#define OBJ_SM2_with_SM3 OBJ_sm_scheme,501L + +#define LN_hmacWithSM3 "hmacWithSM3" +#define NID_hmacWithSM3 1281 +#define OBJ_hmacWithSM3 OBJ_sm3,3L,1L + +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSHA224 798 +#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L + +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA256 799 +#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L + +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA384 800 +#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L + +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA512 801 +#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L + +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#define SN_rc2_cbc "RC2-CBC" +#define LN_rc2_cbc "rc2-cbc" +#define NID_rc2_cbc 37 +#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L + +#define SN_rc2_ecb "RC2-ECB" +#define LN_rc2_ecb "rc2-ecb" +#define NID_rc2_ecb 38 + +#define SN_rc2_cfb64 "RC2-CFB" +#define LN_rc2_cfb64 "rc2-cfb" +#define NID_rc2_cfb64 39 + +#define SN_rc2_ofb64 "RC2-OFB" +#define LN_rc2_ofb64 "rc2-ofb" +#define NID_rc2_ofb64 40 + +#define SN_rc2_40_cbc "RC2-40-CBC" +#define LN_rc2_40_cbc "rc2-40-cbc" +#define NID_rc2_40_cbc 98 + +#define SN_rc2_64_cbc "RC2-64-CBC" +#define LN_rc2_64_cbc "rc2-64-cbc" +#define NID_rc2_64_cbc 166 + +#define SN_rc4 "RC4" +#define LN_rc4 "rc4" +#define NID_rc4 5 +#define OBJ_rc4 OBJ_rsadsi,3L,4L + +#define SN_rc4_40 "RC4-40" +#define LN_rc4_40 "rc4-40" +#define NID_rc4_40 97 + +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define LN_des_ede3_cbc "des-ede3-cbc" +#define NID_des_ede3_cbc 44 +#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L + +#define SN_rc5_cbc "RC5-CBC" +#define LN_rc5_cbc "rc5-cbc" +#define NID_rc5_cbc 120 +#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L + +#define SN_rc5_ecb "RC5-ECB" +#define LN_rc5_ecb "rc5-ecb" +#define NID_rc5_ecb 121 + +#define SN_rc5_cfb64 "RC5-CFB" +#define LN_rc5_cfb64 "rc5-cfb" +#define NID_rc5_cfb64 122 + +#define SN_rc5_ofb64 "RC5-OFB" +#define LN_rc5_ofb64 "rc5-ofb" +#define NID_rc5_ofb64 123 + +#define SN_ms_ext_req "msExtReq" +#define LN_ms_ext_req "Microsoft Extension Request" +#define NID_ms_ext_req 171 +#define OBJ_ms_ext_req OBJ_ms_corp,2L,1L,14L + +#define SN_ms_code_ind "msCodeInd" +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define NID_ms_code_ind 134 +#define OBJ_ms_code_ind OBJ_ms_corp,2L,1L,21L + +#define SN_ms_code_com "msCodeCom" +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define NID_ms_code_com 135 +#define OBJ_ms_code_com OBJ_ms_corp,2L,1L,22L + +#define SN_ms_ctl_sign "msCTLSign" +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define NID_ms_ctl_sign 136 +#define OBJ_ms_ctl_sign OBJ_ms_corp,10L,3L,1L + +#define SN_ms_sgc "msSGC" +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define NID_ms_sgc 137 +#define OBJ_ms_sgc OBJ_ms_corp,10L,3L,3L + +#define SN_ms_efs "msEFS" +#define LN_ms_efs "Microsoft Encrypted File System" +#define NID_ms_efs 138 +#define OBJ_ms_efs OBJ_ms_corp,10L,3L,4L + +#define SN_ms_smartcard_login "msSmartcardLogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define NID_ms_smartcard_login 648 +#define OBJ_ms_smartcard_login OBJ_ms_corp,20L,2L,2L + +#define SN_ms_upn "msUPN" +#define LN_ms_upn "Microsoft User Principal Name" +#define NID_ms_upn 649 +#define OBJ_ms_upn OBJ_ms_corp,20L,2L,3L + +#define SN_ms_ntds_sec_ext "ms-ntds-sec-ext" +#define LN_ms_ntds_sec_ext "Microsoft NTDS CA Extension" +#define NID_ms_ntds_sec_ext 1292 +#define OBJ_ms_ntds_sec_ext OBJ_ms_corp,25L,2L + +#define SN_ms_ntds_obj_sid "ms-ntds-obj-sid" +#define LN_ms_ntds_obj_sid "Microsoft NTDS AD objectSid" +#define NID_ms_ntds_obj_sid 1291 +#define OBJ_ms_ntds_obj_sid OBJ_ms_corp,25L,2L,1L + +#define SN_ms_cert_templ "ms-cert-templ" +#define LN_ms_cert_templ "Microsoft certificate template" +#define NID_ms_cert_templ 1293 +#define OBJ_ms_cert_templ OBJ_ms_corp,21L,7L + +#define SN_ms_app_policies "ms-app-policies" +#define LN_ms_app_policies "Microsoft Application Policies Extension" +#define NID_ms_app_policies 1294 +#define OBJ_ms_app_policies OBJ_ms_corp,21L,10L + +#define SN_idea_cbc "IDEA-CBC" +#define LN_idea_cbc "idea-cbc" +#define NID_idea_cbc 34 +#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L + +#define SN_idea_ecb "IDEA-ECB" +#define LN_idea_ecb "idea-ecb" +#define NID_idea_ecb 36 + +#define SN_idea_cfb64 "IDEA-CFB" +#define LN_idea_cfb64 "idea-cfb" +#define NID_idea_cfb64 35 + +#define SN_idea_ofb64 "IDEA-OFB" +#define LN_idea_ofb64 "idea-ofb" +#define NID_idea_ofb64 46 + +#define SN_bf_cbc "BF-CBC" +#define LN_bf_cbc "bf-cbc" +#define NID_bf_cbc 91 +#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L + +#define SN_bf_ecb "BF-ECB" +#define LN_bf_ecb "bf-ecb" +#define NID_bf_ecb 92 + +#define SN_bf_cfb64 "BF-CFB" +#define LN_bf_cfb64 "bf-cfb" +#define NID_bf_cfb64 93 + +#define SN_bf_ofb64 "BF-OFB" +#define LN_bf_ofb64 "bf-ofb" +#define NID_bf_ofb64 94 + +#define SN_id_pkix "PKIX" +#define NID_id_pkix 127 +#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix_mod 258 +#define OBJ_id_pkix_mod OBJ_id_pkix,0L + +#define SN_id_pe "id-pe" +#define NID_id_pe 175 +#define OBJ_id_pe OBJ_id_pkix,1L + +#define SN_id_qt "id-qt" +#define NID_id_qt 259 +#define OBJ_id_qt OBJ_id_pkix,2L + +#define SN_id_kp "id-kp" +#define NID_id_kp 128 +#define OBJ_id_kp OBJ_id_pkix,3L + +#define SN_id_it "id-it" +#define NID_id_it 260 +#define OBJ_id_it OBJ_id_pkix,4L + +#define SN_id_pkip "id-pkip" +#define NID_id_pkip 261 +#define OBJ_id_pkip OBJ_id_pkix,5L + +#define SN_id_alg "id-alg" +#define NID_id_alg 262 +#define OBJ_id_alg OBJ_id_pkix,6L + +#define SN_id_cmc "id-cmc" +#define NID_id_cmc 263 +#define OBJ_id_cmc OBJ_id_pkix,7L + +#define SN_id_on "id-on" +#define NID_id_on 264 +#define OBJ_id_on OBJ_id_pkix,8L + +#define SN_id_pda "id-pda" +#define NID_id_pda 265 +#define OBJ_id_pda OBJ_id_pkix,9L + +#define SN_id_aca "id-aca" +#define NID_id_aca 266 +#define OBJ_id_aca OBJ_id_pkix,10L + +#define SN_id_qcs "id-qcs" +#define NID_id_qcs 267 +#define OBJ_id_qcs OBJ_id_pkix,11L + +#define SN_id_cp "id-cp" +#define NID_id_cp 1238 +#define OBJ_id_cp OBJ_id_pkix,14L + +#define SN_id_cct "id-cct" +#define NID_id_cct 268 +#define OBJ_id_cct OBJ_id_pkix,12L + +#define SN_id_ppl "id-ppl" +#define NID_id_ppl 662 +#define OBJ_id_ppl OBJ_id_pkix,21L + +#define SN_id_ad "id-ad" +#define NID_id_ad 176 +#define OBJ_id_ad OBJ_id_pkix,48L + +#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" +#define NID_id_pkix1_explicit_88 269 +#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L + +#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" +#define NID_id_pkix1_implicit_88 270 +#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L + +#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" +#define NID_id_pkix1_explicit_93 271 +#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L + +#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" +#define NID_id_pkix1_implicit_93 272 +#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L + +#define SN_id_mod_crmf "id-mod-crmf" +#define NID_id_mod_crmf 273 +#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L + +#define SN_id_mod_cmc "id-mod-cmc" +#define NID_id_mod_cmc 274 +#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L + +#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" +#define NID_id_mod_kea_profile_88 275 +#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L + +#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" +#define NID_id_mod_kea_profile_93 276 +#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L + +#define SN_id_mod_cmp "id-mod-cmp" +#define NID_id_mod_cmp 277 +#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L + +#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" +#define NID_id_mod_qualified_cert_88 278 +#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L + +#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" +#define NID_id_mod_qualified_cert_93 279 +#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L + +#define SN_id_mod_attribute_cert "id-mod-attribute-cert" +#define NID_id_mod_attribute_cert 280 +#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L + +#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" +#define NID_id_mod_timestamp_protocol 281 +#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L + +#define SN_id_mod_ocsp "id-mod-ocsp" +#define NID_id_mod_ocsp 282 +#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L + +#define SN_id_mod_dvcs "id-mod-dvcs" +#define NID_id_mod_dvcs 283 +#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L + +#define SN_id_mod_cmp2000 "id-mod-cmp2000" +#define NID_id_mod_cmp2000 284 +#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L + +#define SN_id_mod_cmp2000_02 "id-mod-cmp2000-02" +#define NID_id_mod_cmp2000_02 1251 +#define OBJ_id_mod_cmp2000_02 OBJ_id_pkix_mod,50L + +#define SN_id_mod_cmp2021_88 "id-mod-cmp2021-88" +#define NID_id_mod_cmp2021_88 1252 +#define OBJ_id_mod_cmp2021_88 OBJ_id_pkix_mod,99L + +#define SN_id_mod_cmp2021_02 "id-mod-cmp2021-02" +#define NID_id_mod_cmp2021_02 1253 +#define OBJ_id_mod_cmp2021_02 OBJ_id_pkix_mod,100L + +#define SN_info_access "authorityInfoAccess" +#define LN_info_access "Authority Information Access" +#define NID_info_access 177 +#define OBJ_info_access OBJ_id_pe,1L + +#define SN_biometricInfo "biometricInfo" +#define LN_biometricInfo "Biometric Info" +#define NID_biometricInfo 285 +#define OBJ_biometricInfo OBJ_id_pe,2L + +#define SN_qcStatements "qcStatements" +#define NID_qcStatements 286 +#define OBJ_qcStatements OBJ_id_pe,3L + +#define SN_ac_auditIdentity "ac-auditIdentity" +#define LN_ac_auditIdentity "X509v3 Audit Identity" +#define NID_ac_auditIdentity 287 +#define OBJ_ac_auditIdentity OBJ_id_pe,4L + +#define NID_ac_auditEntity 1323 +#define OBJ_ac_auditEntity OBJ_ac_auditIdentity + +#define SN_ac_targeting "ac-targeting" +#define NID_ac_targeting 288 +#define OBJ_ac_targeting OBJ_id_pe,5L + +#define SN_aaControls "aaControls" +#define NID_aaControls 289 +#define OBJ_aaControls OBJ_id_pe,6L + +#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" +#define NID_sbgp_ipAddrBlock 290 +#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L + +#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" +#define NID_sbgp_autonomousSysNum 291 +#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L + +#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" +#define NID_sbgp_routerIdentifier 292 +#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L + +#define SN_ac_proxying "ac-proxying" +#define NID_ac_proxying 397 +#define OBJ_ac_proxying OBJ_id_pe,10L + +#define SN_sinfo_access "subjectInfoAccess" +#define LN_sinfo_access "Subject Information Access" +#define NID_sinfo_access 398 +#define OBJ_sinfo_access OBJ_id_pe,11L + +#define SN_proxyCertInfo "proxyCertInfo" +#define LN_proxyCertInfo "Proxy Certificate Information" +#define NID_proxyCertInfo 663 +#define OBJ_proxyCertInfo OBJ_id_pe,14L + +#define SN_tlsfeature "tlsfeature" +#define LN_tlsfeature "TLS Feature" +#define NID_tlsfeature 1020 +#define OBJ_tlsfeature OBJ_id_pe,24L + +#define SN_sbgp_ipAddrBlockv2 "sbgp-ipAddrBlockv2" +#define NID_sbgp_ipAddrBlockv2 1239 +#define OBJ_sbgp_ipAddrBlockv2 OBJ_id_pe,28L + +#define SN_sbgp_autonomousSysNumv2 "sbgp-autonomousSysNumv2" +#define NID_sbgp_autonomousSysNumv2 1240 +#define OBJ_sbgp_autonomousSysNumv2 OBJ_id_pe,29L + +#define SN_id_qt_cps "id-qt-cps" +#define LN_id_qt_cps "Policy Qualifier CPS" +#define NID_id_qt_cps 164 +#define OBJ_id_qt_cps OBJ_id_qt,1L + +#define SN_id_qt_unotice "id-qt-unotice" +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define NID_id_qt_unotice 165 +#define OBJ_id_qt_unotice OBJ_id_qt,2L + +#define SN_textNotice "textNotice" +#define NID_textNotice 293 +#define OBJ_textNotice OBJ_id_qt,3L + +#define SN_server_auth "serverAuth" +#define LN_server_auth "TLS Web Server Authentication" +#define NID_server_auth 129 +#define OBJ_server_auth OBJ_id_kp,1L + +#define SN_client_auth "clientAuth" +#define LN_client_auth "TLS Web Client Authentication" +#define NID_client_auth 130 +#define OBJ_client_auth OBJ_id_kp,2L + +#define SN_code_sign "codeSigning" +#define LN_code_sign "Code Signing" +#define NID_code_sign 131 +#define OBJ_code_sign OBJ_id_kp,3L + +#define SN_email_protect "emailProtection" +#define LN_email_protect "E-mail Protection" +#define NID_email_protect 132 +#define OBJ_email_protect OBJ_id_kp,4L + +#define SN_ipsecEndSystem "ipsecEndSystem" +#define LN_ipsecEndSystem "IPSec End System" +#define NID_ipsecEndSystem 294 +#define OBJ_ipsecEndSystem OBJ_id_kp,5L + +#define SN_ipsecTunnel "ipsecTunnel" +#define LN_ipsecTunnel "IPSec Tunnel" +#define NID_ipsecTunnel 295 +#define OBJ_ipsecTunnel OBJ_id_kp,6L + +#define SN_ipsecUser "ipsecUser" +#define LN_ipsecUser "IPSec User" +#define NID_ipsecUser 296 +#define OBJ_ipsecUser OBJ_id_kp,7L + +#define SN_time_stamp "timeStamping" +#define LN_time_stamp "Time Stamping" +#define NID_time_stamp 133 +#define OBJ_time_stamp OBJ_id_kp,8L + +#define SN_OCSP_sign "OCSPSigning" +#define LN_OCSP_sign "OCSP Signing" +#define NID_OCSP_sign 180 +#define OBJ_OCSP_sign OBJ_id_kp,9L + +#define SN_dvcs "DVCS" +#define LN_dvcs "dvcs" +#define NID_dvcs 297 +#define OBJ_dvcs OBJ_id_kp,10L + +#define SN_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#define SN_cmcArchive "cmcArchive" +#define LN_cmcArchive "CMC Archive Server" +#define NID_cmcArchive 1219 +#define OBJ_cmcArchive OBJ_id_kp,29L + +#define SN_id_kp_bgpsec_router "id-kp-bgpsec-router" +#define LN_id_kp_bgpsec_router "BGPsec Router" +#define NID_id_kp_bgpsec_router 1220 +#define OBJ_id_kp_bgpsec_router OBJ_id_kp,30L + +#define SN_id_kp_BrandIndicatorforMessageIdentification "id-kp-BrandIndicatorforMessageIdentification" +#define LN_id_kp_BrandIndicatorforMessageIdentification "Brand Indicator for Message Identification" +#define NID_id_kp_BrandIndicatorforMessageIdentification 1221 +#define OBJ_id_kp_BrandIndicatorforMessageIdentification OBJ_id_kp,31L + +#define SN_cmKGA "cmKGA" +#define LN_cmKGA "Certificate Management Key Generation Authority" +#define NID_cmKGA 1222 +#define OBJ_cmKGA OBJ_id_kp,32L + +#define SN_id_it_caProtEncCert "id-it-caProtEncCert" +#define NID_id_it_caProtEncCert 298 +#define OBJ_id_it_caProtEncCert OBJ_id_it,1L + +#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" +#define NID_id_it_signKeyPairTypes 299 +#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L + +#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" +#define NID_id_it_encKeyPairTypes 300 +#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L + +#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" +#define NID_id_it_preferredSymmAlg 301 +#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L + +#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" +#define NID_id_it_caKeyUpdateInfo 302 +#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L + +#define SN_id_it_currentCRL "id-it-currentCRL" +#define NID_id_it_currentCRL 303 +#define OBJ_id_it_currentCRL OBJ_id_it,6L + +#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" +#define NID_id_it_unsupportedOIDs 304 +#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L + +#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" +#define NID_id_it_subscriptionRequest 305 +#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L + +#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" +#define NID_id_it_subscriptionResponse 306 +#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L + +#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" +#define NID_id_it_keyPairParamReq 307 +#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L + +#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" +#define NID_id_it_keyPairParamRep 308 +#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L + +#define SN_id_it_revPassphrase "id-it-revPassphrase" +#define NID_id_it_revPassphrase 309 +#define OBJ_id_it_revPassphrase OBJ_id_it,12L + +#define SN_id_it_implicitConfirm "id-it-implicitConfirm" +#define NID_id_it_implicitConfirm 310 +#define OBJ_id_it_implicitConfirm OBJ_id_it,13L + +#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" +#define NID_id_it_confirmWaitTime 311 +#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L + +#define SN_id_it_origPKIMessage "id-it-origPKIMessage" +#define NID_id_it_origPKIMessage 312 +#define OBJ_id_it_origPKIMessage OBJ_id_it,15L + +#define SN_id_it_suppLangTags "id-it-suppLangTags" +#define NID_id_it_suppLangTags 784 +#define OBJ_id_it_suppLangTags OBJ_id_it,16L + +#define SN_id_it_caCerts "id-it-caCerts" +#define NID_id_it_caCerts 1223 +#define OBJ_id_it_caCerts OBJ_id_it,17L + +#define SN_id_it_rootCaKeyUpdate "id-it-rootCaKeyUpdate" +#define NID_id_it_rootCaKeyUpdate 1224 +#define OBJ_id_it_rootCaKeyUpdate OBJ_id_it,18L + +#define SN_id_it_certReqTemplate "id-it-certReqTemplate" +#define NID_id_it_certReqTemplate 1225 +#define OBJ_id_it_certReqTemplate OBJ_id_it,19L + +#define SN_id_it_rootCaCert "id-it-rootCaCert" +#define NID_id_it_rootCaCert 1254 +#define OBJ_id_it_rootCaCert OBJ_id_it,20L + +#define SN_id_it_certProfile "id-it-certProfile" +#define NID_id_it_certProfile 1255 +#define OBJ_id_it_certProfile OBJ_id_it,21L + +#define SN_id_it_crlStatusList "id-it-crlStatusList" +#define NID_id_it_crlStatusList 1256 +#define OBJ_id_it_crlStatusList OBJ_id_it,22L + +#define SN_id_it_crls "id-it-crls" +#define NID_id_it_crls 1257 +#define OBJ_id_it_crls OBJ_id_it,23L + +#define SN_id_regCtrl "id-regCtrl" +#define NID_id_regCtrl 313 +#define OBJ_id_regCtrl OBJ_id_pkip,1L + +#define SN_id_regInfo "id-regInfo" +#define NID_id_regInfo 314 +#define OBJ_id_regInfo OBJ_id_pkip,2L + +#define SN_id_regCtrl_regToken "id-regCtrl-regToken" +#define NID_id_regCtrl_regToken 315 +#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L + +#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" +#define NID_id_regCtrl_authenticator 316 +#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L + +#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" +#define NID_id_regCtrl_pkiPublicationInfo 317 +#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L + +#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" +#define NID_id_regCtrl_pkiArchiveOptions 318 +#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L + +#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" +#define NID_id_regCtrl_oldCertID 319 +#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L + +#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" +#define NID_id_regCtrl_protocolEncrKey 320 +#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L + +#define SN_id_regCtrl_altCertTemplate "id-regCtrl-altCertTemplate" +#define NID_id_regCtrl_altCertTemplate 1258 +#define OBJ_id_regCtrl_altCertTemplate OBJ_id_regCtrl,7L + +#define SN_id_regCtrl_algId "id-regCtrl-algId" +#define NID_id_regCtrl_algId 1259 +#define OBJ_id_regCtrl_algId OBJ_id_regCtrl,11L + +#define SN_id_regCtrl_rsaKeyLen "id-regCtrl-rsaKeyLen" +#define NID_id_regCtrl_rsaKeyLen 1260 +#define OBJ_id_regCtrl_rsaKeyLen OBJ_id_regCtrl,12L + +#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" +#define NID_id_regInfo_utf8Pairs 321 +#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L + +#define SN_id_regInfo_certReq "id-regInfo-certReq" +#define NID_id_regInfo_certReq 322 +#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L + +#define SN_id_alg_des40 "id-alg-des40" +#define NID_id_alg_des40 323 +#define OBJ_id_alg_des40 OBJ_id_alg,1L + +#define SN_id_alg_noSignature "id-alg-noSignature" +#define NID_id_alg_noSignature 324 +#define OBJ_id_alg_noSignature OBJ_id_alg,2L + +#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" +#define NID_id_alg_dh_sig_hmac_sha1 325 +#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L + +#define SN_id_alg_dh_pop "id-alg-dh-pop" +#define NID_id_alg_dh_pop 326 +#define OBJ_id_alg_dh_pop OBJ_id_alg,4L + +#define SN_id_cmc_statusInfo "id-cmc-statusInfo" +#define NID_id_cmc_statusInfo 327 +#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L + +#define SN_id_cmc_identification "id-cmc-identification" +#define NID_id_cmc_identification 328 +#define OBJ_id_cmc_identification OBJ_id_cmc,2L + +#define SN_id_cmc_identityProof "id-cmc-identityProof" +#define NID_id_cmc_identityProof 329 +#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L + +#define SN_id_cmc_dataReturn "id-cmc-dataReturn" +#define NID_id_cmc_dataReturn 330 +#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L + +#define SN_id_cmc_transactionId "id-cmc-transactionId" +#define NID_id_cmc_transactionId 331 +#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L + +#define SN_id_cmc_senderNonce "id-cmc-senderNonce" +#define NID_id_cmc_senderNonce 332 +#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L + +#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" +#define NID_id_cmc_recipientNonce 333 +#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L + +#define SN_id_cmc_addExtensions "id-cmc-addExtensions" +#define NID_id_cmc_addExtensions 334 +#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L + +#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" +#define NID_id_cmc_encryptedPOP 335 +#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L + +#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" +#define NID_id_cmc_decryptedPOP 336 +#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L + +#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" +#define NID_id_cmc_lraPOPWitness 337 +#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L + +#define SN_id_cmc_getCert "id-cmc-getCert" +#define NID_id_cmc_getCert 338 +#define OBJ_id_cmc_getCert OBJ_id_cmc,15L + +#define SN_id_cmc_getCRL "id-cmc-getCRL" +#define NID_id_cmc_getCRL 339 +#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L + +#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" +#define NID_id_cmc_revokeRequest 340 +#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L + +#define SN_id_cmc_regInfo "id-cmc-regInfo" +#define NID_id_cmc_regInfo 341 +#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L + +#define SN_id_cmc_responseInfo "id-cmc-responseInfo" +#define NID_id_cmc_responseInfo 342 +#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L + +#define SN_id_cmc_queryPending "id-cmc-queryPending" +#define NID_id_cmc_queryPending 343 +#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L + +#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" +#define NID_id_cmc_popLinkRandom 344 +#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L + +#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" +#define NID_id_cmc_popLinkWitness 345 +#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L + +#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" +#define NID_id_cmc_confirmCertAcceptance 346 +#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L + +#define SN_id_on_personalData "id-on-personalData" +#define NID_id_on_personalData 347 +#define OBJ_id_on_personalData OBJ_id_on,1L + +#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" +#define LN_id_on_permanentIdentifier "Permanent Identifier" +#define NID_id_on_permanentIdentifier 858 +#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L + +#define SN_id_on_hardwareModuleName "id-on-hardwareModuleName" +#define LN_id_on_hardwareModuleName "Hardware Module Name" +#define NID_id_on_hardwareModuleName 1321 +#define OBJ_id_on_hardwareModuleName OBJ_id_on,4L + +#define SN_XmppAddr "id-on-xmppAddr" +#define LN_XmppAddr "XmppAddr" +#define NID_XmppAddr 1209 +#define OBJ_XmppAddr OBJ_id_on,5L + +#define SN_SRVName "id-on-dnsSRV" +#define LN_SRVName "SRVName" +#define NID_SRVName 1210 +#define OBJ_SRVName OBJ_id_on,7L + +#define SN_NAIRealm "id-on-NAIRealm" +#define LN_NAIRealm "NAIRealm" +#define NID_NAIRealm 1211 +#define OBJ_NAIRealm OBJ_id_on,8L + +#define SN_id_on_SmtpUTF8Mailbox "id-on-SmtpUTF8Mailbox" +#define LN_id_on_SmtpUTF8Mailbox "Smtp UTF8 Mailbox" +#define NID_id_on_SmtpUTF8Mailbox 1208 +#define OBJ_id_on_SmtpUTF8Mailbox OBJ_id_on,9L + +#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" +#define NID_id_pda_dateOfBirth 348 +#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L + +#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" +#define NID_id_pda_placeOfBirth 349 +#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L + +#define SN_id_pda_gender "id-pda-gender" +#define NID_id_pda_gender 351 +#define OBJ_id_pda_gender OBJ_id_pda,3L + +#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" +#define NID_id_pda_countryOfCitizenship 352 +#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L + +#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" +#define NID_id_pda_countryOfResidence 353 +#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L + +#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" +#define NID_id_aca_authenticationInfo 354 +#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L + +#define SN_id_aca_accessIdentity "id-aca-accessIdentity" +#define NID_id_aca_accessIdentity 355 +#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L + +#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" +#define NID_id_aca_chargingIdentity 356 +#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L + +#define SN_id_aca_group "id-aca-group" +#define NID_id_aca_group 357 +#define OBJ_id_aca_group OBJ_id_aca,4L + +#define SN_id_aca_role "id-aca-role" +#define NID_id_aca_role 358 +#define OBJ_id_aca_role OBJ_id_aca,5L + +#define SN_id_aca_encAttrs "id-aca-encAttrs" +#define NID_id_aca_encAttrs 399 +#define OBJ_id_aca_encAttrs OBJ_id_aca,6L + +#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" +#define NID_id_qcs_pkixQCSyntax_v1 359 +#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L + +#define SN_ipAddr_asNumber "ipAddr-asNumber" +#define NID_ipAddr_asNumber 1241 +#define OBJ_ipAddr_asNumber OBJ_id_cp,2L + +#define SN_ipAddr_asNumberv2 "ipAddr-asNumberv2" +#define NID_ipAddr_asNumberv2 1242 +#define OBJ_ipAddr_asNumberv2 OBJ_id_cp,3L + +#define SN_id_cct_crs "id-cct-crs" +#define NID_id_cct_crs 360 +#define OBJ_id_cct_crs OBJ_id_cct,1L + +#define SN_id_cct_PKIData "id-cct-PKIData" +#define NID_id_cct_PKIData 361 +#define OBJ_id_cct_PKIData OBJ_id_cct,2L + +#define SN_id_cct_PKIResponse "id-cct-PKIResponse" +#define NID_id_cct_PKIResponse 362 +#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L + +#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" +#define LN_id_ppl_anyLanguage "Any language" +#define NID_id_ppl_anyLanguage 664 +#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L + +#define SN_id_ppl_inheritAll "id-ppl-inheritAll" +#define LN_id_ppl_inheritAll "Inherit all" +#define NID_id_ppl_inheritAll 665 +#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L + +#define SN_Independent "id-ppl-independent" +#define LN_Independent "Independent" +#define NID_Independent 667 +#define OBJ_Independent OBJ_id_ppl,2L + +#define SN_ad_OCSP "OCSP" +#define LN_ad_OCSP "OCSP" +#define NID_ad_OCSP 178 +#define OBJ_ad_OCSP OBJ_id_ad,1L + +#define SN_ad_ca_issuers "caIssuers" +#define LN_ad_ca_issuers "CA Issuers" +#define NID_ad_ca_issuers 179 +#define OBJ_ad_ca_issuers OBJ_id_ad,2L + +#define SN_ad_timeStamping "ad_timestamping" +#define LN_ad_timeStamping "AD Time Stamping" +#define NID_ad_timeStamping 363 +#define OBJ_ad_timeStamping OBJ_id_ad,3L + +#define SN_ad_dvcs "AD_DVCS" +#define LN_ad_dvcs "ad dvcs" +#define NID_ad_dvcs 364 +#define OBJ_ad_dvcs OBJ_id_ad,4L + +#define SN_caRepository "caRepository" +#define LN_caRepository "CA Repository" +#define NID_caRepository 785 +#define OBJ_caRepository OBJ_id_ad,5L + +#define SN_rpkiManifest "rpkiManifest" +#define LN_rpkiManifest "RPKI Manifest" +#define NID_rpkiManifest 1243 +#define OBJ_rpkiManifest OBJ_id_ad,10L + +#define SN_signedObject "signedObject" +#define LN_signedObject "Signed Object" +#define NID_signedObject 1244 +#define OBJ_signedObject OBJ_id_ad,11L + +#define SN_rpkiNotify "rpkiNotify" +#define LN_rpkiNotify "RPKI Notify" +#define NID_rpkiNotify 1245 +#define OBJ_rpkiNotify OBJ_id_ad,13L + +#define OBJ_id_pkix_OCSP OBJ_ad_OCSP + +#define SN_id_pkix_OCSP_basic "basicOCSPResponse" +#define LN_id_pkix_OCSP_basic "Basic OCSP Response" +#define NID_id_pkix_OCSP_basic 365 +#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L + +#define SN_id_pkix_OCSP_Nonce "Nonce" +#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" +#define NID_id_pkix_OCSP_Nonce 366 +#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L + +#define SN_id_pkix_OCSP_CrlID "CrlID" +#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" +#define NID_id_pkix_OCSP_CrlID 367 +#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L + +#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" +#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" +#define NID_id_pkix_OCSP_acceptableResponses 368 +#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L + +#define SN_id_pkix_OCSP_noCheck "noCheck" +#define LN_id_pkix_OCSP_noCheck "OCSP No Check" +#define NID_id_pkix_OCSP_noCheck 369 +#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L + +#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" +#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" +#define NID_id_pkix_OCSP_archiveCutoff 370 +#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L + +#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" +#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" +#define NID_id_pkix_OCSP_serviceLocator 371 +#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L + +#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" +#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" +#define NID_id_pkix_OCSP_extendedStatus 372 +#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L + +#define SN_id_pkix_OCSP_valid "valid" +#define NID_id_pkix_OCSP_valid 373 +#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L + +#define SN_id_pkix_OCSP_path "path" +#define NID_id_pkix_OCSP_path 374 +#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L + +#define SN_id_pkix_OCSP_trustRoot "trustRoot" +#define LN_id_pkix_OCSP_trustRoot "Trust Root" +#define NID_id_pkix_OCSP_trustRoot 375 +#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L + +#define SN_algorithm "algorithm" +#define LN_algorithm "algorithm" +#define NID_algorithm 376 +#define OBJ_algorithm 1L,3L,14L,3L,2L + +#define SN_md5WithRSA "RSA-NP-MD5" +#define LN_md5WithRSA "md5WithRSA" +#define NID_md5WithRSA 104 +#define OBJ_md5WithRSA OBJ_algorithm,3L + +#define SN_des_ecb "DES-ECB" +#define LN_des_ecb "des-ecb" +#define NID_des_ecb 29 +#define OBJ_des_ecb OBJ_algorithm,6L + +#define SN_des_cbc "DES-CBC" +#define LN_des_cbc "des-cbc" +#define NID_des_cbc 31 +#define OBJ_des_cbc OBJ_algorithm,7L + +#define SN_des_ofb64 "DES-OFB" +#define LN_des_ofb64 "des-ofb" +#define NID_des_ofb64 45 +#define OBJ_des_ofb64 OBJ_algorithm,8L + +#define SN_des_cfb64 "DES-CFB" +#define LN_des_cfb64 "des-cfb" +#define NID_des_cfb64 30 +#define OBJ_des_cfb64 OBJ_algorithm,9L + +#define SN_rsaSignature "rsaSignature" +#define NID_rsaSignature 377 +#define OBJ_rsaSignature OBJ_algorithm,11L + +#define SN_dsa_2 "DSA-old" +#define LN_dsa_2 "dsaEncryption-old" +#define NID_dsa_2 67 +#define OBJ_dsa_2 OBJ_algorithm,12L + +#define SN_dsaWithSHA "DSA-SHA" +#define LN_dsaWithSHA "dsaWithSHA" +#define NID_dsaWithSHA 66 +#define OBJ_dsaWithSHA OBJ_algorithm,13L + +#define SN_shaWithRSAEncryption "RSA-SHA" +#define LN_shaWithRSAEncryption "shaWithRSAEncryption" +#define NID_shaWithRSAEncryption 42 +#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L + +#define SN_des_ede_ecb "DES-EDE" +#define LN_des_ede_ecb "des-ede" +#define NID_des_ede_ecb 32 +#define OBJ_des_ede_ecb OBJ_algorithm,17L + +#define SN_des_ede3_ecb "DES-EDE3" +#define LN_des_ede3_ecb "des-ede3" +#define NID_des_ede3_ecb 33 + +#define SN_des_ede_cbc "DES-EDE-CBC" +#define LN_des_ede_cbc "des-ede-cbc" +#define NID_des_ede_cbc 43 + +#define SN_des_ede_cfb64 "DES-EDE-CFB" +#define LN_des_ede_cfb64 "des-ede-cfb" +#define NID_des_ede_cfb64 60 + +#define SN_des_ede3_cfb64 "DES-EDE3-CFB" +#define LN_des_ede3_cfb64 "des-ede3-cfb" +#define NID_des_ede3_cfb64 61 + +#define SN_des_ede_ofb64 "DES-EDE-OFB" +#define LN_des_ede_ofb64 "des-ede-ofb" +#define NID_des_ede_ofb64 62 + +#define SN_des_ede3_ofb64 "DES-EDE3-OFB" +#define LN_des_ede3_ofb64 "des-ede3-ofb" +#define NID_des_ede3_ofb64 63 + +#define SN_desx_cbc "DESX-CBC" +#define LN_desx_cbc "desx-cbc" +#define NID_desx_cbc 80 + +#define SN_sha "SHA" +#define LN_sha "sha" +#define NID_sha 41 +#define OBJ_sha OBJ_algorithm,18L + +#define SN_sha1 "SHA1" +#define LN_sha1 "sha1" +#define NID_sha1 64 +#define OBJ_sha1 OBJ_algorithm,26L + +#define SN_dsaWithSHA1_2 "DSA-SHA1-old" +#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +#define NID_dsaWithSHA1_2 70 +#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L + +#define SN_sha1WithRSA "RSA-SHA1-2" +#define LN_sha1WithRSA "sha1WithRSA" +#define NID_sha1WithRSA 115 +#define OBJ_sha1WithRSA OBJ_algorithm,29L + +#define SN_ripemd160 "RIPEMD160" +#define LN_ripemd160 "ripemd160" +#define NID_ripemd160 117 +#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L + +#define SN_ripemd160WithRSA "RSA-RIPEMD160" +#define LN_ripemd160WithRSA "ripemd160WithRSA" +#define NID_ripemd160WithRSA 119 +#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L + +#define SN_blake2bmac "BLAKE2BMAC" +#define LN_blake2bmac "blake2bmac" +#define NID_blake2bmac 1201 +#define OBJ_blake2bmac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L + +#define SN_blake2smac "BLAKE2SMAC" +#define LN_blake2smac "blake2smac" +#define NID_blake2smac 1202 +#define OBJ_blake2smac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L + +#define SN_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 OBJ_blake2bmac,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 OBJ_blake2smac,8L + +#define SN_sxnet "SXNetID" +#define LN_sxnet "Strong Extranet ID" +#define NID_sxnet 143 +#define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +#define SN_X500 "X500" +#define LN_X500 "directory services (X.500)" +#define NID_X500 11 +#define OBJ_X500 2L,5L + +#define SN_X509 "X509" +#define NID_X509 12 +#define OBJ_X509 OBJ_X500,4L + +#define SN_commonName "CN" +#define LN_commonName "commonName" +#define NID_commonName 13 +#define OBJ_commonName OBJ_X509,3L + +#define SN_surname "SN" +#define LN_surname "surname" +#define NID_surname 100 +#define OBJ_surname OBJ_X509,4L + +#define LN_serialNumber "serialNumber" +#define NID_serialNumber 105 +#define OBJ_serialNumber OBJ_X509,5L + +#define SN_countryName "C" +#define LN_countryName "countryName" +#define NID_countryName 14 +#define OBJ_countryName OBJ_X509,6L + +#define SN_localityName "L" +#define LN_localityName "localityName" +#define NID_localityName 15 +#define OBJ_localityName OBJ_X509,7L + +#define SN_stateOrProvinceName "ST" +#define LN_stateOrProvinceName "stateOrProvinceName" +#define NID_stateOrProvinceName 16 +#define OBJ_stateOrProvinceName OBJ_X509,8L + +#define SN_streetAddress "street" +#define LN_streetAddress "streetAddress" +#define NID_streetAddress 660 +#define OBJ_streetAddress OBJ_X509,9L + +#define SN_organizationName "O" +#define LN_organizationName "organizationName" +#define NID_organizationName 17 +#define OBJ_organizationName OBJ_X509,10L + +#define SN_organizationalUnitName "OU" +#define LN_organizationalUnitName "organizationalUnitName" +#define NID_organizationalUnitName 18 +#define OBJ_organizationalUnitName OBJ_X509,11L + +#define SN_title "title" +#define LN_title "title" +#define NID_title 106 +#define OBJ_title OBJ_X509,12L + +#define LN_description "description" +#define NID_description 107 +#define OBJ_description OBJ_X509,13L + +#define LN_searchGuide "searchGuide" +#define NID_searchGuide 859 +#define OBJ_searchGuide OBJ_X509,14L + +#define LN_businessCategory "businessCategory" +#define NID_businessCategory 860 +#define OBJ_businessCategory OBJ_X509,15L + +#define LN_postalAddress "postalAddress" +#define NID_postalAddress 861 +#define OBJ_postalAddress OBJ_X509,16L + +#define LN_postalCode "postalCode" +#define NID_postalCode 661 +#define OBJ_postalCode OBJ_X509,17L + +#define LN_postOfficeBox "postOfficeBox" +#define NID_postOfficeBox 862 +#define OBJ_postOfficeBox OBJ_X509,18L + +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_physicalDeliveryOfficeName 863 +#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L + +#define LN_telephoneNumber "telephoneNumber" +#define NID_telephoneNumber 864 +#define OBJ_telephoneNumber OBJ_X509,20L + +#define LN_telexNumber "telexNumber" +#define NID_telexNumber 865 +#define OBJ_telexNumber OBJ_X509,21L + +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_teletexTerminalIdentifier 866 +#define OBJ_teletexTerminalIdentifier OBJ_X509,22L + +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_facsimileTelephoneNumber 867 +#define OBJ_facsimileTelephoneNumber OBJ_X509,23L + +#define LN_x121Address "x121Address" +#define NID_x121Address 868 +#define OBJ_x121Address OBJ_X509,24L + +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_internationaliSDNNumber 869 +#define OBJ_internationaliSDNNumber OBJ_X509,25L + +#define LN_registeredAddress "registeredAddress" +#define NID_registeredAddress 870 +#define OBJ_registeredAddress OBJ_X509,26L + +#define LN_destinationIndicator "destinationIndicator" +#define NID_destinationIndicator 871 +#define OBJ_destinationIndicator OBJ_X509,27L + +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_preferredDeliveryMethod 872 +#define OBJ_preferredDeliveryMethod OBJ_X509,28L + +#define LN_presentationAddress "presentationAddress" +#define NID_presentationAddress 873 +#define OBJ_presentationAddress OBJ_X509,29L + +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_supportedApplicationContext 874 +#define OBJ_supportedApplicationContext OBJ_X509,30L + +#define SN_member "member" +#define NID_member 875 +#define OBJ_member OBJ_X509,31L + +#define SN_owner "owner" +#define NID_owner 876 +#define OBJ_owner OBJ_X509,32L + +#define LN_roleOccupant "roleOccupant" +#define NID_roleOccupant 877 +#define OBJ_roleOccupant OBJ_X509,33L + +#define SN_seeAlso "seeAlso" +#define NID_seeAlso 878 +#define OBJ_seeAlso OBJ_X509,34L + +#define LN_userPassword "userPassword" +#define NID_userPassword 879 +#define OBJ_userPassword OBJ_X509,35L + +#define LN_userCertificate "userCertificate" +#define NID_userCertificate 880 +#define OBJ_userCertificate OBJ_X509,36L + +#define LN_cACertificate "cACertificate" +#define NID_cACertificate 881 +#define OBJ_cACertificate OBJ_X509,37L + +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_authorityRevocationList 882 +#define OBJ_authorityRevocationList OBJ_X509,38L + +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_certificateRevocationList 883 +#define OBJ_certificateRevocationList OBJ_X509,39L + +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_crossCertificatePair 884 +#define OBJ_crossCertificatePair OBJ_X509,40L + +#define SN_name "name" +#define LN_name "name" +#define NID_name 173 +#define OBJ_name OBJ_X509,41L + +#define SN_givenName "GN" +#define LN_givenName "givenName" +#define NID_givenName 99 +#define OBJ_givenName OBJ_X509,42L + +#define SN_initials "initials" +#define LN_initials "initials" +#define NID_initials 101 +#define OBJ_initials OBJ_X509,43L + +#define LN_generationQualifier "generationQualifier" +#define NID_generationQualifier 509 +#define OBJ_generationQualifier OBJ_X509,44L + +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_x500UniqueIdentifier 503 +#define OBJ_x500UniqueIdentifier OBJ_X509,45L + +#define SN_dnQualifier "dnQualifier" +#define LN_dnQualifier "dnQualifier" +#define NID_dnQualifier 174 +#define OBJ_dnQualifier OBJ_X509,46L + +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_enhancedSearchGuide 885 +#define OBJ_enhancedSearchGuide OBJ_X509,47L + +#define LN_protocolInformation "protocolInformation" +#define NID_protocolInformation 886 +#define OBJ_protocolInformation OBJ_X509,48L + +#define LN_distinguishedName "distinguishedName" +#define NID_distinguishedName 887 +#define OBJ_distinguishedName OBJ_X509,49L + +#define LN_uniqueMember "uniqueMember" +#define NID_uniqueMember 888 +#define OBJ_uniqueMember OBJ_X509,50L + +#define LN_houseIdentifier "houseIdentifier" +#define NID_houseIdentifier 889 +#define OBJ_houseIdentifier OBJ_X509,51L + +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_supportedAlgorithms 890 +#define OBJ_supportedAlgorithms OBJ_X509,52L + +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_deltaRevocationList 891 +#define OBJ_deltaRevocationList OBJ_X509,53L + +#define SN_dmdName "dmdName" +#define NID_dmdName 892 +#define OBJ_dmdName OBJ_X509,54L + +#define LN_pseudonym "pseudonym" +#define NID_pseudonym 510 +#define OBJ_pseudonym OBJ_X509,65L + +#define SN_role "role" +#define LN_role "role" +#define NID_role 400 +#define OBJ_role OBJ_X509,72L + +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#define SN_X500algorithms "X500algorithms" +#define LN_X500algorithms "directory services - algorithms" +#define NID_X500algorithms 378 +#define OBJ_X500algorithms OBJ_X500,8L + +#define SN_rsa "RSA" +#define LN_rsa "rsa" +#define NID_rsa 19 +#define OBJ_rsa OBJ_X500algorithms,1L,1L + +#define SN_mdc2WithRSA "RSA-MDC2" +#define LN_mdc2WithRSA "mdc2WithRSA" +#define NID_mdc2WithRSA 96 +#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L + +#define SN_mdc2 "MDC2" +#define LN_mdc2 "mdc2" +#define NID_mdc2 95 +#define OBJ_mdc2 OBJ_X500algorithms,3L,101L + +#define SN_id_ce "id-ce" +#define NID_id_ce 81 +#define OBJ_id_ce OBJ_X500,29L + +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define NID_subject_directory_attributes 769 +#define OBJ_subject_directory_attributes OBJ_id_ce,9L + +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define NID_subject_key_identifier 82 +#define OBJ_subject_key_identifier OBJ_id_ce,14L + +#define SN_key_usage "keyUsage" +#define LN_key_usage "X509v3 Key Usage" +#define NID_key_usage 83 +#define OBJ_key_usage OBJ_id_ce,15L + +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define NID_private_key_usage_period 84 +#define OBJ_private_key_usage_period OBJ_id_ce,16L + +#define SN_subject_alt_name "subjectAltName" +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define NID_subject_alt_name 85 +#define OBJ_subject_alt_name OBJ_id_ce,17L + +#define SN_issuer_alt_name "issuerAltName" +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define NID_issuer_alt_name 86 +#define OBJ_issuer_alt_name OBJ_id_ce,18L + +#define SN_basic_constraints "basicConstraints" +#define LN_basic_constraints "X509v3 Basic Constraints" +#define NID_basic_constraints 87 +#define OBJ_basic_constraints OBJ_id_ce,19L + +#define SN_crl_number "crlNumber" +#define LN_crl_number "X509v3 CRL Number" +#define NID_crl_number 88 +#define OBJ_crl_number OBJ_id_ce,20L + +#define SN_crl_reason "CRLReason" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define NID_crl_reason 141 +#define OBJ_crl_reason OBJ_id_ce,21L + +#define SN_invalidity_date "invalidityDate" +#define LN_invalidity_date "Invalidity Date" +#define NID_invalidity_date 142 +#define OBJ_invalidity_date OBJ_id_ce,24L + +#define SN_delta_crl "deltaCRL" +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define NID_delta_crl 140 +#define OBJ_delta_crl OBJ_id_ce,27L + +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define NID_issuing_distribution_point 770 +#define OBJ_issuing_distribution_point OBJ_id_ce,28L + +#define SN_certificate_issuer "certificateIssuer" +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define NID_certificate_issuer 771 +#define OBJ_certificate_issuer OBJ_id_ce,29L + +#define SN_name_constraints "nameConstraints" +#define LN_name_constraints "X509v3 Name Constraints" +#define NID_name_constraints 666 +#define OBJ_name_constraints OBJ_id_ce,30L + +#define SN_crl_distribution_points "crlDistributionPoints" +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define NID_crl_distribution_points 103 +#define OBJ_crl_distribution_points OBJ_id_ce,31L + +#define SN_certificate_policies "certificatePolicies" +#define LN_certificate_policies "X509v3 Certificate Policies" +#define NID_certificate_policies 89 +#define OBJ_certificate_policies OBJ_id_ce,32L + +#define SN_any_policy "anyPolicy" +#define LN_any_policy "X509v3 Any Policy" +#define NID_any_policy 746 +#define OBJ_any_policy OBJ_certificate_policies,0L + +#define SN_policy_mappings "policyMappings" +#define LN_policy_mappings "X509v3 Policy Mappings" +#define NID_policy_mappings 747 +#define OBJ_policy_mappings OBJ_id_ce,33L + +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define NID_authority_key_identifier 90 +#define OBJ_authority_key_identifier OBJ_id_ce,35L + +#define SN_policy_constraints "policyConstraints" +#define LN_policy_constraints "X509v3 Policy Constraints" +#define NID_policy_constraints 401 +#define OBJ_policy_constraints OBJ_id_ce,36L + +#define SN_ext_key_usage "extendedKeyUsage" +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define NID_ext_key_usage 126 +#define OBJ_ext_key_usage OBJ_id_ce,37L + +#define SN_authority_attribute_identifier "authorityAttributeIdentifier" +#define LN_authority_attribute_identifier "X509v3 Authority Attribute Identifier" +#define NID_authority_attribute_identifier 1295 +#define OBJ_authority_attribute_identifier OBJ_id_ce,38L + +#define SN_role_spec_cert_identifier "roleSpecCertIdentifier" +#define LN_role_spec_cert_identifier "X509v3 Role Specification Certificate Identifier" +#define NID_role_spec_cert_identifier 1296 +#define OBJ_role_spec_cert_identifier OBJ_id_ce,39L + +#define SN_basic_att_constraints "basicAttConstraints" +#define LN_basic_att_constraints "X509v3 Basic Attribute Certificate Constraints" +#define NID_basic_att_constraints 1297 +#define OBJ_basic_att_constraints OBJ_id_ce,41L + +#define SN_delegated_name_constraints "delegatedNameConstraints" +#define LN_delegated_name_constraints "X509v3 Delegated Name Constraints" +#define NID_delegated_name_constraints 1298 +#define OBJ_delegated_name_constraints OBJ_id_ce,42L + +#define SN_time_specification "timeSpecification" +#define LN_time_specification "X509v3 Time Specification" +#define NID_time_specification 1299 +#define OBJ_time_specification OBJ_id_ce,43L + +#define SN_freshest_crl "freshestCRL" +#define LN_freshest_crl "X509v3 Freshest CRL" +#define NID_freshest_crl 857 +#define OBJ_freshest_crl OBJ_id_ce,46L + +#define SN_attribute_descriptor "attributeDescriptor" +#define LN_attribute_descriptor "X509v3 Attribute Descriptor" +#define NID_attribute_descriptor 1300 +#define OBJ_attribute_descriptor OBJ_id_ce,48L + +#define SN_user_notice "userNotice" +#define LN_user_notice "X509v3 User Notice" +#define NID_user_notice 1301 +#define OBJ_user_notice OBJ_id_ce,49L + +#define SN_soa_identifier "sOAIdentifier" +#define LN_soa_identifier "X509v3 Source of Authority Identifier" +#define NID_soa_identifier 1302 +#define OBJ_soa_identifier OBJ_id_ce,50L + +#define SN_acceptable_cert_policies "acceptableCertPolicies" +#define LN_acceptable_cert_policies "X509v3 Acceptable Certification Policies" +#define NID_acceptable_cert_policies 1303 +#define OBJ_acceptable_cert_policies OBJ_id_ce,52L + +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define NID_inhibit_any_policy 748 +#define OBJ_inhibit_any_policy OBJ_id_ce,54L + +#define SN_target_information "targetInformation" +#define LN_target_information "X509v3 AC Targeting" +#define NID_target_information 402 +#define OBJ_target_information OBJ_id_ce,55L + +#define SN_no_rev_avail "noRevAvail" +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define NID_no_rev_avail 403 +#define OBJ_no_rev_avail OBJ_id_ce,56L + +#define SN_acceptable_privilege_policies "acceptablePrivPolicies" +#define LN_acceptable_privilege_policies "X509v3 Acceptable Privilege Policies" +#define NID_acceptable_privilege_policies 1304 +#define OBJ_acceptable_privilege_policies OBJ_id_ce,57L + +#define SN_indirect_issuer "indirectIssuer" +#define LN_indirect_issuer "X509v3 Indirect Issuer" +#define NID_indirect_issuer 1305 +#define OBJ_indirect_issuer OBJ_id_ce,61L + +#define SN_no_assertion "noAssertion" +#define LN_no_assertion "X509v3 No Assertion" +#define NID_no_assertion 1306 +#define OBJ_no_assertion OBJ_id_ce,62L + +#define SN_id_aa_issuing_distribution_point "aAissuingDistributionPoint" +#define LN_id_aa_issuing_distribution_point "X509v3 Attribute Authority Issuing Distribution Point" +#define NID_id_aa_issuing_distribution_point 1307 +#define OBJ_id_aa_issuing_distribution_point OBJ_id_ce,63L + +#define SN_issued_on_behalf_of "issuedOnBehalfOf" +#define LN_issued_on_behalf_of "X509v3 Issued On Behalf Of" +#define NID_issued_on_behalf_of 1308 +#define OBJ_issued_on_behalf_of OBJ_id_ce,64L + +#define SN_single_use "singleUse" +#define LN_single_use "X509v3 Single Use" +#define NID_single_use 1309 +#define OBJ_single_use OBJ_id_ce,65L + +#define SN_group_ac "groupAC" +#define LN_group_ac "X509v3 Group Attribute Certificate" +#define NID_group_ac 1310 +#define OBJ_group_ac OBJ_id_ce,66L + +#define SN_allowed_attribute_assignments "allowedAttributeAssignments" +#define LN_allowed_attribute_assignments "X509v3 Allowed Attribute Assignments" +#define NID_allowed_attribute_assignments 1311 +#define OBJ_allowed_attribute_assignments OBJ_id_ce,67L + +#define SN_attribute_mappings "attributeMappings" +#define LN_attribute_mappings "X509v3 Attribute Mappings" +#define NID_attribute_mappings 1312 +#define OBJ_attribute_mappings OBJ_id_ce,68L + +#define SN_holder_name_constraints "holderNameConstraints" +#define LN_holder_name_constraints "X509v3 Holder Name Constraints" +#define NID_holder_name_constraints 1313 +#define OBJ_holder_name_constraints OBJ_id_ce,69L + +#define SN_authorization_validation "authorizationValidation" +#define LN_authorization_validation "X509v3 Authorization Validation" +#define NID_authorization_validation 1314 +#define OBJ_authorization_validation OBJ_id_ce,70L + +#define SN_prot_restrict "protRestrict" +#define LN_prot_restrict "X509v3 Protocol Restriction" +#define NID_prot_restrict 1315 +#define OBJ_prot_restrict OBJ_id_ce,71L + +#define SN_subject_alt_public_key_info "subjectAltPublicKeyInfo" +#define LN_subject_alt_public_key_info "X509v3 Subject Alternative Public Key Info" +#define NID_subject_alt_public_key_info 1316 +#define OBJ_subject_alt_public_key_info OBJ_id_ce,72L + +#define SN_alt_signature_algorithm "altSignatureAlgorithm" +#define LN_alt_signature_algorithm "X509v3 Alternative Signature Algorithm" +#define NID_alt_signature_algorithm 1317 +#define OBJ_alt_signature_algorithm OBJ_id_ce,73L + +#define SN_alt_signature_value "altSignatureValue" +#define LN_alt_signature_value "X509v3 Alternative Signature Value" +#define NID_alt_signature_value 1318 +#define OBJ_alt_signature_value OBJ_id_ce,74L + +#define SN_associated_information "associatedInformation" +#define LN_associated_information "X509v3 Associated Information" +#define NID_associated_information 1319 +#define OBJ_associated_information OBJ_id_ce,75L + +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define NID_anyExtendedKeyUsage 910 +#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L + +#define SN_netscape "Netscape" +#define LN_netscape "Netscape Communications Corp." +#define NID_netscape 57 +#define OBJ_netscape 2L,16L,840L,1L,113730L + +#define SN_netscape_cert_extension "nsCertExt" +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define NID_netscape_cert_extension 58 +#define OBJ_netscape_cert_extension OBJ_netscape,1L + +#define SN_netscape_data_type "nsDataType" +#define LN_netscape_data_type "Netscape Data Type" +#define NID_netscape_data_type 59 +#define OBJ_netscape_data_type OBJ_netscape,2L + +#define SN_netscape_cert_type "nsCertType" +#define LN_netscape_cert_type "Netscape Cert Type" +#define NID_netscape_cert_type 71 +#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L + +#define SN_netscape_base_url "nsBaseUrl" +#define LN_netscape_base_url "Netscape Base Url" +#define NID_netscape_base_url 72 +#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L + +#define SN_netscape_revocation_url "nsRevocationUrl" +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define NID_netscape_revocation_url 73 +#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L + +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define NID_netscape_ca_revocation_url 74 +#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L + +#define SN_netscape_renewal_url "nsRenewalUrl" +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define NID_netscape_renewal_url 75 +#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L + +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define NID_netscape_ca_policy_url 76 +#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L + +#define SN_netscape_ssl_server_name "nsSslServerName" +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define NID_netscape_ssl_server_name 77 +#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L + +#define SN_netscape_comment "nsComment" +#define LN_netscape_comment "Netscape Comment" +#define NID_netscape_comment 78 +#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L + +#define SN_netscape_cert_sequence "nsCertSequence" +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define NID_netscape_cert_sequence 79 +#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L + +#define SN_ns_sgc "nsSGC" +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define NID_ns_sgc 139 +#define OBJ_ns_sgc OBJ_netscape,4L,1L + +#define SN_org "ORG" +#define LN_org "org" +#define NID_org 379 +#define OBJ_org OBJ_iso,3L + +#define SN_dod "DOD" +#define LN_dod "dod" +#define NID_dod 380 +#define OBJ_dod OBJ_org,6L + +#define SN_iana "IANA" +#define LN_iana "iana" +#define NID_iana 381 +#define OBJ_iana OBJ_dod,1L + +#define OBJ_internet OBJ_iana + +#define SN_Directory "directory" +#define LN_Directory "Directory" +#define NID_Directory 382 +#define OBJ_Directory OBJ_internet,1L + +#define SN_Management "mgmt" +#define LN_Management "Management" +#define NID_Management 383 +#define OBJ_Management OBJ_internet,2L + +#define SN_Experimental "experimental" +#define LN_Experimental "Experimental" +#define NID_Experimental 384 +#define OBJ_Experimental OBJ_internet,3L + +#define SN_Private "private" +#define LN_Private "Private" +#define NID_Private 385 +#define OBJ_Private OBJ_internet,4L + +#define SN_Security "security" +#define LN_Security "Security" +#define NID_Security 386 +#define OBJ_Security OBJ_internet,5L + +#define SN_SNMPv2 "snmpv2" +#define LN_SNMPv2 "SNMPv2" +#define NID_SNMPv2 387 +#define OBJ_SNMPv2 OBJ_internet,6L + +#define LN_Mail "Mail" +#define NID_Mail 388 +#define OBJ_Mail OBJ_internet,7L + +#define SN_Enterprises "enterprises" +#define LN_Enterprises "Enterprises" +#define NID_Enterprises 389 +#define OBJ_Enterprises OBJ_Private,1L + +#define SN_dcObject "dcobject" +#define LN_dcObject "dcObject" +#define NID_dcObject 390 +#define OBJ_dcObject OBJ_Enterprises,1466L,344L + +#define SN_id_kp_wisun_fan_device "id-kp-wisun-fan-device" +#define LN_id_kp_wisun_fan_device "Wi-SUN Alliance Field Area Network (FAN)" +#define NID_id_kp_wisun_fan_device 1322 +#define OBJ_id_kp_wisun_fan_device OBJ_Enterprises,45605L,1L + +#define SN_mime_mhs "mime-mhs" +#define LN_mime_mhs "MIME MHS" +#define NID_mime_mhs 504 +#define OBJ_mime_mhs OBJ_Mail,1L + +#define SN_mime_mhs_headings "mime-mhs-headings" +#define LN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs_headings 505 +#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L + +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_bodies 506 +#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L + +#define SN_id_hex_partial_message "id-hex-partial-message" +#define LN_id_hex_partial_message "id-hex-partial-message" +#define NID_id_hex_partial_message 507 +#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L + +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_multipart_message 508 +#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L + +#define SN_zlib_compression "ZLIB" +#define LN_zlib_compression "zlib compression" +#define NID_zlib_compression 125 +#define OBJ_zlib_compression OBJ_id_smime_alg,8L + +#define OBJ_csor 2L,16L,840L,1L,101L,3L + +#define OBJ_nistAlgorithms OBJ_csor,4L + +#define OBJ_aes OBJ_nistAlgorithms,1L + +#define SN_aes_128_ecb "AES-128-ECB" +#define LN_aes_128_ecb "aes-128-ecb" +#define NID_aes_128_ecb 418 +#define OBJ_aes_128_ecb OBJ_aes,1L + +#define SN_aes_128_cbc "AES-128-CBC" +#define LN_aes_128_cbc "aes-128-cbc" +#define NID_aes_128_cbc 419 +#define OBJ_aes_128_cbc OBJ_aes,2L + +#define SN_aes_128_ofb128 "AES-128-OFB" +#define LN_aes_128_ofb128 "aes-128-ofb" +#define NID_aes_128_ofb128 420 +#define OBJ_aes_128_ofb128 OBJ_aes,3L + +#define SN_aes_128_cfb128 "AES-128-CFB" +#define LN_aes_128_cfb128 "aes-128-cfb" +#define NID_aes_128_cfb128 421 +#define OBJ_aes_128_cfb128 OBJ_aes,4L + +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_id_aes128_wrap 788 +#define OBJ_id_aes128_wrap OBJ_aes,5L + +#define SN_aes_128_gcm "id-aes128-GCM" +#define LN_aes_128_gcm "aes-128-gcm" +#define NID_aes_128_gcm 895 +#define OBJ_aes_128_gcm OBJ_aes,6L + +#define SN_aes_128_ccm "id-aes128-CCM" +#define LN_aes_128_ccm "aes-128-ccm" +#define NID_aes_128_ccm 896 +#define OBJ_aes_128_ccm OBJ_aes,7L + +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_id_aes128_wrap_pad 897 +#define OBJ_id_aes128_wrap_pad OBJ_aes,8L + +#define SN_aes_192_ecb "AES-192-ECB" +#define LN_aes_192_ecb "aes-192-ecb" +#define NID_aes_192_ecb 422 +#define OBJ_aes_192_ecb OBJ_aes,21L + +#define SN_aes_192_cbc "AES-192-CBC" +#define LN_aes_192_cbc "aes-192-cbc" +#define NID_aes_192_cbc 423 +#define OBJ_aes_192_cbc OBJ_aes,22L + +#define SN_aes_192_ofb128 "AES-192-OFB" +#define LN_aes_192_ofb128 "aes-192-ofb" +#define NID_aes_192_ofb128 424 +#define OBJ_aes_192_ofb128 OBJ_aes,23L + +#define SN_aes_192_cfb128 "AES-192-CFB" +#define LN_aes_192_cfb128 "aes-192-cfb" +#define NID_aes_192_cfb128 425 +#define OBJ_aes_192_cfb128 OBJ_aes,24L + +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_id_aes192_wrap 789 +#define OBJ_id_aes192_wrap OBJ_aes,25L + +#define SN_aes_192_gcm "id-aes192-GCM" +#define LN_aes_192_gcm "aes-192-gcm" +#define NID_aes_192_gcm 898 +#define OBJ_aes_192_gcm OBJ_aes,26L + +#define SN_aes_192_ccm "id-aes192-CCM" +#define LN_aes_192_ccm "aes-192-ccm" +#define NID_aes_192_ccm 899 +#define OBJ_aes_192_ccm OBJ_aes,27L + +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_id_aes192_wrap_pad 900 +#define OBJ_id_aes192_wrap_pad OBJ_aes,28L + +#define SN_aes_256_ecb "AES-256-ECB" +#define LN_aes_256_ecb "aes-256-ecb" +#define NID_aes_256_ecb 426 +#define OBJ_aes_256_ecb OBJ_aes,41L + +#define SN_aes_256_cbc "AES-256-CBC" +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_cbc 427 +#define OBJ_aes_256_cbc OBJ_aes,42L + +#define SN_aes_256_ofb128 "AES-256-OFB" +#define LN_aes_256_ofb128 "aes-256-ofb" +#define NID_aes_256_ofb128 428 +#define OBJ_aes_256_ofb128 OBJ_aes,43L + +#define SN_aes_256_cfb128 "AES-256-CFB" +#define LN_aes_256_cfb128 "aes-256-cfb" +#define NID_aes_256_cfb128 429 +#define OBJ_aes_256_cfb128 OBJ_aes,44L + +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_id_aes256_wrap 790 +#define OBJ_id_aes256_wrap OBJ_aes,45L + +#define SN_aes_256_gcm "id-aes256-GCM" +#define LN_aes_256_gcm "aes-256-gcm" +#define NID_aes_256_gcm 901 +#define OBJ_aes_256_gcm OBJ_aes,46L + +#define SN_aes_256_ccm "id-aes256-CCM" +#define LN_aes_256_ccm "aes-256-ccm" +#define NID_aes_256_ccm 902 +#define OBJ_aes_256_ccm OBJ_aes,47L + +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_id_aes256_wrap_pad 903 +#define OBJ_id_aes256_wrap_pad OBJ_aes,48L + +#define SN_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define NID_aes_128_cfb1 650 + +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define NID_aes_192_cfb1 651 + +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define NID_aes_256_cfb1 652 + +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define NID_aes_128_cfb8 653 + +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define NID_aes_192_cfb8 654 + +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define NID_aes_256_cfb8 655 + +#define SN_aes_128_ctr "AES-128-CTR" +#define LN_aes_128_ctr "aes-128-ctr" +#define NID_aes_128_ctr 904 + +#define SN_aes_192_ctr "AES-192-CTR" +#define LN_aes_192_ctr "aes-192-ctr" +#define NID_aes_192_ctr 905 + +#define SN_aes_256_ctr "AES-256-CTR" +#define LN_aes_256_ctr "aes-256-ctr" +#define NID_aes_256_ctr 906 + +#define SN_aes_128_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#define SN_des_cfb1 "DES-CFB1" +#define LN_des_cfb1 "des-cfb1" +#define NID_des_cfb1 656 + +#define SN_des_cfb8 "DES-CFB8" +#define LN_des_cfb8 "des-cfb8" +#define NID_des_cfb8 657 + +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define NID_des_ede3_cfb1 658 + +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define NID_des_ede3_cfb8 659 + +#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L + +#define SN_sha256 "SHA256" +#define LN_sha256 "sha256" +#define NID_sha256 672 +#define OBJ_sha256 OBJ_nist_hashalgs,1L + +#define SN_sha384 "SHA384" +#define LN_sha384 "sha384" +#define NID_sha384 673 +#define OBJ_sha384 OBJ_nist_hashalgs,2L + +#define SN_sha512 "SHA512" +#define LN_sha512 "sha512" +#define NID_sha512 674 +#define OBJ_sha512 OBJ_nist_hashalgs,3L + +#define SN_sha224 "SHA224" +#define LN_sha224 "sha224" +#define NID_sha224 675 +#define OBJ_sha224 OBJ_nist_hashalgs,4L + +#define SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#define SN_kmac128 "KMAC128" +#define LN_kmac128 "kmac128" +#define NID_kmac128 1196 +#define OBJ_kmac128 OBJ_nist_hashalgs,19L + +#define SN_kmac256 "KMAC256" +#define LN_kmac256 "kmac256" +#define NID_kmac256 1197 +#define OBJ_kmac256 OBJ_nist_hashalgs,20L + +#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_dsa_with_SHA224 802 +#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L + +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA256 803 +#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L + +#define OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#define SN_ML_DSA_44 "id-ml-dsa-44" +#define LN_ML_DSA_44 "ML-DSA-44" +#define NID_ML_DSA_44 1457 +#define OBJ_ML_DSA_44 OBJ_sigAlgs,17L + +#define SN_ML_DSA_65 "id-ml-dsa-65" +#define LN_ML_DSA_65 "ML-DSA-65" +#define NID_ML_DSA_65 1458 +#define OBJ_ML_DSA_65 OBJ_sigAlgs,18L + +#define SN_ML_DSA_87 "id-ml-dsa-87" +#define LN_ML_DSA_87 "ML-DSA-87" +#define NID_ML_DSA_87 1459 +#define OBJ_ML_DSA_87 OBJ_sigAlgs,19L + +#define SN_SLH_DSA_SHA2_128s "id-slh-dsa-sha2-128s" +#define LN_SLH_DSA_SHA2_128s "SLH-DSA-SHA2-128s" +#define NID_SLH_DSA_SHA2_128s 1460 +#define OBJ_SLH_DSA_SHA2_128s OBJ_sigAlgs,20L + +#define SN_SLH_DSA_SHA2_128f "id-slh-dsa-sha2-128f" +#define LN_SLH_DSA_SHA2_128f "SLH-DSA-SHA2-128f" +#define NID_SLH_DSA_SHA2_128f 1461 +#define OBJ_SLH_DSA_SHA2_128f OBJ_sigAlgs,21L + +#define SN_SLH_DSA_SHA2_192s "id-slh-dsa-sha2-192s" +#define LN_SLH_DSA_SHA2_192s "SLH-DSA-SHA2-192s" +#define NID_SLH_DSA_SHA2_192s 1462 +#define OBJ_SLH_DSA_SHA2_192s OBJ_sigAlgs,22L + +#define SN_SLH_DSA_SHA2_192f "id-slh-dsa-sha2-192f" +#define LN_SLH_DSA_SHA2_192f "SLH-DSA-SHA2-192f" +#define NID_SLH_DSA_SHA2_192f 1463 +#define OBJ_SLH_DSA_SHA2_192f OBJ_sigAlgs,23L + +#define SN_SLH_DSA_SHA2_256s "id-slh-dsa-sha2-256s" +#define LN_SLH_DSA_SHA2_256s "SLH-DSA-SHA2-256s" +#define NID_SLH_DSA_SHA2_256s 1464 +#define OBJ_SLH_DSA_SHA2_256s OBJ_sigAlgs,24L + +#define SN_SLH_DSA_SHA2_256f "id-slh-dsa-sha2-256f" +#define LN_SLH_DSA_SHA2_256f "SLH-DSA-SHA2-256f" +#define NID_SLH_DSA_SHA2_256f 1465 +#define OBJ_SLH_DSA_SHA2_256f OBJ_sigAlgs,25L + +#define SN_SLH_DSA_SHAKE_128s "id-slh-dsa-shake-128s" +#define LN_SLH_DSA_SHAKE_128s "SLH-DSA-SHAKE-128s" +#define NID_SLH_DSA_SHAKE_128s 1466 +#define OBJ_SLH_DSA_SHAKE_128s OBJ_sigAlgs,26L + +#define SN_SLH_DSA_SHAKE_128f "id-slh-dsa-shake-128f" +#define LN_SLH_DSA_SHAKE_128f "SLH-DSA-SHAKE-128f" +#define NID_SLH_DSA_SHAKE_128f 1467 +#define OBJ_SLH_DSA_SHAKE_128f OBJ_sigAlgs,27L + +#define SN_SLH_DSA_SHAKE_192s "id-slh-dsa-shake-192s" +#define LN_SLH_DSA_SHAKE_192s "SLH-DSA-SHAKE-192s" +#define NID_SLH_DSA_SHAKE_192s 1468 +#define OBJ_SLH_DSA_SHAKE_192s OBJ_sigAlgs,28L + +#define SN_SLH_DSA_SHAKE_192f "id-slh-dsa-shake-192f" +#define LN_SLH_DSA_SHAKE_192f "SLH-DSA-SHAKE-192f" +#define NID_SLH_DSA_SHAKE_192f 1469 +#define OBJ_SLH_DSA_SHAKE_192f OBJ_sigAlgs,29L + +#define SN_SLH_DSA_SHAKE_256s "id-slh-dsa-shake-256s" +#define LN_SLH_DSA_SHAKE_256s "SLH-DSA-SHAKE-256s" +#define NID_SLH_DSA_SHAKE_256s 1470 +#define OBJ_SLH_DSA_SHAKE_256s OBJ_sigAlgs,30L + +#define SN_SLH_DSA_SHAKE_256f "id-slh-dsa-shake-256f" +#define LN_SLH_DSA_SHAKE_256f "SLH-DSA-SHAKE-256f" +#define NID_SLH_DSA_SHAKE_256f 1471 +#define OBJ_SLH_DSA_SHAKE_256f OBJ_sigAlgs,31L + +#define SN_HASH_ML_DSA_44_WITH_SHA512 "id-hash-ml-dsa-44-with-sha512" +#define LN_HASH_ML_DSA_44_WITH_SHA512 "HASH-ML-DSA-44-WITH-SHA512" +#define NID_HASH_ML_DSA_44_WITH_SHA512 1472 +#define OBJ_HASH_ML_DSA_44_WITH_SHA512 OBJ_sigAlgs,32L + +#define SN_HASH_ML_DSA_65_WITH_SHA512 "id-hash-ml-dsa-65-with-sha512" +#define LN_HASH_ML_DSA_65_WITH_SHA512 "HASH-ML-DSA-65-WITH-SHA512" +#define NID_HASH_ML_DSA_65_WITH_SHA512 1473 +#define OBJ_HASH_ML_DSA_65_WITH_SHA512 OBJ_sigAlgs,33L + +#define SN_HASH_ML_DSA_87_WITH_SHA512 "id-hash-ml-dsa-87-with-sha512" +#define LN_HASH_ML_DSA_87_WITH_SHA512 "HASH-ML-DSA-87-WITH-SHA512" +#define NID_HASH_ML_DSA_87_WITH_SHA512 1474 +#define OBJ_HASH_ML_DSA_87_WITH_SHA512 OBJ_sigAlgs,34L + +#define SN_SLH_DSA_SHA2_128s_WITH_SHA256 "id-hash-slh-dsa-sha2-128s-with-sha256" +#define LN_SLH_DSA_SHA2_128s_WITH_SHA256 "SLH-DSA-SHA2-128s-WITH-SHA256" +#define NID_SLH_DSA_SHA2_128s_WITH_SHA256 1475 +#define OBJ_SLH_DSA_SHA2_128s_WITH_SHA256 OBJ_sigAlgs,35L + +#define SN_SLH_DSA_SHA2_128f_WITH_SHA256 "id-hash-slh-dsa-sha2-128f-with-sha256" +#define LN_SLH_DSA_SHA2_128f_WITH_SHA256 "SLH-DSA-SHA2-128f-WITH-SHA256" +#define NID_SLH_DSA_SHA2_128f_WITH_SHA256 1476 +#define OBJ_SLH_DSA_SHA2_128f_WITH_SHA256 OBJ_sigAlgs,36L + +#define SN_SLH_DSA_SHA2_192s_WITH_SHA512 "id-hash-slh-dsa-sha2-192s-with-sha512" +#define LN_SLH_DSA_SHA2_192s_WITH_SHA512 "SLH-DSA-SHA2-192s-WITH-SHA512" +#define NID_SLH_DSA_SHA2_192s_WITH_SHA512 1477 +#define OBJ_SLH_DSA_SHA2_192s_WITH_SHA512 OBJ_sigAlgs,37L + +#define SN_SLH_DSA_SHA2_192f_WITH_SHA512 "id-hash-slh-dsa-sha2-192f-with-sha512" +#define LN_SLH_DSA_SHA2_192f_WITH_SHA512 "SLH-DSA-SHA2-192f-WITH-SHA512" +#define NID_SLH_DSA_SHA2_192f_WITH_SHA512 1478 +#define OBJ_SLH_DSA_SHA2_192f_WITH_SHA512 OBJ_sigAlgs,38L + +#define SN_SLH_DSA_SHA2_256s_WITH_SHA512 "id-hash-slh-dsa-sha2-256s-with-sha512" +#define LN_SLH_DSA_SHA2_256s_WITH_SHA512 "SLH-DSA-SHA2-256s-WITH-SHA512" +#define NID_SLH_DSA_SHA2_256s_WITH_SHA512 1479 +#define OBJ_SLH_DSA_SHA2_256s_WITH_SHA512 OBJ_sigAlgs,39L + +#define SN_SLH_DSA_SHA2_256f_WITH_SHA512 "id-hash-slh-dsa-sha2-256f-with-sha512" +#define LN_SLH_DSA_SHA2_256f_WITH_SHA512 "SLH-DSA-SHA2-256f-WITH-SHA512" +#define NID_SLH_DSA_SHA2_256f_WITH_SHA512 1480 +#define OBJ_SLH_DSA_SHA2_256f_WITH_SHA512 OBJ_sigAlgs,40L + +#define SN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "id-hash-slh-dsa-shake-128s-with-shake128" +#define LN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "SLH-DSA-SHAKE-128s-WITH-SHAKE128" +#define NID_SLH_DSA_SHAKE_128s_WITH_SHAKE128 1481 +#define OBJ_SLH_DSA_SHAKE_128s_WITH_SHAKE128 OBJ_sigAlgs,41L + +#define SN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "id-hash-slh-dsa-shake-128f-with-shake128" +#define LN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "SLH-DSA-SHAKE-128f-WITH-SHAKE128" +#define NID_SLH_DSA_SHAKE_128f_WITH_SHAKE128 1482 +#define OBJ_SLH_DSA_SHAKE_128f_WITH_SHAKE128 OBJ_sigAlgs,42L + +#define SN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "id-hash-slh-dsa-shake-192s-with-shake256" +#define LN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "SLH-DSA-SHAKE-192s-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_192s_WITH_SHAKE256 1483 +#define OBJ_SLH_DSA_SHAKE_192s_WITH_SHAKE256 OBJ_sigAlgs,43L + +#define SN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "id-hash-slh-dsa-shake-192f-with-shake256" +#define LN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "SLH-DSA-SHAKE-192f-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_192f_WITH_SHAKE256 1484 +#define OBJ_SLH_DSA_SHAKE_192f_WITH_SHAKE256 OBJ_sigAlgs,44L + +#define SN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "id-hash-slh-dsa-shake-256s-with-shake256" +#define LN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "SLH-DSA-SHAKE-256s-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_256s_WITH_SHAKE256 1485 +#define OBJ_SLH_DSA_SHAKE_256s_WITH_SHAKE256 OBJ_sigAlgs,45L + +#define SN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "id-hash-slh-dsa-shake-256f-with-shake256" +#define LN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "SLH-DSA-SHAKE-256f-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_256f_WITH_SHAKE256 1486 +#define OBJ_SLH_DSA_SHAKE_256f_WITH_SHAKE256 OBJ_sigAlgs,46L + +#define SN_hold_instruction_code "holdInstructionCode" +#define LN_hold_instruction_code "Hold Instruction Code" +#define NID_hold_instruction_code 430 +#define OBJ_hold_instruction_code OBJ_id_ce,23L + +#define OBJ_holdInstruction OBJ_X9_57,2L + +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_none "Hold Instruction None" +#define NID_hold_instruction_none 431 +#define OBJ_hold_instruction_none OBJ_holdInstruction,1L + +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define NID_hold_instruction_call_issuer 432 +#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L + +#define SN_hold_instruction_reject "holdInstructionReject" +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define NID_hold_instruction_reject 433 +#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L + +#define SN_itu_t_identified_organization "itu-t-identified-organization" +#define NID_itu_t_identified_organization 1264 +#define OBJ_itu_t_identified_organization OBJ_itu_t,4L + +#define SN_etsi "etsi" +#define NID_etsi 1265 +#define OBJ_etsi OBJ_itu_t_identified_organization,0L + +#define SN_electronic_signature_standard "electronic-signature-standard" +#define NID_electronic_signature_standard 1266 +#define OBJ_electronic_signature_standard OBJ_etsi,1733L + +#define SN_ess_attributes "ess-attributes" +#define NID_ess_attributes 1267 +#define OBJ_ess_attributes OBJ_electronic_signature_standard,2L + +#define SN_id_aa_ets_mimeType "id-aa-ets-mimeType" +#define NID_id_aa_ets_mimeType 1268 +#define OBJ_id_aa_ets_mimeType OBJ_ess_attributes,1L + +#define SN_id_aa_ets_longTermValidation "id-aa-ets-longTermValidation" +#define NID_id_aa_ets_longTermValidation 1269 +#define OBJ_id_aa_ets_longTermValidation OBJ_ess_attributes,2L + +#define SN_id_aa_ets_SignaturePolicyDocument "id-aa-ets-SignaturePolicyDocument" +#define NID_id_aa_ets_SignaturePolicyDocument 1270 +#define OBJ_id_aa_ets_SignaturePolicyDocument OBJ_ess_attributes,3L + +#define SN_id_aa_ets_archiveTimestampV3 "id-aa-ets-archiveTimestampV3" +#define NID_id_aa_ets_archiveTimestampV3 1271 +#define OBJ_id_aa_ets_archiveTimestampV3 OBJ_ess_attributes,4L + +#define SN_id_aa_ATSHashIndex "id-aa-ATSHashIndex" +#define NID_id_aa_ATSHashIndex 1272 +#define OBJ_id_aa_ATSHashIndex OBJ_ess_attributes,5L + +#define SN_cades "cades" +#define NID_cades 1273 +#define OBJ_cades OBJ_etsi,19122L + +#define SN_cades_attributes "cades-attributes" +#define NID_cades_attributes 1274 +#define OBJ_cades_attributes OBJ_cades,1L + +#define SN_id_aa_ets_signerAttrV2 "id-aa-ets-signerAttrV2" +#define NID_id_aa_ets_signerAttrV2 1275 +#define OBJ_id_aa_ets_signerAttrV2 OBJ_cades_attributes,1L + +#define SN_id_aa_ets_sigPolicyStore "id-aa-ets-sigPolicyStore" +#define NID_id_aa_ets_sigPolicyStore 1276 +#define OBJ_id_aa_ets_sigPolicyStore OBJ_cades_attributes,3L + +#define SN_id_aa_ATSHashIndex_v2 "id-aa-ATSHashIndex-v2" +#define NID_id_aa_ATSHashIndex_v2 1277 +#define OBJ_id_aa_ATSHashIndex_v2 OBJ_cades_attributes,4L + +#define SN_id_aa_ATSHashIndex_v3 "id-aa-ATSHashIndex-v3" +#define NID_id_aa_ATSHashIndex_v3 1278 +#define OBJ_id_aa_ATSHashIndex_v3 OBJ_cades_attributes,5L + +#define SN_signedAssertion "signedAssertion" +#define NID_signedAssertion 1279 +#define OBJ_signedAssertion OBJ_cades_attributes,6L + +#define SN_data "data" +#define NID_data 434 +#define OBJ_data OBJ_itu_t,9L + +#define SN_pss "pss" +#define NID_pss 435 +#define OBJ_pss OBJ_data,2342L + +#define SN_ucl "ucl" +#define NID_ucl 436 +#define OBJ_ucl OBJ_pss,19200300L + +#define SN_pilot "pilot" +#define NID_pilot 437 +#define OBJ_pilot OBJ_ucl,100L + +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilotAttributeType 438 +#define OBJ_pilotAttributeType OBJ_pilot,1L + +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeSyntax 439 +#define OBJ_pilotAttributeSyntax OBJ_pilot,3L + +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotObjectClass 440 +#define OBJ_pilotObjectClass OBJ_pilot,4L + +#define LN_pilotGroups "pilotGroups" +#define NID_pilotGroups 441 +#define OBJ_pilotGroups OBJ_pilot,10L + +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L + +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_caseIgnoreIA5StringSyntax 443 +#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L + +#define LN_pilotObject "pilotObject" +#define NID_pilotObject 444 +#define OBJ_pilotObject OBJ_pilotObjectClass,3L + +#define LN_pilotPerson "pilotPerson" +#define NID_pilotPerson 445 +#define OBJ_pilotPerson OBJ_pilotObjectClass,4L + +#define SN_account "account" +#define NID_account 446 +#define OBJ_account OBJ_pilotObjectClass,5L + +#define SN_document "document" +#define NID_document 447 +#define OBJ_document OBJ_pilotObjectClass,6L + +#define SN_room "room" +#define NID_room 448 +#define OBJ_room OBJ_pilotObjectClass,7L + +#define LN_documentSeries "documentSeries" +#define NID_documentSeries 449 +#define OBJ_documentSeries OBJ_pilotObjectClass,9L + +#define SN_Domain "domain" +#define LN_Domain "Domain" +#define NID_Domain 392 +#define OBJ_Domain OBJ_pilotObjectClass,13L + +#define LN_rFC822localPart "rFC822localPart" +#define NID_rFC822localPart 450 +#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L + +#define LN_dNSDomain "dNSDomain" +#define NID_dNSDomain 451 +#define OBJ_dNSDomain OBJ_pilotObjectClass,15L + +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_domainRelatedObject 452 +#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L + +#define LN_friendlyCountry "friendlyCountry" +#define NID_friendlyCountry 453 +#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L + +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_simpleSecurityObject 454 +#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L + +#define LN_pilotOrganization "pilotOrganization" +#define NID_pilotOrganization 455 +#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L + +#define LN_pilotDSA "pilotDSA" +#define NID_pilotDSA 456 +#define OBJ_pilotDSA OBJ_pilotObjectClass,21L + +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_qualityLabelledData 457 +#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L + +#define SN_userId "UID" +#define LN_userId "userId" +#define NID_userId 458 +#define OBJ_userId OBJ_pilotAttributeType,1L + +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_textEncodedORAddress 459 +#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L + +#define SN_rfc822Mailbox "mail" +#define LN_rfc822Mailbox "rfc822Mailbox" +#define NID_rfc822Mailbox 460 +#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L + +#define SN_info "info" +#define NID_info 461 +#define OBJ_info OBJ_pilotAttributeType,4L + +#define LN_favouriteDrink "favouriteDrink" +#define NID_favouriteDrink 462 +#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L + +#define LN_roomNumber "roomNumber" +#define NID_roomNumber 463 +#define OBJ_roomNumber OBJ_pilotAttributeType,6L + +#define SN_photo "photo" +#define NID_photo 464 +#define OBJ_photo OBJ_pilotAttributeType,7L + +#define LN_userClass "userClass" +#define NID_userClass 465 +#define OBJ_userClass OBJ_pilotAttributeType,8L + +#define SN_host "host" +#define NID_host 466 +#define OBJ_host OBJ_pilotAttributeType,9L + +#define SN_manager "manager" +#define NID_manager 467 +#define OBJ_manager OBJ_pilotAttributeType,10L + +#define LN_documentIdentifier "documentIdentifier" +#define NID_documentIdentifier 468 +#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L + +#define LN_documentTitle "documentTitle" +#define NID_documentTitle 469 +#define OBJ_documentTitle OBJ_pilotAttributeType,12L + +#define LN_documentVersion "documentVersion" +#define NID_documentVersion 470 +#define OBJ_documentVersion OBJ_pilotAttributeType,13L + +#define LN_documentAuthor "documentAuthor" +#define NID_documentAuthor 471 +#define OBJ_documentAuthor OBJ_pilotAttributeType,14L + +#define LN_documentLocation "documentLocation" +#define NID_documentLocation 472 +#define OBJ_documentLocation OBJ_pilotAttributeType,15L + +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_homeTelephoneNumber 473 +#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L + +#define SN_secretary "secretary" +#define NID_secretary 474 +#define OBJ_secretary OBJ_pilotAttributeType,21L + +#define LN_otherMailbox "otherMailbox" +#define NID_otherMailbox 475 +#define OBJ_otherMailbox OBJ_pilotAttributeType,22L + +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_lastModifiedTime 476 +#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L + +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedBy 477 +#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L + +#define SN_domainComponent "DC" +#define LN_domainComponent "domainComponent" +#define NID_domainComponent 391 +#define OBJ_domainComponent OBJ_pilotAttributeType,25L + +#define LN_aRecord "aRecord" +#define NID_aRecord 478 +#define OBJ_aRecord OBJ_pilotAttributeType,26L + +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_pilotAttributeType27 479 +#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L + +#define LN_mXRecord "mXRecord" +#define NID_mXRecord 480 +#define OBJ_mXRecord OBJ_pilotAttributeType,28L + +#define LN_nSRecord "nSRecord" +#define NID_nSRecord 481 +#define OBJ_nSRecord OBJ_pilotAttributeType,29L + +#define LN_sOARecord "sOARecord" +#define NID_sOARecord 482 +#define OBJ_sOARecord OBJ_pilotAttributeType,30L + +#define LN_cNAMERecord "cNAMERecord" +#define NID_cNAMERecord 483 +#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L + +#define LN_associatedDomain "associatedDomain" +#define NID_associatedDomain 484 +#define OBJ_associatedDomain OBJ_pilotAttributeType,37L + +#define LN_associatedName "associatedName" +#define NID_associatedName 485 +#define OBJ_associatedName OBJ_pilotAttributeType,38L + +#define LN_homePostalAddress "homePostalAddress" +#define NID_homePostalAddress 486 +#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L + +#define LN_personalTitle "personalTitle" +#define NID_personalTitle 487 +#define OBJ_personalTitle OBJ_pilotAttributeType,40L + +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L + +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_pagerTelephoneNumber 489 +#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L + +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_friendlyCountryName 490 +#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L + +#define SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#define LN_organizationalStatus "organizationalStatus" +#define NID_organizationalStatus 491 +#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L + +#define LN_janetMailbox "janetMailbox" +#define NID_janetMailbox 492 +#define OBJ_janetMailbox OBJ_pilotAttributeType,46L + +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_mailPreferenceOption 493 +#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L + +#define LN_buildingName "buildingName" +#define NID_buildingName 494 +#define OBJ_buildingName OBJ_pilotAttributeType,48L + +#define LN_dSAQuality "dSAQuality" +#define NID_dSAQuality 495 +#define OBJ_dSAQuality OBJ_pilotAttributeType,49L + +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_singleLevelQuality 496 +#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L + +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_subtreeMinimumQuality 497 +#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L + +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMaximumQuality 498 +#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L + +#define LN_personalSignature "personalSignature" +#define NID_personalSignature 499 +#define OBJ_personalSignature OBJ_pilotAttributeType,53L + +#define LN_dITRedirect "dITRedirect" +#define NID_dITRedirect 500 +#define OBJ_dITRedirect OBJ_pilotAttributeType,54L + +#define SN_audio "audio" +#define NID_audio 501 +#define OBJ_audio OBJ_pilotAttributeType,55L + +#define LN_documentPublisher "documentPublisher" +#define NID_documentPublisher 502 +#define OBJ_documentPublisher OBJ_pilotAttributeType,56L + +#define SN_id_set "id-set" +#define LN_id_set "Secure Electronic Transactions" +#define NID_id_set 512 +#define OBJ_id_set OBJ_international_organizations,42L + +#define SN_set_ctype "set-ctype" +#define LN_set_ctype "content types" +#define NID_set_ctype 513 +#define OBJ_set_ctype OBJ_id_set,0L + +#define SN_set_msgExt "set-msgExt" +#define LN_set_msgExt "message extensions" +#define NID_set_msgExt 514 +#define OBJ_set_msgExt OBJ_id_set,1L + +#define SN_set_attr "set-attr" +#define NID_set_attr 515 +#define OBJ_set_attr OBJ_id_set,3L + +#define SN_set_policy "set-policy" +#define NID_set_policy 516 +#define OBJ_set_policy OBJ_id_set,5L + +#define SN_set_certExt "set-certExt" +#define LN_set_certExt "certificate extensions" +#define NID_set_certExt 517 +#define OBJ_set_certExt OBJ_id_set,7L + +#define SN_set_brand "set-brand" +#define NID_set_brand 518 +#define OBJ_set_brand OBJ_id_set,8L + +#define SN_setct_PANData "setct-PANData" +#define NID_setct_PANData 519 +#define OBJ_setct_PANData OBJ_set_ctype,0L + +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANToken 520 +#define OBJ_setct_PANToken OBJ_set_ctype,1L + +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANOnly 521 +#define OBJ_setct_PANOnly OBJ_set_ctype,2L + +#define SN_setct_OIData "setct-OIData" +#define NID_setct_OIData 522 +#define OBJ_setct_OIData OBJ_set_ctype,3L + +#define SN_setct_PI "setct-PI" +#define NID_setct_PI 523 +#define OBJ_setct_PI OBJ_set_ctype,4L + +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PIData 524 +#define OBJ_setct_PIData OBJ_set_ctype,5L + +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIDataUnsigned 525 +#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L + +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_HODInput 526 +#define OBJ_setct_HODInput OBJ_set_ctype,7L + +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_AuthResBaggage 527 +#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L + +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L + +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevResBaggage 529 +#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L + +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_CapTokenSeq 530 +#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L + +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_PInitResData 531 +#define OBJ_setct_PInitResData OBJ_set_ctype,12L + +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PI_TBS 532 +#define OBJ_setct_PI_TBS OBJ_set_ctype,13L + +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PResData 533 +#define OBJ_setct_PResData OBJ_set_ctype,14L + +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_AuthReqTBS 534 +#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L + +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthResTBS 535 +#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L + +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBSX 536 +#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L + +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthTokenTBS 537 +#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L + +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_CapTokenData 538 +#define OBJ_setct_CapTokenData OBJ_set_ctype,20L + +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenTBS 539 +#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L + +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_AcqCardCodeMsg 540 +#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L + +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AuthRevReqTBS 541 +#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L + +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevResData 542 +#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L + +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResTBS 543 +#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L + +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_CapReqTBS 544 +#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L + +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBSX 545 +#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L + +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapResData 546 +#define OBJ_setct_CapResData OBJ_set_ctype,28L + +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapRevReqTBS 547 +#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L + +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBSX 548 +#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L + +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevResData 549 +#define OBJ_setct_CapRevResData OBJ_set_ctype,31L + +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CredReqTBS 550 +#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L + +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBSX 551 +#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L + +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredResData 552 +#define OBJ_setct_CredResData OBJ_set_ctype,34L + +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredRevReqTBS 553 +#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L + +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBSX 554 +#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L + +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevResData 555 +#define OBJ_setct_CredRevResData OBJ_set_ctype,37L + +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_PCertReqData 556 +#define OBJ_setct_PCertReqData OBJ_set_ctype,38L + +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertResTBS 557 +#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L + +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_BatchAdminReqData 558 +#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L + +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminResData 559 +#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L + +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L + +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L + +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_RegFormResTBS 562 +#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L + +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_CertReqData 563 +#define OBJ_setct_CertReqData OBJ_set_ctype,45L + +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqTBS 564 +#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L + +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertResData 565 +#define OBJ_setct_CertResData OBJ_set_ctype,47L + +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertInqReqTBS 566 +#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L + +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_ErrorTBS 567 +#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L + +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L + +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIUnsignedTBE 569 +#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L + +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_AuthReqTBE 570 +#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L + +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthResTBE 571 +#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L + +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBEX 572 +#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L + +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L + +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_CapTokenTBE 574 +#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L + +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBEX 575 +#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L + +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L + +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AuthRevReqTBE 577 +#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L + +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevResTBE 578 +#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L + +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBEB 579 +#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L + +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_CapReqTBE 580 +#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L + +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBEX 581 +#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L + +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapResTBE 582 +#define OBJ_setct_CapResTBE OBJ_set_ctype,64L + +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapRevReqTBE 583 +#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L + +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBEX 584 +#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L + +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevResTBE 585 +#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L + +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CredReqTBE 586 +#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L + +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBEX 587 +#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L + +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredResTBE 588 +#define OBJ_setct_CredResTBE OBJ_set_ctype,70L + +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredRevReqTBE 589 +#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L + +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBEX 590 +#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L + +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevResTBE 591 +#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L + +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L + +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminResTBE 593 +#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L + +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L + +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_CertReqTBE 595 +#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L + +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBEX 596 +#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L + +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertResTBE 597 +#define OBJ_setct_CertResTBE OBJ_set_ctype,79L + +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CRLNotificationTBS 598 +#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L + +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L + +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_BCIDistributionTBS 600 +#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L + +#define SN_setext_genCrypt "setext-genCrypt" +#define LN_setext_genCrypt "generic cryptogram" +#define NID_setext_genCrypt 601 +#define OBJ_setext_genCrypt OBJ_set_msgExt,1L + +#define SN_setext_miAuth "setext-miAuth" +#define LN_setext_miAuth "merchant initiated auth" +#define NID_setext_miAuth 602 +#define OBJ_setext_miAuth OBJ_set_msgExt,3L + +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_pinSecure 603 +#define OBJ_setext_pinSecure OBJ_set_msgExt,4L + +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinAny 604 +#define OBJ_setext_pinAny OBJ_set_msgExt,5L + +#define SN_setext_track2 "setext-track2" +#define NID_setext_track2 605 +#define OBJ_setext_track2 OBJ_set_msgExt,7L + +#define SN_setext_cv "setext-cv" +#define LN_setext_cv "additional verification" +#define NID_setext_cv 606 +#define OBJ_setext_cv OBJ_set_msgExt,8L + +#define SN_set_policy_root "set-policy-root" +#define NID_set_policy_root 607 +#define OBJ_set_policy_root OBJ_set_policy,0L + +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_setCext_hashedRoot 608 +#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L + +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_certType 609 +#define OBJ_setCext_certType OBJ_set_certExt,1L + +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_merchData 610 +#define OBJ_setCext_merchData OBJ_set_certExt,2L + +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_cCertRequired 611 +#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L + +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_tunneling 612 +#define OBJ_setCext_tunneling OBJ_set_certExt,4L + +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_setExt 613 +#define OBJ_setCext_setExt OBJ_set_certExt,5L + +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setQualf 614 +#define OBJ_setCext_setQualf OBJ_set_certExt,6L + +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_PGWYcapabilities 615 +#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L + +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_TokenIdentifier 616 +#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L + +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_Track2Data 617 +#define OBJ_setCext_Track2Data OBJ_set_certExt,9L + +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_TokenType 618 +#define OBJ_setCext_TokenType OBJ_set_certExt,10L + +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_IssuerCapabilities 619 +#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L + +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setAttr_Cert 620 +#define OBJ_setAttr_Cert OBJ_set_attr,0L + +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define NID_setAttr_PGWYcap 621 +#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L + +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_TokenType 622 +#define OBJ_setAttr_TokenType OBJ_set_attr,2L + +#define SN_setAttr_IssCap "setAttr-IssCap" +#define LN_setAttr_IssCap "issuer capabilities" +#define NID_setAttr_IssCap 623 +#define OBJ_setAttr_IssCap OBJ_set_attr,3L + +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_set_rootKeyThumb 624 +#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L + +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_addPolicy 625 +#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L + +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_setAttr_Token_EMV 626 +#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L + +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_B0Prime 627 +#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L + +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_IssCap_CVM 628 +#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L + +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_T2 629 +#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L + +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_Sig 630 +#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L + +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define NID_setAttr_GenCryptgrm 631 +#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L + +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define LN_setAttr_T2Enc "encrypted track 2" +#define NID_setAttr_T2Enc 632 +#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L + +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define NID_setAttr_T2cleartxt 633 +#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L + +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define LN_setAttr_TokICCsig "ICC or token signature" +#define NID_setAttr_TokICCsig 634 +#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L + +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define LN_setAttr_SecDevSig "secure device signature" +#define NID_setAttr_SecDevSig 635 +#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L + +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_set_brand_IATA_ATA 636 +#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L + +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_Diners 637 +#define OBJ_set_brand_Diners OBJ_set_brand,30L + +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_AmericanExpress 638 +#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L + +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_JCB 639 +#define OBJ_set_brand_JCB OBJ_set_brand,35L + +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_Visa 640 +#define OBJ_set_brand_Visa OBJ_set_brand,4L + +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_MasterCard 641 +#define OBJ_set_brand_MasterCard OBJ_set_brand,5L + +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_Novus 642 +#define OBJ_set_brand_Novus OBJ_set_brand,6011L + +#define SN_des_cdmf "DES-CDMF" +#define LN_des_cdmf "des-cdmf" +#define NID_des_cdmf 643 +#define OBJ_des_cdmf OBJ_rsadsi,3L,10L + +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_rsaOAEPEncryptionSET 644 +#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L + +#define SN_ipsec3 "Oakley-EC2N-3" +#define LN_ipsec3 "ipsec3" +#define NID_ipsec3 749 + +#define SN_ipsec4 "Oakley-EC2N-4" +#define LN_ipsec4 "ipsec4" +#define NID_ipsec4 750 + +#define SN_whirlpool "whirlpool" +#define NID_whirlpool 804 +#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L + +#define SN_cryptopro "cryptopro" +#define NID_cryptopro 805 +#define OBJ_cryptopro OBJ_member_body,643L,2L,2L + +#define SN_cryptocom "cryptocom" +#define NID_cryptocom 806 +#define OBJ_cryptocom OBJ_member_body,643L,2L,9L + +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L + +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L + +#define SN_id_GostR3411_94 "md_gost94" +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define NID_id_GostR3411_94 809 +#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L + +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define NID_id_HMACGostR3411_94 810 +#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L + +#define SN_id_GostR3410_2001 "gost2001" +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define NID_id_GostR3410_2001 811 +#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L + +#define SN_id_GostR3410_94 "gost94" +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define NID_id_GostR3410_94 812 +#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L + +#define SN_id_Gost28147_89 "gost89" +#define LN_id_Gost28147_89 "GOST 28147-89" +#define NID_id_Gost28147_89 813 +#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L + +#define SN_gost89_cnt "gost89-cnt" +#define NID_gost89_cnt 814 + +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#define SN_id_Gost28147_89_MAC "gost-mac" +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define NID_id_Gost28147_89_MAC 815 +#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L + +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define NID_id_GostR3411_94_prf 816 +#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L + +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define NID_id_GostR3410_2001DH 817 +#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L + +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define NID_id_GostR3410_94DH 818 +#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L + +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L + +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L + +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L + +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L + +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L + +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L + +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L + +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L + +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L + +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L + +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L + +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L + +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L + +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L + +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L + +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L + +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L + +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L + +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L + +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L + +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L + +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L + +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L + +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L + +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_94_a 845 +#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L + +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_aBis 846 +#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L + +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_b 847 +#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L + +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_bBis 848 +#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L + +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define NID_id_Gost28147_89_cc 849 +#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L + +#define SN_id_GostR3410_94_cc "gost94cc" +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define NID_id_GostR3410_94_cc 850 +#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L + +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define NID_id_GostR3410_2001_cc 851 +#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L + +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L + +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L + +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L + +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_magma_ctr_acpkm "magma-ctr-acpkm" +#define NID_magma_ctr_acpkm 1174 +#define OBJ_magma_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_magma_ctr_acpkm_omac "magma-ctr-acpkm-omac" +#define NID_magma_ctr_acpkm_omac 1175 +#define OBJ_magma_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_kuznyechik_ctr_acpkm "kuznyechik-ctr-acpkm" +#define NID_kuznyechik_ctr_acpkm 1177 +#define OBJ_kuznyechik_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_kuznyechik_ctr_acpkm_omac "kuznyechik-ctr-acpkm-omac" +#define NID_kuznyechik_ctr_acpkm_omac 1178 +#define OBJ_kuznyechik_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_magma_kexp15 "magma-kexp15" +#define NID_magma_kexp15 1181 +#define OBJ_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_kuznyechik_kexp15 "kuznyechik-kexp15" +#define NID_kuznyechik_kexp15 1183 +#define OBJ_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_OGRNIP "OGRNIP" +#define LN_OGRNIP "OGRNIP" +#define NID_OGRNIP 1226 +#define OBJ_OGRNIP OBJ_member_body,643L,100L,5L + +#define SN_subjectSignTool "subjectSignTool" +#define LN_subjectSignTool "Signing Tool of Subject" +#define NID_subjectSignTool 1007 +#define OBJ_subjectSignTool OBJ_member_body,643L,100L,111L + +#define SN_issuerSignTool "issuerSignTool" +#define LN_issuerSignTool "Signing Tool of Issuer" +#define NID_issuerSignTool 1008 +#define OBJ_issuerSignTool OBJ_member_body,643L,100L,112L + +#define SN_classSignTool "classSignTool" +#define LN_classSignTool "Class of Signing Tool" +#define NID_classSignTool 1227 +#define OBJ_classSignTool OBJ_member_body,643L,100L,113L + +#define SN_classSignToolKC1 "classSignToolKC1" +#define LN_classSignToolKC1 "Class of Signing Tool KC1" +#define NID_classSignToolKC1 1228 +#define OBJ_classSignToolKC1 OBJ_member_body,643L,100L,113L,1L + +#define SN_classSignToolKC2 "classSignToolKC2" +#define LN_classSignToolKC2 "Class of Signing Tool KC2" +#define NID_classSignToolKC2 1229 +#define OBJ_classSignToolKC2 OBJ_member_body,643L,100L,113L,2L + +#define SN_classSignToolKC3 "classSignToolKC3" +#define LN_classSignToolKC3 "Class of Signing Tool KC3" +#define NID_classSignToolKC3 1230 +#define OBJ_classSignToolKC3 OBJ_member_body,643L,100L,113L,3L + +#define SN_classSignToolKB1 "classSignToolKB1" +#define LN_classSignToolKB1 "Class of Signing Tool KB1" +#define NID_classSignToolKB1 1231 +#define OBJ_classSignToolKB1 OBJ_member_body,643L,100L,113L,4L + +#define SN_classSignToolKB2 "classSignToolKB2" +#define LN_classSignToolKB2 "Class of Signing Tool KB2" +#define NID_classSignToolKB2 1232 +#define OBJ_classSignToolKB2 OBJ_member_body,643L,100L,113L,5L + +#define SN_classSignToolKA1 "classSignToolKA1" +#define LN_classSignToolKA1 "Class of Signing Tool KA1" +#define NID_classSignToolKA1 1233 +#define OBJ_classSignToolKA1 OBJ_member_body,643L,100L,113L,6L + +#define SN_kuznyechik_ecb "kuznyechik-ecb" +#define NID_kuznyechik_ecb 1012 + +#define SN_kuznyechik_ctr "kuznyechik-ctr" +#define NID_kuznyechik_ctr 1013 + +#define SN_kuznyechik_ofb "kuznyechik-ofb" +#define NID_kuznyechik_ofb 1014 + +#define SN_kuznyechik_cbc "kuznyechik-cbc" +#define NID_kuznyechik_cbc 1015 + +#define SN_kuznyechik_cfb "kuznyechik-cfb" +#define NID_kuznyechik_cfb 1016 + +#define SN_kuznyechik_mac "kuznyechik-mac" +#define NID_kuznyechik_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define LN_camellia_128_cbc "camellia-128-cbc" +#define NID_camellia_128_cbc 751 +#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L + +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define LN_camellia_192_cbc "camellia-192-cbc" +#define NID_camellia_192_cbc 752 +#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L + +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define LN_camellia_256_cbc "camellia-256-cbc" +#define NID_camellia_256_cbc 753 +#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L + +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_id_camellia128_wrap 907 +#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L + +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia192_wrap 908 +#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L + +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia256_wrap 909 +#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L + +#define OBJ_ntt_ds 0L,3L,4401L,5L + +#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L + +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define LN_camellia_128_ecb "camellia-128-ecb" +#define NID_camellia_128_ecb 754 +#define OBJ_camellia_128_ecb OBJ_camellia,1L + +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define NID_camellia_128_ofb128 766 +#define OBJ_camellia_128_ofb128 OBJ_camellia,3L + +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define NID_camellia_128_cfb128 757 +#define OBJ_camellia_128_cfb128 OBJ_camellia,4L + +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define LN_camellia_192_ecb "camellia-192-ecb" +#define NID_camellia_192_ecb 755 +#define OBJ_camellia_192_ecb OBJ_camellia,21L + +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define NID_camellia_192_ofb128 767 +#define OBJ_camellia_192_ofb128 OBJ_camellia,23L + +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define NID_camellia_192_cfb128 758 +#define OBJ_camellia_192_cfb128 OBJ_camellia,24L + +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define LN_camellia_256_ecb "camellia-256-ecb" +#define NID_camellia_256_ecb 756 +#define OBJ_camellia_256_ecb OBJ_camellia,41L + +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define NID_camellia_256_ofb128 768 +#define OBJ_camellia_256_ofb128 OBJ_camellia,43L + +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define NID_camellia_256_cfb128 759 +#define OBJ_camellia_256_cfb128 OBJ_camellia,44L + +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define NID_camellia_128_cfb1 760 + +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define NID_camellia_192_cfb1 761 + +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define NID_camellia_256_cfb1 762 + +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define NID_camellia_128_cfb8 763 + +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define NID_camellia_192_cfb8 764 + +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define NID_camellia_256_cfb8 765 + +#define OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#define SN_kisa "KISA" +#define LN_kisa "kisa" +#define NID_kisa 773 +#define OBJ_kisa OBJ_member_body,410L,200004L + +#define SN_seed_ecb "SEED-ECB" +#define LN_seed_ecb "seed-ecb" +#define NID_seed_ecb 776 +#define OBJ_seed_ecb OBJ_kisa,1L,3L + +#define SN_seed_cbc "SEED-CBC" +#define LN_seed_cbc "seed-cbc" +#define NID_seed_cbc 777 +#define OBJ_seed_cbc OBJ_kisa,1L,4L + +#define SN_seed_cfb128 "SEED-CFB" +#define LN_seed_cfb128 "seed-cfb" +#define NID_seed_cfb128 779 +#define OBJ_seed_cfb128 OBJ_kisa,1L,5L + +#define SN_seed_ofb128 "SEED-OFB" +#define LN_seed_ofb128 "seed-ofb" +#define NID_seed_ofb128 778 +#define OBJ_seed_ofb128 OBJ_kisa,1L,6L + +#define SN_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#define SN_sm4_gcm "SM4-GCM" +#define LN_sm4_gcm "sm4-gcm" +#define NID_sm4_gcm 1248 +#define OBJ_sm4_gcm OBJ_sm_scheme,104L,8L + +#define SN_sm4_ccm "SM4-CCM" +#define LN_sm4_ccm "sm4-ccm" +#define NID_sm4_ccm 1249 +#define OBJ_sm4_ccm OBJ_sm_scheme,104L,9L + +#define SN_sm4_xts "SM4-XTS" +#define LN_sm4_xts "sm4-xts" +#define NID_sm4_xts 1290 +#define OBJ_sm4_xts OBJ_sm_scheme,104L,10L + +#define SN_hmac "HMAC" +#define LN_hmac "hmac" +#define NID_hmac 855 + +#define SN_cmac "CMAC" +#define LN_cmac "cmac" +#define NID_cmac 894 + +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define NID_rc4_hmac_md5 915 + +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define NID_aes_128_cbc_hmac_sha1 916 + +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define NID_aes_192_cbc_hmac_sha1 917 + +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define NID_aes_256_cbc_hmac_sha1 918 + +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define NID_aes_128_cbc_hmac_sha256 948 + +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define NID_aes_192_cbc_hmac_sha256 949 + +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define NID_aes_256_cbc_hmac_sha256 950 + +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#define SN_aes_128_cbc_hmac_sha1_etm "AES-128-CBC-HMAC-SHA1-ETM" +#define LN_aes_128_cbc_hmac_sha1_etm "aes-128-cbc-hmac-sha1-etm" +#define NID_aes_128_cbc_hmac_sha1_etm 1487 + +#define SN_aes_192_cbc_hmac_sha1_etm "AES-192-CBC-HMAC-SHA1-ETM" +#define LN_aes_192_cbc_hmac_sha1_etm "aes-192-cbc-hmac-sha1-etm" +#define NID_aes_192_cbc_hmac_sha1_etm 1488 + +#define SN_aes_256_cbc_hmac_sha1_etm "AES-256-CBC-HMAC-SHA1-ETM" +#define LN_aes_256_cbc_hmac_sha1_etm "aes-256-cbc-hmac-sha1-etm" +#define NID_aes_256_cbc_hmac_sha1_etm 1489 + +#define SN_aes_128_cbc_hmac_sha256_etm "AES-128-CBC-HMAC-SHA256-ETM" +#define LN_aes_128_cbc_hmac_sha256_etm "aes-128-cbc-hmac-sha256-etm" +#define NID_aes_128_cbc_hmac_sha256_etm 1490 + +#define SN_aes_192_cbc_hmac_sha256_etm "AES-192-CBC-HMAC-SHA256-ETM" +#define LN_aes_192_cbc_hmac_sha256_etm "aes-192-cbc-hmac-sha256-etm" +#define NID_aes_192_cbc_hmac_sha256_etm 1491 + +#define SN_aes_256_cbc_hmac_sha256_etm "AES-256-CBC-HMAC-SHA256-ETM" +#define LN_aes_256_cbc_hmac_sha256_etm "aes-256-cbc-hmac-sha256-etm" +#define NID_aes_256_cbc_hmac_sha256_etm 1492 + +#define SN_aes_128_cbc_hmac_sha512_etm "AES-128-CBC-HMAC-SHA512-ETM" +#define LN_aes_128_cbc_hmac_sha512_etm "aes-128-cbc-hmac-sha512-etm" +#define NID_aes_128_cbc_hmac_sha512_etm 1493 + +#define SN_aes_192_cbc_hmac_sha512_etm "AES-192-CBC-HMAC-SHA512-ETM" +#define LN_aes_192_cbc_hmac_sha512_etm "aes-192-cbc-hmac-sha512-etm" +#define NID_aes_192_cbc_hmac_sha512_etm 1494 + +#define SN_aes_256_cbc_hmac_sha512_etm "AES-256-CBC-HMAC-SHA512-ETM" +#define LN_aes_256_cbc_hmac_sha512_etm "aes-256-cbc-hmac-sha512-etm" +#define NID_aes_256_cbc_hmac_sha512_etm 1495 + +#define SN_dhpublicnumber "dhpublicnumber" +#define LN_dhpublicnumber "X9.42 DH" +#define NID_dhpublicnumber 920 +#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L + +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_brainpoolP160r1 921 +#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L + +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160t1 922 +#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L + +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP192r1 923 +#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L + +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192t1 924 +#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L + +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP224r1 925 +#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L + +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224t1 926 +#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L + +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP256r1 927 +#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L + +#define SN_brainpoolP256r1tls13 "brainpoolP256r1tls13" +#define NID_brainpoolP256r1tls13 1285 + +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256t1 928 +#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L + +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP320r1 929 +#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L + +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320t1 930 +#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L + +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP384r1 931 +#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L + +#define SN_brainpoolP384r1tls13 "brainpoolP384r1tls13" +#define NID_brainpoolP384r1tls13 1286 + +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384t1 932 +#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L + +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP512r1 933 +#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L + +#define SN_brainpoolP512r1tls13 "brainpoolP512r1tls13" +#define NID_brainpoolP512r1tls13 1287 + +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512t1 934 +#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L + +#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L + +#define OBJ_secg_scheme OBJ_certicom_arc,1L + +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L + +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L + +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L + +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L + +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L + +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L + +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L + +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L + +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L + +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L + +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dh_std_kdf 946 + +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_cofactor_kdf 947 + +#define SN_ct_precert_scts "ct_precert_scts" +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define NID_ct_precert_scts 951 +#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L + +#define SN_ct_precert_poison "ct_precert_poison" +#define LN_ct_precert_poison "CT Precertificate Poison" +#define NID_ct_precert_poison 952 +#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L + +#define SN_ct_precert_signer "ct_precert_signer" +#define LN_ct_precert_signer "CT Precertificate Signer" +#define NID_ct_precert_signer 953 +#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L + +#define SN_ct_cert_scts "ct_cert_scts" +#define LN_ct_cert_scts "CT Certificate SCTs" +#define NID_ct_cert_scts 954 +#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L + +#define SN_jurisdictionLocalityName "jurisdictionL" +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define NID_jurisdictionLocalityName 955 +#define OBJ_jurisdictionLocalityName OBJ_ms_corp,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName OBJ_ms_corp,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName OBJ_ms_corp,60L,2L,1L,3L + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_sshkdf "SSHKDF" +#define LN_sshkdf "sshkdf" +#define NID_sshkdf 1203 + +#define SN_sskdf "SSKDF" +#define LN_sskdf "sskdf" +#define NID_sskdf 1205 + +#define SN_x942kdf "X942KDF" +#define LN_x942kdf "x942kdf" +#define NID_x942kdf 1207 + +#define SN_x963kdf "X963KDF" +#define LN_x963kdf "x963kdf" +#define NID_x963kdf 1206 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_gost18 "KxGOST18" +#define LN_kx_gost18 "kx-gost18" +#define NID_kx_gost18 1218 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_modp_1536 "modp_1536" +#define NID_modp_1536 1212 + +#define SN_modp_2048 "modp_2048" +#define NID_modp_2048 1213 + +#define SN_modp_3072 "modp_3072" +#define NID_modp_3072 1214 + +#define SN_modp_4096 "modp_4096" +#define NID_modp_4096 1215 + +#define SN_modp_6144 "modp_6144" +#define NID_modp_6144 1216 + +#define SN_modp_8192 "modp_8192" +#define NID_modp_8192 1217 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L + +#define SN_aes_128_siv "AES-128-SIV" +#define LN_aes_128_siv "aes-128-siv" +#define NID_aes_128_siv 1198 + +#define SN_aes_192_siv "AES-192-SIV" +#define LN_aes_192_siv "aes-192-siv" +#define NID_aes_192_siv 1199 + +#define SN_aes_256_siv "AES-256-SIV" +#define LN_aes_256_siv "aes-256-siv" +#define NID_aes_256_siv 1200 + +#define SN_oracle "oracle-organization" +#define LN_oracle "Oracle organization" +#define NID_oracle 1282 +#define OBJ_oracle OBJ_joint_iso_itu_t,16L,840L,1L,113894L + +#define SN_oracle_jdk_trustedkeyusage "oracle-jdk-trustedkeyusage" +#define LN_oracle_jdk_trustedkeyusage "Trusted key usage (Oracle)" +#define NID_oracle_jdk_trustedkeyusage 1283 +#define OBJ_oracle_jdk_trustedkeyusage OBJ_oracle,746875L,1L,1L + +#define SN_brotli "brotli" +#define LN_brotli "Brotli compression" +#define NID_brotli 1288 + +#define SN_zstd "zstd" +#define LN_zstd "Zstandard compression" +#define NID_zstd 1289 + +#define SN_tcg "tcg" +#define LN_tcg "Trusted Computing Group" +#define NID_tcg 1324 +#define OBJ_tcg 2L,23L,133L + +#define SN_tcg_tcpaSpecVersion "tcg-tcpaSpecVersion" +#define NID_tcg_tcpaSpecVersion 1325 +#define OBJ_tcg_tcpaSpecVersion OBJ_tcg,1L + +#define SN_tcg_attribute "tcg-attribute" +#define LN_tcg_attribute "Trusted Computing Group Attributes" +#define NID_tcg_attribute 1326 +#define OBJ_tcg_attribute OBJ_tcg,2L + +#define SN_tcg_protocol "tcg-protocol" +#define LN_tcg_protocol "Trusted Computing Group Protocols" +#define NID_tcg_protocol 1327 +#define OBJ_tcg_protocol OBJ_tcg,3L + +#define SN_tcg_algorithm "tcg-algorithm" +#define LN_tcg_algorithm "Trusted Computing Group Algorithms" +#define NID_tcg_algorithm 1328 +#define OBJ_tcg_algorithm OBJ_tcg,4L + +#define SN_tcg_platformClass "tcg-platformClass" +#define LN_tcg_platformClass "Trusted Computing Group Platform Classes" +#define NID_tcg_platformClass 1329 +#define OBJ_tcg_platformClass OBJ_tcg,5L + +#define SN_tcg_ce "tcg-ce" +#define LN_tcg_ce "Trusted Computing Group Certificate Extensions" +#define NID_tcg_ce 1330 +#define OBJ_tcg_ce OBJ_tcg,6L + +#define SN_tcg_kp "tcg-kp" +#define LN_tcg_kp "Trusted Computing Group Key Purposes" +#define NID_tcg_kp 1331 +#define OBJ_tcg_kp OBJ_tcg,8L + +#define SN_tcg_ca "tcg-ca" +#define LN_tcg_ca "Trusted Computing Group Certificate Policies" +#define NID_tcg_ca 1332 +#define OBJ_tcg_ca OBJ_tcg,11L + +#define SN_tcg_address "tcg-address" +#define LN_tcg_address "Trusted Computing Group Address Formats" +#define NID_tcg_address 1333 +#define OBJ_tcg_address OBJ_tcg,17L + +#define SN_tcg_registry "tcg-registry" +#define LN_tcg_registry "Trusted Computing Group Registry" +#define NID_tcg_registry 1334 +#define OBJ_tcg_registry OBJ_tcg,18L + +#define SN_tcg_traits "tcg-traits" +#define LN_tcg_traits "Trusted Computing Group Traits" +#define NID_tcg_traits 1335 +#define OBJ_tcg_traits OBJ_tcg,19L + +#define SN_tcg_common "tcg-common" +#define LN_tcg_common "Trusted Computing Group Common" +#define NID_tcg_common 1336 +#define OBJ_tcg_common OBJ_tcg_platformClass,1L + +#define SN_tcg_at_platformManufacturerStr "tcg-at-platformManufacturerStr" +#define LN_tcg_at_platformManufacturerStr "TCG Platform Manufacturer String" +#define NID_tcg_at_platformManufacturerStr 1337 +#define OBJ_tcg_at_platformManufacturerStr OBJ_tcg_common,1L + +#define SN_tcg_at_platformManufacturerId "tcg-at-platformManufacturerId" +#define LN_tcg_at_platformManufacturerId "TCG Platform Manufacturer ID" +#define NID_tcg_at_platformManufacturerId 1338 +#define OBJ_tcg_at_platformManufacturerId OBJ_tcg_common,2L + +#define SN_tcg_at_platformConfigUri "tcg-at-platformConfigUri" +#define LN_tcg_at_platformConfigUri "TCG Platform Configuration URI" +#define NID_tcg_at_platformConfigUri 1339 +#define OBJ_tcg_at_platformConfigUri OBJ_tcg_common,3L + +#define SN_tcg_at_platformModel "tcg-at-platformModel" +#define LN_tcg_at_platformModel "TCG Platform Model" +#define NID_tcg_at_platformModel 1340 +#define OBJ_tcg_at_platformModel OBJ_tcg_common,4L + +#define SN_tcg_at_platformVersion "tcg-at-platformVersion" +#define LN_tcg_at_platformVersion "TCG Platform Version" +#define NID_tcg_at_platformVersion 1341 +#define OBJ_tcg_at_platformVersion OBJ_tcg_common,5L + +#define SN_tcg_at_platformSerial "tcg-at-platformSerial" +#define LN_tcg_at_platformSerial "TCG Platform Serial Number" +#define NID_tcg_at_platformSerial 1342 +#define OBJ_tcg_at_platformSerial OBJ_tcg_common,6L + +#define SN_tcg_at_platformConfiguration "tcg-at-platformConfiguration" +#define LN_tcg_at_platformConfiguration "TCG Platform Configuration" +#define NID_tcg_at_platformConfiguration 1343 +#define OBJ_tcg_at_platformConfiguration OBJ_tcg_common,7L + +#define SN_tcg_at_platformIdentifier "tcg-at-platformIdentifier" +#define LN_tcg_at_platformIdentifier "TCG Platform Identifier" +#define NID_tcg_at_platformIdentifier 1344 +#define OBJ_tcg_at_platformIdentifier OBJ_tcg_common,8L + +#define SN_tcg_at_tpmManufacturer "tcg-at-tpmManufacturer" +#define LN_tcg_at_tpmManufacturer "TPM Manufacturer" +#define NID_tcg_at_tpmManufacturer 1345 +#define OBJ_tcg_at_tpmManufacturer OBJ_tcg_attribute,1L + +#define SN_tcg_at_tpmModel "tcg-at-tpmModel" +#define LN_tcg_at_tpmModel "TPM Model" +#define NID_tcg_at_tpmModel 1346 +#define OBJ_tcg_at_tpmModel OBJ_tcg_attribute,2L + +#define SN_tcg_at_tpmVersion "tcg-at-tpmVersion" +#define LN_tcg_at_tpmVersion "TPM Version" +#define NID_tcg_at_tpmVersion 1347 +#define OBJ_tcg_at_tpmVersion OBJ_tcg_attribute,3L + +#define SN_tcg_at_securityQualities "tcg-at-securityQualities" +#define LN_tcg_at_securityQualities "Security Qualities" +#define NID_tcg_at_securityQualities 1348 +#define OBJ_tcg_at_securityQualities OBJ_tcg_attribute,10L + +#define SN_tcg_at_tpmProtectionProfile "tcg-at-tpmProtectionProfile" +#define LN_tcg_at_tpmProtectionProfile "TPM Protection Profile" +#define NID_tcg_at_tpmProtectionProfile 1349 +#define OBJ_tcg_at_tpmProtectionProfile OBJ_tcg_attribute,11L + +#define SN_tcg_at_tpmSecurityTarget "tcg-at-tpmSecurityTarget" +#define LN_tcg_at_tpmSecurityTarget "TPM Security Target" +#define NID_tcg_at_tpmSecurityTarget 1350 +#define OBJ_tcg_at_tpmSecurityTarget OBJ_tcg_attribute,12L + +#define SN_tcg_at_tbbProtectionProfile "tcg-at-tbbProtectionProfile" +#define LN_tcg_at_tbbProtectionProfile "TBB Protection Profile" +#define NID_tcg_at_tbbProtectionProfile 1351 +#define OBJ_tcg_at_tbbProtectionProfile OBJ_tcg_attribute,13L + +#define SN_tcg_at_tbbSecurityTarget "tcg-at-tbbSecurityTarget" +#define LN_tcg_at_tbbSecurityTarget "TBB Security Target" +#define NID_tcg_at_tbbSecurityTarget 1352 +#define OBJ_tcg_at_tbbSecurityTarget OBJ_tcg_attribute,14L + +#define SN_tcg_at_tpmIdLabel "tcg-at-tpmIdLabel" +#define LN_tcg_at_tpmIdLabel "TPM ID Label" +#define NID_tcg_at_tpmIdLabel 1353 +#define OBJ_tcg_at_tpmIdLabel OBJ_tcg_attribute,15L + +#define SN_tcg_at_tpmSpecification "tcg-at-tpmSpecification" +#define LN_tcg_at_tpmSpecification "TPM Specification" +#define NID_tcg_at_tpmSpecification 1354 +#define OBJ_tcg_at_tpmSpecification OBJ_tcg_attribute,16L + +#define SN_tcg_at_tcgPlatformSpecification "tcg-at-tcgPlatformSpecification" +#define LN_tcg_at_tcgPlatformSpecification "TPM Platform Specification" +#define NID_tcg_at_tcgPlatformSpecification 1355 +#define OBJ_tcg_at_tcgPlatformSpecification OBJ_tcg_attribute,17L + +#define SN_tcg_at_tpmSecurityAssertions "tcg-at-tpmSecurityAssertions" +#define LN_tcg_at_tpmSecurityAssertions "TPM Security Assertions" +#define NID_tcg_at_tpmSecurityAssertions 1356 +#define OBJ_tcg_at_tpmSecurityAssertions OBJ_tcg_attribute,18L + +#define SN_tcg_at_tbbSecurityAssertions "tcg-at-tbbSecurityAssertions" +#define LN_tcg_at_tbbSecurityAssertions "TBB Security Assertions" +#define NID_tcg_at_tbbSecurityAssertions 1357 +#define OBJ_tcg_at_tbbSecurityAssertions OBJ_tcg_attribute,19L + +#define SN_tcg_at_tcgCredentialSpecification "tcg-at-tcgCredentialSpecification" +#define LN_tcg_at_tcgCredentialSpecification "TCG Credential Specification" +#define NID_tcg_at_tcgCredentialSpecification 1358 +#define OBJ_tcg_at_tcgCredentialSpecification OBJ_tcg_attribute,23L + +#define SN_tcg_at_tcgCredentialType "tcg-at-tcgCredentialType" +#define LN_tcg_at_tcgCredentialType "TCG Credential Type" +#define NID_tcg_at_tcgCredentialType 1359 +#define OBJ_tcg_at_tcgCredentialType OBJ_tcg_attribute,25L + +#define SN_tcg_at_previousPlatformCertificates "tcg-at-previousPlatformCertificates" +#define LN_tcg_at_previousPlatformCertificates "TCG Previous Platform Certificates" +#define NID_tcg_at_previousPlatformCertificates 1360 +#define OBJ_tcg_at_previousPlatformCertificates OBJ_tcg_attribute,26L + +#define SN_tcg_at_tbbSecurityAssertions_v3 "tcg-at-tbbSecurityAssertions-v3" +#define LN_tcg_at_tbbSecurityAssertions_v3 "TCG TBB Security Assertions V3" +#define NID_tcg_at_tbbSecurityAssertions_v3 1361 +#define OBJ_tcg_at_tbbSecurityAssertions_v3 OBJ_tcg_attribute,27L + +#define SN_tcg_at_cryptographicAnchors "tcg-at-cryptographicAnchors" +#define LN_tcg_at_cryptographicAnchors "TCG Cryptographic Anchors" +#define NID_tcg_at_cryptographicAnchors 1362 +#define OBJ_tcg_at_cryptographicAnchors OBJ_tcg_attribute,28L + +#define SN_tcg_at_platformConfiguration_v1 "tcg-at-platformConfiguration-v1" +#define LN_tcg_at_platformConfiguration_v1 "Platform Configuration Version 1" +#define NID_tcg_at_platformConfiguration_v1 1363 +#define OBJ_tcg_at_platformConfiguration_v1 OBJ_tcg_at_platformConfiguration,1L + +#define SN_tcg_at_platformConfiguration_v2 "tcg-at-platformConfiguration-v2" +#define LN_tcg_at_platformConfiguration_v2 "Platform Configuration Version 2" +#define NID_tcg_at_platformConfiguration_v2 1364 +#define OBJ_tcg_at_platformConfiguration_v2 OBJ_tcg_at_platformConfiguration,2L + +#define SN_tcg_at_platformConfiguration_v3 "tcg-at-platformConfiguration-v3" +#define LN_tcg_at_platformConfiguration_v3 "Platform Configuration Version 3" +#define NID_tcg_at_platformConfiguration_v3 1365 +#define OBJ_tcg_at_platformConfiguration_v3 OBJ_tcg_at_platformConfiguration,3L + +#define SN_tcg_at_platformConfigUri_v3 "tcg-at-platformConfigUri-v3" +#define LN_tcg_at_platformConfigUri_v3 "Platform Configuration URI Version 3" +#define NID_tcg_at_platformConfigUri_v3 1366 +#define OBJ_tcg_at_platformConfigUri_v3 OBJ_tcg_at_platformConfiguration,4L + +#define SN_tcg_algorithm_null "tcg-algorithm-null" +#define LN_tcg_algorithm_null "TCG NULL Algorithm" +#define NID_tcg_algorithm_null 1367 +#define OBJ_tcg_algorithm_null OBJ_tcg_algorithm,1L + +#define SN_tcg_kp_EKCertificate "tcg-kp-EKCertificate" +#define LN_tcg_kp_EKCertificate "Endorsement Key Certificate" +#define NID_tcg_kp_EKCertificate 1368 +#define OBJ_tcg_kp_EKCertificate OBJ_tcg_kp,1L + +#define SN_tcg_kp_PlatformAttributeCertificate "tcg-kp-PlatformAttributeCertificate" +#define LN_tcg_kp_PlatformAttributeCertificate "Platform Attribute Certificate" +#define NID_tcg_kp_PlatformAttributeCertificate 1369 +#define OBJ_tcg_kp_PlatformAttributeCertificate OBJ_tcg_kp,2L + +#define SN_tcg_kp_AIKCertificate "tcg-kp-AIKCertificate" +#define LN_tcg_kp_AIKCertificate "Attestation Identity Key Certificate" +#define NID_tcg_kp_AIKCertificate 1370 +#define OBJ_tcg_kp_AIKCertificate OBJ_tcg_kp,3L + +#define SN_tcg_kp_PlatformKeyCertificate "tcg-kp-PlatformKeyCertificate" +#define LN_tcg_kp_PlatformKeyCertificate "Platform Key Certificate" +#define NID_tcg_kp_PlatformKeyCertificate 1371 +#define OBJ_tcg_kp_PlatformKeyCertificate OBJ_tcg_kp,4L + +#define SN_tcg_kp_DeltaPlatformAttributeCertificate "tcg-kp-DeltaPlatformAttributeCertificate" +#define LN_tcg_kp_DeltaPlatformAttributeCertificate "Delta Platform Attribute Certificate" +#define NID_tcg_kp_DeltaPlatformAttributeCertificate 1372 +#define OBJ_tcg_kp_DeltaPlatformAttributeCertificate OBJ_tcg_kp,5L + +#define SN_tcg_kp_DeltaPlatformKeyCertificate "tcg-kp-DeltaPlatformKeyCertificate" +#define LN_tcg_kp_DeltaPlatformKeyCertificate "Delta Platform Key Certificate" +#define NID_tcg_kp_DeltaPlatformKeyCertificate 1373 +#define OBJ_tcg_kp_DeltaPlatformKeyCertificate OBJ_tcg_kp,6L + +#define SN_tcg_kp_AdditionalPlatformAttributeCertificate "tcg-kp-AdditionalPlatformAttributeCertificate" +#define LN_tcg_kp_AdditionalPlatformAttributeCertificate "Additional Platform Attribute Certificate" +#define NID_tcg_kp_AdditionalPlatformAttributeCertificate 1374 +#define OBJ_tcg_kp_AdditionalPlatformAttributeCertificate OBJ_tcg_kp,7L + +#define SN_tcg_kp_AdditionalPlatformKeyCertificate "tcg-kp-AdditionalPlatformKeyCertificate" +#define LN_tcg_kp_AdditionalPlatformKeyCertificate "Additional Platform Key Certificate" +#define NID_tcg_kp_AdditionalPlatformKeyCertificate 1375 +#define OBJ_tcg_kp_AdditionalPlatformKeyCertificate OBJ_tcg_kp,8L + +#define SN_tcg_ce_relevantCredentials "tcg-ce-relevantCredentials" +#define LN_tcg_ce_relevantCredentials "Relevant Credentials" +#define NID_tcg_ce_relevantCredentials 1376 +#define OBJ_tcg_ce_relevantCredentials OBJ_tcg_ce,2L + +#define SN_tcg_ce_relevantManifests "tcg-ce-relevantManifests" +#define LN_tcg_ce_relevantManifests "Relevant Manifests" +#define NID_tcg_ce_relevantManifests 1377 +#define OBJ_tcg_ce_relevantManifests OBJ_tcg_ce,3L + +#define SN_tcg_ce_virtualPlatformAttestationService "tcg-ce-virtualPlatformAttestationService" +#define LN_tcg_ce_virtualPlatformAttestationService "Virtual Platform Attestation Service" +#define NID_tcg_ce_virtualPlatformAttestationService 1378 +#define OBJ_tcg_ce_virtualPlatformAttestationService OBJ_tcg_ce,4L + +#define SN_tcg_ce_migrationControllerAttestationService "tcg-ce-migrationControllerAttestationService" +#define LN_tcg_ce_migrationControllerAttestationService "Migration Controller Attestation Service" +#define NID_tcg_ce_migrationControllerAttestationService 1379 +#define OBJ_tcg_ce_migrationControllerAttestationService OBJ_tcg_ce,5L + +#define SN_tcg_ce_migrationControllerRegistrationService "tcg-ce-migrationControllerRegistrationService" +#define LN_tcg_ce_migrationControllerRegistrationService "Migration Controller Registration Service" +#define NID_tcg_ce_migrationControllerRegistrationService 1380 +#define OBJ_tcg_ce_migrationControllerRegistrationService OBJ_tcg_ce,6L + +#define SN_tcg_ce_virtualPlatformBackupService "tcg-ce-virtualPlatformBackupService" +#define LN_tcg_ce_virtualPlatformBackupService "Virtual Platform Backup Service" +#define NID_tcg_ce_virtualPlatformBackupService 1381 +#define OBJ_tcg_ce_virtualPlatformBackupService OBJ_tcg_ce,7L + +#define SN_tcg_prt_tpmIdProtocol "tcg-prt-tpmIdProtocol" +#define LN_tcg_prt_tpmIdProtocol "TCG TPM Protocol" +#define NID_tcg_prt_tpmIdProtocol 1382 +#define OBJ_tcg_prt_tpmIdProtocol OBJ_tcg_protocol,1L + +#define SN_tcg_address_ethernetmac "tcg-address-ethernetmac" +#define LN_tcg_address_ethernetmac "Ethernet MAC Address" +#define NID_tcg_address_ethernetmac 1383 +#define OBJ_tcg_address_ethernetmac OBJ_tcg_address,1L + +#define SN_tcg_address_wlanmac "tcg-address-wlanmac" +#define LN_tcg_address_wlanmac "WLAN MAC Address" +#define NID_tcg_address_wlanmac 1384 +#define OBJ_tcg_address_wlanmac OBJ_tcg_address,2L + +#define SN_tcg_address_bluetoothmac "tcg-address-bluetoothmac" +#define LN_tcg_address_bluetoothmac "Bluetooth MAC Address" +#define NID_tcg_address_bluetoothmac 1385 +#define OBJ_tcg_address_bluetoothmac OBJ_tcg_address,3L + +#define SN_tcg_registry_componentClass "tcg-registry-componentClass" +#define LN_tcg_registry_componentClass "TCG Component Class" +#define NID_tcg_registry_componentClass 1386 +#define OBJ_tcg_registry_componentClass OBJ_tcg_registry,3L + +#define SN_tcg_registry_componentClass_tcg "tcg-registry-componentClass-tcg" +#define LN_tcg_registry_componentClass_tcg "Trusted Computed Group Registry" +#define NID_tcg_registry_componentClass_tcg 1387 +#define OBJ_tcg_registry_componentClass_tcg OBJ_tcg_registry_componentClass,1L + +#define SN_tcg_registry_componentClass_ietf "tcg-registry-componentClass-ietf" +#define LN_tcg_registry_componentClass_ietf "Internet Engineering Task Force Registry" +#define NID_tcg_registry_componentClass_ietf 1388 +#define OBJ_tcg_registry_componentClass_ietf OBJ_tcg_registry_componentClass,2L + +#define SN_tcg_registry_componentClass_dmtf "tcg-registry-componentClass-dmtf" +#define LN_tcg_registry_componentClass_dmtf "Distributed Management Task Force Registry" +#define NID_tcg_registry_componentClass_dmtf 1389 +#define OBJ_tcg_registry_componentClass_dmtf OBJ_tcg_registry_componentClass,3L + +#define SN_tcg_registry_componentClass_pcie "tcg-registry-componentClass-pcie" +#define LN_tcg_registry_componentClass_pcie "PCIE Component Class" +#define NID_tcg_registry_componentClass_pcie 1390 +#define OBJ_tcg_registry_componentClass_pcie OBJ_tcg_registry_componentClass,4L + +#define SN_tcg_registry_componentClass_disk "tcg-registry-componentClass-disk" +#define LN_tcg_registry_componentClass_disk "Disk Component Class" +#define NID_tcg_registry_componentClass_disk 1391 +#define OBJ_tcg_registry_componentClass_disk OBJ_tcg_registry_componentClass,5L + +#define SN_tcg_cap_verifiedPlatformCertificate "tcg-cap-verifiedPlatformCertificate" +#define LN_tcg_cap_verifiedPlatformCertificate "TCG Verified Platform Certificate CA Policy" +#define NID_tcg_cap_verifiedPlatformCertificate 1392 +#define OBJ_tcg_cap_verifiedPlatformCertificate OBJ_tcg_ca,4L + +#define SN_tcg_tr_ID "tcg-tr-ID" +#define LN_tcg_tr_ID "TCG Trait Identifiers" +#define NID_tcg_tr_ID 1393 +#define OBJ_tcg_tr_ID OBJ_tcg_traits,1L + +#define SN_tcg_tr_category "tcg-tr-category" +#define LN_tcg_tr_category "TCG Trait Categories" +#define NID_tcg_tr_category 1394 +#define OBJ_tcg_tr_category OBJ_tcg_traits,2L + +#define SN_tcg_tr_registry "tcg-tr-registry" +#define LN_tcg_tr_registry "TCG Trait Registries" +#define NID_tcg_tr_registry 1395 +#define OBJ_tcg_tr_registry OBJ_tcg_traits,3L + +#define SN_tcg_tr_ID_Boolean "tcg-tr-ID-Boolean" +#define LN_tcg_tr_ID_Boolean "Boolean Trait" +#define NID_tcg_tr_ID_Boolean 1396 +#define OBJ_tcg_tr_ID_Boolean OBJ_tcg_tr_ID,1L + +#define SN_tcg_tr_ID_CertificateIdentifier "tcg-tr-ID-CertificateIdentifier" +#define LN_tcg_tr_ID_CertificateIdentifier "Certificate Identifier Trait" +#define NID_tcg_tr_ID_CertificateIdentifier 1397 +#define OBJ_tcg_tr_ID_CertificateIdentifier OBJ_tcg_tr_ID,2L + +#define SN_tcg_tr_ID_CommonCriteria "tcg-tr-ID-CommonCriteria" +#define LN_tcg_tr_ID_CommonCriteria "Common Criteria Trait" +#define NID_tcg_tr_ID_CommonCriteria 1398 +#define OBJ_tcg_tr_ID_CommonCriteria OBJ_tcg_tr_ID,3L + +#define SN_tcg_tr_ID_componentClass "tcg-tr-ID-componentClass" +#define LN_tcg_tr_ID_componentClass "Component Class Trait" +#define NID_tcg_tr_ID_componentClass 1399 +#define OBJ_tcg_tr_ID_componentClass OBJ_tcg_tr_ID,4L + +#define SN_tcg_tr_ID_componentIdentifierV11 "tcg-tr-ID-componentIdentifierV11" +#define LN_tcg_tr_ID_componentIdentifierV11 "Component Identifier V1.1 Trait" +#define NID_tcg_tr_ID_componentIdentifierV11 1400 +#define OBJ_tcg_tr_ID_componentIdentifierV11 OBJ_tcg_tr_ID,5L + +#define SN_tcg_tr_ID_FIPSLevel "tcg-tr-ID-FIPSLevel" +#define LN_tcg_tr_ID_FIPSLevel "FIPS Level Trait" +#define NID_tcg_tr_ID_FIPSLevel 1401 +#define OBJ_tcg_tr_ID_FIPSLevel OBJ_tcg_tr_ID,6L + +#define SN_tcg_tr_ID_ISO9000Level "tcg-tr-ID-ISO9000Level" +#define LN_tcg_tr_ID_ISO9000Level "ISO 9000 Level Trait" +#define NID_tcg_tr_ID_ISO9000Level 1402 +#define OBJ_tcg_tr_ID_ISO9000Level OBJ_tcg_tr_ID,7L + +#define SN_tcg_tr_ID_networkMAC "tcg-tr-ID-networkMAC" +#define LN_tcg_tr_ID_networkMAC "Network MAC Trait" +#define NID_tcg_tr_ID_networkMAC 1403 +#define OBJ_tcg_tr_ID_networkMAC OBJ_tcg_tr_ID,8L + +#define SN_tcg_tr_ID_OID "tcg-tr-ID-OID" +#define LN_tcg_tr_ID_OID "Object Identifier Trait" +#define NID_tcg_tr_ID_OID 1404 +#define OBJ_tcg_tr_ID_OID OBJ_tcg_tr_ID,9L + +#define SN_tcg_tr_ID_PEN "tcg-tr-ID-PEN" +#define LN_tcg_tr_ID_PEN "Private Enterprise Number Trait" +#define NID_tcg_tr_ID_PEN 1405 +#define OBJ_tcg_tr_ID_PEN OBJ_tcg_tr_ID,10L + +#define SN_tcg_tr_ID_platformFirmwareCapabilities "tcg-tr-ID-platformFirmwareCapabilities" +#define LN_tcg_tr_ID_platformFirmwareCapabilities "Platform Firmware Capabilities Trait" +#define NID_tcg_tr_ID_platformFirmwareCapabilities 1406 +#define OBJ_tcg_tr_ID_platformFirmwareCapabilities OBJ_tcg_tr_ID,11L + +#define SN_tcg_tr_ID_platformFirmwareSignatureVerification "tcg-tr-ID-platformFirmwareSignatureVerification" +#define LN_tcg_tr_ID_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait" +#define NID_tcg_tr_ID_platformFirmwareSignatureVerification 1407 +#define OBJ_tcg_tr_ID_platformFirmwareSignatureVerification OBJ_tcg_tr_ID,12L + +#define SN_tcg_tr_ID_platformFirmwareUpdateCompliance "tcg-tr-ID-platformFirmwareUpdateCompliance" +#define LN_tcg_tr_ID_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait" +#define NID_tcg_tr_ID_platformFirmwareUpdateCompliance 1408 +#define OBJ_tcg_tr_ID_platformFirmwareUpdateCompliance OBJ_tcg_tr_ID,13L + +#define SN_tcg_tr_ID_platformHardwareCapabilities "tcg-tr-ID-platformHardwareCapabilities" +#define LN_tcg_tr_ID_platformHardwareCapabilities "Platform Hardware Capabilities Trait" +#define NID_tcg_tr_ID_platformHardwareCapabilities 1409 +#define OBJ_tcg_tr_ID_platformHardwareCapabilities OBJ_tcg_tr_ID,14L + +#define SN_tcg_tr_ID_RTM "tcg-tr-ID-RTM" +#define LN_tcg_tr_ID_RTM "Root of Trust for Measurement Trait" +#define NID_tcg_tr_ID_RTM 1410 +#define OBJ_tcg_tr_ID_RTM OBJ_tcg_tr_ID,15L + +#define SN_tcg_tr_ID_status "tcg-tr-ID-status" +#define LN_tcg_tr_ID_status "Attribute Status Trait" +#define NID_tcg_tr_ID_status 1411 +#define OBJ_tcg_tr_ID_status OBJ_tcg_tr_ID,16L + +#define SN_tcg_tr_ID_URI "tcg-tr-ID-URI" +#define LN_tcg_tr_ID_URI "Uniform Resource Identifier Trait" +#define NID_tcg_tr_ID_URI 1412 +#define OBJ_tcg_tr_ID_URI OBJ_tcg_tr_ID,17L + +#define SN_tcg_tr_ID_UTF8String "tcg-tr-ID-UTF8String" +#define LN_tcg_tr_ID_UTF8String "UTF8String Trait" +#define NID_tcg_tr_ID_UTF8String 1413 +#define OBJ_tcg_tr_ID_UTF8String OBJ_tcg_tr_ID,18L + +#define SN_tcg_tr_ID_IA5String "tcg-tr-ID-IA5String" +#define LN_tcg_tr_ID_IA5String "IA5String Trait" +#define NID_tcg_tr_ID_IA5String 1414 +#define OBJ_tcg_tr_ID_IA5String OBJ_tcg_tr_ID,19L + +#define SN_tcg_tr_ID_PEMCertString "tcg-tr-ID-PEMCertString" +#define LN_tcg_tr_ID_PEMCertString "PEM-Encoded Certificate String Trait" +#define NID_tcg_tr_ID_PEMCertString 1415 +#define OBJ_tcg_tr_ID_PEMCertString OBJ_tcg_tr_ID,20L + +#define SN_tcg_tr_ID_PublicKey "tcg-tr-ID-PublicKey" +#define LN_tcg_tr_ID_PublicKey "Public Key Trait" +#define NID_tcg_tr_ID_PublicKey 1416 +#define OBJ_tcg_tr_ID_PublicKey OBJ_tcg_tr_ID,21L + +#define SN_tcg_tr_cat_platformManufacturer "tcg-tr-cat-platformManufacturer" +#define LN_tcg_tr_cat_platformManufacturer "Platform Manufacturer Trait Category" +#define NID_tcg_tr_cat_platformManufacturer 1417 +#define OBJ_tcg_tr_cat_platformManufacturer OBJ_tcg_tr_category,1L + +#define SN_tcg_tr_cat_platformModel "tcg-tr-cat-platformModel" +#define LN_tcg_tr_cat_platformModel "Platform Model Trait Category" +#define NID_tcg_tr_cat_platformModel 1418 +#define OBJ_tcg_tr_cat_platformModel OBJ_tcg_tr_category,2L + +#define SN_tcg_tr_cat_platformVersion "tcg-tr-cat-platformVersion" +#define LN_tcg_tr_cat_platformVersion "Platform Version Trait Category" +#define NID_tcg_tr_cat_platformVersion 1419 +#define OBJ_tcg_tr_cat_platformVersion OBJ_tcg_tr_category,3L + +#define SN_tcg_tr_cat_platformSerial "tcg-tr-cat-platformSerial" +#define LN_tcg_tr_cat_platformSerial "Platform Serial Trait Category" +#define NID_tcg_tr_cat_platformSerial 1420 +#define OBJ_tcg_tr_cat_platformSerial OBJ_tcg_tr_category,4L + +#define SN_tcg_tr_cat_platformManufacturerIdentifier "tcg-tr-cat-platformManufacturerIdentifier" +#define LN_tcg_tr_cat_platformManufacturerIdentifier "Platform Manufacturer Identifier Trait Category" +#define NID_tcg_tr_cat_platformManufacturerIdentifier 1421 +#define OBJ_tcg_tr_cat_platformManufacturerIdentifier OBJ_tcg_tr_category,5L + +#define SN_tcg_tr_cat_platformOwnership "tcg-tr-cat-platformOwnership" +#define LN_tcg_tr_cat_platformOwnership "Platform Ownership Trait Category" +#define NID_tcg_tr_cat_platformOwnership 1422 +#define OBJ_tcg_tr_cat_platformOwnership OBJ_tcg_tr_category,6L + +#define SN_tcg_tr_cat_componentClass "tcg-tr-cat-componentClass" +#define LN_tcg_tr_cat_componentClass "Component Class Trait Category" +#define NID_tcg_tr_cat_componentClass 1423 +#define OBJ_tcg_tr_cat_componentClass OBJ_tcg_tr_category,7L + +#define SN_tcg_tr_cat_componentManufacturer "tcg-tr-cat-componentManufacturer" +#define LN_tcg_tr_cat_componentManufacturer "Component Manufacturer Trait Category" +#define NID_tcg_tr_cat_componentManufacturer 1424 +#define OBJ_tcg_tr_cat_componentManufacturer OBJ_tcg_tr_category,8L + +#define SN_tcg_tr_cat_componentModel "tcg-tr-cat-componentModel" +#define LN_tcg_tr_cat_componentModel "Component Model Trait Category" +#define NID_tcg_tr_cat_componentModel 1425 +#define OBJ_tcg_tr_cat_componentModel OBJ_tcg_tr_category,9L + +#define SN_tcg_tr_cat_componentSerial "tcg-tr-cat-componentSerial" +#define LN_tcg_tr_cat_componentSerial "Component Serial Trait Category" +#define NID_tcg_tr_cat_componentSerial 1426 +#define OBJ_tcg_tr_cat_componentSerial OBJ_tcg_tr_category,10L + +#define SN_tcg_tr_cat_componentStatus "tcg-tr-cat-componentStatus" +#define LN_tcg_tr_cat_componentStatus "Component Status Trait Category" +#define NID_tcg_tr_cat_componentStatus 1427 +#define OBJ_tcg_tr_cat_componentStatus OBJ_tcg_tr_category,11L + +#define SN_tcg_tr_cat_componentLocation "tcg-tr-cat-componentLocation" +#define LN_tcg_tr_cat_componentLocation "Component Location Trait Category" +#define NID_tcg_tr_cat_componentLocation 1428 +#define OBJ_tcg_tr_cat_componentLocation OBJ_tcg_tr_category,12L + +#define SN_tcg_tr_cat_componentRevision "tcg-tr-cat-componentRevision" +#define LN_tcg_tr_cat_componentRevision "Component Revision Trait Category" +#define NID_tcg_tr_cat_componentRevision 1429 +#define OBJ_tcg_tr_cat_componentRevision OBJ_tcg_tr_category,13L + +#define SN_tcg_tr_cat_componentFieldReplaceable "tcg-tr-cat-componentFieldReplaceable" +#define LN_tcg_tr_cat_componentFieldReplaceable "Component Field Replaceable Trait Category" +#define NID_tcg_tr_cat_componentFieldReplaceable 1430 +#define OBJ_tcg_tr_cat_componentFieldReplaceable OBJ_tcg_tr_category,14L + +#define SN_tcg_tr_cat_EKCertificate "tcg-tr-cat-EKCertificate" +#define LN_tcg_tr_cat_EKCertificate "EK Certificate Trait Category" +#define NID_tcg_tr_cat_EKCertificate 1431 +#define OBJ_tcg_tr_cat_EKCertificate OBJ_tcg_tr_category,15L + +#define SN_tcg_tr_cat_IAKCertificate "tcg-tr-cat-IAKCertificate" +#define LN_tcg_tr_cat_IAKCertificate "IAK Certificate Trait Category" +#define NID_tcg_tr_cat_IAKCertificate 1432 +#define OBJ_tcg_tr_cat_IAKCertificate OBJ_tcg_tr_category,16L + +#define SN_tcg_tr_cat_IDevIDCertificate "tcg-tr-cat-IDevIDCertificate" +#define LN_tcg_tr_cat_IDevIDCertificate "IDevID Certificate Trait Category" +#define NID_tcg_tr_cat_IDevIDCertificate 1433 +#define OBJ_tcg_tr_cat_IDevIDCertificate OBJ_tcg_tr_category,17L + +#define SN_tcg_tr_cat_DICECertificate "tcg-tr-cat-DICECertificate" +#define LN_tcg_tr_cat_DICECertificate "DICE Certificate Trait Category" +#define NID_tcg_tr_cat_DICECertificate 1434 +#define OBJ_tcg_tr_cat_DICECertificate OBJ_tcg_tr_category,18L + +#define SN_tcg_tr_cat_SPDMCertificate "tcg-tr-cat-SPDMCertificate" +#define LN_tcg_tr_cat_SPDMCertificate "SPDM Certificate Trait Category" +#define NID_tcg_tr_cat_SPDMCertificate 1435 +#define OBJ_tcg_tr_cat_SPDMCertificate OBJ_tcg_tr_category,19L + +#define SN_tcg_tr_cat_PEMCertificate "tcg-tr-cat-PEMCertificate" +#define LN_tcg_tr_cat_PEMCertificate "PEM Certificate Trait Category" +#define NID_tcg_tr_cat_PEMCertificate 1436 +#define OBJ_tcg_tr_cat_PEMCertificate OBJ_tcg_tr_category,20L + +#define SN_tcg_tr_cat_PlatformCertificate "tcg-tr-cat-PlatformCertificate" +#define LN_tcg_tr_cat_PlatformCertificate "Platform Certificate Trait Category" +#define NID_tcg_tr_cat_PlatformCertificate 1437 +#define OBJ_tcg_tr_cat_PlatformCertificate OBJ_tcg_tr_category,21L + +#define SN_tcg_tr_cat_DeltaPlatformCertificate "tcg-tr-cat-DeltaPlatformCertificate" +#define LN_tcg_tr_cat_DeltaPlatformCertificate "Delta Platform Certificate Trait Category" +#define NID_tcg_tr_cat_DeltaPlatformCertificate 1438 +#define OBJ_tcg_tr_cat_DeltaPlatformCertificate OBJ_tcg_tr_category,22L + +#define SN_tcg_tr_cat_RebasePlatformCertificate "tcg-tr-cat-RebasePlatformCertificate" +#define LN_tcg_tr_cat_RebasePlatformCertificate "Rebase Platform Certificate Trait Category" +#define NID_tcg_tr_cat_RebasePlatformCertificate 1439 +#define OBJ_tcg_tr_cat_RebasePlatformCertificate OBJ_tcg_tr_category,23L + +#define SN_tcg_tr_cat_genericCertificate "tcg-tr-cat-genericCertificate" +#define LN_tcg_tr_cat_genericCertificate "Generic Certificate Trait Category" +#define NID_tcg_tr_cat_genericCertificate 1440 +#define OBJ_tcg_tr_cat_genericCertificate OBJ_tcg_tr_category,24L + +#define SN_tcg_tr_cat_CommonCriteria "tcg-tr-cat-CommonCriteria" +#define LN_tcg_tr_cat_CommonCriteria "Common Criteria Trait Category" +#define NID_tcg_tr_cat_CommonCriteria 1441 +#define OBJ_tcg_tr_cat_CommonCriteria OBJ_tcg_tr_category,25L + +#define SN_tcg_tr_cat_componentIdentifierV11 "tcg-tr-cat-componentIdentifierV11" +#define LN_tcg_tr_cat_componentIdentifierV11 "Component Identifier V1.1 Trait Category" +#define NID_tcg_tr_cat_componentIdentifierV11 1442 +#define OBJ_tcg_tr_cat_componentIdentifierV11 OBJ_tcg_tr_category,26L + +#define SN_tcg_tr_cat_FIPSLevel "tcg-tr-cat-FIPSLevel" +#define LN_tcg_tr_cat_FIPSLevel "FIPS Level Trait Category" +#define NID_tcg_tr_cat_FIPSLevel 1443 +#define OBJ_tcg_tr_cat_FIPSLevel OBJ_tcg_tr_category,27L + +#define SN_tcg_tr_cat_ISO9000 "tcg-tr-cat-ISO9000" +#define LN_tcg_tr_cat_ISO9000 "ISO 9000 Trait Category" +#define NID_tcg_tr_cat_ISO9000 1444 +#define OBJ_tcg_tr_cat_ISO9000 OBJ_tcg_tr_category,28L + +#define SN_tcg_tr_cat_networkMAC "tcg-tr-cat-networkMAC" +#define LN_tcg_tr_cat_networkMAC "Network MAC Trait Category" +#define NID_tcg_tr_cat_networkMAC 1445 +#define OBJ_tcg_tr_cat_networkMAC OBJ_tcg_tr_category,29L + +#define SN_tcg_tr_cat_attestationProtocol "tcg-tr-cat-attestationProtocol" +#define LN_tcg_tr_cat_attestationProtocol "Attestation Protocol Trait Category" +#define NID_tcg_tr_cat_attestationProtocol 1446 +#define OBJ_tcg_tr_cat_attestationProtocol OBJ_tcg_tr_category,30L + +#define SN_tcg_tr_cat_PEN "tcg-tr-cat-PEN" +#define LN_tcg_tr_cat_PEN "Private Enterprise Number Trait Category" +#define NID_tcg_tr_cat_PEN 1447 +#define OBJ_tcg_tr_cat_PEN OBJ_tcg_tr_category,31L + +#define SN_tcg_tr_cat_platformFirmwareCapabilities "tcg-tr-cat-platformFirmwareCapabilities" +#define LN_tcg_tr_cat_platformFirmwareCapabilities "Platform Firmware Capabilities Trait Category" +#define NID_tcg_tr_cat_platformFirmwareCapabilities 1448 +#define OBJ_tcg_tr_cat_platformFirmwareCapabilities OBJ_tcg_tr_category,32L + +#define SN_tcg_tr_cat_platformHardwareCapabilities "tcg-tr-cat-platformHardwareCapabilities" +#define LN_tcg_tr_cat_platformHardwareCapabilities "Platform Hardware Capabilities Trait Category" +#define NID_tcg_tr_cat_platformHardwareCapabilities 1449 +#define OBJ_tcg_tr_cat_platformHardwareCapabilities OBJ_tcg_tr_category,33L + +#define SN_tcg_tr_cat_platformFirmwareSignatureVerification "tcg-tr-cat-platformFirmwareSignatureVerification" +#define LN_tcg_tr_cat_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait Category" +#define NID_tcg_tr_cat_platformFirmwareSignatureVerification 1450 +#define OBJ_tcg_tr_cat_platformFirmwareSignatureVerification OBJ_tcg_tr_category,34L + +#define SN_tcg_tr_cat_platformFirmwareUpdateCompliance "tcg-tr-cat-platformFirmwareUpdateCompliance" +#define LN_tcg_tr_cat_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait Category" +#define NID_tcg_tr_cat_platformFirmwareUpdateCompliance 1451 +#define OBJ_tcg_tr_cat_platformFirmwareUpdateCompliance OBJ_tcg_tr_category,35L + +#define SN_tcg_tr_cat_RTM "tcg-tr-cat-RTM" +#define LN_tcg_tr_cat_RTM "Root of Trust of Measurement Trait Category" +#define NID_tcg_tr_cat_RTM 1452 +#define OBJ_tcg_tr_cat_RTM OBJ_tcg_tr_category,36L + +#define SN_tcg_tr_cat_PublicKey "tcg-tr-cat-PublicKey" +#define LN_tcg_tr_cat_PublicKey "Public Key Trait Category" +#define NID_tcg_tr_cat_PublicKey 1453 +#define OBJ_tcg_tr_cat_PublicKey OBJ_tcg_tr_category,37L + +#define OBJ_nistKems OBJ_nistAlgorithms,4L + +#define SN_ML_KEM_512 "id-alg-ml-kem-512" +#define LN_ML_KEM_512 "ML-KEM-512" +#define NID_ML_KEM_512 1454 +#define OBJ_ML_KEM_512 OBJ_nistKems,1L + +#define SN_ML_KEM_768 "id-alg-ml-kem-768" +#define LN_ML_KEM_768 "ML-KEM-768" +#define NID_ML_KEM_768 1455 +#define OBJ_ML_KEM_768 OBJ_nistKems,2L + +#define SN_ML_KEM_1024 "id-alg-ml-kem-1024" +#define LN_ML_KEM_1024 "ML-KEM-1024" +#define NID_ML_KEM_1024 1456 +#define OBJ_ML_KEM_1024 OBJ_nistKems,3L + +#endif /* OPENSSL_OBJ_MAC_H */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm SN_magma_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm NID_magma_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_magma_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac SN_magma_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac NID_magma_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_magma_ctr_acpkm_omac + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm SN_kuznyechik_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm NID_kuznyechik_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_kuznyechik_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac SN_kuznyechik_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac NID_kuznyechik_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_kuznyechik_ctr_acpkm_omac + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 SN_magma_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 NID_magma_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_magma_kexp15 + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 SN_kuznyechik_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 NID_kuznyechik_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_kuznyechik_kexp15 + +#define SN_grasshopper_ecb SN_kuznyechik_ecb +#define NID_grasshopper_ecb NID_kuznyechik_ecb + +#define SN_grasshopper_ctr SN_kuznyechik_ctr +#define NID_grasshopper_ctr NID_kuznyechik_ctr + +#define SN_grasshopper_ofb SN_kuznyechik_ofb +#define NID_grasshopper_ofb NID_kuznyechik_ofb + +#define SN_grasshopper_cbc SN_kuznyechik_cbc +#define NID_grasshopper_cbc NID_kuznyechik_cbc + +#define SN_grasshopper_cfb SN_kuznyechik_cfb +#define NID_grasshopper_cfb NID_kuznyechik_cfb + +#define SN_grasshopper_mac SN_kuznyechik_mac +#define NID_grasshopper_mac NID_kuznyechik_mac + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/objects.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/objects.h new file mode 100644 index 0000000..de1f1db --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/objects.h @@ -0,0 +1,186 @@ +/* + * Copyright 1995-2024 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_OBJECTS_H +#define OPENSSL_OBJECTS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OBJECTS_H +#endif + +#include +#include +#include +#include + +#define OBJ_NAME_TYPE_UNDEF 0x00 +#define OBJ_NAME_TYPE_MD_METH 0x01 +#define OBJ_NAME_TYPE_CIPHER_METH 0x02 +#define OBJ_NAME_TYPE_PKEY_METH 0x03 +#define OBJ_NAME_TYPE_COMP_METH 0x04 +#define OBJ_NAME_TYPE_MAC_METH 0x05 +#define OBJ_NAME_TYPE_KDF_METH 0x06 +#define OBJ_NAME_TYPE_NUM 0x07 + +#define OBJ_NAME_ALIAS 0x8000 + +#define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 +#define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct obj_name_st { + int type; + int alias; + const char *name; + const char *data; +} OBJ_NAME; + +#define OBJ_create_and_add_object(a, b, c) OBJ_create(a, b, c) + +int OBJ_NAME_init(void); +int OBJ_NAME_new_index(unsigned long (*hash_func)(const char *), + int (*cmp_func)(const char *, const char *), + void (*free_func)(const char *, int, const char *)); +const char *OBJ_NAME_get(const char *name, int type); +int OBJ_NAME_add(const char *name, int type, const char *data); +int OBJ_NAME_remove(const char *name, int type); +void OBJ_NAME_cleanup(int type); /* -1 for everything */ +void OBJ_NAME_do_all(int type, void (*fn)(const OBJ_NAME *, void *arg), + void *arg); +void OBJ_NAME_do_all_sorted(int type, + void (*fn)(const OBJ_NAME *, void *arg), + void *arg); + +DECLARE_ASN1_DUP_FUNCTION_name(ASN1_OBJECT, OBJ) +ASN1_OBJECT *OBJ_nid2obj(int n); +const char *OBJ_nid2ln(int n); +const char *OBJ_nid2sn(int n); +int OBJ_obj2nid(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); +int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); +int OBJ_txt2nid(const char *s); +int OBJ_ln2nid(const char *s); +int OBJ_sn2nid(const char *s); +int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); +const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, + int (*cmp)(const void *, const void *)); +const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, + int size, + int (*cmp)(const void *, const void *), + int flags); + +#define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ + static int nm##_cmp(type1 const *, type2 const *); \ + scope type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +#define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ + _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) +#define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +/*- + * Unsolved problem: if a type is actually a pointer type, like + * nid_triple is, then its impossible to get a const where you need + * it. Consider: + * + * typedef int nid_triple[3]; + * const void *a_; + * const nid_triple const *a = a_; + * + * The assignment discards a const because what you really want is: + * + * const int const * const *a = a_; + * + * But if you do that, you lose the fact that a is an array of 3 ints, + * which breaks comparison functions. + * + * Thus we end up having to cast, sadly, or unpack the + * declarations. Or, as I finally did in this case, declare nid_triple + * to be a struct, which it should have been in the first place. + * + * Ben, August 2008. + * + * Also, strictly speaking not all types need be const, but handling + * the non-constness means a lot of complication, and in practice + * comparison routines do always not touch their arguments. + */ + +#define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a, b); \ + } \ + static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +#define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a, b); \ + } \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +#define OBJ_bsearch(type1, key, type2, base, num, cmp) \ + ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1, key), CHECKED_PTR_OF(type2, base), \ + num, sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1, cmp##_type_1), \ + (void)CHECKED_PTR_OF(type2, cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN))) + +#define OBJ_bsearch_ex(type1, key, type2, base, num, cmp, flags) \ + ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1, key), CHECKED_PTR_OF(type2, base), \ + num, sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1, cmp##_type_1), \ + (void)type_2 = CHECKED_PTR_OF(type2, cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN)), \ + flags) + +int OBJ_new_nid(int num); +int OBJ_add_object(const ASN1_OBJECT *obj); +int OBJ_create(const char *oid, const char *sn, const char *ln); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OBJ_cleanup() \ + while (0) \ + continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); +int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); +int OBJ_add_sigid(int signid, int dig_id, int pkey_id); +void OBJ_sigid_free(void); + +#define SN_ac_auditEntity SN_ac_auditIdentity + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/objectserr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/objectserr.h new file mode 100644 index 0000000..2927561 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/objectserr.h @@ -0,0 +1,26 @@ +/* + * 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_OBJECTSERR_H +#define OPENSSL_OBJECTSERR_H +#pragma once + +#include +#include +#include + +/* + * OBJ reason codes. + */ +#define OBJ_R_OID_EXISTS 102 +#define OBJ_R_UNKNOWN_NID 101 +#define OBJ_R_UNKNOWN_OBJECT_NAME 103 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ocsp.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ocsp.h new file mode 100644 index 0000000..5959099 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ocsp.h @@ -0,0 +1,487 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ocsp.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_OCSP_H +#define OPENSSL_OCSP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OCSP_H +#endif + +#include +#include +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * -- value 7 is not used + * removeFromCRL (8), + * privilegeWithdrawn (9), + * aACompromise (10) } + */ +#define OCSP_REVOKED_STATUS_NOSTATUS -1 +#define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +#define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +#define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +#define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +#define OCSP_REVOKED_STATUS_SUPERSEDED 4 +#define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +#define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +#define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 +#define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 +#define OCSP_REVOKED_STATUS_AACOMPROMISE 10 + +#ifndef OPENSSL_NO_OCSP + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +#define OCSP_DEFAULT_NONCE_LENGTH 16 + +#define OCSP_NOCERTS 0x1 +#define OCSP_NOINTERN 0x2 +#define OCSP_NOSIGS 0x4 +#define OCSP_NOCHAIN 0x8 +#define OCSP_NOVERIFY 0x10 +#define OCSP_NOEXPLICIT 0x20 +#define OCSP_NOCASIGN 0x40 +#define OCSP_NODELEGATED 0x80 +#define OCSP_NOCHECKS 0x100 +#define OCSP_TRUSTOTHER 0x200 +#define OCSP_RESPID_KEY 0x400 +#define OCSP_NOTIME 0x800 +#define OCSP_PARTIAL_CHAIN 0x1000 + +typedef struct ocsp_cert_id_st OCSP_CERTID; +typedef struct ocsp_one_request_st OCSP_ONEREQ; +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) +#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) +#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) +#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) +#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) +#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) +#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_freefunc_type(freefunc)) +#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) +#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) +#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) +#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) +#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) +#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) +#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) +#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) +#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) +#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) +#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) +#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) +#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) +#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) +#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) + +/* clang-format on */ + +#define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +#define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +#define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +#define OCSP_RESPONSE_STATUS_TRYLATER 3 +#define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +#define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +#define V_OCSP_RESPID_NAME 0 +#define V_OCSP_RESPID_KEY 1 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) +#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) +#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) +#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) +#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) +#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) +#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_freefunc_type(freefunc)) +#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) +#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) +#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) +#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +#define V_OCSP_CERTSTATUS_GOOD 0 +#define V_OCSP_CERTSTATUS_REVOKED 1 +#define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) +#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) +#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) +#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) +#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) +#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) +#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) +#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) +#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) +#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) +#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) +#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +#define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +#define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +#define d2i_OCSP_REQUEST_bio(bp, p) ASN1_d2i_bio_of(OCSP_REQUEST, OCSP_REQUEST_new, d2i_OCSP_REQUEST, bp, p) + +#define d2i_OCSP_RESPONSE_bio(bp, p) ASN1_d2i_bio_of(OCSP_RESPONSE, OCSP_RESPONSE_new, d2i_OCSP_RESPONSE, bp, p) + +#define PEM_read_bio_OCSP_REQUEST(bp, x, cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char **)(x), cb, NULL) + +#define PEM_read_bio_OCSP_RESPONSE(bp, x, cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char **)(x), cb, NULL) + +#define PEM_write_bio_OCSP_REQUEST(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define PEM_write_bio_OCSP_RESPONSE(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define i2d_OCSP_RESPONSE_bio(bp, o) ASN1_i2d_bio_of(OCSP_RESPONSE, i2d_OCSP_RESPONSE, bp, o) + +#define i2d_OCSP_REQUEST_bio(bp, o) ASN1_i2d_bio_of(OCSP_REQUEST, i2d_OCSP_REQUEST, bp, o) + +#define ASN1_BIT_STRING_digest(data, type, md, len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING), type, data, md, len) + +#define OCSP_CERTSTATUS_dup(cs) \ + (OCSP_CERTSTATUS *)ASN1_dup((i2d_of_void *)i2d_OCSP_CERTSTATUS, \ + (d2i_of_void *)d2i_OCSP_CERTSTATUS, (char *)(cs)) + +DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) + +OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, + const OCSP_REQUEST *req, int buf_size); +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; +#define OCSP_REQ_CTX_new(io, buf_size) \ + OSSL_HTTP_REQ_CTX_new(io, io, buf_size) +#define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free +#define OCSP_REQ_CTX_http(rctx, op, path) \ + (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, NULL, NULL, path)) +#define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header +#define OCSP_REQ_CTX_i2d(r, it, req) \ + OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) +#define OCSP_REQ_CTX_set1_req(r, req) \ + OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) +#define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio +#define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i +#define OCSP_sendreq_nbio(p, r) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ + ASN1_ITEM_rptr(OCSP_RESPONSE)) +#define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio +#define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length +#endif + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, const X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP *bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +#define OCSP_parse_url(url, host, port, path, ssl) \ + OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key_ex(OCSP_RESPID *respid, X509 *cert, + OSSL_LIB_CTX *libctx, const char *propq); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, + const char *propq); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(const X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_OCSP) */ +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ocsperr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ocsperr.h new file mode 100644 index 0000000..18e035e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ocsperr.h @@ -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_OCSPERR_H +#define OPENSSL_OCSPERR_H +#pragma once + +#include +#include +#include + +#ifndef OPENSSL_NO_OCSP + +/* + * OCSP reason codes. + */ +#define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +#define OCSP_R_DIGEST_ERR 102 +#define OCSP_R_DIGEST_NAME_ERR 106 +#define OCSP_R_DIGEST_SIZE_ERR 107 +#define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +#define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +#define OCSP_R_MISSING_OCSPSIGNING_USAGE 103 +#define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE 124 +#define OCSP_R_NOT_BASIC_RESPONSE 104 +#define OCSP_R_NO_CERTIFICATES_IN_CHAIN 105 +#define OCSP_R_NO_RESPONSE_DATA 108 +#define OCSP_R_NO_REVOKED_TIME 109 +#define OCSP_R_NO_SIGNER_KEY 130 +#define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 110 +#define OCSP_R_REQUEST_NOT_SIGNED 128 +#define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA 111 +#define OCSP_R_ROOT_CA_NOT_TRUSTED 112 +#define OCSP_R_SIGNATURE_FAILURE 117 +#define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND 118 +#define OCSP_R_STATUS_EXPIRED 125 +#define OCSP_R_STATUS_NOT_YET_VALID 126 +#define OCSP_R_STATUS_TOO_OLD 127 +#define OCSP_R_UNKNOWN_MESSAGE_DIGEST 119 +#define OCSP_R_UNKNOWN_NID 120 +#define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE 129 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/opensslconf.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/opensslconf.h new file mode 100644 index 0000000..4a8d78e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/opensslconf.h @@ -0,0 +1,17 @@ +/* + * 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_OPENSSLCONF_H +#define OPENSSL_OPENSSLCONF_H +#pragma once + +#include +#include + +#endif /* OPENSSL_OPENSSLCONF_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/opensslv.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/opensslv.h new file mode 100644 index 0000000..6b468fd --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/opensslv.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/opensslv.h.in + * + * Copyright 1999-2025 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_OPENSSLV_H +#define OPENSSL_OPENSSLV_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SECTION 1: VERSION DATA. These will change for each release + */ + +/* + * Base version macros + * + * These macros express version number MAJOR.MINOR.PATCH exactly + */ +/* clang-format off */ +# define OPENSSL_VERSION_MAJOR 3 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_MINOR 6 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_PATCH 2 +/* clang-format on */ + +/* + * Additional version information + * + * These are also part of the new version scheme, but aren't part + * of the version number itself. + */ + +/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_PRE_RELEASE "" +/* clang-format on */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_BUILD_METADATA "" +/* clang-format on */ + +/* + * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA + * to be anything but the empty string. Its use is entirely reserved for + * others + */ + +/* + * Shared library version + * + * This is strictly to express ABI version, which may or may not + * be related to the API version expressed with the macros above. + * This is defined in free form. + */ +/* clang-format off */ +# define OPENSSL_SHLIB_VERSION 3 +/* clang-format on */ + +/* + * SECTION 2: USEFUL MACROS + */ + +/* For checking general API compatibility when preprocessing */ +#define OPENSSL_VERSION_PREREQ(maj, min) \ + ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) + +/* + * Macros to get the version in easily digested string form, both the short + * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced + * with the values from the corresponding OPENSSL_VERSION_ macros) and the + * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and + * OPENSSL_VERSION_BUILD_METADATA_STR appended. + */ +/* clang-format off */ +# define OPENSSL_VERSION_STR "3.6.2" +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_FULL_VERSION_STR "3.6.2" +/* clang-format on */ + +/* + * SECTION 3: ADDITIONAL METADATA + * + * These strings are defined separately to allow them to be parsable. + */ +/* clang-format off */ +# define OPENSSL_RELEASE_DATE "7 Apr 2026" +/* clang-format on */ + +/* + * SECTION 4: BACKWARD COMPATIBILITY + */ + +/* clang-format off */ +# define OPENSSL_VERSION_TEXT "OpenSSL 3.6.2 7 Apr 2026" +/* clang-format on */ + +/* clang-format off */ +/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PP0L */ +# define OPENSSL_VERSION_NUMBER \ + ( (OPENSSL_VERSION_MAJOR<<28) \ + |(OPENSSL_VERSION_MINOR<<20) \ + |(OPENSSL_VERSION_PATCH<<4) \ + |0x0L ) +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OPENSSLV_H +#endif + +#endif /* OPENSSL_OPENSSLV_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ossl_typ.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ossl_typ.h new file mode 100644 index 0000000..a562299 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ossl_typ.h @@ -0,0 +1,16 @@ +/* + * Copyright 2019 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 + */ + +/* + * The original was renamed to + * + * This header file only exists for compatibility reasons with older + * applications which #include . + */ +#include diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/param_build.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/param_build.h new file mode 100644 index 0000000..be6a025 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/param_build.h @@ -0,0 +1,63 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, 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_PARAM_BUILD_H +#define OPENSSL_PARAM_BUILD_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +OSSL_PARAM_BLD *OSSL_PARAM_BLD_new(void); +OSSL_PARAM *OSSL_PARAM_BLD_to_param(OSSL_PARAM_BLD *bld); +void OSSL_PARAM_BLD_free(OSSL_PARAM_BLD *bld); + +int OSSL_PARAM_BLD_push_int(OSSL_PARAM_BLD *bld, const char *key, int val); +int OSSL_PARAM_BLD_push_uint(OSSL_PARAM_BLD *bld, const char *key, + unsigned int val); +int OSSL_PARAM_BLD_push_long(OSSL_PARAM_BLD *bld, const char *key, + long int val); +int OSSL_PARAM_BLD_push_ulong(OSSL_PARAM_BLD *bld, const char *key, + unsigned long int val); +int OSSL_PARAM_BLD_push_int32(OSSL_PARAM_BLD *bld, const char *key, + int32_t val); +int OSSL_PARAM_BLD_push_uint32(OSSL_PARAM_BLD *bld, const char *key, + uint32_t val); +int OSSL_PARAM_BLD_push_int64(OSSL_PARAM_BLD *bld, const char *key, + int64_t val); +int OSSL_PARAM_BLD_push_uint64(OSSL_PARAM_BLD *bld, const char *key, + uint64_t val); +int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key, + size_t val); +int OSSL_PARAM_BLD_push_time_t(OSSL_PARAM_BLD *bld, const char *key, + time_t val); +int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key, + double val); +int OSSL_PARAM_BLD_push_BN(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn); +int OSSL_PARAM_BLD_push_BN_pad(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn, size_t sz); +int OSSL_PARAM_BLD_push_utf8_string(OSSL_PARAM_BLD *bld, const char *key, + const char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_utf8_ptr(OSSL_PARAM_BLD *bld, const char *key, + char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_string(OSSL_PARAM_BLD *bld, const char *key, + const void *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_ptr(OSSL_PARAM_BLD *bld, const char *key, + void *buf, size_t bsize); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_PARAM_BUILD_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/params.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/params.h new file mode 100644 index 0000000..6772c40 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/params.h @@ -0,0 +1,166 @@ +/* + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, 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_PARAMS_H +#define OPENSSL_PARAMS_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_PARAM_UNMODIFIED ((size_t)-1) + +#define OSSL_PARAM_END \ + { NULL, 0, NULL, 0, 0 } + +#define OSSL_PARAM_DEFN(key, type, addr, sz) \ + { (key), (type), (addr), (sz), OSSL_PARAM_UNMODIFIED } + +/* Basic parameter types without return sizes */ +#define OSSL_PARAM_int(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int)) +#define OSSL_PARAM_uint(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned int)) +#define OSSL_PARAM_long(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(long int)) +#define OSSL_PARAM_ulong(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned long int)) +#define OSSL_PARAM_int32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int32_t)) +#define OSSL_PARAM_uint32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint32_t)) +#define OSSL_PARAM_int64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int64_t)) +#define OSSL_PARAM_uint64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint64_t)) +#define OSSL_PARAM_size_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), sizeof(size_t)) +#define OSSL_PARAM_time_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(time_t)) +#define OSSL_PARAM_double(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_REAL, (addr), sizeof(double)) + +#define OSSL_PARAM_BN(key, bn, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (bn), (sz)) +#define OSSL_PARAM_utf8_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_STRING, (addr), sz) +#define OSSL_PARAM_octet_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_STRING, (addr), sz) + +#define OSSL_PARAM_utf8_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_PTR, (addr), sz) +#define OSSL_PARAM_octet_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_PTR, (addr), sz) + +/* Search an OSSL_PARAM array for a matching name */ +OSSL_PARAM *OSSL_PARAM_locate(OSSL_PARAM *p, const char *key); +const OSSL_PARAM *OSSL_PARAM_locate_const(const OSSL_PARAM *p, const char *key); + +/* Basic parameter type run-time construction */ +OSSL_PARAM OSSL_PARAM_construct_int(const char *key, int *buf); +OSSL_PARAM OSSL_PARAM_construct_uint(const char *key, unsigned int *buf); +OSSL_PARAM OSSL_PARAM_construct_long(const char *key, long int *buf); +OSSL_PARAM OSSL_PARAM_construct_ulong(const char *key, unsigned long int *buf); +OSSL_PARAM OSSL_PARAM_construct_int32(const char *key, int32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint32(const char *key, uint32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_int64(const char *key, int64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint64(const char *key, uint64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_size_t(const char *key, size_t *buf); +OSSL_PARAM OSSL_PARAM_construct_time_t(const char *key, time_t *buf); +OSSL_PARAM OSSL_PARAM_construct_BN(const char *key, unsigned char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_double(const char *key, double *buf); +OSSL_PARAM OSSL_PARAM_construct_utf8_string(const char *key, char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_string(const char *key, void *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_ptr(const char *key, void **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_end(void); + +int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to, + const OSSL_PARAM *paramdefs, + const char *key, const char *value, + size_t value_n, int *found); + +int OSSL_PARAM_print_to_bio(const OSSL_PARAM *params, BIO *bio, + int print_values); + +int OSSL_PARAM_get_int(const OSSL_PARAM *p, int *val); +int OSSL_PARAM_get_uint(const OSSL_PARAM *p, unsigned int *val); +int OSSL_PARAM_get_long(const OSSL_PARAM *p, long int *val); +int OSSL_PARAM_get_ulong(const OSSL_PARAM *p, unsigned long int *val); +int OSSL_PARAM_get_int32(const OSSL_PARAM *p, int32_t *val); +int OSSL_PARAM_get_uint32(const OSSL_PARAM *p, uint32_t *val); +int OSSL_PARAM_get_int64(const OSSL_PARAM *p, int64_t *val); +int OSSL_PARAM_get_uint64(const OSSL_PARAM *p, uint64_t *val); +int OSSL_PARAM_get_size_t(const OSSL_PARAM *p, size_t *val); +int OSSL_PARAM_get_time_t(const OSSL_PARAM *p, time_t *val); + +int OSSL_PARAM_set_int(OSSL_PARAM *p, int val); +int OSSL_PARAM_set_uint(OSSL_PARAM *p, unsigned int val); +int OSSL_PARAM_set_long(OSSL_PARAM *p, long int val); +int OSSL_PARAM_set_ulong(OSSL_PARAM *p, unsigned long int val); +int OSSL_PARAM_set_int32(OSSL_PARAM *p, int32_t val); +int OSSL_PARAM_set_uint32(OSSL_PARAM *p, uint32_t val); +int OSSL_PARAM_set_int64(OSSL_PARAM *p, int64_t val); +int OSSL_PARAM_set_uint64(OSSL_PARAM *p, uint64_t val); +int OSSL_PARAM_set_size_t(OSSL_PARAM *p, size_t val); +int OSSL_PARAM_set_time_t(OSSL_PARAM *p, time_t val); + +int OSSL_PARAM_get_double(const OSSL_PARAM *p, double *val); +int OSSL_PARAM_set_double(OSSL_PARAM *p, double val); + +int OSSL_PARAM_get_BN(const OSSL_PARAM *p, BIGNUM **val); +int OSSL_PARAM_set_BN(OSSL_PARAM *p, const BIGNUM *val); + +int OSSL_PARAM_get_utf8_string(const OSSL_PARAM *p, char **val, size_t max_len); +int OSSL_PARAM_set_utf8_string(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_string(const OSSL_PARAM *p, void **val, size_t max_len, + size_t *used_len); +int OSSL_PARAM_set_octet_string(OSSL_PARAM *p, const void *val, size_t len); + +int OSSL_PARAM_get_utf8_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_set_utf8_ptr(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); +int OSSL_PARAM_set_octet_ptr(OSSL_PARAM *p, const void *val, + size_t used_len); + +int OSSL_PARAM_get_utf8_string_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_get_octet_string_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); + +int OSSL_PARAM_modified(const OSSL_PARAM *p); +void OSSL_PARAM_set_all_unmodified(OSSL_PARAM *p); + +OSSL_PARAM *OSSL_PARAM_dup(const OSSL_PARAM *p); +OSSL_PARAM *OSSL_PARAM_merge(const OSSL_PARAM *p1, const OSSL_PARAM *p2); +void OSSL_PARAM_free(OSSL_PARAM *p); + +int OSSL_PARAM_set_octet_string_or_ptr(OSSL_PARAM *p, const void *val, + size_t len); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pem.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pem.h new file mode 100644 index 0000000..fa64aaf --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pem.h @@ -0,0 +1,548 @@ +/* + * Copyright 1995-2025 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_PEM_H +#define OPENSSL_PEM_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PEM_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PEM_BUFSIZE 1024 + +#define PEM_STRING_X509_OLD "X509 CERTIFICATE" +#define PEM_STRING_X509 "CERTIFICATE" +#define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +#define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +#define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +#define PEM_STRING_X509_CRL "X509 CRL" +#define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +#define PEM_STRING_PUBLIC "PUBLIC KEY" +#define PEM_STRING_RSA "RSA PRIVATE KEY" +#define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +#define PEM_STRING_DSA "DSA PRIVATE KEY" +#define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +#define PEM_STRING_PKCS7 "PKCS7" +#define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +#define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +#define PEM_STRING_PKCS8INF "PRIVATE KEY" +#define PEM_STRING_DHPARAMS "DH PARAMETERS" +#define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +#define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +#define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +#define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +#define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +#define PEM_STRING_PARAMETERS "PARAMETERS" +#define PEM_STRING_CMS "CMS" +#define PEM_STRING_SM2PRIVATEKEY "SM2 PRIVATE KEY" +#define PEM_STRING_SM2PARAMETERS "SM2 PARAMETERS" +#define PEM_STRING_ACERT "ATTRIBUTE CERTIFICATE" + +#define PEM_TYPE_ENCRYPTED 10 +#define PEM_TYPE_MIC_ONLY 20 +#define PEM_TYPE_MIC_CLEAR 30 +#define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +#define PEM_read_cb_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u) +#define PEM_read_cb_ex_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name##_ex(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +#define PEM_write_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x) +#define PEM_write_cb_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u) +#define PEM_write_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) +#define PEM_write_cb_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +#ifdef OPENSSL_NO_STDIO + +#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +#endif +#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +#endif +#else + +#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str, fp, \ + (void **)x, cb, u); \ + } + +#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ + PEM_write_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) +#endif +#endif + +#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + type *PEM_read_bio_##name(BIO *bp, type **x, \ + pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str, bp, \ + (void **)x, cb, u); \ + } + +#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + PEM_write_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +#define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +/* + * 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. + */ +#if defined(OPENSSL_NO_STDIO) + +#define DECLARE_PEM_read_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_read_fp_ex_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_fp_ex_attr(attr, name, type) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const_attr(attr, name, type) /**/ +#endif +#define DECLARE_PEM_write_cb_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) /**/ + +#else + +#define DECLARE_PEM_read_fp_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); +#define DECLARE_PEM_read_fp_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); \ + attr PEM_read_cb_ex_fnsig(name, type, FILE, read); + +#define DECLARE_PEM_write_fp_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +#define DECLARE_PEM_write_fp_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); \ + attr PEM_write_ex_fnsig(name, type, FILE, write); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +#endif +#define DECLARE_PEM_write_cb_fp_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); +#define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); \ + attr PEM_write_cb_ex_fnsig(name, type, FILE, write); + +#endif + +#define DECLARE_PEM_read_fp(name, type) \ + DECLARE_PEM_read_fp_attr(extern, name, type) +#define DECLARE_PEM_write_fp(name, type) \ + DECLARE_PEM_write_fp_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const(name, type) \ + DECLARE_PEM_write_fp_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_write_cb_fp(name, type) \ + DECLARE_PEM_write_cb_fp_attr(extern, name, type) + +#define DECLARE_PEM_read_bio_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); +#define DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); \ + attr PEM_read_cb_ex_fnsig(name, type, BIO, read_bio); +#define DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_bio_attr(extern, name, type) +#define DECLARE_PEM_read_bio_ex(name, type) \ + DECLARE_PEM_read_bio_ex_attr(extern, name, type) + +#define DECLARE_PEM_write_bio_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_ex_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_bio_attr(extern, name, type) +#define DECLARE_PEM_write_bio_ex(name, type) \ + DECLARE_PEM_write_bio_ex_attr(extern, name, type) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_bio_const_attr(extern, name, type) +#endif + +#define DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_cb_ex_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_bio_attr(extern, name, type) +#define DECLARE_PEM_write_cb_ex_bio(name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(extern, name, type) + +#define DECLARE_PEM_write_attr(attr, name, type) \ + DECLARE_PEM_write_bio_attr(attr, name, type) \ + DECLARE_PEM_write_fp_attr(attr, name, type) +#define DECLARE_PEM_write_ex_attr(attr, name, type) \ + DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_attr(extern, name, type) +#define DECLARE_PEM_write_ex(name, type) \ + DECLARE_PEM_write_ex_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_const_attr(attr, name, type) \ + DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + DECLARE_PEM_write_fp_const_attr(attr, name, type) +#define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_write_cb_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_attr(attr, name, type) +#define DECLARE_PEM_write_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_attr(extern, name, type) +#define DECLARE_PEM_write_cb_ex(name, type) \ + DECLARE_PEM_write_cb_ex_attr(extern, name, type) +#define DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_read_bio_attr(attr, name, type) \ + DECLARE_PEM_read_fp_attr(attr, name, type) +#define DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_read_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_attr(extern, name, type) +#define DECLARE_PEM_read_ex(name, type) \ + DECLARE_PEM_read_ex_attr(extern, name, type) +#define DECLARE_PEM_rw_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_attr(attr, name, type) +#define DECLARE_PEM_rw_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_ex_attr(attr, name, type) +#define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_rw_attr(extern, name, type) +#define DECLARE_PEM_rw_ex(name, type) \ + DECLARE_PEM_rw_ex_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_rw_const_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_const_attr(attr, name, type) +#define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_rw_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_rw_cb_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_cb_attr(attr, name, type) +#define DECLARE_PEM_rw_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_ex_attr(attr, name, type) +#define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_rw_cb_attr(extern, name, type) +#define DECLARE_PEM_rw_cb_ex(name, type) \ + DECLARE_PEM_rw_cb_ex_attr(extern, name, type) + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +#define PEM_FLAG_SECURE 0x1 +#define PEM_FLAG_EAY_COMPATIBLE 0x2 +#define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio_ctx(OSSL_i2d_of_void_ctx *i2d, void *vctx, + const char *name, BIO *bp, const void *x, + const EVP_CIPHER *enc, const unsigned char *kstr, + int klen, pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_bio_ex(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, + const char *propq); + +int PEM_X509_INFO_write_bio(BIO *bp, const X509_INFO *xi, EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +#ifndef OPENSSL_NO_STDIO +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_ex(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, + void *u, OSSL_LIB_CTX *libctx, const char *propq); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, const unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, const char *str); + +#include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(X509_PUBKEY, X509_PUBKEY) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSAPublicKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSA_PUBKEY, RSA) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSA_PUBKEY, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSAparams, DSA) +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, ECPrivateKey, EC_KEY) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, EC_PUBKEY, EC_KEY) +#endif +#endif + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH) +DECLARE_PEM_write_attr(OSSL_DEPRECATEDIN_3_0, DHxparams, DH) +#endif +#endif +DECLARE_PEM_rw_cb_ex(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw_ex(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, const EVP_PKEY *x, + const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +/* Why do these take a signed char *kstr? */ +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, const EVP_PKEY *, const EVP_CIPHER *, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_bio(BIO *bp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS8PrivateKey_fp(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cd, void *u); +#endif +EVP_PKEY *PEM_read_bio_Parameters_ex(BIO *bp, EVP_PKEY **x, + OSSL_LIB_CTX *libctx, const char *propq); +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, const EVP_PKEY *x); + +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, const EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, const EVP_PKEY *pk); +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); +int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pem2.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pem2.h new file mode 100644 index 0000000..6d3ab2a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pem2.h @@ -0,0 +1,19 @@ +/* + * Copyright 1999-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_PEM2_H +#define OPENSSL_PEM2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PEM2_H +#endif +#include +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pemerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pemerr.h new file mode 100644 index 0000000..eb3c9a1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pemerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_PEMERR_H +#define OPENSSL_PEMERR_H +#pragma once + +#include +#include +#include + +/* + * PEM reason codes. + */ +#define PEM_R_BAD_BASE64_DECODE 100 +#define PEM_R_BAD_DECRYPT 101 +#define PEM_R_BAD_END_LINE 102 +#define PEM_R_BAD_IV_CHARS 103 +#define PEM_R_BAD_MAGIC_NUMBER 116 +#define PEM_R_BAD_PASSWORD_READ 104 +#define PEM_R_BAD_VERSION_NUMBER 117 +#define PEM_R_BIO_WRITE_FAILURE 118 +#define PEM_R_CIPHER_IS_NULL 127 +#define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +#define PEM_R_EXPECTING_DSS_KEY_BLOB 131 +#define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +#define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +#define PEM_R_EXPECTING_RSA_KEY_BLOB 132 +#define PEM_R_HEADER_TOO_LONG 128 +#define PEM_R_INCONSISTENT_HEADER 121 +#define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +#define PEM_R_KEYBLOB_TOO_SHORT 123 +#define PEM_R_MISSING_DEK_IV 129 +#define PEM_R_NOT_DEK_INFO 105 +#define PEM_R_NOT_ENCRYPTED 106 +#define PEM_R_NOT_PROC_TYPE 107 +#define PEM_R_NO_START_LINE 108 +#define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +#define PEM_R_PVK_DATA_TOO_SHORT 124 +#define PEM_R_PVK_TOO_SHORT 125 +#define PEM_R_READ_KEY 111 +#define PEM_R_SHORT_HEADER 112 +#define PEM_R_UNEXPECTED_DEK_IV 130 +#define PEM_R_UNSUPPORTED_CIPHER 113 +#define PEM_R_UNSUPPORTED_ENCRYPTION 114 +#define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +#define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 +#define PEM_R_UNSUPPORTED_PVK_KEY_TYPE 133 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs12.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs12.h new file mode 100644 index 0000000..7990d25 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs12.h @@ -0,0 +1,376 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/pkcs12.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS12_H +#define OPENSSL_PKCS12_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS12_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PKCS12_KEY_ID 1 +#define PKCS12_IV_ID 2 +#define PKCS12_MAC_ID 3 + +/* Default iteration count */ +#ifndef PKCS12_DEFAULT_ITER +#define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +#endif + +#define PKCS12_MAC_KEY_LENGTH 20 + +/* + * The macro is expected to be used only internally. Kept for + * backwards compatibility. NIST requires 16, previous value was + * 8. Allow to override this at compile time. + */ +#ifndef PKCS12_SALT_LEN +#define PKCS12_SALT_LEN 16 +#endif + +/* It's not clear if these are actually needed... */ +#define PKCS12_key_gen PKCS12_key_gen_utf8 +#define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +#define KEY_EX 0x10 +#define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) +#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) +#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) +#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) +#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) +#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) +#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) +#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) +#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) +#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) +#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) +#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +#define PKCS12_ERROR 0 +#define PKCS12_OK 1 + +/* Compatibility macros */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 + +#define M_PKCS12_bag_type PKCS12_bag_type +#define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +#define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +#define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +#define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +#define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +#define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +#define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +#define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +#define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +#define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +#endif + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); +const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_secret(int type, int vtype, const unsigned char *value, int len); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf, + OSSL_LIB_CTX *ctx, + const char *propq); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, + int passlen, OSSL_LIB_CTX *ctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen, + OSSL_LIB_CTX *ctx, + const char *propq); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +X509_SIG *PKCS8_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, + OSSL_LIB_CTX *ctx, const char *propq); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags, + OSSL_LIB_CTX *ctx, const char *propq); + +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, + const unsigned char *bytes, int len); +int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, + const unsigned char *bytes, int len); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf); +void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf, + OSSL_LIB_CTX *libctx, + const char *propq); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf, + OSSL_LIB_CTX *ctx, + const char *propq); +PKCS12 *PKCS12_init(int mode); +PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_asc_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); +PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype); +PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass); +PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, + int nid_type, const unsigned char *value, int len); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); +PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, + OSSL_LIB_CTX *ctx, const char *propq); + +int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, const PKCS12 *p12); +#endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +#ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +#endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs12err.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs12err.h new file mode 100644 index 0000000..2ad38f8 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs12err.h @@ -0,0 +1,44 @@ +/* + * 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_PKCS12ERR_H +#define OPENSSL_PKCS12ERR_H +#pragma once + +#include +#include +#include + +/* + * PKCS12 reason codes. + */ +#define PKCS12_R_CALLBACK_FAILED 115 +#define PKCS12_R_CANT_PACK_STRUCTURE 100 +#define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 +#define PKCS12_R_DECODE_ERROR 101 +#define PKCS12_R_ENCODE_ERROR 102 +#define PKCS12_R_ENCRYPT_ERROR 103 +#define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 +#define PKCS12_R_INVALID_NULL_ARGUMENT 104 +#define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 +#define PKCS12_R_INVALID_TYPE 112 +#define PKCS12_R_IV_GEN_ERROR 106 +#define PKCS12_R_KEY_GEN_ERROR 107 +#define PKCS12_R_MAC_ABSENT 108 +#define PKCS12_R_MAC_GENERATION_ERROR 109 +#define PKCS12_R_MAC_SETUP_ERROR 110 +#define PKCS12_R_MAC_STRING_SET_ERROR 111 +#define PKCS12_R_MAC_VERIFY_FAILURE 113 +#define PKCS12_R_PARSE_ERROR 114 +#define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 +#define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +#define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs7.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs7.h new file mode 100644 index 0000000..e8a41b4 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs7.h @@ -0,0 +1,435 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/pkcs7.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS7_H +#define OPENSSL_PKCS7_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS7_H +#endif + +#include +#include +#include + +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct PKCS7_CTX_st { + OSSL_LIB_CTX *libctx; + char *propq; +} PKCS7_CTX; + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; /* confusing name, actually used for signing */ + ASN1_OCTET_STRING *enc_digest; /* confusing name, actually signature */ + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; + const PKCS7_CTX *ctx; +} PKCS7_SIGNER_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) +#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) +#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) +#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) +#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) +#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) +#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ + const PKCS7_CTX *ctx; +} PKCS7_RECIP_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) +#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) +#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) +#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) +#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) +#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) +#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; + const PKCS7_CTX *ctx; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +#define PKCS7_S_HEADER 0 +#define PKCS7_S_BODY 1 +#define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; + PKCS7_CTX ctx; +} PKCS7; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) +#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) +#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) +#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) +#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) +#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) +#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_freefunc_type(freefunc)) +#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) +#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) +#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) +#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) +#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) + +/* clang-format on */ + +#define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +#define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +#define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +#define PKCS7_get_attributes(si) ((si)->unauth_attr) + +#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +#define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +#define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +#define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +#define PKCS7_set_detached(p, v) \ + PKCS7_ctrl(p, PKCS7_OP_SET_DETACHED_SIGNATURE, v, NULL) +#define PKCS7_get_detached(p) \ + PKCS7_ctrl(p, PKCS7_OP_GET_DETACHED_SIGNATURE, 0, NULL) + +#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +#define PKCS7_TEXT 0x1 +#define PKCS7_NOCERTS 0x2 +#define PKCS7_NOSIGS 0x4 +#define PKCS7_NOCHAIN 0x8 +#define PKCS7_NOINTERN 0x10 +#define PKCS7_NOVERIFY 0x20 +#define PKCS7_DETACHED 0x40 +#define PKCS7_BINARY 0x80 +#define PKCS7_NOATTR 0x100 +#define PKCS7_NOSMIMECAP 0x200 +#define PKCS7_NOOLDMIMETYPE 0x400 +#define PKCS7_CRLFEOL 0x800 +#define PKCS7_STREAM 0x1000 +#define PKCS7_NOCRL 0x2000 +#define PKCS7_PARTIAL 0x4000 +#define PKCS7_REUSE_DIGEST 0x8000 +#define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +#define SMIME_TEXT PKCS7_TEXT +#define SMIME_NOCERTS PKCS7_NOCERTS +#define SMIME_NOSIGS PKCS7_NOSIGS +#define SMIME_NOCHAIN PKCS7_NOCHAIN +#define SMIME_NOINTERN PKCS7_NOINTERN +#define SMIME_NOVERIFY PKCS7_NOVERIFY +#define SMIME_DETACHED PKCS7_DETACHED +#define SMIME_BINARY PKCS7_BINARY +#define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +#define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +#ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, const PKCS7 *p7); +#endif +DECLARE_ASN1_DUP_FUNCTION(PKCS7) +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, const PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) +PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_type_is_other(PKCS7 *p7); +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *signer); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_get_octet_string(PKCS7 *p7); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(const PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(const PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); +PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, int flags, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7_ex(BIO *bio, BIO **bcont, PKCS7 **p7); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs7err.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs7err.h new file mode 100644 index 0000000..358fe10 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/pkcs7err.h @@ -0,0 +1,61 @@ +/* + * 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_PKCS7ERR_H +#define OPENSSL_PKCS7ERR_H +#pragma once + +#include +#include +#include + +/* + * PKCS7 reason codes. + */ +#define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 +#define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 +#define PKCS7_R_CIPHER_NOT_INITIALIZED 116 +#define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 +#define PKCS7_R_CTRL_ERROR 152 +#define PKCS7_R_DECRYPT_ERROR 119 +#define PKCS7_R_DIGEST_FAILURE 101 +#define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 +#define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 +#define PKCS7_R_ERROR_ADDING_RECIPIENT 120 +#define PKCS7_R_ERROR_SETTING_CIPHER 121 +#define PKCS7_R_INVALID_NULL_POINTER 143 +#define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +#define PKCS7_R_NO_CONTENT 122 +#define PKCS7_R_NO_DEFAULT_DIGEST 151 +#define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +#define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +#define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +#define PKCS7_R_NO_SIGNERS 142 +#define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 +#define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 +#define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 +#define PKCS7_R_PKCS7_DATASIGN 145 +#define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 +#define PKCS7_R_SIGNATURE_FAILURE 105 +#define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 +#define PKCS7_R_SIGNING_CTRL_FAILURE 147 +#define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 +#define PKCS7_R_SMIME_TEXT_ERROR 129 +#define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 +#define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 +#define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 +#define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 +#define PKCS7_R_UNKNOWN_OPERATION 110 +#define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 +#define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 +#define PKCS7_R_WRONG_CONTENT_TYPE 113 +#define PKCS7_R_WRONG_PKCS7_TYPE 114 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/prov_ssl.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/prov_ssl.h new file mode 100644 index 0000000..269c3b8 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/prov_ssl.h @@ -0,0 +1,38 @@ +/* + * Copyright 2021-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_PROV_SSL_H +#define OPENSSL_PROV_SSL_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* SSL/TLS related defines useful to providers */ + +#define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* SSL/TLS uses a 2 byte unsigned version number */ +#define SSL3_VERSION 0x0300 +#define TLS1_VERSION 0x0301 +#define TLS1_1_VERSION 0x0302 +#define TLS1_2_VERSION 0x0303 +#define TLS1_3_VERSION 0x0304 +#define DTLS1_VERSION 0xFEFF +#define DTLS1_2_VERSION 0xFEFD +#define DTLS1_BAD_VER 0x0100 + +/* QUIC uses a 4 byte unsigned version number */ +#define OSSL_QUIC1_VERSION 0x0000001 + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_PROV_SSL_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/proverr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/proverr.h new file mode 100644 index 0000000..a82b8e4 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/proverr.h @@ -0,0 +1,169 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_PROVERR_H +#define OPENSSL_PROVERR_H +#pragma once + +#include +#include +#include + +/* + * PROV reason codes. + */ +#define PROV_R_ADDITIONAL_INPUT_TOO_LONG 184 +#define PROV_R_ALGORITHM_MISMATCH 173 +#define PROV_R_ALREADY_INSTANTIATED 185 +#define PROV_R_BAD_DECRYPT 100 +#define PROV_R_BAD_ENCODING 141 +#define PROV_R_BAD_LENGTH 142 +#define PROV_R_BAD_TLS_CLIENT_VERSION 161 +#define PROV_R_BN_ERROR 160 +#define PROV_R_CIPHER_OPERATION_FAILED 102 +#define PROV_R_COFACTOR_REQUIRED 236 +#define PROV_R_DERIVATION_FUNCTION_INIT_FAILED 205 +#define PROV_R_DIGEST_NOT_ALLOWED 174 +#define PROV_R_EMS_NOT_ENABLED 233 +#define PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS 244 +#define PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK 186 +#define PROV_R_ERROR_INSTANTIATING_DRBG 188 +#define PROV_R_ERROR_RETRIEVING_ENTROPY 189 +#define PROV_R_ERROR_RETRIEVING_NONCE 190 +#define PROV_R_FAILED_DURING_DERIVATION 164 +#define PROV_R_FAILED_TO_CREATE_LOCK 180 +#define PROV_R_FAILED_TO_DECRYPT 162 +#define PROV_R_FAILED_TO_GENERATE_KEY 121 +#define PROV_R_FAILED_TO_GET_PARAMETER 103 +#define PROV_R_FAILED_TO_SET_PARAMETER 104 +#define PROV_R_FAILED_TO_SIGN 175 +#define PROV_R_FINAL_CALL_OUT_OF_ORDER 237 +#define PROV_R_FIPS_MODULE_CONDITIONAL_ERROR 227 +#define PROV_R_FIPS_MODULE_ENTERING_ERROR_STATE 224 +#define PROV_R_FIPS_MODULE_IMPORT_PCT_ERROR 253 +#define PROV_R_FIPS_MODULE_IN_ERROR_STATE 225 +#define PROV_R_GENERATE_ERROR 191 +#define PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 165 +#define PROV_R_INDICATOR_INTEGRITY_FAILURE 210 +#define PROV_R_INIT_CALL_OUT_OF_ORDER 238 +#define PROV_R_INSUFFICIENT_DRBG_STRENGTH 181 +#define PROV_R_INVALID_AAD 108 +#define PROV_R_INVALID_AEAD 231 +#define PROV_R_INVALID_CONFIG_DATA 211 +#define PROV_R_INVALID_CONSTANT_LENGTH 157 +#define PROV_R_INVALID_CURVE 176 +#define PROV_R_INVALID_CUSTOM_LENGTH 111 +#define PROV_R_INVALID_DATA 115 +#define PROV_R_INVALID_DIGEST 122 +#define PROV_R_INVALID_DIGEST_LENGTH 166 +#define PROV_R_INVALID_DIGEST_SIZE 218 +#define PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION 243 +#define PROV_R_INVALID_INPUT_LENGTH 230 +#define PROV_R_INVALID_ITERATION_COUNT 123 +#define PROV_R_INVALID_IV_LENGTH 109 +#define PROV_R_INVALID_KDF 232 +#define PROV_R_INVALID_KEY 158 +#define PROV_R_INVALID_KEY_LENGTH 105 +#define PROV_R_INVALID_MAC 151 +#define PROV_R_INVALID_MEMORY_SIZE 235 +#define PROV_R_INVALID_MGF1_MD 167 +#define PROV_R_INVALID_MODE 125 +#define PROV_R_INVALID_OUTPUT_LENGTH 217 +#define PROV_R_INVALID_PADDING_MODE 168 +#define PROV_R_INVALID_PREHASHED_DIGEST_LENGTH 241 +#define PROV_R_INVALID_PUBINFO 198 +#define PROV_R_INVALID_SALT_LENGTH 112 +#define PROV_R_INVALID_SEED_LENGTH 154 +#define PROV_R_INVALID_SIGNATURE_SIZE 179 +#define PROV_R_INVALID_STATE 212 +#define PROV_R_INVALID_TAG 110 +#define PROV_R_INVALID_TAG_LENGTH 118 +#define PROV_R_INVALID_THREAD_POOL_SIZE 234 +#define PROV_R_INVALID_UKM_LENGTH 200 +#define PROV_R_INVALID_X931_DIGEST 170 +#define PROV_R_IN_ERROR_STATE 192 +#define PROV_R_KEY_SETUP_FAILED 101 +#define PROV_R_KEY_SIZE_TOO_SMALL 171 +#define PROV_R_LENGTH_TOO_LARGE 202 +#define PROV_R_MISMATCHING_DOMAIN_PARAMETERS 203 +#define PROV_R_MISSING_CEK_ALG 144 +#define PROV_R_MISSING_CIPHER 155 +#define PROV_R_MISSING_CONFIG_DATA 213 +#define PROV_R_MISSING_CONSTANT 156 +#define PROV_R_MISSING_KEY 128 +#define PROV_R_MISSING_MAC 150 +#define PROV_R_MISSING_MESSAGE_DIGEST 129 +#define PROV_R_MISSING_OID 209 +#define PROV_R_MISSING_PASS 130 +#define PROV_R_MISSING_SALT 131 +#define PROV_R_MISSING_SECRET 132 +#define PROV_R_MISSING_SEED 140 +#define PROV_R_MISSING_SESSION_ID 133 +#define PROV_R_MISSING_TYPE 134 +#define PROV_R_MISSING_XCGHASH 135 +#define PROV_R_ML_DSA_NO_FORMAT 245 +#define PROV_R_ML_KEM_NO_FORMAT 246 +#define PROV_R_MODULE_INTEGRITY_FAILURE 214 +#define PROV_R_NOT_A_PRIVATE_KEY 221 +#define PROV_R_NOT_A_PUBLIC_KEY 220 +#define PROV_R_NOT_INSTANTIATED 193 +#define PROV_R_NOT_PARAMETERS 226 +#define PROV_R_NOT_SUPPORTED 136 +#define PROV_R_NOT_XOF_OR_INVALID_LENGTH 113 +#define PROV_R_NO_INSTANCE_ALLOWED 242 +#define PROV_R_NO_KEY_SET 114 +#define PROV_R_NO_PARAMETERS_SET 177 +#define PROV_R_NULL_LENGTH_POINTER 247 +#define PROV_R_NULL_OUTPUT_BUFFER 248 +#define PROV_R_ONESHOT_CALL_OUT_OF_ORDER 239 +#define PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 178 +#define PROV_R_OUTPUT_BUFFER_TOO_SMALL 106 +#define PROV_R_PARENT_CANNOT_GENERATE_RANDOM_NUMBERS 228 +#define PROV_R_PARENT_CANNOT_SUPPLY_ENTROPY_SEED 187 +#define PROV_R_PARENT_LOCKING_NOT_ENABLED 182 +#define PROV_R_PARENT_STRENGTH_TOO_WEAK 194 +#define PROV_R_PATH_MUST_BE_ABSOLUTE 219 +#define PROV_R_PERSONALISATION_STRING_TOO_LONG 195 +#define PROV_R_PSS_SALTLEN_TOO_SMALL 172 +#define PROV_R_REPEATED_PARAMETER 252 +#define PROV_R_REQUEST_TOO_LARGE_FOR_DRBG 196 +#define PROV_R_REQUIRE_CTR_MODE_CIPHER 206 +#define PROV_R_RESEED_ERROR 197 +#define PROV_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 222 +#define PROV_R_SEED_SOURCES_MUST_NOT_HAVE_A_PARENT 229 +#define PROV_R_SELF_TEST_KAT_FAILURE 215 +#define PROV_R_SELF_TEST_POST_FAILURE 216 +#define PROV_R_TAG_NOT_NEEDED 120 +#define PROV_R_TAG_NOT_SET 119 +#define PROV_R_TOO_MANY_RECORDS 126 +#define PROV_R_UNABLE_TO_FIND_CIPHERS 207 +#define PROV_R_UNABLE_TO_GET_PARENT_STRENGTH 199 +#define PROV_R_UNABLE_TO_GET_PASSPHRASE 159 +#define PROV_R_UNABLE_TO_INITIALISE_CIPHERS 208 +#define PROV_R_UNABLE_TO_LOAD_SHA256 147 +#define PROV_R_UNABLE_TO_LOCK_PARENT 201 +#define PROV_R_UNABLE_TO_RESEED 204 +#define PROV_R_UNEXPECTED_KEY_PARAMETERS 249 +#define PROV_R_UNSUPPORTED_CEK_ALG 145 +#define PROV_R_UNSUPPORTED_KEY_SIZE 153 +#define PROV_R_UNSUPPORTED_MAC_TYPE 137 +#define PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS 152 +#define PROV_R_UNSUPPORTED_SELECTION 250 +#define PROV_R_UPDATE_CALL_OUT_OF_ORDER 240 +#define PROV_R_URI_AUTHORITY_UNSUPPORTED 223 +#define PROV_R_VALUE_ERROR 138 +#define PROV_R_WRONG_CIPHERTEXT_SIZE 251 +#define PROV_R_WRONG_FINAL_BLOCK_LENGTH 107 +#define PROV_R_WRONG_OUTPUT_BUFFER_SIZE 139 +#define PROV_R_XOF_DIGESTS_NOT_ALLOWED 183 +#define PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE 148 +#define PROV_R_XTS_DUPLICATED_KEYS 149 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/provider.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/provider.h new file mode 100644 index 0000000..c34beea --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/provider.h @@ -0,0 +1,94 @@ +/* + * Copyright 2019-2025 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_PROVIDER_H +#define OPENSSL_PROVIDER_H +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Set and Get a library context search path */ +int OSSL_PROVIDER_set_default_search_path(OSSL_LIB_CTX *, const char *path); +const char *OSSL_PROVIDER_get0_default_search_path(OSSL_LIB_CTX *libctx); + +/* Load and unload a provider */ +OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *, const char *name); +OSSL_PROVIDER *OSSL_PROVIDER_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params); +OSSL_PROVIDER *OSSL_PROVIDER_try_load(OSSL_LIB_CTX *, const char *name, + int retain_fallbacks); +OSSL_PROVIDER *OSSL_PROVIDER_try_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params, + int retain_fallbacks); +int OSSL_PROVIDER_unload(OSSL_PROVIDER *prov); +int OSSL_PROVIDER_available(OSSL_LIB_CTX *, const char *name); +int OSSL_PROVIDER_do_all(OSSL_LIB_CTX *ctx, + int (*cb)(OSSL_PROVIDER *provider, void *cbdata), + void *cbdata); + +const OSSL_PARAM *OSSL_PROVIDER_gettable_params(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_params(const OSSL_PROVIDER *prov, OSSL_PARAM params[]); +int OSSL_PROVIDER_self_test(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_capabilities(const OSSL_PROVIDER *prov, + const char *capability, + OSSL_CALLBACK *cb, + void *arg); + +/*- + * Provider configuration parameters are normally set in the configuration file, + * but can also be set early in the main program before a provider is in use by + * multiple threads. + * + * Only UTF8-string values are supported. + */ +int OSSL_PROVIDER_add_conf_parameter(OSSL_PROVIDER *prov, const char *name, + const char *value); +/* + * Retrieves any of the requested configuration parameters for the given + * provider that were set in the configuration file or via the above + * OSSL_PROVIDER_add_parameter() function. + * + * The |params| array elements MUST have type OSSL_PARAM_UTF8_PTR, values are + * returned by reference, not as copies. + */ +int OSSL_PROVIDER_get_conf_parameters(const OSSL_PROVIDER *prov, + OSSL_PARAM params[]); +/* + * Parse a provider configuration parameter as a boolean value, + * or return a default value if unable to retrieve the parameter. + * Values like "1", "yes", "true", ... are true (nonzero). + * Values like "0", "no", "false", ... are false (zero). + */ +int OSSL_PROVIDER_conf_get_bool(const OSSL_PROVIDER *prov, + const char *name, int defval); + +const OSSL_ALGORITHM *OSSL_PROVIDER_query_operation(const OSSL_PROVIDER *prov, + int operation_id, + int *no_cache); +void OSSL_PROVIDER_unquery_operation(const OSSL_PROVIDER *prov, + int operation_id, const OSSL_ALGORITHM *algs); +void *OSSL_PROVIDER_get0_provider_ctx(const OSSL_PROVIDER *prov); +const OSSL_DISPATCH *OSSL_PROVIDER_get0_dispatch(const OSSL_PROVIDER *prov); + +/* Add a built in providers */ +int OSSL_PROVIDER_add_builtin(OSSL_LIB_CTX *, const char *name, + OSSL_provider_init_fn *init_fn); + +/* Information */ +const char *OSSL_PROVIDER_get0_name(const OSSL_PROVIDER *prov); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/quic.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/quic.h new file mode 100644 index 0000000..657969b --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/quic.h @@ -0,0 +1,75 @@ +/* + * Copyright 2022-2025 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_QUIC_H +#define OPENSSL_QUIC_H +#pragma once + +#include +#include + +#ifndef OPENSSL_NO_QUIC + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Method used for non-thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_method(void); + +/* + * Method used for thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_thread_method(void); + +/* + * QUIC transport error codes (RFC 9000 s. 20.1) + */ +#define OSSL_QUIC_ERR_NO_ERROR 0x00 +#define OSSL_QUIC_ERR_INTERNAL_ERROR 0x01 +#define OSSL_QUIC_ERR_CONNECTION_REFUSED 0x02 +#define OSSL_QUIC_ERR_FLOW_CONTROL_ERROR 0x03 +#define OSSL_QUIC_ERR_STREAM_LIMIT_ERROR 0x04 +#define OSSL_QUIC_ERR_STREAM_STATE_ERROR 0x05 +#define OSSL_QUIC_ERR_FINAL_SIZE_ERROR 0x06 +#define OSSL_QUIC_ERR_FRAME_ENCODING_ERROR 0x07 +#define OSSL_QUIC_ERR_TRANSPORT_PARAMETER_ERROR 0x08 +#define OSSL_QUIC_ERR_CONNECTION_ID_LIMIT_ERROR 0x09 +#define OSSL_QUIC_ERR_PROTOCOL_VIOLATION 0x0A +#define OSSL_QUIC_ERR_INVALID_TOKEN 0x0B +#define OSSL_QUIC_ERR_APPLICATION_ERROR 0x0C +#define OSSL_QUIC_ERR_CRYPTO_BUFFER_EXCEEDED 0x0D +#define OSSL_QUIC_ERR_KEY_UPDATE_ERROR 0x0E +#define OSSL_QUIC_ERR_AEAD_LIMIT_REACHED 0x0F +#define OSSL_QUIC_ERR_NO_VIABLE_PATH 0x10 + +/* Inclusive range for handshake-specific errors. */ +#define OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN 0x0100 +#define OSSL_QUIC_ERR_CRYPTO_ERR_END 0x01FF + +#define OSSL_QUIC_ERR_CRYPTO_ERR(X) \ + (OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN + (X)) + +/* Local errors. */ +#define OSSL_QUIC_LOCAL_ERR_IDLE_TIMEOUT \ + ((uint64_t)0xFFFFFFFFFFFFFFFFULL) + +/* + * Method used for QUIC server operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_server_method(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_NO_QUIC */ +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rand.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rand.h new file mode 100644 index 0000000..7272309 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rand.h @@ -0,0 +1,133 @@ +/* + * Copyright 1995-2025 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_RAND_H +#define OPENSSL_RAND_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RAND_H +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Default security strength (in the sense of [NIST SP 800-90Ar1]) + * + * NIST SP 800-90Ar1 supports the strength of the DRBG being smaller than that + * of the cipher by collecting less entropy. The current DRBG implementation + * does not take RAND_DRBG_STRENGTH into account and sets the strength of the + * DRBG to that of the cipher. + */ +#define RAND_DRBG_STRENGTH 256 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +struct rand_meth_st { + int (*seed)(const void *buf, int num); + int (*bytes)(unsigned char *buf, int num); + void (*cleanup)(void); + int (*add)(const void *buf, int num, double randomness); + int (*pseudorand)(unsigned char *buf, int num); + int (*status)(void); +}; + +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_method(const RAND_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RAND_METHOD *RAND_get_rand_method(void); +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_engine(ENGINE *engine); +#endif + +OSSL_DEPRECATEDIN_3_0 RAND_METHOD *RAND_OpenSSL(void); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define RAND_cleanup() \ + while (0) \ + continue +#endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); + +/* + * Equivalent of RAND_priv_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_priv_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +/* + * Equivalent of RAND_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 int RAND_pseudo_bytes(unsigned char *buf, int num); +#endif + +EVP_RAND_CTX *RAND_get0_primary(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_public(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_private(OSSL_LIB_CTX *ctx); +int RAND_set0_public(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); +int RAND_set0_private(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); + +int RAND_set_DRBG_type(OSSL_LIB_CTX *ctx, const char *drbg, const char *propq, + const char *cipher, const char *digest); +int RAND_set_seed_source_type(OSSL_LIB_CTX *ctx, const char *seed, + const char *propq); + +void RAND_seed(const void *buf, int num); +void RAND_keep_random_devices_open(int keep); + +#if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +#endif + void RAND_add(const void *buf, int num, double randomness); +int RAND_load_file(const char *file, long max_bytes); +int RAND_write_file(const char *file); +const char *RAND_file_name(char *file, size_t num); +int RAND_status(void); + +#ifndef OPENSSL_NO_EGD +int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); +int RAND_egd(const char *path); +int RAND_egd_bytes(const char *path, int bytes); +#endif + +int RAND_poll(void); + +#if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H)) +/* application has to include in order to use these */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void RAND_screen(void); +OSSL_DEPRECATEDIN_1_1_0 int RAND_event(UINT, WPARAM, LPARAM); +#endif +#endif + +int RAND_set1_random_provider(OSSL_LIB_CTX *ctx, OSSL_PROVIDER *p); + +/* Which parameter to provider_random call */ +#define OSSL_PROV_RANDOM_PUBLIC 0 +#define OSSL_PROV_RANDOM_PRIVATE 1 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/randerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/randerr.h new file mode 100644 index 0000000..6107cdd --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/randerr.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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_RANDERR_H +#define OPENSSL_RANDERR_H +#pragma once + +#include +#include +#include + +/* + * RAND reason codes. + */ +#define RAND_R_ADDITIONAL_INPUT_TOO_LONG 102 +#define RAND_R_ALREADY_INSTANTIATED 103 +#define RAND_R_ARGUMENT_OUT_OF_RANGE 105 +#define RAND_R_CANNOT_OPEN_FILE 121 +#define RAND_R_DRBG_ALREADY_INITIALIZED 129 +#define RAND_R_DRBG_NOT_INITIALISED 104 +#define RAND_R_ENTROPY_INPUT_TOO_LONG 106 +#define RAND_R_ENTROPY_OUT_OF_RANGE 124 +#define RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED 127 +#define RAND_R_ERROR_INITIALISING_DRBG 107 +#define RAND_R_ERROR_INSTANTIATING_DRBG 108 +#define RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 109 +#define RAND_R_ERROR_RETRIEVING_ENTROPY 110 +#define RAND_R_ERROR_RETRIEVING_NONCE 111 +#define RAND_R_FAILED_TO_CREATE_LOCK 126 +#define RAND_R_FUNC_NOT_IMPLEMENTED 101 +#define RAND_R_FWRITE_ERROR 123 +#define RAND_R_GENERATE_ERROR 112 +#define RAND_R_INSUFFICIENT_DRBG_STRENGTH 139 +#define RAND_R_INTERNAL_ERROR 113 +#define RAND_R_INVALID_PROPERTY_QUERY 137 +#define RAND_R_IN_ERROR_STATE 114 +#define RAND_R_NOT_A_REGULAR_FILE 122 +#define RAND_R_NOT_INSTANTIATED 115 +#define RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED 128 +#define RAND_R_PARENT_LOCKING_NOT_ENABLED 130 +#define RAND_R_PARENT_STRENGTH_TOO_WEAK 131 +#define RAND_R_PERSONALISATION_STRING_TOO_LONG 116 +#define RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED 133 +#define RAND_R_PRNG_NOT_SEEDED 100 +#define RAND_R_RANDOM_POOL_IS_EMPTY 142 +#define RAND_R_RANDOM_POOL_OVERFLOW 125 +#define RAND_R_RANDOM_POOL_UNDERFLOW 134 +#define RAND_R_REQUEST_TOO_LARGE_FOR_DRBG 117 +#define RAND_R_RESEED_ERROR 118 +#define RAND_R_SELFTEST_FAILURE 119 +#define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135 +#define RAND_R_TOO_MUCH_NONCE_REQUESTED 136 +#define RAND_R_UNABLE_TO_CREATE_DRBG 143 +#define RAND_R_UNABLE_TO_FETCH_DRBG 144 +#define RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER 141 +#define RAND_R_UNABLE_TO_GET_PARENT_STRENGTH 138 +#define RAND_R_UNABLE_TO_LOCK_PARENT 140 +#define RAND_R_UNSUPPORTED_DRBG_FLAGS 132 +#define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc2.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc2.h new file mode 100644 index 0000000..7da28f7 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc2.h @@ -0,0 +1,68 @@ +/* + * 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_RC2_H +#define OPENSSL_RC2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC2_H +#endif + +#include + +#ifndef OPENSSL_NO_RC2 +#ifdef __cplusplus +extern "C" { +#endif + +#define RC2_BLOCK 8 +#define RC2_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef unsigned int RC2_INT; + +#define RC2_ENCRYPT 1 +#define RC2_DECRYPT 0 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void RC2_set_key(RC2_KEY *key, int len, + const unsigned char *data, int bits); +OSSL_DEPRECATEDIN_3_0 void RC2_ecb_encrypt(const unsigned char *in, + unsigned char *out, RC2_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_encrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_decrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num, int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc4.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc4.h new file mode 100644 index 0000000..92dce0c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc4.h @@ -0,0 +1,47 @@ +/* + * 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_RC4_H +#define OPENSSL_RC4_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC4_H +#endif + +#include + +#ifndef OPENSSL_NO_RC4 +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *RC4_options(void); +OSSL_DEPRECATEDIN_3_0 void RC4_set_key(RC4_KEY *key, int len, + const unsigned char *data); +OSSL_DEPRECATEDIN_3_0 void RC4(RC4_KEY *key, size_t len, + const unsigned char *indata, + unsigned char *outdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc5.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc5.h new file mode 100644 index 0000000..2e91e98 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rc5.h @@ -0,0 +1,79 @@ +/* + * 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_RC5_H +#define OPENSSL_RC5_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC5_H +#endif + +#include + +#ifndef OPENSSL_NO_RC5 +#ifdef __cplusplus +extern "C" { +#endif + +#define RC5_32_BLOCK 8 +#define RC5_32_KEY_LENGTH 16 /* This is a default, max is 255 */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define RC5_ENCRYPT 1 +#define RC5_DECRYPT 0 + +#define RC5_32_INT unsigned int + +/* + * This are the only values supported. Tweak the code if you want more The + * most supported modes will be RC5-32/12/16 RC5-32/16/8 + */ +#define RC5_8_ROUNDS 8 +#define RC5_12_ROUNDS 12 +#define RC5_16_ROUNDS 16 + +typedef struct rc5_key_st { + /* Number of rounds */ + int rounds; + RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)]; +} RC5_32_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RC5_32_set_key(RC5_32_KEY *key, int len, + const unsigned char *data, + int rounds); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ecb_encrypt(const unsigned char *in, + unsigned char *out, + RC5_32_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *schedule, + unsigned char *ivec, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *schedule, + unsigned char *ivec, int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ripemd.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ripemd.h new file mode 100644 index 0000000..a72d1da --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ripemd.h @@ -0,0 +1,59 @@ +/* + * 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_RIPEMD_H +#define OPENSSL_RIPEMD_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RIPEMD_H +#endif + +#include + +#ifndef OPENSSL_NO_RMD160 +#include +#include + +#define RIPEMD160_DIGEST_LENGTH 20 + +#ifdef __cplusplus +extern "C" { +#endif +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define RIPEMD160_LONG unsigned int + +#define RIPEMD160_CBLOCK 64 +#define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK / 4) + +typedef struct RIPEMD160state_st { + RIPEMD160_LONG A, B, C, D, E; + RIPEMD160_LONG Nl, Nh; + RIPEMD160_LONG data[RIPEMD160_LBLOCK]; + unsigned int num; +} RIPEMD160_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Init(RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *RIPEMD160(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void RIPEMD160_Transform(RIPEMD160_CTX *c, + const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rsa.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rsa.h new file mode 100644 index 0000000..08335e0 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rsa.h @@ -0,0 +1,614 @@ +/* + * Copyright 1995-2026 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_RSA_H +#define OPENSSL_RSA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RSA_H +#endif + +#include + +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_RSA_MAX_MODULUS_BITS +#define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +#endif + +#define RSA_3 0x3L +#define RSA_F4 0x10001L + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +#define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 2048 + +#ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +#define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +#endif + +/* exponent limit enforced for "large" modulus only */ +#ifndef OPENSSL_RSA_MAX_PUBEXP_BITS +#define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +#endif +/* based on RFC 8017 appendix A.1.2 */ +#define RSA_ASN1_VERSION_DEFAULT 0 +#define RSA_ASN1_VERSION_MULTI 1 + +#define RSA_DEFAULT_PRIME_NUM 2 + +#define RSA_METHOD_FLAG_NO_CHECK 0x0001 +#define RSA_FLAG_CACHE_PUBLIC 0x0002 +#define RSA_FLAG_CACHE_PRIVATE 0x0004 +#define RSA_FLAG_BLINDING 0x0008 +#define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +#define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +#define RSA_FLAG_NO_BLINDING 0x0080 +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define RSA_FLAG_NO_CONSTTIME 0x0000 +#endif +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +#ifndef OPENSSL_NO_DEPRECATED_0_9_8 +#define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +#endif + +/*- + * New with 3.0: use part of the flags to denote exact type of RSA key, + * some of which are limited to specific signature and encryption schemes. + * These different types share the same RSA structure, but indicate the + * use of certain fields in that structure. + * Currently known are: + * RSA - this is the "normal" unlimited RSA structure (typenum 0) + * RSASSA-PSS - indicates that the PSS parameters are used. + * RSAES-OAEP - no specific field used for the moment, but OAEP padding + * is expected. (currently unused) + * + * 4 bits allow for 16 types + */ +#define RSA_FLAG_TYPE_MASK 0xF000 +#define RSA_FLAG_TYPE_RSA 0x0000 +#define RSA_FLAG_TYPE_RSASSAPSS 0x1000 +#define RSA_FLAG_TYPE_RSAESOAEP 0x2000 + +int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad_mode); +int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad_mode); + +int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen); + +int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int bits); +int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes); +int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +#endif + +/* Salt length matches digest */ +#define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +#define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +#define RSA_PSS_SALTLEN_MAX -3 +/* Auto-detect on verify, set salt length to min(maximum possible, digest + * length) on sign */ +#define RSA_PSS_SALTLEN_AUTO_DIGEST_MAX -4 +/* Old compatible max salt length for sign only */ +#define RSA_PSS_SALTLEN_MAX_SIGN -2 + +int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md_name(EVP_PKEY_CTX *ctx, + const char *mdname); + +int EVP_PKEY_CTX_set_rsa_pss_keygen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_md_name(EVP_PKEY_CTX *ctx, + const char *mdname, + const char *mdprops); + +int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, void *label, int llen); +int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); + +#define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +#define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +#define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +#define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +#define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +#define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +#define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +#define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14) + +#define RSA_PKCS1_PADDING 1 +#define RSA_NO_PADDING 3 +#define RSA_PKCS1_OAEP_PADDING 4 +#define RSA_X931_PADDING 5 + +/* EVP_PKEY_ only */ +#define RSA_PKCS1_PSS_PADDING 6 +#define RSA_PKCS1_WITH_TLS_PADDING 7 + +/* internal RSA_ only */ +#define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 + +#define RSA_PKCS1_PADDING_SIZE 11 + +#define RSA_set_app_data(s, arg) RSA_set_ex_data(s, 0, arg) +#define RSA_get_app_data(s) RSA_get_ex_data(s, 0) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new(void); +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new_method(ENGINE *engine); +OSSL_DEPRECATEDIN_3_0 int RSA_bits(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_security_bits(const RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_crt_params(RSA *r, + BIGNUM *dmp1, BIGNUM *dmq1, + BIGNUM *iqmp); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_multi_prime_params(RSA *r, + BIGNUM *primes[], + BIGNUM *exps[], + BIGNUM *coeffs[], + int pnum); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, + const BIGNUM **d); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_factors(const RSA *r, + const BIGNUM **p, const BIGNUM **q); +OSSL_DEPRECATEDIN_3_0 int RSA_get_multi_prime_extra_count(const RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_get0_multi_prime_factors(const RSA *r, + const BIGNUM *primes[]); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, + const BIGNUM **dmq1, + const BIGNUM **iqmp); +OSSL_DEPRECATEDIN_3_0 +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_n(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_e(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_d(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_p(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_q(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmp1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmq1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_iqmp(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +OSSL_DEPRECATEDIN_3_0 void RSA_clear_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_test_flags(const RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_set_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_get_version(RSA *r); +OSSL_DEPRECATEDIN_3_0 ENGINE *RSA_get0_engine(const RSA *r); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +#define EVP_RSA_gen(bits) \ + EVP_PKEY_Q_keygen(NULL, NULL, "RSA", (size_t)(0 + (bits))) + +/* Deprecated version */ +#ifndef OPENSSL_NO_DEPRECATED_0_9_8 +OSSL_DEPRECATEDIN_0_9_8 RSA *RSA_generate_key(int bits, unsigned long e, void (*callback)(int, int, void *), + void *cb_arg); +#endif + +/* New version */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb); +/* Multi-prime version */ +OSSL_DEPRECATEDIN_3_0 int RSA_generate_multi_prime_key(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, + BIGNUM *q1, BIGNUM *q2, + const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, + const BIGNUM *Xq2, const BIGNUM *Xq, + const BIGNUM *e, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_generate_key_ex(RSA *rsa, int bits, + const BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 int RSA_check_key(const RSA *); +OSSL_DEPRECATEDIN_3_0 int RSA_check_key_ex(const RSA *, BN_GENCB *cb); +/* next 4 return -1 on error */ +OSSL_DEPRECATEDIN_3_0 +int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +OSSL_DEPRECATEDIN_3_0 int RSA_up_ref(RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_flags(const RSA *r); + +OSSL_DEPRECATEDIN_3_0 void RSA_set_default_method(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_null_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_method(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPrivateKey) +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) +DECLARE_ASN1_DUP_FUNCTION(RSA_PSS_PARAMS) + +struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int RSA_print_fp(FILE *fp, const RSA *r, int offset); +#endif + +OSSL_DEPRECATEDIN_3_0 int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_verify(int type, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ +OSSL_DEPRECATEDIN_3_0 +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigbuf, unsigned int siglen, + RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void RSA_blinding_off(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int PKCS1_MGF1(unsigned char *mask, long len, + const unsigned char *seed, long seedlen, + const EVP_MD *dgst); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_none(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_hash_id(int nid); + +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +#define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +OSSL_DEPRECATEDIN_3_0 int RSA_set_ex_data(RSA *r, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *RSA_get_ex_data(const RSA *r, int idx); + +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPublicKey) +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPrivateKey) + +/* + * If this flag is set the RSA 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 RSA_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 RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +#define RSA_FLAG_CHECKED 0x0800 + +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_new(const char *name, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_meth_free(RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const char *RSA_meth_get0_name(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set1_name(RSA_METHOD *meth, + const char *name); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_get_flags(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +OSSL_DEPRECATEDIN_3_0 void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set0_app_data(RSA_METHOD *meth, + void *app_data); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth))(BIGNUM *r0, + const BIGNUM *i, + RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp)(BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth))(BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp)(BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_init(const RSA_METHOD *meth))(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init)(RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_finish(const RSA_METHOD *meth))(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish)(RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_sign(const RSA_METHOD *meth))(int type, + const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, + unsigned int *siglen, + const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign)(int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_verify(const RSA_METHOD *meth))(int dtype, + const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, + const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify)(int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_keygen(const RSA_METHOD *meth))(RSA *rsa, int bits, + BIGNUM *e, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen)(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth))(RSA *rsa, + int bits, + int primes, + BIGNUM *e, + BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen)(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rsaerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rsaerr.h new file mode 100644 index 0000000..8432f5f --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/rsaerr.h @@ -0,0 +1,105 @@ +/* + * 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_RSAERR_H +#define OPENSSL_RSAERR_H +#pragma once + +#include +#include +#include + +/* + * RSA reason codes. + */ +#define RSA_R_ALGORITHM_MISMATCH 100 +#define RSA_R_BAD_E_VALUE 101 +#define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 +#define RSA_R_BAD_PAD_BYTE_COUNT 103 +#define RSA_R_BAD_SIGNATURE 104 +#define RSA_R_BLOCK_TYPE_IS_NOT_01 106 +#define RSA_R_BLOCK_TYPE_IS_NOT_02 107 +#define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 +#define RSA_R_DATA_TOO_LARGE 109 +#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 +#define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 +#define RSA_R_DATA_TOO_SMALL 111 +#define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 +#define RSA_R_DIGEST_DOES_NOT_MATCH 158 +#define RSA_R_DIGEST_NOT_ALLOWED 145 +#define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 +#define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 +#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 +#define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 +#define RSA_R_FIRST_OCTET_INVALID 133 +#define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 +#define RSA_R_INVALID_DIGEST 157 +#define RSA_R_INVALID_DIGEST_LENGTH 143 +#define RSA_R_INVALID_HEADER 137 +#define RSA_R_INVALID_KEYPAIR 171 +#define RSA_R_INVALID_KEY_LENGTH 173 +#define RSA_R_INVALID_LABEL 160 +#define RSA_R_INVALID_LENGTH 181 +#define RSA_R_INVALID_MESSAGE_LENGTH 131 +#define RSA_R_INVALID_MGF1_MD 156 +#define RSA_R_INVALID_MODULUS 174 +#define RSA_R_INVALID_MULTI_PRIME_KEY 167 +#define RSA_R_INVALID_OAEP_PARAMETERS 161 +#define RSA_R_INVALID_PADDING 138 +#define RSA_R_INVALID_PADDING_MODE 141 +#define RSA_R_INVALID_PSS_PARAMETERS 149 +#define RSA_R_INVALID_PSS_SALTLEN 146 +#define RSA_R_INVALID_REQUEST 175 +#define RSA_R_INVALID_SALT_LENGTH 150 +#define RSA_R_INVALID_STRENGTH 176 +#define RSA_R_INVALID_TRAILER 139 +#define RSA_R_INVALID_X931_DIGEST 142 +#define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 +#define RSA_R_KEY_PRIME_NUM_INVALID 165 +#define RSA_R_KEY_SIZE_TOO_SMALL 120 +#define RSA_R_LAST_OCTET_INVALID 134 +#define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +#define RSA_R_MISSING_PRIVATE_KEY 179 +#define RSA_R_MODULUS_TOO_LARGE 105 +#define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +#define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +#define RSA_R_MP_R_NOT_PRIME 170 +#define RSA_R_NO_PUBLIC_EXPONENT 140 +#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +#define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +#define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +#define RSA_R_OAEP_DECODING_ERROR 121 +#define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 +#define RSA_R_PADDING_CHECK_FAILED 114 +#define RSA_R_PAIRWISE_TEST_FAILURE 177 +#define RSA_R_PKCS_DECODING_ERROR 159 +#define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +#define RSA_R_PUB_EXPONENT_OUT_OF_RANGE 178 +#define RSA_R_P_NOT_PRIME 128 +#define RSA_R_Q_NOT_PRIME 129 +#define RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT 180 +#define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 +#define RSA_R_SLEN_CHECK_FAILED 136 +#define RSA_R_SLEN_RECOVERY_FAILED 135 +#define RSA_R_SSLV3_ROLLBACK_ATTACK 115 +#define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 +#define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 +#define RSA_R_UNKNOWN_DIGEST 166 +#define RSA_R_UNKNOWN_MASK_DIGEST 151 +#define RSA_R_UNKNOWN_PADDING_TYPE 118 +#define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +#define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +#define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 +#define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 +#define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 +#define RSA_R_VALUE_MISSING 147 +#define RSA_R_WRONG_SIGNATURE_LENGTH 119 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/safestack.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/safestack.h new file mode 100644 index 0000000..d31854d --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/safestack.h @@ -0,0 +1,326 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/safestack.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SAFESTACK_H +#define OPENSSL_SAFESTACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SAFESTACK_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define STACK_OF(type) struct stack_st_##type + +/* Helper macro for internal use */ +#define SKM_DEFINE_STACK_OF_INTERNAL(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_inline void sk_##t1##_freefunc_thunk(OPENSSL_sk_freefunc freefunc_arg, void *ptr) \ + { \ + sk_##t1##_freefunc freefunc = (sk_##t1##_freefunc)freefunc_arg; \ + freefunc((t3 *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *ossl_check_##t1##_type(t2 *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ + { \ + return (const OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ + { \ + return (OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ + { \ + return (OPENSSL_sk_compfunc)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ + { \ + return (OPENSSL_sk_copyfunc)cpy; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ + { \ + return (OPENSSL_sk_freefunc)fr; \ + } + +#define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_inline void sk_##t1##_freefunc_thunk(OPENSSL_sk_freefunc freefunc_arg, void *ptr) \ + { \ + sk_##t1##_freefunc freefunc = (sk_##t1##_freefunc)freefunc_arg; \ + freefunc((t3 *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + OPENSSL_STACK *ret = OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + OPENSSL_STACK *ret = OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + sk = (STACK_OF(t1) *)OPENSSL_sk_set_thunks((OPENSSL_STACK *)sk, f_thunk); \ + \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ + { \ + return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +#define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +#define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) +#define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +#define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) +#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) +#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) +#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) +#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) +#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) +#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) +#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) +#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) +#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) +#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) +#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) +#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) +#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) +#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) +#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) +#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) +#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) +#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) +#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) +#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) +#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) +#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) +#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) +#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) +#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) +#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) +#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) + +/* clang-format on */ +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/seed.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/seed.h new file mode 100644 index 0000000..8c2b20a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/seed.h @@ -0,0 +1,112 @@ +/* + * Copyright 2007-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 + */ + +/* + * Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Neither the name of author nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef OPENSSL_SEED_H +#define OPENSSL_SEED_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SEED_H +#endif + +#include + +#ifndef OPENSSL_NO_SEED +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SEED_BLOCK_SIZE 16 +#define SEED_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* look whether we need 'long' to get 32 bits */ +#ifdef AES_LONG +#ifndef SEED_LONG +#define SEED_LONG 1 +#endif +#endif + +typedef struct seed_key_st { +#ifdef SEED_LONG + unsigned long data[32]; +#else + unsigned int data[32]; +#endif +} SEED_KEY_SCHEDULE; +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_ecb_encrypt(const unsigned char *in, + unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int *num, int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/self_test.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/self_test.h new file mode 100644 index 0000000..6e671c1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/self_test.h @@ -0,0 +1,116 @@ +/* + * Copyright 2019-2025 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_SELF_TEST_H +#define OPENSSL_SELF_TEST_H +#pragma once + +#include /* OSSL_CALLBACK */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* The test event phases */ +#define OSSL_SELF_TEST_PHASE_NONE "None" +#define OSSL_SELF_TEST_PHASE_START "Start" +#define OSSL_SELF_TEST_PHASE_CORRUPT "Corrupt" +#define OSSL_SELF_TEST_PHASE_PASS "Pass" +#define OSSL_SELF_TEST_PHASE_FAIL "Fail" + +/* Test event categories */ +#define OSSL_SELF_TEST_TYPE_NONE "None" +#define OSSL_SELF_TEST_TYPE_MODULE_INTEGRITY "Module_Integrity" +#define OSSL_SELF_TEST_TYPE_INSTALL_INTEGRITY "Install_Integrity" +#define OSSL_SELF_TEST_TYPE_CRNG "Continuous_RNG_Test" +#define OSSL_SELF_TEST_TYPE_PCT "Conditional_PCT" +#define OSSL_SELF_TEST_TYPE_PCT_KAT "Conditional_KAT" +#define OSSL_SELF_TEST_TYPE_PCT_IMPORT "Import_PCT" +#define OSSL_SELF_TEST_TYPE_KAT_INTEGRITY "KAT_Integrity" +#define OSSL_SELF_TEST_TYPE_KAT_CIPHER "KAT_Cipher" +#define OSSL_SELF_TEST_TYPE_KAT_ASYM_CIPHER "KAT_AsymmetricCipher" +#define OSSL_SELF_TEST_TYPE_KAT_ASYM_KEYGEN "KAT_AsymmetricKeyGeneration" +#define OSSL_SELF_TEST_TYPE_KAT_KEM "KAT_KEM" +#define OSSL_SELF_TEST_TYPE_KAT_DIGEST "KAT_Digest" +#define OSSL_SELF_TEST_TYPE_KAT_SIGNATURE "KAT_Signature" +#define OSSL_SELF_TEST_TYPE_PCT_SIGNATURE "PCT_Signature" +#define OSSL_SELF_TEST_TYPE_KAT_KDF "KAT_KDF" +#define OSSL_SELF_TEST_TYPE_KAT_KA "KAT_KA" +#define OSSL_SELF_TEST_TYPE_DRBG "DRBG" + +/* Test event sub categories */ +#define OSSL_SELF_TEST_DESC_NONE "None" +#define OSSL_SELF_TEST_DESC_INTEGRITY_HMAC "HMAC" +#define OSSL_SELF_TEST_DESC_PCT_RSA "RSA" +#define OSSL_SELF_TEST_DESC_PCT_RSA_PKCS1 "RSA" +#define OSSL_SELF_TEST_DESC_PCT_ECDSA "ECDSA" +#define OSSL_SELF_TEST_DESC_PCT_EDDSA "EDDSA" +#define OSSL_SELF_TEST_DESC_PCT_DH "DH" +#define OSSL_SELF_TEST_DESC_PCT_DSA "DSA" +#define OSSL_SELF_TEST_DESC_PCT_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_PCT_ML_KEM "ML-KEM" +#define OSSL_SELF_TEST_DESC_PCT_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_CIPHER_AES_GCM "AES_GCM" +#define OSSL_SELF_TEST_DESC_CIPHER_AES_ECB "AES_ECB_Decrypt" +#define OSSL_SELF_TEST_DESC_CIPHER_TDES "TDES" +#define OSSL_SELF_TEST_DESC_ASYM_RSA_ENC "RSA_Encrypt" +#define OSSL_SELF_TEST_DESC_ASYM_RSA_DEC "RSA_Decrypt" +#define OSSL_SELF_TEST_DESC_MD_SHA1 "SHA1" +#define OSSL_SELF_TEST_DESC_MD_SHA2 "SHA2" +#define OSSL_SELF_TEST_DESC_MD_SHA3 "SHA3" +#define OSSL_SELF_TEST_DESC_SIGN_DSA "DSA" +#define OSSL_SELF_TEST_DESC_SIGN_RSA "RSA" +#define OSSL_SELF_TEST_DESC_SIGN_ECDSA "ECDSA" +#define OSSL_SELF_TEST_DESC_SIGN_DetECDSA "DetECDSA" +#define OSSL_SELF_TEST_DESC_SIGN_EDDSA "EDDSA" +#define OSSL_SELF_TEST_DESC_SIGN_LMS "LMS" +#define OSSL_SELF_TEST_DESC_SIGN_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_SIGN_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_KEM "KEM" +#define OSSL_SELF_TEST_DESC_DRBG_CTR "CTR" +#define OSSL_SELF_TEST_DESC_DRBG_HASH "HASH" +#define OSSL_SELF_TEST_DESC_DRBG_HMAC "HMAC" +#define OSSL_SELF_TEST_DESC_KA_DH "DH" +#define OSSL_SELF_TEST_DESC_KA_ECDH "ECDH" +#define OSSL_SELF_TEST_DESC_KDF_HKDF "HKDF" +#define OSSL_SELF_TEST_DESC_KDF_SSKDF "SSKDF" +#define OSSL_SELF_TEST_DESC_KDF_X963KDF "X963KDF" +#define OSSL_SELF_TEST_DESC_KDF_X942KDF "X942KDF" +#define OSSL_SELF_TEST_DESC_KDF_PBKDF2 "PBKDF2" +#define OSSL_SELF_TEST_DESC_KDF_SSHKDF "SSHKDF" +#define OSSL_SELF_TEST_DESC_KDF_TLS12_PRF "TLS12_PRF" +#define OSSL_SELF_TEST_DESC_KDF_KBKDF "KBKDF" +#define OSSL_SELF_TEST_DESC_KDF_KBKDF_KMAC "KBKDF_KMAC" +#define OSSL_SELF_TEST_DESC_KDF_TLS13_EXTRACT "TLS13_KDF_EXTRACT" +#define OSSL_SELF_TEST_DESC_KDF_TLS13_EXPAND "TLS13_KDF_EXPAND" +#define OSSL_SELF_TEST_DESC_RNG "RNG" +#define OSSL_SELF_TEST_DESC_KEYGEN_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_KEYGEN_ML_KEM "ML-KEM" +#define OSSL_SELF_TEST_DESC_KEYGEN_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_ENCAP_KEM "KEM_Encap" +#define OSSL_SELF_TEST_DESC_DECAP_KEM "KEM_Decap" +#define OSSL_SELF_TEST_DESC_DECAP_KEM_FAIL "KEM_Decap_Reject" + +void OSSL_SELF_TEST_set_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK *cb, + void *cbarg); +void OSSL_SELF_TEST_get_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK **cb, + void **cbarg); + +OSSL_SELF_TEST *OSSL_SELF_TEST_new(OSSL_CALLBACK *cb, void *cbarg); +void OSSL_SELF_TEST_free(OSSL_SELF_TEST *st); + +void OSSL_SELF_TEST_onbegin(OSSL_SELF_TEST *st, const char *type, + const char *desc); +int OSSL_SELF_TEST_oncorrupt_byte(OSSL_SELF_TEST *st, unsigned char *bytes); +void OSSL_SELF_TEST_onend(OSSL_SELF_TEST *st, int ret); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_SELF_TEST_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sha.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sha.h new file mode 100644 index 0000000..52b0266 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sha.h @@ -0,0 +1,139 @@ +/* + * 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_SHA_H +#define OPENSSL_SHA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SHA_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SHA_DIGEST_LENGTH 20 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! SHA_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define SHA_LONG unsigned int + +#define SHA_LBLOCK 16 +#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a \ + * contiguous array of 32 bit wide \ + * big-endian values. */ +#define SHA_LAST_BLOCK (SHA_CBLOCK - 8) + +typedef struct SHAstate_st { + SHA_LONG h0, h1, h2, h3, h4; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num; +} SHA_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA1_Init(SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA1_Final(unsigned char *md, SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA1_Transform(SHA_CTX *c, const unsigned char *data); +#endif + +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SHA256_CBLOCK (SHA_LBLOCK * 4) /* SHA-256 treats input data as a \ + * contiguous array of 32 bit wide \ + * big-endian values. */ + +typedef struct SHA256state_st { + SHA_LONG h[8]; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num, md_len; +} SHA256_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA224_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA224_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA224_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA256_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA256_Transform(SHA256_CTX *c, + const unsigned char *data); +#endif + +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); + +#define SHA256_192_DIGEST_LENGTH 24 +#define SHA224_DIGEST_LENGTH 28 +#define SHA256_DIGEST_LENGTH 32 +#define SHA384_DIGEST_LENGTH 48 +#define SHA512_DIGEST_LENGTH 64 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 + * being exactly 64-bit wide. See Implementation Notes in sha512.c + * for further details. + */ +/* + * SHA-512 treats input data as a + * contiguous array of 64 bit + * wide big-endian values. + */ +#define SHA512_CBLOCK (SHA_LBLOCK * 8) +#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) +#define SHA_LONG64 unsigned __int64 +#elif defined(__arch64__) +#define SHA_LONG64 unsigned long +#else +#define SHA_LONG64 unsigned long long +#endif + +typedef struct SHA512state_st { + SHA_LONG64 h[8]; + SHA_LONG64 Nl, Nh; + union { + SHA_LONG64 d[SHA_LBLOCK]; + unsigned char p[SHA512_CBLOCK]; + } u; + unsigned int num, md_len; +} SHA512_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA384_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA384_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA384_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA512_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA512_Transform(SHA512_CTX *c, + const unsigned char *data); +#endif + +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/srp.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/srp.h new file mode 100644 index 0000000..eac3cdb --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/srp.h @@ -0,0 +1,291 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/srp.h.in + * + * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. 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 + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SRP_H +#define OPENSSL_SRP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SRP_H +#endif + +#include + +#ifndef OPENSSL_NO_SRP +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) +#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) +#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) +#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) +#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) +#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) +#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_freefunc_type(freefunc)) +#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) +#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) +#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) +#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) +#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) +#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) +#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) +#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) +#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) +#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) +#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_freefunc_type(freefunc)) +#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) +#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) +#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) +#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_user_pwd_new(void); +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, + const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, + const char *info); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; + /* to simulate a user */ + char *seed_key; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) +#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) +#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) +#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) +#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) +#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) +#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_freefunc_type(freefunc)) +#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) +#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) +#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) +#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_VBASE *SRP_VBASE_new(char *seed_key); +OSSL_DEPRECATEDIN_3_0 +void SRP_VBASE_free(SRP_VBASE *vb); +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); + +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g, OSSL_LIB_CTX *libctx, + const char *propq); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g); + +#define SRP_NO_ERROR 0 +#define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +#define SRP_ERR_VBASE_BN_LIB 2 +#define SRP_ERR_OPEN_FILE 3 +#define SRP_ERR_MEMORY 4 + +#define DB_srptype 0 +#define DB_srpverifier 1 +#define DB_srpsalt 2 +#define DB_srpid 3 +#define DB_srpgN 4 +#define DB_srpinfo 5 +#undef DB_NUMBER +#define DB_NUMBER 6 + +#define DB_SRP_INDEX 'I' +#define DB_SRP_VALID 'V' +#define DB_SRP_REVOKED 'R' +#define DB_SRP_MODIF 'v' + +/* see srp.c */ +OSSL_DEPRECATEDIN_3_0 +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); + +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ + +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +#define SRP_MINIMAL_N 1024 + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/* This method ignores the configured seed and fails for an unknown user. */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 +SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/srtp.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/srtp.h new file mode 100644 index 0000000..3b716e1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/srtp.h @@ -0,0 +1,68 @@ +/* + * Copyright 2011-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 + */ + +/* + * DTLS code by Eric Rescorla + * + * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. + */ + +#ifndef OPENSSL_SRTP_H +#define OPENSSL_SRTP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_D1_SRTP_H +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SRTP_AES128_CM_SHA1_80 0x0001 +#define SRTP_AES128_CM_SHA1_32 0x0002 +#define SRTP_AES128_F8_SHA1_80 0x0003 +#define SRTP_AES128_F8_SHA1_32 0x0004 +#define SRTP_NULL_SHA1_80 0x0005 +#define SRTP_NULL_SHA1_32 0x0006 + +/* AEAD SRTP protection profiles from RFC 7714 */ +#define SRTP_AEAD_AES_128_GCM 0x0007 +#define SRTP_AEAD_AES_256_GCM 0x0008 + +/* DOUBLE AEAD SRTP protection profiles from RFC 8723 */ +#define SRTP_DOUBLE_AEAD_AES_128_GCM_AEAD_AES_128_GCM 0x0009 +#define SRTP_DOUBLE_AEAD_AES_256_GCM_AEAD_AES_256_GCM 0x000A + +/* ARIA SRTP protection profiles from RFC 8269 */ +#define SRTP_ARIA_128_CTR_HMAC_SHA1_80 0x000B +#define SRTP_ARIA_128_CTR_HMAC_SHA1_32 0x000C +#define SRTP_ARIA_256_CTR_HMAC_SHA1_80 0x000D +#define SRTP_ARIA_256_CTR_HMAC_SHA1_32 0x000E +#define SRTP_AEAD_ARIA_128_GCM 0x000F +#define SRTP_AEAD_ARIA_256_GCM 0x0010 + +#ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl.h new file mode 100644 index 0000000..e318ffc --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl.h @@ -0,0 +1,2947 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ssl.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SSL_H +#define OPENSSL_SSL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL_H +#endif + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +#define SSL_SESSION_ASN1_VERSION 0x0001 + +#define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +#define SSL_MAX_SID_CTX_LENGTH 32 + +#define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512 / 8) +#define SSL_MAX_KEY_ARG_LENGTH 8 +/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ + +/* The maximum number of encrypt/decrypt pipelines we can support */ +#define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +#define SSL_TXT_LOW "LOW" +#define SSL_TXT_MEDIUM "MEDIUM" +#define SSL_TXT_HIGH "HIGH" +#define SSL_TXT_FIPS "FIPS" + +#define SSL_TXT_aNULL "aNULL" +#define SSL_TXT_eNULL "eNULL" +#define SSL_TXT_NULL "NULL" + +#define SSL_TXT_kRSA "kRSA" +#define SSL_TXT_kDHr "kDHr" /* this cipher class has been removed */ +#define SSL_TXT_kDHd "kDHd" /* this cipher class has been removed */ +#define SSL_TXT_kDH "kDH" /* this cipher class has been removed */ +#define SSL_TXT_kEDH "kEDH" /* alias for kDHE */ +#define SSL_TXT_kDHE "kDHE" +#define SSL_TXT_kECDHr "kECDHr" /* this cipher class has been removed */ +#define SSL_TXT_kECDHe "kECDHe" /* this cipher class has been removed */ +#define SSL_TXT_kECDH "kECDH" /* this cipher class has been removed */ +#define SSL_TXT_kEECDH "kEECDH" /* alias for kECDHE */ +#define SSL_TXT_kECDHE "kECDHE" +#define SSL_TXT_kPSK "kPSK" +#define SSL_TXT_kRSAPSK "kRSAPSK" +#define SSL_TXT_kECDHEPSK "kECDHEPSK" +#define SSL_TXT_kDHEPSK "kDHEPSK" +#define SSL_TXT_kGOST "kGOST" +#define SSL_TXT_kGOST18 "kGOST18" +#define SSL_TXT_kSRP "kSRP" + +#define SSL_TXT_aRSA "aRSA" +#define SSL_TXT_aDSS "aDSS" +#define SSL_TXT_aDH "aDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDH "aECDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDSA "aECDSA" +#define SSL_TXT_aPSK "aPSK" +#define SSL_TXT_aGOST94 "aGOST94" +#define SSL_TXT_aGOST01 "aGOST01" +#define SSL_TXT_aGOST12 "aGOST12" +#define SSL_TXT_aGOST "aGOST" +#define SSL_TXT_aSRP "aSRP" + +#define SSL_TXT_DSS "DSS" +#define SSL_TXT_DH "DH" +#define SSL_TXT_DHE "DHE" /* same as "kDHE:-ADH" */ +#define SSL_TXT_EDH "EDH" /* alias for DHE */ +#define SSL_TXT_ADH "ADH" +#define SSL_TXT_RSA "RSA" +#define SSL_TXT_ECDH "ECDH" +#define SSL_TXT_EECDH "EECDH" /* alias for ECDHE" */ +#define SSL_TXT_ECDHE "ECDHE" /* same as "kECDHE:-AECDH" */ +#define SSL_TXT_AECDH "AECDH" +#define SSL_TXT_ECDSA "ECDSA" +#define SSL_TXT_PSK "PSK" +#define SSL_TXT_SRP "SRP" + +#define SSL_TXT_DES "DES" +#define SSL_TXT_3DES "3DES" +#define SSL_TXT_RC4 "RC4" +#define SSL_TXT_RC2 "RC2" +#define SSL_TXT_IDEA "IDEA" +#define SSL_TXT_SEED "SEED" +#define SSL_TXT_AES128 "AES128" +#define SSL_TXT_AES256 "AES256" +#define SSL_TXT_AES "AES" +#define SSL_TXT_AES_GCM "AESGCM" +#define SSL_TXT_AES_CCM "AESCCM" +#define SSL_TXT_AES_CCM_8 "AESCCM8" +#define SSL_TXT_CAMELLIA128 "CAMELLIA128" +#define SSL_TXT_CAMELLIA256 "CAMELLIA256" +#define SSL_TXT_CAMELLIA "CAMELLIA" +#define SSL_TXT_CHACHA20 "CHACHA20" +#define SSL_TXT_GOST "GOST89" +#define SSL_TXT_ARIA "ARIA" +#define SSL_TXT_ARIA_GCM "ARIAGCM" +#define SSL_TXT_ARIA128 "ARIA128" +#define SSL_TXT_ARIA256 "ARIA256" +#define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" +#define SSL_TXT_CBC "CBC" + +#define SSL_TXT_MD5 "MD5" +#define SSL_TXT_SHA1 "SHA1" +#define SSL_TXT_SHA "SHA" /* same as "SHA1" */ +#define SSL_TXT_GOST94 "GOST94" +#define SSL_TXT_GOST89MAC "GOST89MAC" +#define SSL_TXT_GOST12 "GOST12" +#define SSL_TXT_GOST89MAC12 "GOST89MAC12" +#define SSL_TXT_SHA256 "SHA256" +#define SSL_TXT_SHA384 "SHA384" + +#define SSL_TXT_SSLV3 "SSLv3" +#define SSL_TXT_TLSV1 "TLSv1" +#define SSL_TXT_TLSV1_1 "TLSv1.1" +#define SSL_TXT_TLSV1_2 "TLSv1.2" + +#define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +#define SSL_TXT_CMPALL "COMPLEMENTOFALL" +#define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() + * Update both macro and function simultaneously + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* + * This is the default set of TLSv1.3 ciphersuites + * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() + * Update both macro and function simultaneously + */ +#define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +#define SSL_SENT_SHUTDOWN 1 +#define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +#define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; + +STACK_OF(SSL_CIPHER); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) +#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) +#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) +#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) +#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) +#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) +#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) +#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) +#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) +#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) +#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) +#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x00001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x00002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x00008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x00020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* Typedef for SSL async callback */ +typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); + +#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) + +/* + * SSL/TLS connection options. + */ +/* Disable Extended master secret */ +#define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) +/* Cleanse plaintext copies of data delivered to the application */ +#define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) +/* Allow initial connection to servers that don't support RI */ +#define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) +/* Enable support for Kernel TLS */ +#define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) +#define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) +#define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) +#define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) +#define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) +#define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +#define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added + * in OpenSSL 0.9.6d. Usually (depending on the application protocol) + * the workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it + * in SSL_OP_ALL. Added in 0.9.6e + */ +#define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS SSL_OP_BIT(11) +/* DTLS options */ +#define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) +/* Turn on Cookie Exchange (on relevant for servers) */ +#define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) +/* Don't use RFC4507 ticket extension */ +#define SSL_OP_NO_TICKET SSL_OP_BIT(14) +#ifndef OPENSSL_NO_DTLS1_METHOD +/* + * Use Cisco's version identifier of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) + */ +#define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) +#endif +/* As server, disallow session resumption on renegotiation */ +#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) +/* Don't use compression even if supported */ +#define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) +/* Permit unsafe legacy renegotiation */ +#define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) +/* Disable encrypt-then-mac */ +#define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future + * version of OpenSSL may have this disabled by default. + */ +#define SSL_OP_ENABLE_MIDDLEBOX_COMPAT SSL_OP_BIT(20) +/* + * Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_SERVER_PREFERENCE + */ +#define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) +/* + * Set on servers to choose cipher, curve or group according to server's + * preferences. + */ +#define SSL_OP_SERVER_PREFERENCE SSL_OP_BIT(22) +/* Equivalent definition for backwards compatibility: */ +#define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_SERVER_PREFERENCE +/* + * If set, a server will allow a client to issue an SSLv3.0 version + * number as latest version supported in the premaster secret, even when + * TLSv1.0 (version 3.1) was announced in the client hello. Normally + * this is forbidden to prevent version rollback attacks. + */ +#define SSL_OP_TLS_ROLLBACK_BUG SSL_OP_BIT(23) +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. + * This is a server-side option only (no effect on the client). + */ +#define SSL_OP_NO_ANTI_REPLAY SSL_OP_BIT(24) +#define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) +#define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) +#define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) +#define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) +#define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) +/* Disallow all renegotiation */ +#define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) +/* + * Make server add server-hello extension from early version of + * cryptopro draft, when GOST ciphersuite is negotiated. Required for + * interoperability with CryptoPro CSP 3.x + */ +#define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +#define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +#define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) +/* Enable KTLS TX zerocopy on Linux */ +#define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) +#define SSL_OP_LEGACY_EC_POINT_FORMATS SSL_OP_BIT(36) + +/* + * Option "collections." + */ +#define SSL_OP_NO_SSL_MASK \ + (SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \ + | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3) +#define SSL_OP_NO_DTLS_MASK \ + (SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2) + +/* Various bug workarounds that should be rather harmless. */ +#define SSL_OP_ALL \ + (SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ + | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* + * OBSOLETE OPTIONS retained for compatibility + */ + +#define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +#define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +#define SSL_OP_TLS_D5_BUG 0x0 +#define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +#define SSL_OP_SINGLE_ECDH_USE 0x0 +#define SSL_OP_SINGLE_DH_USE 0x0 +#define SSL_OP_EPHEMERAL_RSA 0x0 +#define SSL_OP_NO_SSLv2 0x0 +#define SSL_OP_PKCS1_CHECK_1 0x0 +#define SSL_OP_PKCS1_CHECK_2 0x0 +#define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +#define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +#define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +#define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +#define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +#define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +#define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +#define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +#define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +#define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +#define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +#define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +#define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +#define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +#define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +#define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +#define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +#define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +#define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +#define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +#define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +#define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +#define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +#define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +#define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +#define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +#define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +#define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +#define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +#define CERT_PKEY_RPK 0x1000 + +#define SSL_CONF_FLAG_CMDLINE 0x1 +#define SSL_CONF_FLAG_FILE 0x2 +#define SSL_CONF_FLAG_CLIENT 0x4 +#define SSL_CONF_FLAG_SERVER 0x8 +#define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +#define SSL_CONF_FLAG_CERTIFICATE 0x20 +#define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +#define SSL_CONF_TYPE_UNKNOWN 0x0 +#define SSL_CONF_TYPE_STRING 0x1 +#define SSL_CONF_TYPE_FILE 0x2 +#define SSL_CONF_TYPE_DIR 0x3 +#define SSL_CONF_TYPE_NONE 0x4 +#define SSL_CONF_TYPE_STORE 0x5 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +#define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); +uint64_t SSL_get_options(const SSL *s); +uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_clear_options(SSL *s, uint64_t op); +uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_set_options(SSL *s, uint64_t op); + +#define SSL_CTX_set_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, (op), NULL) +#define SSL_CTX_clear_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, 0, NULL) +#define SSL_clear_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_set_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, (op), NULL) +#define SSL_get_mode(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, 0, NULL) +#define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl), SSL_CTRL_SET_MTU, (mtu), NULL) +#define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl), DTLS_CTRL_SET_LINK_MTU, (mtu), NULL) +#define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl), DTLS_CTRL_GET_LINK_MIN_MTU, 0, NULL) + +#define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +#define SSL_CTX_set_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_set_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_CTX_clear_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) +#define SSL_clear_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +#define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +#define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +#define SSL_get_extms_support(s) \ + SSL_ctrl((s), SSL_CTRL_GET_EXTMS_SUPPORT, 0, NULL) + +#ifndef OPENSSL_NO_SRP +/* see tls_srp.c */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, + int *ad); +OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); +#endif +#endif + +/* 100k max cert list */ +#define SSL_MAX_CERT_LIST_DEFAULT (1024 * 100) + +#define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024 * 20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB)(SSL *ssl, unsigned char *id, + unsigned int *id_len); + +#define SSL_SESS_CACHE_OFF 0x0000 +#define SSL_SESS_CACHE_CLIENT 0x0001 +#define SSL_SESS_CACHE_SERVER 0x0002 +#define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_SERVER) +#define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +#define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +#define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +#define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP | SSL_SESS_CACHE_NO_INTERNAL_STORE) +#define SSL_SESS_CACHE_UPDATE_TIME 0x0400 + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +#define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_NUMBER, 0, NULL) +#define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT, 0, NULL) +#define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_GOOD, 0, NULL) +#define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT, 0, NULL) +#define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_GOOD, 0, NULL) +#define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_HIT, 0, NULL) +#define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CB_HIT, 0, NULL) +#define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_MISSES, 0, NULL) +#define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_TIMEOUTS, 0, NULL) +#define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CACHE_FULL, 0, NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb)(struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb)(struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb)(struct ssl_st + *ssl, + const unsigned char + *data, + int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb)(SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +#ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +#endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb)(SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb)(SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +#ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +#define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +#endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *server, unsigned int server_len, + const unsigned char *client, + unsigned int client_len); + +#define OPENSSL_NPN_UNSUPPORTED 0 +#define OPENSSL_NPN_NEGOTIATED 1 +#define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +#ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +#define PSK_MAX_IDENTITY_LEN 256 +#define PSK_MAX_PSK_LEN 512 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +#endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +#define SSL_NOTHING 1 +#define SSL_WRITING 2 +#define SSL_READING 3 +#define SSL_X509_LOOKUP 4 +#define SSL_ASYNC_PAUSED 5 +#define SSL_ASYNC_NO_JOBS 6 +#define SSL_CLIENT_HELLO_CB 7 +#define SSL_RETRY_VERIFY 8 + +/* These will only be used when doing non-blocking IO */ +#define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +#define SSL_want_read(s) (SSL_want(s) == SSL_READING) +#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +#define SSL_want_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) +#define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +#define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +#define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +#define SSL_MAC_FLAG_READ_MAC_STREAM 1 +#define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 +#define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 +#define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +#include +#include +#include /* This is mostly sslv3 with a few tweaks */ +#include /* Datagram TLS */ +#include /* Support for the use_srtp extension */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) +#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) +#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) +#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) +#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) +#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) +#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) +#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_freefunc_type(freefunc)) +#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) +#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) +#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) +#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) + +/* clang-format on */ + +/* compatibility */ +#define SSL_set_app_data(s, arg) (SSL_set_ex_data(s, 0, (char *)(arg))) +#define SSL_get_app_data(s) (SSL_get_ex_data(s, 0)) +#define SSL_SESSION_set_app_data(s, a) (SSL_SESSION_set_ex_data(s, 0, \ + (char *)(a))) +#define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s, 0)) +#define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx, 0)) +#define SSL_CTX_set_app_data(ctx, arg) (SSL_CTX_set_ex_data(ctx, 0, \ + (char *)(arg))) +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); +#endif + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +#define SSL_ST_CONNECT 0x1000 +#define SSL_ST_ACCEPT 0x2000 + +#define SSL_ST_MASK 0x0FFF + +#define SSL_CB_LOOP 0x01 +#define SSL_CB_EXIT 0x02 +#define SSL_CB_READ 0x04 +#define SSL_CB_WRITE 0x08 +#define SSL_CB_ALERT 0x4000 /* used in callback */ +#define SSL_CB_READ_ALERT (SSL_CB_ALERT | SSL_CB_READ) +#define SSL_CB_WRITE_ALERT (SSL_CB_ALERT | SSL_CB_WRITE) +#define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT | SSL_CB_LOOP) +#define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT | SSL_CB_EXIT) +#define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT | SSL_CB_LOOP) +#define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT | SSL_CB_EXIT) +#define SSL_CB_HANDSHAKE_START 0x10 +#define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +#define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +#define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +#define SSL_ST_READ_HEADER 0xF0 +#define SSL_ST_READ_BODY 0xF1 +#define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +#define SSL_VERIFY_NONE 0x00 +#define SSL_VERIFY_PEER 0x01 +#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +#define SSL_VERIFY_CLIENT_ONCE 0x04 +#define SSL_VERIFY_POST_HANDSHAKE 0x08 + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OpenSSL_add_ssl_algorithms() SSL_library_init() +#define SSLeay_add_ssl_algorithms() SSL_library_init() +#endif + +/* More backward compatibility */ +#define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_cipher_bits(s, np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s), np) +#define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +#define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_time(a) SSL_SESSION_get_time(a) +#define SSL_set_time(a, b) SSL_SESSION_set_time((a), (b)) +#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +#define SSL_set_timeout(a, b) SSL_SESSION_set_timeout((a), (b)) + +#define d2i_SSL_SESSION_bio(bp, s_id) ASN1_d2i_bio_of(SSL_SESSION, SSL_SESSION_new, d2i_SSL_SESSION, bp, s_id) +#define i2d_SSL_SESSION_bio(bp, s_id) ASN1_i2d_bio_of(SSL_SESSION, i2d_SSL_SESSION, bp, s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +#define SSL_AD_REASON_OFFSET 1000 /* offset to get SSL_R_... value \ + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +#define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +#define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +#define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +#define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +#define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +#define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +#define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +#define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +#define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +#define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +#define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +#define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +#define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +#define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +#define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +#define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +#define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +#define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +#define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +#define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +#define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +#define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +#define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +#define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +#define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +#define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +#define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +#define SSL_ERROR_NONE 0 +#define SSL_ERROR_SSL 1 +#define SSL_ERROR_WANT_READ 2 +#define SSL_ERROR_WANT_WRITE 3 +#define SSL_ERROR_WANT_X509_LOOKUP 4 +#define SSL_ERROR_SYSCALL 5 /* look at error stack/return \ + * value/errno */ +#define SSL_ERROR_ZERO_RETURN 6 +#define SSL_ERROR_WANT_CONNECT 7 +#define SSL_ERROR_WANT_ACCEPT 8 +#define SSL_ERROR_WANT_ASYNC 9 +#define SSL_ERROR_WANT_ASYNC_JOB 10 +#define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +#define SSL_ERROR_WANT_RETRY_VERIFY 12 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TMP_DH 3 +#define SSL_CTRL_SET_TMP_ECDH 4 +#define SSL_CTRL_SET_TMP_DH_CB 6 +#endif + +#define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +#define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +#define SSL_CTRL_GET_FLAGS 13 +#define SSL_CTRL_EXTRA_CHAIN_CERT 14 +#define SSL_CTRL_SET_MSG_CALLBACK 15 +#define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +#define SSL_CTRL_SET_MTU 17 +/* Stats */ +#define SSL_CTRL_SESS_NUMBER 20 +#define SSL_CTRL_SESS_CONNECT 21 +#define SSL_CTRL_SESS_CONNECT_GOOD 22 +#define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +#define SSL_CTRL_SESS_ACCEPT 24 +#define SSL_CTRL_SESS_ACCEPT_GOOD 25 +#define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +#define SSL_CTRL_SESS_HIT 27 +#define SSL_CTRL_SESS_CB_HIT 28 +#define SSL_CTRL_SESS_MISSES 29 +#define SSL_CTRL_SESS_TIMEOUTS 30 +#define SSL_CTRL_SESS_CACHE_FULL 31 +#define SSL_CTRL_MODE 33 +#define SSL_CTRL_GET_READ_AHEAD 40 +#define SSL_CTRL_SET_READ_AHEAD 41 +#define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +#define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +#define SSL_CTRL_SET_SESS_CACHE_MODE 44 +#define SSL_CTRL_GET_SESS_CACHE_MODE 45 +#define SSL_CTRL_GET_MAX_CERT_LIST 50 +#define SSL_CTRL_SET_MAX_CERT_LIST 51 +#define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +#define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +#define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +#define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +#endif +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +#define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +#define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +#define SSL_CTRL_SET_SRP_ARG 78 +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +#define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +#define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +#define DTLS_CTRL_GET_TIMEOUT 73 +#define DTLS_CTRL_HANDLE_TIMEOUT 74 +#define SSL_CTRL_GET_RI_SUPPORT 76 +#define SSL_CTRL_CLEAR_MODE 78 +#define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +#define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +#define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +#define SSL_CTRL_CHAIN 88 +#define SSL_CTRL_CHAIN_CERT 89 +#define SSL_CTRL_GET_GROUPS 90 +#define SSL_CTRL_SET_GROUPS 91 +#define SSL_CTRL_SET_GROUPS_LIST 92 +#define SSL_CTRL_GET_SHARED_GROUP 93 +#define SSL_CTRL_SET_SIGALGS 97 +#define SSL_CTRL_SET_SIGALGS_LIST 98 +#define SSL_CTRL_CERT_FLAGS 99 +#define SSL_CTRL_CLEAR_CERT_FLAGS 100 +#define SSL_CTRL_SET_CLIENT_SIGALGS 101 +#define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +#define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +#define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +#define SSL_CTRL_BUILD_CERT_CHAIN 105 +#define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +#define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +#define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +#define SSL_CTRL_GET_PEER_TMP_KEY 109 +#define SSL_CTRL_GET_RAW_CIPHERLIST 110 +#define SSL_CTRL_GET_EC_POINT_FORMATS 111 +#define SSL_CTRL_GET_CHAIN_CERTS 115 +#define SSL_CTRL_SELECT_CURRENT_CERT 116 +#define SSL_CTRL_SET_CURRENT_CERT 117 +#define SSL_CTRL_SET_DH_AUTO 118 +#define DTLS_CTRL_SET_LINK_MTU 120 +#define DTLS_CTRL_GET_LINK_MIN_MTU 121 +#define SSL_CTRL_GET_EXTMS_SUPPORT 122 +#define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +#define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +#define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +#define SSL_CTRL_SET_MAX_PIPELINES 126 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +#define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +#define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +#define SSL_CTRL_GET_SIGNATURE_NID 132 +#define SSL_CTRL_GET_TMP_KEY 133 +#define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +#define SSL_CTRL_GET_IANA_GROUPS 135 +#define SSL_CTRL_SET_RETRY_VERIFY 136 +#define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +#define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +#define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +#define SSL_CTRL_GET_SIGNATURE_NAME 140 +#define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP_EX 142 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP_EX 143 +#define SSL_CERT_SET_FIRST 1 +#define SSL_CERT_SET_NEXT 2 +#define SSL_CERT_SET_SERVER 3 +#define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl, DTLS_CTRL_GET_TIMEOUT, 0, (void *)(arg)) +#define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl, DTLS_CTRL_HANDLE_TIMEOUT, 0, NULL) +#define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_TOTAL_RENEGOTIATIONS, 0, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_dh(ctx, dh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_set_tmp_dh(ssl, dh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_ecdh(ctx, ecdh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#define SSL_set_tmp_ecdh(ssl, ecdh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#endif +#define SSL_CTX_add_extra_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_get_extra_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 0, px509) +#define SSL_CTX_get_extra_chain_certs_only(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 1, px509) +#define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS, 0, NULL) +#define SSL_CTX_set0_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_CTX_set1_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_CTX_add0_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_add1_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_CTX_get0_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx, NULL) +#define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_CTX_select_current_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_CTX_set0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_set1_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_add0_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_add1_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_get0_chain_certs(s, px509) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s, NULL) +#define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_select_current_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_set_current_cert(s, op) \ + SSL_ctrl(s, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_set0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) + +#define SSL_get1_groups(s, glist) \ + SSL_ctrl(s, SSL_CTRL_GET_GROUPS, 0, (int *)(glist)) +#define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_IANA_GROUPS, 0, (uint16_t **)(plst)) +#define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS, glistlen, (int *)(glist)) +#define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(s)) +#define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) +#define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS, glistlen, (char *)(glist)) +#define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(str)) +#define SSL_get_shared_group(s, n) \ + SSL_ctrl(s, SSL_CTRL_GET_SHARED_GROUP, n, NULL) +#define SSL_get_negotiated_group(s) \ + SSL_ctrl(s, SSL_CTRL_GET_NEGOTIATED_GROUP, 0, NULL) +#define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +#define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, \ + (char *)(clist)) +#define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, (char *)(clist)) +#define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NID, 0, pn) +#define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NID, 0, pn) +#define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_TMP_KEY, 0, pk) +#define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_TMP_KEY, 0, pk) +#define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_RAW_CIPHERLIST, 0, plst) +#define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_EC_POINT_FORMATS, 0, plst) +#define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +#define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +const char *SSL_get0_group_name(SSL *s); +const char *SSL_group_to_name(SSL *s, int id); + +/* Backwards compatibility, original 1.1.0 names */ +#define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +#define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); +int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +#define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +#define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +#define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +#define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +#define SSL_get1_curves SSL_get1_groups +#define SSL_CTX_set1_curves SSL_CTX_set1_groups +#define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +#define SSL_set1_curves SSL_set1_groups +#define SSL_set1_curves_list SSL_set1_groups_list +#define SSL_get_shared_curve SSL_get_shared_group + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* Provide some compatibility macros for removed functionality. */ +#define SSL_CTX_need_tmp_RSA(ctx) 0 +#define SSL_CTX_set_tmp_rsa(ctx, rsa) 1 +#define SSL_need_tmp_RSA(ssl) 0 +#define SSL_set_tmp_rsa(ssl, rsa) 1 +#define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +#define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +#define SSL_CTX_set_tmp_rsa_callback(ctx, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#define SSL_set_tmp_rsa_callback(ssl, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, + const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +#ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +#endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb)(SSL *ssl, void *arg), void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, + const unsigned char *d, long len); +#endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +/* serverinfo file format versions */ +#define SSL_SERVERINFOV1 1 +#define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); +int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *uri); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, \ + NULL) +#endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +#ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +#endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); + +#ifdef OPENSSL_X509_H +__owur X509 *SSL_get0_peer_certificate(const SSL *s); +__owur X509 *SSL_get1_peer_certificate(const SSL *s); +/* Deprecated in 3.0.0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_get_peer_certificate SSL_get1_peer_certificate +#endif +#endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb)(X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb)(SSL *ssl, void *arg), + void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +#endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, const unsigned char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, const unsigned char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +#ifndef OPENSSL_NO_SRP +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb)(SSL *, int *, void *)); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); + +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); +#endif +#endif + +/* + * ClientHello callback and helpers. + */ + +#define SSL_CLIENT_HELLO_SUCCESS 1 +#define SSL_CLIENT_HELLO_ERROR 0 +#define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn)(SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +typedef int (*SSL_new_pending_conn_cb_fn)(SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +#ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); +__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); +__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); +__owur int SSL_set_async_callback_arg(SSL *s, void *arg); +__owur int SSL_get_async_status(SSL *s, int *status); + +#endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +#define SSL_READ_EARLY_DATA_ERROR 0 +#define SSL_READ_EARLY_DATA_SUCCESS 1 +#define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, + int flags); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +#define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + +#define SSL_EARLY_DATA_NOT_SENT 0 +#define SSL_EARLY_DATA_REJECTED 1 +#define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); + +/* This sets the 'default' SSL version that SSL_new() will create */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); +#endif + +#ifndef OPENSSL_NO_SSL3_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); +#endif +#endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +#ifndef OPENSSL_NO_TLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_2_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); +#endif +#endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_new_session_ticket(SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_library_init() OPENSSL_init_ssl(0, NULL) +#endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); +__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); +__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, + const char *CAfile, + const char *CApath); +#define SSL_get0_session SSL_get_session /* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +#define SSL_CTX_sess_set_cache_size(ctx, t) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_SIZE, t, NULL) +#define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_SIZE, 0, NULL) +#define SSL_CTX_set_session_cache_mode(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_MODE, m, NULL) +#define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_MODE, 0, NULL) + +#define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +#define SSL_CTX_set_default_read_ahead(ctx, m) SSL_CTX_set_read_ahead(ctx, m) +#define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_READ_AHEAD, 0, NULL) +#define SSL_CTX_set_read_ahead(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_READ_AHEAD, m, NULL) +#define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_CTX_set_max_cert_list(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) +#define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_set_max_cert_list(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) + +#define SSL_CTX_set_max_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_set_max_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_split_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_set_split_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_max_pipelines(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_max_pipelines(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_retry_verify(ssl) \ + (SSL_ctrl(ssl, SSL_CTRL_SET_RETRY_VERIFY, 0, NULL) > 0) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* NB: the |keylength| is only applicable when is_export is true */ +OSSL_DEPRECATEDIN_3_0 +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +OSSL_DEPRECATEDIN_3_0 +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +#endif +#endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_COMP_free_compression_methods() \ + while (0) \ + continue +#endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb)(SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb)(SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); + +int SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +#define SSL_ACCEPT_STREAM_UNI (1U << 1) +#define SSL_ACCEPT_STREAM_BIDI (1U << 2) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +#ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +#endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +#define SSL_VALUE_CLASS_GENERIC 0 +#define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +#define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +#define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +#define SSL_VALUE_NONE 0 +#define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +#define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +#define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +#define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +#define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +#define SSL_VALUE_EVENT_HANDLING_MODE 6 +#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +#define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +#define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +#define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +#define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +#define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +#define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +#define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +#define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +#define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +#define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +#define SSL_POLL_EVENT_NONE 0 + +#define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +#define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +#define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +#define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +#define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +#define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +#define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +#define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +#define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +#define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +#define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +#define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +#define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +#define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +#define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +#define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +#define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +#define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +#define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +#define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +#define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +#define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_cache_hit(s) SSL_session_reused(s) +#endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +#ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +#endif + +#ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +#endif + +#ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void)SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void)SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +#endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +#define SSL_SECOP_OTHER_TYPE 0xffff0000 +#define SSL_SECOP_OTHER_NONE 0 +#define SSL_SECOP_OTHER_CIPHER (1 << 16) +#define SSL_SECOP_OTHER_CURVE (2 << 16) +#define SSL_SECOP_OTHER_DH (3 << 16) +#define SSL_SECOP_OTHER_PKEY (4 << 16) +#define SSL_SECOP_OTHER_SIGALG (5 << 16) +#define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +#define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +#define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +#define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +#define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +#define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +#define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +#define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +#define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +#define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +#define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +#define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +#define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +#define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +#define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +#define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +#define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s))(const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx))(const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +#define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +#define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +#define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +#ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +#endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +#define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +#define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +#define SSL_TICKET_NONE 2 +/* Empty ticket present */ +#define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +#define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +#define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +#define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +/* store the default cipher strings inside the library */ +const char *OSSL_default_cipher_list(void); +const char *OSSL_default_ciphersuites(void); + +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +#define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +#define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +#define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +#define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl2.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl2.h new file mode 100644 index 0000000..67d1d02 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl2.h @@ -0,0 +1,30 @@ +/* + * 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_SSL2_H +#define OPENSSL_SSL2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL2_H +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL2_VERSION 0x0002 + +#define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl3.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl3.h new file mode 100644 index 0000000..f35b6ea --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ssl3.h @@ -0,0 +1,357 @@ +/* + * Copyright 1995-2025 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_SSL3_H +#define OPENSSL_SSL3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL3_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signalling cipher suite value from RFC 5746 + * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) + */ +#define SSL3_CK_SCSV 0x030000FF + +/* + * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 + * (TLS_FALLBACK_SCSV) + */ +#define SSL3_CK_FALLBACK_SCSV 0x03005600 + +#define SSL3_CK_RSA_NULL_MD5 0x03000001 +#define SSL3_CK_RSA_NULL_SHA 0x03000002 +#define SSL3_CK_RSA_RC4_40_MD5 0x03000003 +#define SSL3_CK_RSA_RC4_128_MD5 0x03000004 +#define SSL3_CK_RSA_RC4_128_SHA 0x03000005 +#define SSL3_CK_RSA_RC2_40_MD5 0x03000006 +#define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 +#define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 +#define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 +#define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A + +#define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B +#define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C +#define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D +#define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E +#define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F +#define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 + +#define SSL3_CK_DHE_DSS_DES_40_CBC_SHA 0x03000011 +#define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +#define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +#define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +#define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +#define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +#define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +#define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +#define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +#define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +#define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +#define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_RSA_DES_192_CBC3_SHA + +#define SSL3_CK_ADH_RC4_40_MD5 0x03000017 +#define SSL3_CK_ADH_RC4_128_MD5 0x03000018 +#define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 +#define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A +#define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +#define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +#define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +#define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +#define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +#define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +#define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +#define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" +#define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" +#define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" +#define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" +#define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" +#define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" +#define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" +#define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" +#define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" +#define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" + +#define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" +#define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" +#define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" +#define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" +#define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" +#define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" + +#define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" +#define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" +#define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" +#define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" +#define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" +#define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" + +/* + * This next block of six "EDH" labels is for backward compatibility with + * older versions of OpenSSL. New code should use the six "DHE" labels above + * instead: + */ +#define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" +#define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" +#define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" +#define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" +#define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" +#define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" + +#define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" +#define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" +#define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" +#define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" +#define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" + +#define SSL3_SSL_SESSION_ID_LENGTH 32 +#define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 + +#define SSL3_MASTER_SECRET_SIZE 48 +#define SSL3_RANDOM_SIZE 32 +#define SSL3_SESSION_ID_SIZE 32 +#define SSL3_RT_HEADER_LENGTH 5 + +#define SSL3_HM_HEADER_LENGTH 4 + +#ifndef SSL3_ALIGN_PAYLOAD +/* + * Some will argue that this increases memory footprint, but it's not + * actually true. Point is that malloc has to return at least 64-bit aligned + * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. + * Suggested pre-gaping simply moves these wasted bytes from the end of + * allocated region to its front, but makes data payload aligned, which + * improves performance:-) + */ +#define SSL3_ALIGN_PAYLOAD 8 +#else +#if (SSL3_ALIGN_PAYLOAD & (SSL3_ALIGN_PAYLOAD - 1)) != 0 +#error "insane SSL3_ALIGN_PAYLOAD" +#undef SSL3_ALIGN_PAYLOAD +#endif +#endif + +/* + * This is the maximum MAC (digest) size used by the SSL library. Currently + * maximum of 20 is used by SHA1, but we reserve for future extension for + * 512-bit hashes. + */ + +#define SSL3_RT_MAX_MD_SIZE 64 + +/* + * Maximum block size used in all ciphersuites. Currently 16 for AES. + */ + +#define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 + +#define SSL3_RT_MAX_EXTRA (16384) + +/* Maximum plaintext length: defined by SSL/TLS standards */ +#define SSL3_RT_MAX_PLAIN_LENGTH 16384 +/* Maximum compression overhead: defined by SSL/TLS standards */ +#define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 + +/* + * The standards give a maximum encryption overhead of 1024 bytes. In + * practice the value is lower than this. The overhead is the maximum number + * of padding bytes (256) plus the mac size. + */ +#define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) +#define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * OpenSSL currently only uses a padding length of at most one block so the + * send overhead is smaller. + */ + +#define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ + (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) + +/* If compression isn't used don't include the compression overhead */ + +#ifdef OPENSSL_NO_COMP +#define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH +#else +#define SSL3_RT_MAX_COMPRESSED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_COMPRESSED_OVERHEAD) +#endif +#define SSL3_RT_MAX_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_ENCRYPTED_OVERHEAD + SSL3_RT_MAX_COMPRESSED_LENGTH) +#define SSL3_RT_MAX_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +#define SSL3_RT_MAX_PACKET_SIZE \ + (SSL3_RT_MAX_ENCRYPTED_LENGTH + SSL3_RT_HEADER_LENGTH) + +#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" + +/* SSL3_VERSION is defined in prov_ssl.h */ +#define SSL3_VERSION_MAJOR 0x03 +#define SSL3_VERSION_MINOR 0x00 + +#define SSL3_RT_CHANGE_CIPHER_SPEC 20 +#define SSL3_RT_ALERT 21 +#define SSL3_RT_HANDSHAKE 22 +#define SSL3_RT_APPLICATION_DATA 23 + +/* Pseudo content types to indicate additional parameters */ +#define TLS1_RT_CRYPTO 0x1000 +#define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) +#define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) +#define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) +#define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) + +#define TLS1_RT_CRYPTO_READ 0x0000 +#define TLS1_RT_CRYPTO_WRITE 0x0100 +#define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) +#define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) +#define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) +#define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) + +/* Pseudo content types for SSL/TLS header info */ +#define SSL3_RT_HEADER 0x100 +#define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +/* Pseudo content types for QUIC */ +#define SSL3_RT_QUIC_DATAGRAM 0x200 +#define SSL3_RT_QUIC_PACKET 0x201 +#define SSL3_RT_QUIC_FRAME_FULL 0x202 +#define SSL3_RT_QUIC_FRAME_HEADER 0x203 +#define SSL3_RT_QUIC_FRAME_PADDING 0x204 + +#define SSL3_AL_WARNING 1 +#define SSL3_AL_FATAL 2 + +#define SSL3_AD_CLOSE_NOTIFY 0 +#define SSL3_AD_UNEXPECTED_MESSAGE 10 /* fatal */ +#define SSL3_AD_BAD_RECORD_MAC 20 /* fatal */ +#define SSL3_AD_DECOMPRESSION_FAILURE 30 /* fatal */ +#define SSL3_AD_HANDSHAKE_FAILURE 40 /* fatal */ +#define SSL3_AD_NO_CERTIFICATE 41 +#define SSL3_AD_BAD_CERTIFICATE 42 +#define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 +#define SSL3_AD_CERTIFICATE_REVOKED 44 +#define SSL3_AD_CERTIFICATE_EXPIRED 45 +#define SSL3_AD_CERTIFICATE_UNKNOWN 46 +#define SSL3_AD_ILLEGAL_PARAMETER 47 /* fatal */ + +#define TLS1_HB_REQUEST 1 +#define TLS1_HB_RESPONSE 2 + +#define SSL3_CT_RSA_SIGN 1 +#define SSL3_CT_DSS_SIGN 2 +#define SSL3_CT_RSA_FIXED_DH 3 +#define SSL3_CT_DSS_FIXED_DH 4 +#define SSL3_CT_RSA_EPHEMERAL_DH 5 +#define SSL3_CT_DSS_EPHEMERAL_DH 6 +#define SSL3_CT_FORTEZZA_DMS 20 +/* + * SSL3_CT_NUMBER is used to size arrays and it must be large enough to + * contain all of the cert types defined for *either* SSLv3 and TLSv1. + */ +#define SSL3_CT_NUMBER 12 + +#if defined(TLS_CT_NUMBER) +#if TLS_CT_NUMBER != SSL3_CT_NUMBER +#error "SSL/TLS CT_NUMBER values do not match" +#endif +#endif + +/* No longer used as of OpenSSL 1.1.1 */ +#define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +#define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +#define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +#define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +#define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +#define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +#define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +#define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +#define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +/* 0x2000 is reserved for TLS1_FLAGS_QUIC (internal) */ +/* 0x4000 is reserved for TLS1_FLAGS_QUIC_INTERNAL (internal) */ + +#define SSL3_MT_HELLO_REQUEST 0 +#define SSL3_MT_CLIENT_HELLO 1 +#define SSL3_MT_SERVER_HELLO 2 +#define SSL3_MT_NEWSESSION_TICKET 4 +#define SSL3_MT_END_OF_EARLY_DATA 5 +#define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +#define SSL3_MT_CERTIFICATE 11 +#define SSL3_MT_SERVER_KEY_EXCHANGE 12 +#define SSL3_MT_CERTIFICATE_REQUEST 13 +#define SSL3_MT_SERVER_DONE 14 +#define SSL3_MT_CERTIFICATE_VERIFY 15 +#define SSL3_MT_CLIENT_KEY_EXCHANGE 16 +#define SSL3_MT_FINISHED 20 +#define SSL3_MT_CERTIFICATE_URL 21 +#define SSL3_MT_CERTIFICATE_STATUS 22 +#define SSL3_MT_SUPPLEMENTAL_DATA 23 +#define SSL3_MT_KEY_UPDATE 24 +#define SSL3_MT_COMPRESSED_CERTIFICATE 25 +#ifndef OPENSSL_NO_NEXTPROTONEG +#define SSL3_MT_NEXT_PROTO 67 +#endif +#define SSL3_MT_MESSAGE_HASH 254 +#define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +#define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +#define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +#define SSL3_CC_READ 0x001 +#define SSL3_CC_WRITE 0x002 +#define SSL3_CC_CLIENT 0x010 +#define SSL3_CC_SERVER 0x020 +#define SSL3_CC_EARLY 0x040 +#define SSL3_CC_HANDSHAKE 0x080 +#define SSL3_CC_APPLICATION 0x100 +#define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT | SSL3_CC_WRITE) +#define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER | SSL3_CC_READ) +#define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT | SSL3_CC_READ) +#define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER | SSL3_CC_WRITE) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sslerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sslerr.h new file mode 100644 index 0000000..6993255 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sslerr.h @@ -0,0 +1,380 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_SSLERR_H +#define OPENSSL_SSLERR_H +#pragma once + +#include +#include +#include + +/* + * SSL reason codes. + */ +#define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +#define SSL_R_APP_DATA_IN_HANDSHAKE 100 +#define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +#define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +#define SSL_R_BAD_CERTIFICATE 348 +#define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +#define SSL_R_BAD_CIPHER 186 +#define SSL_R_BAD_COMPRESSION_ALGORITHM 326 +#define SSL_R_BAD_DATA 390 +#define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +#define SSL_R_BAD_DECOMPRESSION 107 +#define SSL_R_BAD_DH_VALUE 102 +#define SSL_R_BAD_DIGEST_LENGTH 111 +#define SSL_R_BAD_EARLY_DATA 233 +#define SSL_R_BAD_ECC_CERT 304 +#define SSL_R_BAD_ECPOINT 306 +#define SSL_R_BAD_EXTENSION 110 +#define SSL_R_BAD_HANDSHAKE_LENGTH 332 +#define SSL_R_BAD_HANDSHAKE_STATE 236 +#define SSL_R_BAD_HELLO_REQUEST 105 +#define SSL_R_BAD_HRR_VERSION 263 +#define SSL_R_BAD_KEY_SHARE 108 +#define SSL_R_BAD_KEY_UPDATE 122 +#define SSL_R_BAD_LEGACY_VERSION 292 +#define SSL_R_BAD_LENGTH 271 +#define SSL_R_BAD_PACKET 240 +#define SSL_R_BAD_PACKET_LENGTH 115 +#define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +#define SSL_R_BAD_PSK 219 +#define SSL_R_BAD_PSK_IDENTITY 114 +#define SSL_R_BAD_RECORD_TYPE 443 +#define SSL_R_BAD_RSA_ENCRYPT 119 +#define SSL_R_BAD_SIGNATURE 123 +#define SSL_R_BAD_SRP_A_LENGTH 347 +#define SSL_R_BAD_SRP_PARAMETERS 371 +#define SSL_R_BAD_SRTP_MKI_VALUE 352 +#define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +#define SSL_R_BAD_SSL_FILETYPE 124 +#define SSL_R_BAD_VALUE 384 +#define SSL_R_BAD_WRITE_RETRY 127 +#define SSL_R_BINDER_DOES_NOT_VERIFY 253 +#define SSL_R_BIO_NOT_SET 128 +#define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +#define SSL_R_BN_LIB 130 +#define SSL_R_CALLBACK_FAILED 234 +#define SSL_R_CANNOT_CHANGE_CIPHER 109 +#define SSL_R_CANNOT_GET_GROUP_NAME 299 +#define SSL_R_CA_DN_LENGTH_MISMATCH 131 +#define SSL_R_CA_KEY_TOO_SMALL 397 +#define SSL_R_CA_MD_TOO_WEAK 398 +#define SSL_R_CCS_RECEIVED_EARLY 133 +#define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +#define SSL_R_CERT_CB_ERROR 377 +#define SSL_R_CERT_LENGTH_MISMATCH 135 +#define SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +#define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +#define SSL_R_CLIENTHELLO_TLSEXT 226 +#define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +#define SSL_R_COMPRESSION_DISABLED 343 +#define SSL_R_COMPRESSION_FAILURE 141 +#define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +#define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +#define SSL_R_CONNECTION_TYPE_NOT_SET 144 +#define SSL_R_CONN_USE_ONLY 356 +#define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 +#define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +#define SSL_R_COOKIE_MISMATCH 308 +#define SSL_R_COPY_PARAMETERS_FAILED 296 +#define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +#define SSL_R_DANE_ALREADY_ENABLED 172 +#define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +#define SSL_R_DANE_NOT_ENABLED 175 +#define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +#define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +#define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +#define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +#define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +#define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +#define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +#define SSL_R_DANE_TLSA_NULL_DATA 203 +#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +#define SSL_R_DATA_LENGTH_TOO_LONG 146 +#define SSL_R_DECRYPTION_FAILED 147 +#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +#define SSL_R_DH_KEY_TOO_SMALL 394 +#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +#define SSL_R_DIGEST_CHECK_FAILED 149 +#define SSL_R_DOMAIN_USE_ONLY 422 +#define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +#define SSL_R_DUPLICATE_COMPRESSION_ID 309 +#define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +#define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +#define SSL_R_EE_KEY_TOO_SMALL 399 +#define SSL_R_EMPTY_RAW_PUBLIC_KEY 349 +#define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +#define SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG 419 +#define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +#define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +#define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +#define SSL_R_EXTENSION_NOT_RECEIVED 279 +#define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +#define SSL_R_EXT_LENGTH_MISMATCH 163 +#define SSL_R_FAILED_TO_GET_PARAMETER 316 +#define SSL_R_FAILED_TO_INIT_ASYNC 405 +#define SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE 417 +#define SSL_R_FEATURE_NOT_RENEGOTIABLE 413 +#define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +#define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +#define SSL_R_HTTPS_PROXY_REQUEST 155 +#define SSL_R_HTTP_REQUEST 156 +#define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +#define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +#define SSL_R_INAPPROPRIATE_FALLBACK 373 +#define SSL_R_INCONSISTENT_COMPRESSION 340 +#define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +#define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +#define SSL_R_INCONSISTENT_EXTMS 104 +#define SSL_R_INSUFFICIENT_SECURITY 241 +#define SSL_R_INVALID_ALERT 205 +#define SSL_R_INVALID_CCS_MESSAGE 260 +#define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +#define SSL_R_INVALID_COMMAND 280 +#define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +#define SSL_R_INVALID_CONFIG 283 +#define SSL_R_INVALID_CONFIGURATION_NAME 113 +#define SSL_R_INVALID_CONTEXT 282 +#define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +#define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +#define SSL_R_INVALID_MAX_EARLY_DATA 174 +#define SSL_R_INVALID_NULL_CMD_NAME 385 +#define SSL_R_INVALID_RAW_PUBLIC_KEY 350 +#define SSL_R_INVALID_RECORD 317 +#define SSL_R_INVALID_SEQUENCE_NUMBER 402 +#define SSL_R_INVALID_SERVERINFO_DATA 388 +#define SSL_R_INVALID_SESSION_ID 999 +#define SSL_R_INVALID_SRP_USERNAME 357 +#define SSL_R_INVALID_STATUS_RESPONSE 328 +#define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +#define SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED 333 +#define SSL_R_LENGTH_MISMATCH 159 +#define SSL_R_LENGTH_TOO_LONG 404 +#define SSL_R_LENGTH_TOO_SHORT 160 +#define SSL_R_LIBRARY_BUG 274 +#define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +#define SSL_R_LISTENER_USE_ONLY 421 +#define SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED 395 +#define SSL_R_MISSING_DSA_SIGNING_CERT 165 +#define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +#define SSL_R_MISSING_FATAL 256 +#define SSL_R_MISSING_PARAMETERS 290 +#define SSL_R_MISSING_PSK_KEX_MODES_EXTENSION 310 +#define SSL_R_MISSING_QUIC_TLS_FUNCTIONS 423 +#define SSL_R_MISSING_RSA_CERTIFICATE 168 +#define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +#define SSL_R_MISSING_RSA_SIGNING_CERT 170 +#define SSL_R_MISSING_SIGALGS_EXTENSION 112 +#define SSL_R_MISSING_SIGNING_CERT 221 +#define SSL_R_MISSING_SRP_PARAM 358 +#define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +#define SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION 420 +#define SSL_R_MISSING_TMP_DH_KEY 171 +#define SSL_R_MISSING_TMP_ECDH_KEY 311 +#define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +#define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +#define SSL_R_NOT_REPLACING_CERTIFICATE 289 +#define SSL_R_NOT_SERVER 284 +#define SSL_R_NO_APPLICATION_PROTOCOL 235 +#define SSL_R_NO_CERTIFICATES_RETURNED 176 +#define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +#define SSL_R_NO_CERTIFICATE_SET 179 +#define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +#define SSL_R_NO_CIPHERS_AVAILABLE 181 +#define SSL_R_NO_CIPHERS_SPECIFIED 183 +#define SSL_R_NO_CIPHER_MATCH 185 +#define SSL_R_NO_CLIENT_CERT_METHOD 331 +#define SSL_R_NO_COMPRESSION_SPECIFIED 187 +#define SSL_R_NO_COOKIE_CALLBACK_SET 287 +#define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +#define SSL_R_NO_METHOD_SPECIFIED 188 +#define SSL_R_NO_PEM_EXTENSIONS 389 +#define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +#define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +#define SSL_R_NO_RENEGOTIATION 339 +#define SSL_R_NO_REQUIRED_DIGEST 324 +#define SSL_R_NO_SHARED_CIPHER 193 +#define SSL_R_NO_SHARED_GROUPS 410 +#define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +#define SSL_R_NO_SRTP_PROFILES 359 +#define SSL_R_NO_STREAM 355 +#define SSL_R_NO_SUITABLE_DIGEST_ALGORITHM 297 +#define SSL_R_NO_SUITABLE_GROUPS 295 +#define SSL_R_NO_SUITABLE_KEY_SHARE 101 +#define SSL_R_NO_SUITABLE_RECORD_LAYER 322 +#define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +#define SSL_R_NO_VALID_SCTS 216 +#define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +#define SSL_R_NULL_SSL_CTX 195 +#define SSL_R_NULL_SSL_METHOD_PASSED 196 +#define SSL_R_OCSP_CALLBACK_FAILURE 305 +#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +#define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +#define SSL_R_OVERFLOW_ERROR 237 +#define SSL_R_PACKET_LENGTH_TOO_LONG 198 +#define SSL_R_PARSE_TLSEXT 227 +#define SSL_R_PATH_TOO_LONG 270 +#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +#define SSL_R_PEM_NAME_BAD_PREFIX 391 +#define SSL_R_PEM_NAME_TOO_SHORT 392 +#define SSL_R_PIPELINE_FAILURE 406 +#define SSL_R_POLL_REQUEST_NOT_SUPPORTED 418 +#define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +#define SSL_R_PRIVATE_KEY_MISMATCH 288 +#define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +#define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +#define SSL_R_PSK_NO_CLIENT_CB 224 +#define SSL_R_PSK_NO_SERVER_CB 225 +#define SSL_R_QUIC_HANDSHAKE_LAYER_ERROR 393 +#define SSL_R_QUIC_NETWORK_ERROR 387 +#define SSL_R_QUIC_PROTOCOL_ERROR 382 +#define SSL_R_READ_BIO_NOT_SET 211 +#define SSL_R_READ_TIMEOUT_EXPIRED 312 +#define SSL_R_RECORDS_NOT_RELEASED 321 +#define SSL_R_RECORD_LAYER_FAILURE 313 +#define SSL_R_RECORD_LENGTH_MISMATCH 213 +#define SSL_R_RECORD_TOO_SMALL 298 +#define SSL_R_REMOTE_PEER_ADDRESS_NOT_SET 346 +#define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +#define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +#define SSL_R_RENEGOTIATION_MISMATCH 337 +#define SSL_R_REQUEST_PENDING 285 +#define SSL_R_REQUEST_SENT 286 +#define SSL_R_REQUIRED_CIPHER_MISSING 215 +#define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +#define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +#define SSL_R_SCT_VERIFICATION_FAILED 208 +#define SSL_R_SEQUENCE_CTR_WRAPPED 327 +#define SSL_R_SERVERHELLO_TLSEXT 275 +#define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +#define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +#define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +#define SSL_R_SRP_A_CALC 361 +#define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +#define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +#define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +#define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +#define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +#define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +#define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +#define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +#define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +#define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +#define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +#define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +#define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +#define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +#define SSL_R_SSL_COMMAND_SECTION_EMPTY 117 +#define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +#define SSL_R_SSL_HANDSHAKE_FAILURE 229 +#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +#define SSL_R_SSL_NEGATIVE_LENGTH 372 +#define SSL_R_SSL_SECTION_EMPTY 126 +#define SSL_R_SSL_SECTION_NOT_FOUND 136 +#define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +#define SSL_R_SSL_SESSION_ID_CONFLICT 302 +#define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +#define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +#define SSL_R_SSL_SESSION_ID_TOO_LONG 408 +#define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +#define SSL_R_STILL_IN_INIT 121 +#define SSL_R_STREAM_COUNT_LIMITED 411 +#define SSL_R_STREAM_FINISHED 365 +#define SSL_R_STREAM_RECV_ONLY 366 +#define SSL_R_STREAM_RESET 375 +#define SSL_R_STREAM_SEND_ONLY 379 +#define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +#define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +#define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +#define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +#define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +#define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +#define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +#define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +#define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +#define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +#define SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL 1120 +#define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +#define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +#define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +#define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +#define SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY 1115 +#define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +#define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +#define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +#define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +#define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +#define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +#define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +#define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +#define SSL_R_TOO_MANY_KEY_UPDATES 132 +#define SSL_R_TOO_MANY_WARN_ALERTS 409 +#define SSL_R_TOO_MUCH_EARLY_DATA 164 +#define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +#define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +#define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +#define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +#define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +#define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +#define SSL_R_UNEXPECTED_EOF_WHILE_READING 294 +#define SSL_R_UNEXPECTED_MESSAGE 244 +#define SSL_R_UNEXPECTED_RECORD 245 +#define SSL_R_UNINITIALIZED 276 +#define SSL_R_UNKNOWN_ALERT_TYPE 246 +#define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +#define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +#define SSL_R_UNKNOWN_CIPHER_TYPE 249 +#define SSL_R_UNKNOWN_CMD_NAME 386 +#define SSL_R_UNKNOWN_COMMAND 139 +#define SSL_R_UNKNOWN_DIGEST 368 +#define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +#define SSL_R_UNKNOWN_MANDATORY_PARAMETER 323 +#define SSL_R_UNKNOWN_PKEY_TYPE 251 +#define SSL_R_UNKNOWN_PROTOCOL 252 +#define SSL_R_UNKNOWN_SSL_VERSION 254 +#define SSL_R_UNKNOWN_STATE 255 +#define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +#define SSL_R_UNSOLICITED_EXTENSION 217 +#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE 414 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS 415 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE_OP 416 +#define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +#define SSL_R_UNSUPPORTED_PROTOCOL 258 +#define SSL_R_UNSUPPORTED_SSL_VERSION 259 +#define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +#define SSL_R_UNSUPPORTED_WRITE_FLAG 412 +#define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +#define SSL_R_VERSION_TOO_HIGH 166 +#define SSL_R_VERSION_TOO_LOW 396 +#define SSL_R_WRONG_CERTIFICATE_TYPE 383 +#define SSL_R_WRONG_CIPHER_RETURNED 261 +#define SSL_R_WRONG_CURVE 378 +#define SSL_R_WRONG_RPK_TYPE 351 +#define SSL_R_WRONG_SIGNATURE_LENGTH 264 +#define SSL_R_WRONG_SIGNATURE_SIZE 265 +#define SSL_R_WRONG_SIGNATURE_TYPE 370 +#define SSL_R_WRONG_SSL_VERSION 266 +#define SSL_R_WRONG_VERSION_NUMBER 267 +#define SSL_R_X509_LIB 268 +#define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sslerr_legacy.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sslerr_legacy.h new file mode 100644 index 0000000..8cf1ebd --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/sslerr_legacy.h @@ -0,0 +1,467 @@ +/* + * Copyright 2020-2024 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 header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public sslerr.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_SSLERR_LEGACY_H +#define OPENSSL_SSLERR_LEGACY_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_SSL_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * SSL function codes. + */ +#define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 0 +#define SSL_F_ADD_KEY_SHARE 0 +#define SSL_F_BYTES_TO_CIPHER_LIST 0 +#define SSL_F_CHECK_SUITEB_CIPHER_LIST 0 +#define SSL_F_CIPHERSUITE_CB 0 +#define SSL_F_CONSTRUCT_CA_NAMES 0 +#define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 0 +#define SSL_F_CONSTRUCT_STATEFUL_TICKET 0 +#define SSL_F_CONSTRUCT_STATELESS_TICKET 0 +#define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 0 +#define SSL_F_CREATE_TICKET_PREQUEL 0 +#define SSL_F_CT_MOVE_SCTS 0 +#define SSL_F_CT_STRICT 0 +#define SSL_F_CUSTOM_EXT_ADD 0 +#define SSL_F_CUSTOM_EXT_PARSE 0 +#define SSL_F_D2I_SSL_SESSION 0 +#define SSL_F_DANE_CTX_ENABLE 0 +#define SSL_F_DANE_MTYPE_SET 0 +#define SSL_F_DANE_TLSA_ADD 0 +#define SSL_F_DERIVE_SECRET_KEY_AND_IV 0 +#define SSL_F_DO_DTLS1_WRITE 0 +#define SSL_F_DO_SSL3_WRITE 0 +#define SSL_F_DTLS1_BUFFER_RECORD 0 +#define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 0 +#define SSL_F_DTLS1_HEARTBEAT 0 +#define SSL_F_DTLS1_HM_FRAGMENT_NEW 0 +#define SSL_F_DTLS1_PREPROCESS_FRAGMENT 0 +#define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 0 +#define SSL_F_DTLS1_PROCESS_RECORD 0 +#define SSL_F_DTLS1_READ_BYTES 0 +#define SSL_F_DTLS1_READ_FAILED 0 +#define SSL_F_DTLS1_RETRANSMIT_MESSAGE 0 +#define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 0 +#define SSL_F_DTLS1_WRITE_BYTES 0 +#define SSL_F_DTLSV1_LISTEN 0 +#define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +#define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 0 +#define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 0 +#define SSL_F_DTLS_PROCESS_HELLO_VERIFY 0 +#define SSL_F_DTLS_RECORD_LAYER_NEW 0 +#define SSL_F_DTLS_WAIT_FOR_DRY 0 +#define SSL_F_EARLY_DATA_COUNT_OK 0 +#define SSL_F_FINAL_EARLY_DATA 0 +#define SSL_F_FINAL_EC_PT_FORMATS 0 +#define SSL_F_FINAL_EMS 0 +#define SSL_F_FINAL_KEY_SHARE 0 +#define SSL_F_FINAL_MAXFRAGMENTLEN 0 +#define SSL_F_FINAL_RENEGOTIATE 0 +#define SSL_F_FINAL_SERVER_NAME 0 +#define SSL_F_FINAL_SIG_ALGS 0 +#define SSL_F_GET_CERT_VERIFY_TBS_DATA 0 +#define SSL_F_NSS_KEYLOG_INT 0 +#define SSL_F_OPENSSL_INIT_SSL 0 +#define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_POST_WORK 0 +#define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 0 +#define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 0 +#define SSL_F_PARSE_CA_NAMES 0 +#define SSL_F_PITEM_NEW 0 +#define SSL_F_PQUEUE_NEW 0 +#define SSL_F_PROCESS_KEY_SHARE_EXT 0 +#define SSL_F_READ_STATE_MACHINE 0 +#define SSL_F_SET_CLIENT_CIPHERSUITE 0 +#define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 0 +#define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 0 +#define SSL_F_SRP_VERIFY_SERVER_PARAM 0 +#define SSL_F_SSL3_CHANGE_CIPHER_STATE 0 +#define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 0 +#define SSL_F_SSL3_CTRL 0 +#define SSL_F_SSL3_CTX_CTRL 0 +#define SSL_F_SSL3_DIGEST_CACHED_RECORDS 0 +#define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 0 +#define SSL_F_SSL3_ENC 0 +#define SSL_F_SSL3_FINAL_FINISH_MAC 0 +#define SSL_F_SSL3_FINISH_MAC 0 +#define SSL_F_SSL3_GENERATE_KEY_BLOCK 0 +#define SSL_F_SSL3_GENERATE_MASTER_SECRET 0 +#define SSL_F_SSL3_GET_RECORD 0 +#define SSL_F_SSL3_INIT_FINISHED_MAC 0 +#define SSL_F_SSL3_OUTPUT_CERT_CHAIN 0 +#define SSL_F_SSL3_READ_BYTES 0 +#define SSL_F_SSL3_READ_N 0 +#define SSL_F_SSL3_SETUP_KEY_BLOCK 0 +#define SSL_F_SSL3_SETUP_READ_BUFFER 0 +#define SSL_F_SSL3_SETUP_WRITE_BUFFER 0 +#define SSL_F_SSL3_WRITE_BYTES 0 +#define SSL_F_SSL3_WRITE_PENDING 0 +#define SSL_F_SSL_ADD_CERT_CHAIN 0 +#define SSL_F_SSL_ADD_CERT_TO_BUF 0 +#define SSL_F_SSL_ADD_CERT_TO_WPACKET 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 0 +#define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 0 +#define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_BUILD_CERT_CHAIN 0 +#define SSL_F_SSL_BYTES_TO_CIPHER_LIST 0 +#define SSL_F_SSL_CACHE_CIPHERLIST 0 +#define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 0 +#define SSL_F_SSL_CERT_DUP 0 +#define SSL_F_SSL_CERT_NEW 0 +#define SSL_F_SSL_CERT_SET0_CHAIN 0 +#define SSL_F_SSL_CHECK_PRIVATE_KEY 0 +#define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 0 +#define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 0 +#define SSL_F_SSL_CHOOSE_CLIENT_VERSION 0 +#define SSL_F_SSL_CIPHER_DESCRIPTION 0 +#define SSL_F_SSL_CIPHER_LIST_TO_BYTES 0 +#define SSL_F_SSL_CIPHER_PROCESS_RULESTR 0 +#define SSL_F_SSL_CIPHER_STRENGTH_SORT 0 +#define SSL_F_SSL_CLEAR 0 +#define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 0 +#define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 0 +#define SSL_F_SSL_CONF_CMD 0 +#define SSL_F_SSL_CREATE_CIPHER_LIST 0 +#define SSL_F_SSL_CTRL 0 +#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 0 +#define SSL_F_SSL_CTX_ENABLE_CT 0 +#define SSL_F_SSL_CTX_MAKE_PROFILES 0 +#define SSL_F_SSL_CTX_NEW 0 +#define SSL_F_SSL_CTX_SET_ALPN_PROTOS 0 +#define SSL_F_SSL_CTX_SET_CIPHER_LIST 0 +#define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 0 +#define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 0 +#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 0 +#define SSL_F_SSL_CTX_SET_SSL_VERSION 0 +#define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 0 +#define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO_EX 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 0 +#define SSL_F_SSL_DANE_DUP 0 +#define SSL_F_SSL_DANE_ENABLE 0 +#define SSL_F_SSL_DERIVE 0 +#define SSL_F_SSL_DO_CONFIG 0 +#define SSL_F_SSL_DO_HANDSHAKE 0 +#define SSL_F_SSL_DUP_CA_LIST 0 +#define SSL_F_SSL_ENABLE_CT 0 +#define SSL_F_SSL_GENERATE_PKEY_GROUP 0 +#define SSL_F_SSL_GENERATE_SESSION_ID 0 +#define SSL_F_SSL_GET_NEW_SESSION 0 +#define SSL_F_SSL_GET_PREV_SESSION 0 +#define SSL_F_SSL_GET_SERVER_CERT_INDEX 0 +#define SSL_F_SSL_GET_SIGN_PKEY 0 +#define SSL_F_SSL_HANDSHAKE_HASH 0 +#define SSL_F_SSL_INIT_WBIO_BUFFER 0 +#define SSL_F_SSL_KEY_UPDATE 0 +#define SSL_F_SSL_LOAD_CLIENT_CA_FILE 0 +#define SSL_F_SSL_LOG_MASTER_SECRET 0 +#define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_SSL_MODULE_INIT 0 +#define SSL_F_SSL_NEW 0 +#define SSL_F_SSL_NEXT_PROTO_VALIDATE 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_PEEK 0 +#define SSL_F_SSL_PEEK_EX 0 +#define SSL_F_SSL_PEEK_INTERNAL 0 +#define SSL_F_SSL_READ 0 +#define SSL_F_SSL_READ_EARLY_DATA 0 +#define SSL_F_SSL_READ_EX 0 +#define SSL_F_SSL_READ_INTERNAL 0 +#define SSL_F_SSL_RENEGOTIATE 0 +#define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 0 +#define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_SESSION_DUP 0 +#define SSL_F_SSL_SESSION_NEW 0 +#define SSL_F_SSL_SESSION_PRINT_FP 0 +#define SSL_F_SSL_SESSION_SET1_ID 0 +#define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 0 +#define SSL_F_SSL_SET_ALPN_PROTOS 0 +#define SSL_F_SSL_SET_CERT 0 +#define SSL_F_SSL_SET_CERT_AND_KEY 0 +#define SSL_F_SSL_SET_CIPHER_LIST 0 +#define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 0 +#define SSL_F_SSL_SET_FD 0 +#define SSL_F_SSL_SET_PKEY 0 +#define SSL_F_SSL_SET_RFD 0 +#define SSL_F_SSL_SET_SESSION 0 +#define SSL_F_SSL_SET_SESSION_ID_CONTEXT 0 +#define SSL_F_SSL_SET_SESSION_TICKET_EXT 0 +#define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +#define SSL_F_SSL_SET_WFD 0 +#define SSL_F_SSL_SHUTDOWN 0 +#define SSL_F_SSL_SRP_CTX_INIT 0 +#define SSL_F_SSL_START_ASYNC_JOB 0 +#define SSL_F_SSL_UNDEFINED_FUNCTION 0 +#define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 0 +#define SSL_F_SSL_USE_CERTIFICATE 0 +#define SSL_F_SSL_USE_CERTIFICATE_ASN1 0 +#define SSL_F_SSL_USE_CERTIFICATE_FILE 0 +#define SSL_F_SSL_USE_PRIVATEKEY 0 +#define SSL_F_SSL_USE_PRIVATEKEY_ASN1 0 +#define SSL_F_SSL_USE_PRIVATEKEY_FILE 0 +#define SSL_F_SSL_USE_PSK_IDENTITY_HINT 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 0 +#define SSL_F_SSL_VALIDATE_CT 0 +#define SSL_F_SSL_VERIFY_CERT_CHAIN 0 +#define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 0 +#define SSL_F_SSL_WRITE 0 +#define SSL_F_SSL_WRITE_EARLY_DATA 0 +#define SSL_F_SSL_WRITE_EARLY_FINISH 0 +#define SSL_F_SSL_WRITE_EX 0 +#define SSL_F_SSL_WRITE_INTERNAL 0 +#define SSL_F_STATE_MACHINE 0 +#define SSL_F_TLS12_CHECK_PEER_SIGALG 0 +#define SSL_F_TLS12_COPY_SIGALGS 0 +#define SSL_F_TLS13_CHANGE_CIPHER_STATE 0 +#define SSL_F_TLS13_ENC 0 +#define SSL_F_TLS13_FINAL_FINISH_MAC 0 +#define SSL_F_TLS13_GENERATE_SECRET 0 +#define SSL_F_TLS13_HKDF_EXPAND 0 +#define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 0 +#define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 0 +#define SSL_F_TLS13_SETUP_KEY_BLOCK 0 +#define SSL_F_TLS1_CHANGE_CIPHER_STATE 0 +#define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 0 +#define SSL_F_TLS1_ENC 0 +#define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 0 +#define SSL_F_TLS1_GET_CURVELIST 0 +#define SSL_F_TLS1_PRF 0 +#define SSL_F_TLS1_SAVE_U16 0 +#define SSL_F_TLS1_SETUP_KEY_BLOCK 0 +#define SSL_F_TLS1_SET_GROUPS 0 +#define SSL_F_TLS1_SET_RAW_SIGALGS 0 +#define SSL_F_TLS1_SET_SERVER_SIGALGS 0 +#define SSL_F_TLS1_SET_SHARED_SIGALGS 0 +#define SSL_F_TLS1_SET_SIGALGS 0 +#define SSL_F_TLS_CHOOSE_SIGALG 0 +#define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 0 +#define SSL_F_TLS_COLLECT_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 0 +#define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_CERT_STATUS 0 +#define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 0 +#define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +#define SSL_F_TLS_CONSTRUCT_CKE_DHE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_GOST 0 +#define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_RSA 0 +#define SSL_F_TLS_CONSTRUCT_CKE_SRP 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EMS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_ETM 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_NPN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PSK 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SCT 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SRP 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_FINISHED 0 +#define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 0 +#define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_ALPN 0 +#define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 0 +#define SSL_F_TLS_CONSTRUCT_STOC_DONE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EMS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_ETM 0 +#define SSL_F_TLS_CONSTRUCT_STOC_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 0 +#define SSL_F_TLS_CONSTRUCT_STOC_PSK 0 +#define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 0 +#define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_FINISH_HANDSHAKE 0 +#define SSL_F_TLS_GET_MESSAGE_BODY 0 +#define SSL_F_TLS_GET_MESSAGE_HEADER 0 +#define SSL_F_TLS_HANDLE_ALPN 0 +#define SSL_F_TLS_HANDLE_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 0 +#define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 0 +#define SSL_F_TLS_PARSE_CTOS_ALPN 0 +#define SSL_F_TLS_PARSE_CTOS_COOKIE 0 +#define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 0 +#define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 0 +#define SSL_F_TLS_PARSE_CTOS_EMS 0 +#define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 0 +#define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 0 +#define SSL_F_TLS_PARSE_CTOS_PSK 0 +#define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 0 +#define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 0 +#define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 0 +#define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 0 +#define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 0 +#define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 0 +#define SSL_F_TLS_PARSE_CTOS_SRP 0 +#define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_PARSE_CTOS_USE_SRTP 0 +#define SSL_F_TLS_PARSE_STOC_ALPN 0 +#define SSL_F_TLS_PARSE_STOC_COOKIE 0 +#define SSL_F_TLS_PARSE_STOC_EARLY_DATA 0 +#define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 0 +#define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 0 +#define SSL_F_TLS_PARSE_STOC_KEY_SHARE 0 +#define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_PARSE_STOC_NPN 0 +#define SSL_F_TLS_PARSE_STOC_PSK 0 +#define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 0 +#define SSL_F_TLS_PARSE_STOC_SCT 0 +#define SSL_F_TLS_PARSE_STOC_SERVER_NAME 0 +#define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 0 +#define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_PARSE_STOC_USE_SRTP 0 +#define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 0 +#define SSL_F_TLS_PROCESS_CERT_STATUS 0 +#define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 0 +#define SSL_F_TLS_PROCESS_CERT_VERIFY 0 +#define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 0 +#define SSL_F_TLS_PROCESS_CKE_DHE 0 +#define SSL_F_TLS_PROCESS_CKE_ECDHE 0 +#define SSL_F_TLS_PROCESS_CKE_GOST 0 +#define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_PROCESS_CKE_RSA 0 +#define SSL_F_TLS_PROCESS_CKE_SRP 0 +#define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 0 +#define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 0 +#define SSL_F_TLS_PROCESS_FINISHED 0 +#define SSL_F_TLS_PROCESS_HELLO_REQ 0 +#define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 0 +#define SSL_F_TLS_PROCESS_KEY_EXCHANGE 0 +#define SSL_F_TLS_PROCESS_KEY_UPDATE 0 +#define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 0 +#define SSL_F_TLS_PROCESS_NEXT_PROTO 0 +#define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_SERVER_DONE 0 +#define SSL_F_TLS_PROCESS_SERVER_HELLO 0 +#define SSL_F_TLS_PROCESS_SKE_DHE 0 +#define SSL_F_TLS_PROCESS_SKE_ECDHE 0 +#define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_PROCESS_SKE_SRP 0 +#define SSL_F_TLS_PSK_DO_BINDER 0 +#define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 0 +#define SSL_F_TLS_SETUP_HANDSHAKE 0 +#define SSL_F_USE_CERTIFICATE_CHAIN_FILE 0 +#define SSL_F_WPACKET_INTERN_INIT_LEN 0 +#define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 0 +#define SSL_F_WRITE_STATE_MACHINE 0 +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/stack.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/stack.h new file mode 100644 index 0000000..542de76 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/stack.h @@ -0,0 +1,92 @@ +/* + * Copyright 1995-2025 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_STACK_H +#define OPENSSL_STACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_STACK_H +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void (*OPENSSL_sk_freefunc_thunk)(OPENSSL_sk_freefunc, void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +OPENSSL_STACK *OPENSSL_sk_set_thunks(OPENSSL_STACK *st, OPENSSL_sk_freefunc_thunk f_thunk); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, OPENSSL_sk_freefunc func); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_all(OPENSSL_STACK *st, const void *data, int *pnum); +int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); +void *OPENSSL_sk_shift(OPENSSL_STACK *st); +void *OPENSSL_sk_pop(OPENSSL_STACK *st); +void OPENSSL_sk_zero(OPENSSL_STACK *st); +OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, + OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); +void OPENSSL_sk_sort(OPENSSL_STACK *st); +int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _STACK OPENSSL_STACK +#define sk_num OPENSSL_sk_num +#define sk_value OPENSSL_sk_value +#define sk_set OPENSSL_sk_set +#define sk_new OPENSSL_sk_new +#define sk_new_null OPENSSL_sk_new_null +#define sk_free OPENSSL_sk_free +#define sk_pop_free OPENSSL_sk_pop_free +#define sk_deep_copy OPENSSL_sk_deep_copy +#define sk_insert OPENSSL_sk_insert +#define sk_delete OPENSSL_sk_delete +#define sk_delete_ptr OPENSSL_sk_delete_ptr +#define sk_find OPENSSL_sk_find +#define sk_find_ex OPENSSL_sk_find_ex +#define sk_push OPENSSL_sk_push +#define sk_unshift OPENSSL_sk_unshift +#define sk_shift OPENSSL_sk_shift +#define sk_pop OPENSSL_sk_pop +#define sk_zero OPENSSL_sk_zero +#define sk_set_cmp_func OPENSSL_sk_set_cmp_func +#define sk_dup OPENSSL_sk_dup +#define sk_sort OPENSSL_sk_sort +#define sk_is_sorted OPENSSL_sk_is_sorted +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/store.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/store.h new file mode 100644 index 0000000..2f14704 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/store.h @@ -0,0 +1,372 @@ +/* + * Copyright 2016-2025 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_STORE_H +#define OPENSSL_STORE_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OSSL_STORE_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * The main OSSL_STORE functions. + * ------------------------------ + * + * These allow applications to open a channel to a resource with supported + * data (keys, certs, crls, ...), read the data a piece at a time and decide + * what to do with it, and finally close. + */ + +typedef struct ossl_store_ctx_st OSSL_STORE_CTX; + +/* + * Typedef for the OSSL_STORE_INFO post processing callback. This can be used + * to massage the given OSSL_STORE_INFO, or to drop it entirely (by returning + * NULL). + */ +typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, + void *); + +/* + * Open a channel given a URI. The given UI method will be used any time the + * loader needs extra input, for example when a password or pin is needed, and + * will be passed the same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + */ +OSSL_STORE_CTX * +OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); +OSSL_STORE_CTX * +OSSL_STORE_open_ex(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/* + * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be + * done, and depends on the underlying loader (use OSSL_STORE_get0_scheme to + * determine which loader is used), except for common commands (see below). + * Each command takes different arguments. + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, + ... /* args */); +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, + va_list args); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* + * Common ctrl commands that different loaders may choose to support. + */ +/* int on = 0 or 1; STORE_ctrl(ctx, STORE_C_USE_SECMEM, &on); */ +#define OSSL_STORE_C_USE_SECMEM 1 +/* Where custom commands start */ +#define OSSL_STORE_C_CUSTOM_START 100 + +#endif + +/* + * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE + * functionality, given a context. + * Returns a OSSL_STORE_INFO pointer, from which OpenSSL typed data can be + * extracted with OSSL_STORE_INFO_get0_PKEY(), OSSL_STORE_INFO_get0_CERT(), ... + * NULL is returned on error, which may include that the data found at the URI + * can't be figured out for certain or is ambiguous. + */ +OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); + +/* + * Deletes the object in the store by URI. + * Returns 1 on success, 0 otherwise. + */ +int OSSL_STORE_delete(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[]); + +/* + * Check if end of data (end of file) is reached + * Returns 1 on end, 0 otherwise. + */ +int OSSL_STORE_eof(OSSL_STORE_CTX *ctx); + +/* + * Check if an error occurred + * Returns 1 if it did, 0 otherwise. + */ +int OSSL_STORE_error(OSSL_STORE_CTX *ctx); + +/* + * Close the channel + * Returns 1 on success, 0 on error. + */ +int OSSL_STORE_close(OSSL_STORE_CTX *ctx); + +/* + * Attach to a BIO. This works like OSSL_STORE_open() except it takes a + * BIO instead of a uri, along with a scheme to use when reading. + * The given UI method will be used any time the loader needs extra input, + * for example when a password or pin is needed, and will be passed the + * same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + * + * Note that this function is considered unsafe, all depending on what the + * BIO actually reads. + */ +OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, const char *scheme, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/*- + * Extracting OpenSSL types from and creating new OSSL_STORE_INFOs + * --------------------------------------------------------------- + */ + +/* + * Types of data that can be ossl_stored in a OSSL_STORE_INFO. + * OSSL_STORE_INFO_NAME is typically found when getting a listing of + * available "files" / "tokens" / what have you. + */ +#define OSSL_STORE_INFO_NAME 1 /* char * */ +#define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_PUBKEY 3 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_PKEY 4 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_CERT 5 /* X509 * */ +#define OSSL_STORE_INFO_CRL 6 /* X509_CRL * */ + +/* + * Functions to generate OSSL_STORE_INFOs, one function for each type we + * support having in them, as well as a generic constructor. + * + * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO + * and will therefore be freed when the OSSL_STORE_INFO is freed. + */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new(int type, void *data); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); +int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PUBKEY(EVP_PKEY *pubkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); + +/* + * Functions to try to extract data from a OSSL_STORE_INFO. + */ +int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +void *OSSL_STORE_INFO_get0_data(int type, const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *info); + +const char *OSSL_STORE_INFO_type_string(int type); + +/* + * Free the OSSL_STORE_INFO + */ +void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); + +/*- + * Functions to construct a search URI from a base URI and search criteria + * ----------------------------------------------------------------------- + */ + +/* OSSL_STORE search types */ +#define OSSL_STORE_SEARCH_BY_NAME 1 /* subject in certs, issuer in CRLs */ +#define OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 2 +#define OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 3 +#define OSSL_STORE_SEARCH_BY_ALIAS 4 + +/* To check what search types the scheme handler supports */ +int OSSL_STORE_supports_search(OSSL_STORE_CTX *ctx, int search_type); + +/* Search term constructors */ +/* + * The input is considered to be owned by the caller, and must therefore + * remain present throughout the lifetime of the returned OSSL_STORE_SEARCH + */ +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name, + const ASN1_INTEGER + *serial); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest, + const unsigned char + *bytes, + size_t len); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias); + +/* Search term destructor */ +void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search); + +/* Search term accessors */ +int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion); +X509_NAME *OSSL_STORE_SEARCH_get0_name(const OSSL_STORE_SEARCH *criterion); +const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH + *criterion); +const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH + *criterion, + size_t *length); +const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion); +const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH *criterion); + +/* + * Add search criterion and expected return type (which can be unspecified) + * to the loading channel. This MUST happen before the first OSSL_STORE_load(). + */ +int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); +int OSSL_STORE_find(OSSL_STORE_CTX *ctx, const OSSL_STORE_SEARCH *search); + +/*- + * Function to fetch a loader and extract data from it + * --------------------------------------------------- + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; + +OSSL_STORE_LOADER *OSSL_STORE_LOADER_fetch(OSSL_LIB_CTX *libctx, + const char *scheme, + const char *properties); +int OSSL_STORE_LOADER_up_ref(OSSL_STORE_LOADER *loader); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); +const OSSL_PROVIDER *OSSL_STORE_LOADER_get0_provider(const OSSL_STORE_LOADER * + loader); +const char *OSSL_STORE_LOADER_get0_properties(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_description(const OSSL_STORE_LOADER *loader); +int OSSL_STORE_LOADER_is_a(const OSSL_STORE_LOADER *loader, + const char *scheme); +void OSSL_STORE_LOADER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(OSSL_STORE_LOADER *loader, + void *arg), + void *arg); +int OSSL_STORE_LOADER_names_do_all(const OSSL_STORE_LOADER *loader, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM * +OSSL_STORE_LOADER_settable_ctx_params(const OSSL_STORE_LOADER *loader); + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* struct ossl_store_loader_ctx_st is defined differently by each loader */ +typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)(const OSSL_STORE_LOADER *loader, const char *uri, + const UI_METHOD *ui_method, void *ui_data); +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_ex_fn)(const OSSL_STORE_LOADER *loader, + const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); + +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn)(const OSSL_STORE_LOADER *loader, BIO *bio, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, va_list args); +typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); +typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, const OSSL_STORE_SEARCH *criteria); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); + +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open_ex(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_ex_fn open_ex_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_attach(OSSL_STORE_LOADER *loader, + OSSL_STORE_attach_fn attach_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +OSSL_DEPRECATEDIN_3_0 +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); +#endif + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_do_all_loaders(void (*do_function)(const OSSL_STORE_LOADER *loader, + void *do_arg), + void *do_arg); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/storeerr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/storeerr.h new file mode 100644 index 0000000..a61bee1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/storeerr.h @@ -0,0 +1,47 @@ +/* + * 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_STOREERR_H +#define OPENSSL_STOREERR_H +#pragma once + +#include +#include +#include + +/* + * OSSL_STORE reason codes. + */ +#define OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE 107 +#define OSSL_STORE_R_BAD_PASSWORD_READ 115 +#define OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC 113 +#define OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST 121 +#define OSSL_STORE_R_INVALID_SCHEME 106 +#define OSSL_STORE_R_IS_NOT_A 112 +#define OSSL_STORE_R_LOADER_INCOMPLETE 116 +#define OSSL_STORE_R_LOADING_STARTED 117 +#define OSSL_STORE_R_NOT_A_CERTIFICATE 100 +#define OSSL_STORE_R_NOT_A_CRL 101 +#define OSSL_STORE_R_NOT_A_NAME 103 +#define OSSL_STORE_R_NOT_A_PRIVATE_KEY 102 +#define OSSL_STORE_R_NOT_A_PUBLIC_KEY 122 +#define OSSL_STORE_R_NOT_PARAMETERS 104 +#define OSSL_STORE_R_NO_LOADERS_FOUND 123 +#define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114 +#define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108 +#define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119 +#define OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED 109 +#define OSSL_STORE_R_UNREGISTERED_SCHEME 105 +#define OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE 110 +#define OSSL_STORE_R_UNSUPPORTED_OPERATION 118 +#define OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE 120 +#define OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED 111 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/symhacks.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/symhacks.h new file mode 100644 index 0000000..d041395 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/symhacks.h @@ -0,0 +1,39 @@ +/* + * Copyright 1999-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_SYMHACKS_H +#define OPENSSL_SYMHACKS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SYMHACKS_H +#endif + +#include + +/* Case insensitive linking causes problems.... */ +#if defined(OPENSSL_SYS_VMS) +#undef ERR_load_CRYPTO_strings +#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +#undef OCSP_crlID_new +#define OCSP_crlID_new OCSP_crlID2_new + +#undef d2i_ECPARAMETERS +#define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +#undef i2d_ECPARAMETERS +#define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +#undef d2i_ECPKPARAMETERS +#define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +#undef i2d_ECPKPARAMETERS +#define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +#endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/thread.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/thread.h new file mode 100644 index 0000000..6d86e0e --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/thread.h @@ -0,0 +1,31 @@ +/* + * Copyright 1995-2023 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_THREAD_H +#define OPENSSL_THREAD_H + +#define OSSL_THREAD_SUPPORT_FLAG_THREAD_POOL (1U << 0) +#define OSSL_THREAD_SUPPORT_FLAG_DEFAULT_SPAWN (1U << 1) + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +uint32_t OSSL_get_thread_support_flags(void); +int OSSL_set_max_threads(OSSL_LIB_CTX *ctx, uint64_t max_threads); +uint64_t OSSL_get_max_threads(OSSL_LIB_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_THREAD_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/tls1.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/tls1.h new file mode 100644 index 0000000..34d3768 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/tls1.h @@ -0,0 +1,1222 @@ +/* + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. 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_TLS1_H +#define OPENSSL_TLS1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TLS1_H +#endif + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Default security level if not overridden at config time */ +#ifndef OPENSSL_TLS_SECURITY_LEVEL +#define OPENSSL_TLS_SECURITY_LEVEL 2 +#endif + +/* TLS*_VERSION constants are defined in prov_ssl.h */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TLS_MAX_VERSION TLS1_3_VERSION +#endif + +/* Special value for method supporting multiple versions */ +#define TLS_ANY_VERSION 0x10000 + +#define TLS1_VERSION_MAJOR 0x03 +#define TLS1_VERSION_MINOR 0x01 + +#define TLS1_1_VERSION_MAJOR 0x03 +#define TLS1_1_VERSION_MINOR 0x02 + +#define TLS1_2_VERSION_MAJOR 0x03 +#define TLS1_2_VERSION_MINOR 0x03 + +#define TLS1_get_version(s) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +#define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 0) + +#define TLS1_AD_DECRYPTION_FAILED 21 +#define TLS1_AD_RECORD_OVERFLOW 22 +#define TLS1_AD_UNKNOWN_CA 48 /* fatal */ +#define TLS1_AD_ACCESS_DENIED 49 /* fatal */ +#define TLS1_AD_DECODE_ERROR 50 /* fatal */ +#define TLS1_AD_DECRYPT_ERROR 51 +#define TLS1_AD_EXPORT_RESTRICTION 60 /* fatal */ +#define TLS1_AD_PROTOCOL_VERSION 70 /* fatal */ +#define TLS1_AD_INSUFFICIENT_SECURITY 71 /* fatal */ +#define TLS1_AD_INTERNAL_ERROR 80 /* fatal */ +#define TLS1_AD_INAPPROPRIATE_FALLBACK 86 /* fatal */ +#define TLS1_AD_USER_CANCELLED 90 +#define TLS1_AD_NO_RENEGOTIATION 100 +/* TLSv1.3 alerts */ +#define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +#define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* codes 110-114 are from RFC3546 */ +#define TLS1_AD_UNSUPPORTED_EXTENSION 110 +#define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +#define TLS1_AD_UNRECOGNIZED_NAME 112 +#define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +#define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +#define TLS1_AD_UNKNOWN_PSK_IDENTITY 115 /* fatal */ +#define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +#define TLSEXT_TYPE_server_name 0 +#define TLSEXT_TYPE_max_fragment_length 1 +#define TLSEXT_TYPE_client_certificate_url 2 +#define TLSEXT_TYPE_trusted_ca_keys 3 +#define TLSEXT_TYPE_truncated_hmac 4 +#define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +#define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +#define TLSEXT_TYPE_client_authz 7 +#define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +#define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +#define TLSEXT_TYPE_supported_groups 10 +#define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +#define TLSEXT_TYPE_ec_point_formats 11 + +/* ExtensionType value from RFC5054 */ +#define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +#define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +#define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC7301 */ +#define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +#define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * Extension type for Raw Public Keys + * https://tools.ietf.org/html/rfc7250 + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml + */ +#define TLSEXT_TYPE_client_cert_type 19 +#define TLSEXT_TYPE_server_cert_type 20 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +#define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +#define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +#define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC8879 */ +#define TLSEXT_TYPE_compress_certificate 27 + +/* ExtensionType value from RFC4507 */ +#define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +#define TLSEXT_TYPE_psk 41 +#define TLSEXT_TYPE_early_data 42 +#define TLSEXT_TYPE_supported_versions 43 +#define TLSEXT_TYPE_cookie 44 +#define TLSEXT_TYPE_psk_kex_modes 45 +#define TLSEXT_TYPE_certificate_authorities 47 +#define TLSEXT_TYPE_post_handshake_auth 49 +#define TLSEXT_TYPE_signature_algorithms_cert 50 +#define TLSEXT_TYPE_key_share 51 +#define TLSEXT_TYPE_quic_transport_parameters 57 + +/* Temporary extension type */ +#define TLSEXT_TYPE_renegotiate 0xff01 + +#ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +#define TLSEXT_TYPE_next_proto_neg 13172 +#endif + +/* NameType value from RFC3546 */ +#define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +#define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +#define TLSEXT_ECPOINTFORMAT_first 0 +#define TLSEXT_ECPOINTFORMAT_uncompressed 0 +#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +#define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +#define TLSEXT_signature_anonymous 0 +#define TLSEXT_signature_rsa 1 +#define TLSEXT_signature_dsa 2 +#define TLSEXT_signature_ecdsa 3 +#define TLSEXT_signature_gostr34102001 237 +#define TLSEXT_signature_gostr34102012_256 238 +#define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +#define TLSEXT_signature_num 7 + +#define TLSEXT_hash_none 0 +#define TLSEXT_hash_md5 1 +#define TLSEXT_hash_sha1 2 +#define TLSEXT_hash_sha224 3 +#define TLSEXT_hash_sha256 4 +#define TLSEXT_hash_sha384 5 +#define TLSEXT_hash_sha512 6 +#define TLSEXT_hash_gostr3411 237 +#define TLSEXT_hash_gostr34112012_256 238 +#define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +#define TLSEXT_hash_num 10 + +/* Possible compression values from RFC8879 */ +/* Not defined in RFC8879, but used internally for no-compression */ +#define TLSEXT_comp_cert_none 0 +#define TLSEXT_comp_cert_zlib 1 +#define TLSEXT_comp_cert_brotli 2 +#define TLSEXT_comp_cert_zstd 3 +/* one more than the number of defined values - used as size of 0-terminated array */ +#define TLSEXT_comp_cert_limit 4 + +/* Flag set for unrecognised algorithms */ +#define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +#define TLSEXT_curve_P_256 23 +#define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +#define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +#define TLSEXT_max_fragment_length_512 1 +#define TLSEXT_max_fragment_length_1024 2 +#define TLSEXT_max_fragment_length_2048 3 +#define TLSEXT_max_fragment_length_4096 4 +/* OpenSSL value for unset maximum fragment length extension */ +#define TLSEXT_max_fragment_length_UNSPECIFIED 255 + +/* + * TLS Certificate Type (for RFC7250) + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-3 + */ +#define TLSEXT_cert_type_x509 0 +#define TLSEXT_cert_type_pgp 1 /* recognized, but not supported */ +#define TLSEXT_cert_type_rpk 2 +#define TLSEXT_cert_type_1609dot2 3 /* recognized, but not supported */ + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +#define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +char *SSL_get1_builtin_sigalgs(OSSL_LIB_CTX *libctx); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +__owur int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +#define SSL_set_tlsext_host_name(s, name) \ + SSL_ctrl(s, SSL_CTRL_SET_TLSEXT_HOSTNAME, TLSEXT_NAMETYPE_host_name, \ + (void *)name) + +#define SSL_set_tlsext_debug_callback(ssl, cb) \ + SSL_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_DEBUG_CB, \ + (void (*)(void))cb) + +#define SSL_set_tlsext_debug_arg(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_DEBUG_ARG, 0, arg) + +#define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE, 0, NULL) + +#define SSL_set_tlsext_status_type(ssl, type) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, type, NULL) + +#define SSL_get_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS, 0, arg) + +#define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS, 0, arg) + +#define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS, 0, arg) + +#define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS, 0, arg) + +#define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP, 0, arg) + +#define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP, arglen, arg) + +#define SSL_get0_tlsext_status_ocsp_resp_ex(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP_EX, 0, arg) + +#define SSL_set0_tlsext_status_ocsp_resp_ex(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP_EX, 0, arg) + +#define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ + SSL_CTX_callback_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_CB, \ + (void (*)(void))cb) + +#define SSL_TLSEXT_ERR_OK 0 +#define SSL_TLSEXT_ERR_ALERT_WARNING 1 +#define SSL_TLSEXT_ERR_ALERT_FATAL 2 +#define SSL_TLSEXT_ERR_NOACK 3 + +#define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG, 0, arg) + +#define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_TLSEXT_TICKET_KEYS, keylen, keys) +#define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_TICKET_KEYS, keylen, keys) + +#define SSL_CTX_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB, 0, (void *)cb) +#define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB, \ + (void (*)(void))cb) + +#define SSL_CTX_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG, 0, arg) +#define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG, 0, arg) + +#define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, type, NULL) + +#define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE, 0, NULL) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB, \ + (void (*)(void))cb) +#endif +int SSL_CTX_set_tlsext_ticket_key_evp_cb(SSL_CTX *ctx, int (*fp)(SSL *, unsigned char *, unsigned char *, EVP_CIPHER_CTX *, EVP_MAC_CTX *, int)); + +/* PSK ciphersuites from 4279 */ +#define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +#define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +#define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +#define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D +#define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +#define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +#define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +#define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +#define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +#define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +#define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +#define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +#define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +#define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +#define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +#define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +#define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +#define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +#define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +#define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +#define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +#define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +#define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +#define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* AES ciphersuites from RFC3268 */ +#define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +#define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +#define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +#define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +#define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +#define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 +#define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +#define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +#define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +#define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +#define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +#define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +#define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +#define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +#define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +#define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +#define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +#define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +#define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +#define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +#define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +#define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +#define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +#define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +#define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +#define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +#define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +#define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +#define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +#define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +#define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +#define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +#define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +#define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +#define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +#define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +#define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +#define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +#define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +#define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +#define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +#define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +#define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +#define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +#define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* CCM ciphersuites from RFC6655 */ +#define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +#define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +#define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +#define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +#define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +#define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +#define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +#define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +#define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +#define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +#define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +#define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +#define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +#define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +#define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +#define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +#define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +#define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +#define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +#define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +#define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +#define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +#define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +#define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +#define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +#define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +#define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +#define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +#define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +#define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +#define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +#define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +#define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +#define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +#define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +#define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +#define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +#define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +#define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +#define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +#define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +#define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +#define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +#define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +#define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +#define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +#define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +#define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* ECDHE PSK ciphersuites from RFC5489 */ +#define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +#define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +#define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +#define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +#define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +#define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +#define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +#define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +#define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +#define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +#define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +#define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +#define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +#define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +#define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +#define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +#define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +#define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +#define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +#define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +#define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +#define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +#define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +#define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +#define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +#define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Integrity-only ciphersuites from RFC 9150 */ +#define TLS1_3_CK_SHA256_SHA256 0x0300C0B4 +#define TLS1_3_CK_SHA384_SHA384 0x0300C0B5 + +/* Aria ciphersuites from RFC6209 */ +#define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +#define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +#define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +#define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +#define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +#define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +#define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +#define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +#define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +#define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +#define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +#define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +#define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +#define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +#define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +#define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +#define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +#define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +#define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +#define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +#define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +#define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +#define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +#define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +#define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +#define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +#define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +#define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +#define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +#define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +#define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +#define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +#define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +#define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +#define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +#define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +#define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +#define TLS1_3_RFC_SHA256_SHA256 "TLS_SHA256_SHA256" +#define TLS1_3_RFC_SHA384_SHA384 "TLS_SHA384_SHA384" +#define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +#define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +#define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +#define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +#define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +#define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + +/* + * XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE + * ciphers names with "EDH" instead of "DHE". Going forward, we should be + * using DHE everywhere, though we may indefinitely maintain aliases for + * users or configurations that used "EDH" + */ +#define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +#define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +#define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +#define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +#define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +#define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +#define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +#define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +#define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +#define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +#define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +#define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +#define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +#define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +#define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +#define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +#define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +#define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +#define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +#define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +#define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +#define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +#define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +#define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +#define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +#define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +#define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +#define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +#define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* SRP ciphersuite from RFC 5054 */ +#define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +#define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +#define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +#define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +#define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +#define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +#define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* SEED ciphersuites from RFC4162 */ +#define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +#define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +#define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +#define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +#define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +#define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +#define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +#define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +#define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +#define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +#define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +#define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +#define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +#define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +#define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +#define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* CCM ciphersuites from RFC6655 */ +#define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +#define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +#define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +#define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +#define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +#define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +#define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +#define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* ECDH HMAC based ciphersuites from RFC5289 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +#define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +#define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +#define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +#define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +#define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +#define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +#define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +#define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +#define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +#define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +#define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +#define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +#define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-GCM-SHA384" + +#define TLS_CT_RSA_SIGN 1 +#define TLS_CT_DSS_SIGN 2 +#define TLS_CT_RSA_FIXED_DH 3 +#define TLS_CT_DSS_FIXED_DH 4 +#define TLS_CT_ECDSA_SIGN 64 +#define TLS_CT_RSA_FIXED_ECDH 65 +#define TLS_CT_ECDSA_FIXED_ECDH 66 +#define TLS_CT_GOST01_SIGN 22 +#define TLS_CT_GOST12_IANA_SIGN 67 +#define TLS_CT_GOST12_IANA_512_SIGN 68 +#define TLS_CT_GOST12_LEGACY_SIGN 238 +#define TLS_CT_GOST12_LEGACY_512_SIGN 239 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TLS_CT_GOST12_SIGN TLS_CT_GOST12_LEGACY_SIGN +#define TLS_CT_GOST12_512_SIGN TLS_CT_GOST12_LEGACY_512_SIGN +#endif + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +#define TLS_CT_NUMBER 12 + +#if defined(SSL3_CT_NUMBER) +#if TLS_CT_NUMBER != SSL3_CT_NUMBER +#error "SSL/TLS CT_NUMBER values do not match" +#endif +#endif + +#define TLS1_FINISH_MAC_LENGTH 12 + +#define TLS_MD_MAX_CONST_SIZE 22 + +/* ASCII: "client finished", in hex for EBCDIC compatibility */ +#define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +#define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +/* ASCII: "server finished", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +#define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "key expansion", in hex for EBCDIC compatibility */ +#define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" +#define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +/* ASCII: "client write key", in hex for EBCDIC compatibility */ +#define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "IV block", in hex for EBCDIC compatibility */ +#define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" +#define TLS_MD_IV_BLOCK_CONST_SIZE 8 +/* ASCII: "master secret", in hex for EBCDIC compatibility */ +#define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +#define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +/* ASCII: "extended master secret", in hex for EBCDIC compatibility */ +#define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +#define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/trace.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/trace.h new file mode 100644 index 0000000..ff0fba7 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/trace.h @@ -0,0 +1,325 @@ +/* + * 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_TRACE_H +#define OPENSSL_TRACE_H +#pragma once + +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * TRACE CATEGORIES + */ + +/* + * The trace messages of the OpenSSL libraries are organized into different + * categories. For every trace category, the application can register a separate + * tracer callback. When a callback is registered, a so called trace channel is + * created for this category. This channel consists essentially of an internal + * BIO which sends all trace output it receives to the registered application + * callback. + * + * The ALL category can be used as a fallback category to register a single + * channel which receives the output from all categories. However, if the + * application intends to print the trace channel name in the line prefix, + * it is better to register channels for all categories separately. + * (This is how the openssl application does it.) + */ +#define OSSL_TRACE_CATEGORY_ALL 0 /* The fallback */ +#define OSSL_TRACE_CATEGORY_TRACE 1 +#define OSSL_TRACE_CATEGORY_INIT 2 +#define OSSL_TRACE_CATEGORY_TLS 3 +#define OSSL_TRACE_CATEGORY_TLS_CIPHER 4 +#define OSSL_TRACE_CATEGORY_CONF 5 +#define OSSL_TRACE_CATEGORY_ENGINE_TABLE 6 +#define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT 7 +#define OSSL_TRACE_CATEGORY_PKCS5V2 8 +#define OSSL_TRACE_CATEGORY_PKCS12_KEYGEN 9 +#define OSSL_TRACE_CATEGORY_PKCS12_DECRYPT 10 +#define OSSL_TRACE_CATEGORY_X509V3_POLICY 11 +#define OSSL_TRACE_CATEGORY_BN_CTX 12 +#define OSSL_TRACE_CATEGORY_CMP 13 +#define OSSL_TRACE_CATEGORY_STORE 14 +#define OSSL_TRACE_CATEGORY_DECODER 15 +#define OSSL_TRACE_CATEGORY_ENCODER 16 +#define OSSL_TRACE_CATEGORY_REF_COUNT 17 +#define OSSL_TRACE_CATEGORY_HTTP 18 +#define OSSL_TRACE_CATEGORY_PROVIDER 19 +#define OSSL_TRACE_CATEGORY_QUERY 20 +#define OSSL_TRACE_CATEGORY_NUM 21 +/* KEEP THIS LIST IN SYNC with trace_categories[] in crypto/trace.c */ + +/* Returns the trace category number for the given |name| */ +int OSSL_trace_get_category_num(const char *name); + +/* Returns the trace category name for the given |num| */ +const char *OSSL_trace_get_category_name(int num); + +/* + * TRACE CONSUMERS + */ + +/* + * Enables tracing for the given |category| by providing a BIO sink + * as |channel|. If a null pointer is passed as |channel|, an existing + * trace channel is removed and tracing for the category is disabled. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_channel(int category, BIO *channel); + +/* + * Attach a prefix and a suffix to the given |category|, to be printed at the + * beginning and at the end of each trace output group, i.e. when + * OSSL_trace_begin() and OSSL_trace_end() are called. + * If a null pointer is passed as argument, the existing prefix or suffix is + * removed. + * + * They return 1 on success and 0 on failure + */ +int OSSL_trace_set_prefix(int category, const char *prefix); +int OSSL_trace_set_suffix(int category, const char *suffix); + +/* + * OSSL_trace_cb is the type tracing callback provided by the application. + * It MUST return the number of bytes written, or 0 on error (in other words, + * it can never write zero bytes). + * + * The |buffer| will always contain text, which may consist of several lines. + * The |data| argument points to whatever data was provided by the application + * when registering the tracer function. + * + * The |category| number is given, as well as a |cmd| number, described below. + */ +typedef size_t (*OSSL_trace_cb)(const char *buffer, size_t count, + int category, int cmd, void *data); +/* + * Possible |cmd| numbers. + */ +#define OSSL_TRACE_CTRL_BEGIN 0 +#define OSSL_TRACE_CTRL_WRITE 1 +#define OSSL_TRACE_CTRL_END 2 + +/* + * Enables tracing for the given |category| by creating an internal + * trace channel which sends the output to the given |callback|. + * If a null pointer is passed as callback, an existing trace channel + * is removed and tracing for the category is disabled. + * + * NOTE: OSSL_trace_set_channel() and OSSL_trace_set_callback() are mutually + * exclusive. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_callback(int category, OSSL_trace_cb callback, void *data); + +/* + * TRACE PRODUCERS + */ + +/* + * Returns 1 if tracing for the specified category is enabled, otherwise 0 + */ +int OSSL_trace_enabled(int category); + +/* + * Wrap a group of tracing output calls. OSSL_trace_begin() locks tracing and + * returns the trace channel associated with the given category, or NULL if no + * channel is associated with the category. OSSL_trace_end() unlocks tracing. + * + * Usage: + * + * BIO *out; + * if ((out = OSSL_trace_begin(category)) != NULL) { + * ... + * BIO_fprintf(out, ...); + * ... + * OSSL_trace_end(category, out); + * } + * + * See also the convenience macros OSSL_TRACE_BEGIN and OSSL_TRACE_END below. + */ +BIO *OSSL_trace_begin(int category); +void OSSL_trace_end(int category, BIO *channel); + +/* + * OSSL_TRACE* Convenience Macros + */ + +/* + * When the tracing feature is disabled, these macros are defined to + * produce dead code, which a good compiler should eliminate. + */ + +/* + * OSSL_TRACE_BEGIN, OSSL_TRACE_END - Define a Trace Group + * + * These two macros can be used to create a block which is executed only + * if the corresponding trace category is enabled. Inside this block, a + * local variable named |trc_out| is defined, which points to the channel + * associated with the given trace category. + * + * Usage: (using 'TLS' as an example category) + * + * OSSL_TRACE_BEGIN(TLS) { + * + * BIO_fprintf(trc_out, ... ); + * + * } OSSL_TRACE_END(TLS); + * + * + * This expands to the following code + * + * do { + * BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_TLS); + * if (trc_out != NULL) { + * ... + * BIO_fprintf(trc_out, ...); + * } + * OSSL_trace_end(OSSL_TRACE_CATEGORY_TLS, trc_out); + * } while (0); + * + * The use of the inner '{...}' group and the trailing ';' is enforced + * by the definition of the macros in order to make the code look as much + * like C code as possible. + * + * Before returning from inside the trace block, it is necessary to + * call OSSL_TRACE_CANCEL(category). + */ + +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_##category); \ + \ + if (trc_out != NULL) + +#define OSSL_TRACE_END(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out); \ + } \ + while (0) + +#define OSSL_TRACE_CANCEL(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out) + +#else + +#define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = NULL; \ + if (0) + +#define OSSL_TRACE_END(category) \ + } \ + while (0) + +#define OSSL_TRACE_CANCEL(category) \ + ((void)0) + +#endif + +/* + * OSSL_TRACE_ENABLED() - Check whether tracing is enabled for |category| + * + * Usage: + * + * if (OSSL_TRACE_ENABLED(TLS)) { + * ... + * } + */ +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACE_ENABLED(category) \ + OSSL_trace_enabled(OSSL_TRACE_CATEGORY_##category) + +#else + +#define OSSL_TRACE_ENABLED(category) (0) + +#endif + +/* + * OSSL_TRACE*() - OneShot Trace Macros + * + * These macros are intended to produce a simple printf-style trace output. + * Unfortunately, C90 macros don't support variable arguments, so the + * "vararg" OSSL_TRACEV() macro has a rather weird usage pattern: + * + * OSSL_TRACEV(category, (trc_out, "format string", ...args...)); + * + * Where 'channel' is the literal symbol of this name, not a variable. + * For that reason, it is currently not intended to be used directly, + * but only as helper macro for the other oneshot trace macros + * OSSL_TRACE(), OSSL_TRACE1(), OSSL_TRACE2(), ... + * + * Usage: + * + * OSSL_TRACE(INIT, "Hello world!\n"); + * OSSL_TRACE1(TLS, "The answer is %d\n", 42); + * OSSL_TRACE2(TLS, "The ultimate question to answer %d is '%s'\n", + * 42, "What do you get when you multiply six by nine?"); + */ + +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACEV(category, args) \ + OSSL_TRACE_BEGIN(category) \ + BIO_printf args; \ + OSSL_TRACE_END(category) + +#else + +#define OSSL_TRACEV(category, args) ((void)0) + +#endif + +#define OSSL_TRACE(category, text) \ + OSSL_TRACEV(category, (trc_out, "%s", text)) + +#define OSSL_TRACE1(category, format, arg1) \ + OSSL_TRACEV(category, (trc_out, format, arg1)) +#define OSSL_TRACE2(category, format, arg1, arg2) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2)) +#define OSSL_TRACE3(category, format, arg1, arg2, arg3) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3)) +#define OSSL_TRACE4(category, format, arg1, arg2, arg3, arg4) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4)) +#define OSSL_TRACE5(category, format, arg1, arg2, arg3, arg4, arg5) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5)) +#define OSSL_TRACE6(category, format, arg1, arg2, arg3, arg4, arg5, arg6) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6)) +#define OSSL_TRACE7(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7)) +#define OSSL_TRACE8(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)) +#define OSSL_TRACE9(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)) + +#define OSSL_TRACE_STRING_MAX 80 +int OSSL_trace_string(BIO *out, int text, int full, + const unsigned char *data, size_t size); +#define OSSL_TRACE_STRING(category, text, full, data, len) \ + OSSL_TRACE_BEGIN(category) \ + { \ + OSSL_trace_string(trc_out, text, full, data, len); \ + } \ + OSSL_TRACE_END(category) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ts.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ts.h new file mode 100644 index 0000000..edb6ca1 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ts.h @@ -0,0 +1,521 @@ +/* + * Copyright 2006-2024 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_TS_H +#define OPENSSL_TS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TS_H +#endif + +#include + +#ifndef OPENSSL_NO_TS +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct TS_msg_imprint_st TS_MSG_IMPRINT; +typedef struct TS_req_st TS_REQ; +typedef struct TS_accuracy_st TS_ACCURACY; +typedef struct TS_tst_info_st TS_TST_INFO; + +/* Possible values for status. */ +#define TS_STATUS_GRANTED 0 +#define TS_STATUS_GRANTED_WITH_MODS 1 +#define TS_STATUS_REJECTION 2 +#define TS_STATUS_WAITING 3 +#define TS_STATUS_REVOCATION_WARNING 4 +#define TS_STATUS_REVOCATION_NOTIFICATION 5 + +/* Possible values for failure_info. */ +#define TS_INFO_BAD_ALG 0 +#define TS_INFO_BAD_REQUEST 2 +#define TS_INFO_BAD_DATA_FORMAT 5 +#define TS_INFO_TIME_NOT_AVAILABLE 14 +#define TS_INFO_UNACCEPTED_POLICY 15 +#define TS_INFO_UNACCEPTED_EXTENSION 16 +#define TS_INFO_ADD_INFO_NOT_AVAILABLE 17 +#define TS_INFO_SYSTEM_FAILURE 25 + +typedef struct TS_status_info_st TS_STATUS_INFO; + +typedef struct TS_resp_st TS_RESP; + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_REQ) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_REQ, TS_REQ) +DECLARE_ASN1_DUP_FUNCTION(TS_REQ) + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, const TS_REQ *a); +#endif +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, const TS_REQ *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_MSG_IMPRINT) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_MSG_IMPRINT, TS_MSG_IMPRINT) +DECLARE_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) + +#ifndef OPENSSL_NO_STDIO +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_fp(FILE *fp, const TS_MSG_IMPRINT *a); +#endif +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_bio(BIO *bio, const TS_MSG_IMPRINT *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_RESP) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_RESP, TS_RESP) +DECLARE_ASN1_DUP_FUNCTION(TS_RESP) + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, const TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, const TS_RESP *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_STATUS_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_STATUS_INFO, TS_STATUS_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_STATUS_INFO) + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_TST_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_TST_INFO, TS_TST_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_TST_INFO) +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); + +#ifndef OPENSSL_NO_STDIO +TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a); +int i2d_TS_TST_INFO_fp(FILE *fp, const TS_TST_INFO *a); +#endif +TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a); +int i2d_TS_TST_INFO_bio(BIO *bio, const TS_TST_INFO *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_ACCURACY) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_ACCURACY, TS_ACCURACY) +DECLARE_ASN1_DUP_FUNCTION(TS_ACCURACY) + +int TS_REQ_set_version(TS_REQ *a, long version); +long TS_REQ_get_version(const TS_REQ *a); + +int TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i); +const ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a); + +const STACK_OF(ASN1_UTF8STRING) * +TS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a); + +const ASN1_BIT_STRING * +TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *a); + +int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a); + +int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg); +X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a); + +int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len); +ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a); + +int TS_REQ_set_policy_id(TS_REQ *a, const ASN1_OBJECT *policy); +ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a); + +int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a); + +int TS_REQ_set_cert_req(TS_REQ *a, int cert_req); +int TS_REQ_get_cert_req(const TS_REQ *a); + +STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a); +void TS_REQ_ext_free(TS_REQ *a); +int TS_REQ_get_ext_count(TS_REQ *a); +int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos); +int TS_REQ_get_ext_by_OBJ(TS_REQ *a, const ASN1_OBJECT *obj, int lastpos); +int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos); +X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc); +X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc); +int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc); +void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx); + +/* Function declarations for TS_REQ defined in ts/ts_req_print.c */ + +int TS_REQ_print_bio(BIO *bio, TS_REQ *a); + +/* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */ + +int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info); +TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a); + +/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */ +void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info); +PKCS7 *TS_RESP_get_token(TS_RESP *a); +TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a); + +int TS_TST_INFO_set_version(TS_TST_INFO *a, long version); +long TS_TST_INFO_get_version(const TS_TST_INFO *a); + +int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id); +ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a); + +int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a); + +int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial); +const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a); + +int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime); +const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a); + +int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy); +TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a); + +int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds); +const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a); + +int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis); +const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a); + +int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros); +const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a); + +int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering); +int TS_TST_INFO_get_ordering(const TS_TST_INFO *a); + +int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a); + +int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa); +GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a); + +STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a); +void TS_TST_INFO_ext_free(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_count(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos); +int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, const ASN1_OBJECT *obj, + int lastpos); +int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos); +X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc); +X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc); +int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc); +void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx); + +/* + * Declarations related to response generation, defined in ts/ts_resp_sign.c. + */ + +/* Optional flags for response generation. */ + +/* Don't include the TSA name in response. */ +#define TS_TSA_NAME 0x01 + +/* Set ordering to true in response. */ +#define TS_ORDERING 0x02 + +/* + * Include the signer certificate and the other specified certificates in + * the ESS signing certificate attribute beside the PKCS7 signed data. + * Only the signer certificates is included by default. + */ +#define TS_ESS_CERT_ID_CHAIN 0x04 + +/* Forward declaration. */ +struct TS_resp_ctx; + +/* This must return a unique number less than 160 bits long. */ +typedef ASN1_INTEGER *(*TS_serial_cb)(struct TS_resp_ctx *, void *); + +/* + * This must return the seconds and microseconds since Jan 1, 1970 in the sec + * and usec variables allocated by the caller. Return non-zero for success + * and zero for failure. + */ +typedef int (*TS_time_cb)(struct TS_resp_ctx *, void *, long *sec, + long *usec); + +/* + * This must process the given extension. It can modify the TS_TST_INFO + * object of the context. Return values: !0 (processed), 0 (error, it must + * set the status info/failure info of the response). + */ +typedef int (*TS_extension_cb)(struct TS_resp_ctx *, X509_EXTENSION *, + void *); + +typedef struct TS_resp_ctx TS_RESP_CTX; + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +TS_RESP_CTX *TS_RESP_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +void TS_RESP_CTX_free(TS_RESP_CTX *ctx); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key); + +int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx, + const EVP_MD *signer_digest); +int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy); + +/* No additional certs are included in the response by default. */ +int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs); + +/* + * Adds a new acceptable policy, only the default policy is accepted by + * default. + */ +int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +#define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +#define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +#define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +#define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +#define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +#define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +#define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +#define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +#define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +#define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +#define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +#define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx TS_VERIFY_CTX; + +int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response); +int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token); + +/* + * Declarations related to response verification context, + */ +TS_VERIFY_CTX *TS_VERIFY_CTX_new(void); +void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx); +int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f); +int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_data().") +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +#endif +int TS_VERIFY_CTX_set0_data(TS_VERIFY_CTX *ctx, BIO *b); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_imprint().") +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +#endif +int TS_VERIFY_CTX_set0_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_store().") +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +#endif +int TS_VERIFY_CTX_set0_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TS_VERIFY_CTS_set_certs(ctx, cert) TS_VERIFY_CTX_set_certs(ctx, cert) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_certs().") +STACK_OF(X509) *TS_VERIFY_CTX_set_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); +#endif +int TS_VERIFY_CTX_set0_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); + +/*- + * If ctx is NULL, it allocates and returns a new object, otherwise + * it returns ctx. It initialises all the members as follows: + * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE) + * certs = NULL + * store = NULL + * policy = policy from the request or NULL if absent (in this case + * TS_VFY_POLICY is cleared from flags as well) + * md_alg = MD algorithm from request + * imprint, imprint_len = imprint from request + * data = NULL + * nonce, nonce_len = nonce from the request or NULL if absent (in this case + * TS_VFY_NONCE is cleared from flags as well) + * tsa_name = NULL + * Important: after calling this method TS_VFY_SIGNATURE should be added! + */ +TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx); + +/* Function declarations for TS_RESP defined in ts/ts_resp_print.c */ + +int TS_RESP_print_bio(BIO *bio, TS_RESP *a); +int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a); +int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a); + +/* Common utility functions defined in ts/ts_lib.c */ + +int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num); +int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj); +int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions); +int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg); +int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg); + +/* + * Function declarations for handling configuration options, defined in + * ts/ts_conf.c + */ + +X509 *TS_CONF_load_cert(const char *file); +STACK_OF(X509) *TS_CONF_load_certs(const char *file); +EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); +const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); +int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, + TS_RESP_CTX *ctx); +#ifndef OPENSSL_NO_ENGINE +int TS_CONF_set_crypto_device(CONF *conf, const char *section, + const char *device); +int TS_CONF_set_default_engine(const char *name); +#endif +int TS_CONF_set_signer_cert(CONF *conf, const char *section, + const char *cert, TS_RESP_CTX *ctx); +int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_key(CONF *conf, const char *section, + const char *key, const char *pass, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_digest(CONF *conf, const char *section, + const char *md, TS_RESP_CTX *ctx); +int TS_CONF_set_def_policy(CONF *conf, const char *section, + const char *policy, TS_RESP_CTX *ctx); +int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_clock_precision_digits(const CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/tserr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/tserr.h new file mode 100644 index 0000000..0bec94a --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/tserr.h @@ -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_TSERR_H +#define OPENSSL_TSERR_H +#pragma once + +#include +#include +#include + +#ifndef OPENSSL_NO_TS + +/* + * TS reason codes. + */ +#define TS_R_BAD_PKCS7_TYPE 132 +#define TS_R_BAD_TYPE 133 +#define TS_R_CANNOT_LOAD_CERT 137 +#define TS_R_CANNOT_LOAD_KEY 138 +#define TS_R_CERTIFICATE_VERIFY_ERROR 100 +#define TS_R_COULD_NOT_SET_ENGINE 127 +#define TS_R_COULD_NOT_SET_TIME 115 +#define TS_R_DETACHED_CONTENT 134 +#define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +#define TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR 139 +#define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 +#define TS_R_INVALID_NULL_POINTER 102 +#define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 +#define TS_R_MESSAGE_IMPRINT_MISMATCH 103 +#define TS_R_NONCE_MISMATCH 104 +#define TS_R_NONCE_NOT_RETURNED 105 +#define TS_R_NO_CONTENT 106 +#define TS_R_NO_TIME_STAMP_TOKEN 107 +#define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 +#define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 +#define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 +#define TS_R_POLICY_MISMATCH 108 +#define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 +#define TS_R_RESPONSE_SETUP_ERROR 121 +#define TS_R_SIGNATURE_FAILURE 109 +#define TS_R_THERE_MUST_BE_ONE_SIGNER 110 +#define TS_R_TIME_SYSCALL_ERROR 122 +#define TS_R_TOKEN_NOT_PRESENT 130 +#define TS_R_TOKEN_PRESENT 131 +#define TS_R_TSA_NAME_MISMATCH 111 +#define TS_R_TSA_UNTRUSTED 112 +#define TS_R_TST_INFO_SETUP_ERROR 123 +#define TS_R_TS_DATASIGN 124 +#define TS_R_UNACCEPTABLE_POLICY 125 +#define TS_R_UNSUPPORTED_MD_ALGORITHM 126 +#define TS_R_UNSUPPORTED_VERSION 113 +#define TS_R_VAR_BAD_VALUE 135 +#define TS_R_VAR_LOOKUP_FAILURE 136 +#define TS_R_WRONG_CONTENT_TYPE 114 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/txt_db.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/txt_db.h new file mode 100644 index 0000000..64e9d4c --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/txt_db.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2017 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_TXT_DB_H +#define OPENSSL_TXT_DB_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TXT_DB_H +#endif + +#include +#include +#include +#include + +#define DB_ERROR_OK 0 +#define DB_ERROR_MALLOC 1 +#define DB_ERROR_INDEX_CLASH 2 +#define DB_ERROR_INDEX_OUT_OF_RANGE 3 +#define DB_ERROR_NO_INDEX 4 +#define DB_ERROR_INSERT_INDEX_CLASH 5 +#define DB_ERROR_WRONG_NUM_FIELDS 6 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OPENSSL_STRING *OPENSSL_PSTRING; +DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING) + +typedef struct txt_db_st { + int num_fields; + STACK_OF(OPENSSL_PSTRING) *data; + LHASH_OF(OPENSSL_STRING) **index; + int (**qual)(OPENSSL_STRING *); + long error; + long arg1; + long arg2; + OPENSSL_STRING *arg_row; +} TXT_DB; + +TXT_DB *TXT_DB_read(BIO *in, int num); +long TXT_DB_write(BIO *out, TXT_DB *db); +int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(OPENSSL_STRING *), + OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC cmp); +void TXT_DB_free(TXT_DB *db); +OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, + OPENSSL_STRING *value); +int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/types.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/types.h new file mode 100644 index 0000000..f9c4373 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/types.h @@ -0,0 +1,250 @@ +/* + * Copyright 2001-2026 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 + */ + +/* + * Unfortunate workaround to avoid symbol conflict with wincrypt.h + * See https://github.com/openssl/openssl/issues/9981 + */ +#ifdef _WIN32 +#define WINCRYPT_USE_SYMBOL_PREFIX +#undef X509_NAME +#undef X509_EXTENSIONS +#undef PKCS7_SIGNER_INFO +#undef OCSP_REQUEST +#undef OCSP_RESPONSE +#endif + +#ifndef OPENSSL_TYPES_H +#define OPENSSL_TYPES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#if OPENSSL_VERSION_MAJOR >= 4 +#define OSSL_FUTURE_CONST const +#else +#define OSSL_FUTURE_CONST +#endif + +typedef struct ossl_provider_st OSSL_PROVIDER; /* Provider Object */ + +#ifdef NO_ASN1_TYPEDEFS +#define ASN1_INTEGER ASN1_STRING +#define ASN1_ENUMERATED ASN1_STRING +#define ASN1_BIT_STRING ASN1_STRING +#define ASN1_OCTET_STRING ASN1_STRING +#define ASN1_PRINTABLESTRING ASN1_STRING +#define ASN1_T61STRING ASN1_STRING +#define ASN1_IA5STRING ASN1_STRING +#define ASN1_UTCTIME ASN1_STRING +#define ASN1_GENERALIZEDTIME ASN1_STRING +#define ASN1_TIME ASN1_STRING +#define ASN1_GENERALSTRING ASN1_STRING +#define ASN1_UNIVERSALSTRING ASN1_STRING +#define ASN1_BMPSTRING ASN1_STRING +#define ASN1_VISIBLESTRING ASN1_STRING +#define ASN1_UTF8STRING ASN1_STRING +#define ASN1_BOOLEAN int +#define ASN1_NULL int +#else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +#endif + +typedef struct asn1_type_st ASN1_TYPE; +typedef struct asn1_object_st ASN1_OBJECT; +typedef struct asn1_string_table_st ASN1_STRING_TABLE; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +#ifdef BIGNUM +#undef BIGNUM +#endif + +typedef struct bio_st BIO; +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +STACK_OF(BIGNUM); +STACK_OF(BIGNUM_const); + +typedef struct err_state_st ERR_STATE; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_md_st EVP_MD; +typedef struct evp_md_ctx_st EVP_MD_CTX; +typedef struct evp_mac_st EVP_MAC; +typedef struct evp_mac_ctx_st EVP_MAC_CTX; +typedef struct evp_pkey_st EVP_PKEY; +typedef struct evp_skey_st EVP_SKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct evp_keymgmt_st EVP_KEYMGMT; + +typedef struct evp_kdf_st EVP_KDF; +typedef struct evp_kdf_ctx_st EVP_KDF_CTX; + +typedef struct evp_rand_st EVP_RAND; +typedef struct evp_rand_ctx_st EVP_RAND_CTX; + +typedef struct evp_keyexch_st EVP_KEYEXCH; + +typedef struct evp_signature_st EVP_SIGNATURE; + +typedef struct evp_skeymgmt_st EVP_SKEYMGMT; + +typedef struct evp_asym_cipher_st EVP_ASYM_CIPHER; + +typedef struct evp_kem_st EVP_KEM; + +typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +#endif + +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; +typedef struct rsa_oaep_params_st RSA_OAEP_PARAMS; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; +#endif + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; +typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ossl_http_req_ctx_st OSSL_HTTP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +typedef struct ossl_lib_ctx_st OSSL_LIB_CTX; + +typedef struct ossl_dispatch_st OSSL_DISPATCH; +typedef struct ossl_item_st OSSL_ITEM; +typedef struct ossl_algorithm_st OSSL_ALGORITHM; +typedef struct ossl_param_st OSSL_PARAM; +typedef struct ossl_param_bld_st OSSL_PARAM_BLD; + +typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata); + +typedef struct ossl_encoder_st OSSL_ENCODER; +typedef struct ossl_encoder_ctx_st OSSL_ENCODER_CTX; +typedef struct ossl_decoder_st OSSL_DECODER; +typedef struct ossl_decoder_ctx_st OSSL_DECODER_CTX; + +typedef struct ossl_self_test_st OSSL_SELF_TEST; + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_TYPES_H */ diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ui.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ui.h new file mode 100644 index 0000000..86f72d5 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/ui.h @@ -0,0 +1,409 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/ui.h.in + * + * Copyright 2001-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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_UI_H +#define OPENSSL_UI_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_UI_H +#endif + +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#include +#include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifdef OPENSSL_NO_UI_CONSOLE +#define OPENSSL_NO_UI +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +#define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +#define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * + */ +#define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. + * phrase_desc is a textual short description of the phrase to enter, + * for example "pass phrase", and + * object_name is the name of the object + * (which might be a card name or a file name) or NULL. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {phrase_desc} for {object_name}:" + * + * So, if phrase_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" + */ +char *UI_construct_prompt(UI *ui_method, + const char *phrase_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)(void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +#define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +#define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +#define UI_set_app_data(s, arg) UI_set_ex_data(s, 0, arg) +#define UI_get_app_data(s) UI_get_ex_data(s, 0) + +#define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(const UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +#ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +#endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) +#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) +#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) +#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) +#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) +#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) +#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) +#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_freefunc_type(freefunc)) +#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) +#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) +#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) +#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener)(UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer)(UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader)(UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator)(UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor)(UI *ui, + const char + *phrase_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method))(UI *); +int (*UI_method_get_writer(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method))(UI *); +int (*UI_method_get_reader(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method))(UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method))(UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method))(UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method))(UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/uierr.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/uierr.h new file mode 100644 index 0000000..5201b03 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/uierr.h @@ -0,0 +1,36 @@ +/* + * 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_UIERR_H +#define OPENSSL_UIERR_H +#pragma once + +#include +#include +#include + +/* + * UI reason codes. + */ +#define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104 +#define UI_R_INDEX_TOO_LARGE 102 +#define UI_R_INDEX_TOO_SMALL 103 +#define UI_R_NO_RESULT_BUFFER 105 +#define UI_R_PROCESSING_ERROR 107 +#define UI_R_RESULT_TOO_LARGE 100 +#define UI_R_RESULT_TOO_SMALL 101 +#define UI_R_SYSASSIGN_ERROR 109 +#define UI_R_SYSDASSGN_ERROR 110 +#define UI_R_SYSQIOW_ERROR 111 +#define UI_R_UNKNOWN_CONTROL_COMMAND 106 +#define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE 108 +#define UI_R_USER_DATA_DUPLICATION_UNSUPPORTED 112 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/whrlpool.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/whrlpool.h new file mode 100644 index 0000000..cff9134 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/whrlpool.h @@ -0,0 +1,62 @@ +/* + * Copyright 2005-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_WHRLPOOL_H +#define OPENSSL_WHRLPOOL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_WHRLPOOL_H +#endif + +#include + +#ifndef OPENSSL_NO_WHIRLPOOL +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define WHIRLPOOL_DIGEST_LENGTH (512 / 8) + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define WHIRLPOOL_BBLOCK 512 +#define WHIRLPOOL_COUNTER (256 / 8) + +typedef struct { + union { + unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; + /* double q is here to ensure 64-bit alignment */ + double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)]; + } H; + unsigned char data[WHIRLPOOL_BBLOCK / 8]; + unsigned int bitoff; + size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)]; +} WHIRLPOOL_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, + const void *inp, size_t bytes); +OSSL_DEPRECATEDIN_3_0 void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, + const void *inp, size_t bits); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *WHIRLPOOL(const void *inp, size_t bytes, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509.h new file mode 100644 index 0000000..03a8555 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509.h @@ -0,0 +1,1302 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/x509.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_H +#define OPENSSL_X509_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_H +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Needed stacks for types defined in other headers */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) +#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) +#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) +#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) +#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) +#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) +#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_freefunc_type(freefunc)) +#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) +#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) +#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) +#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) +#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) +#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) +#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) +#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) +#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) +#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) +#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) +#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) +#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) +#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) +#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) +#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk), ossl_check_X509_freefunc_type(freefunc)) +#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) +#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) +#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) +#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) +#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) +#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) +#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) +#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) +#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) +#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) +#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) +#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) +#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) +#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_freefunc_type(freefunc)) +#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) +#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) +#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) +#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) +#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) +#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) +#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) +#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) +#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) +#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) +#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_freefunc_type(freefunc)) +#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) +#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) +#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) +#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) + +/* clang-format on */ + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +#define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +#define X509_SIG_INFO_TLS 0x2 + +#define X509_FILETYPE_PEM 1 +#define X509_FILETYPE_ASN1 2 +#define X509_FILETYPE_DEFAULT 3 + +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +#define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +#define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +#define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +#define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +#define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +#define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +#define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +#define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +#define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +#ifndef OPENSSL_NO_DEPRECATED_3_4 +#define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +#endif + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) +#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) +#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) +#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) +#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) +#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) +#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) +#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) +#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) +#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) +#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_EX_V_NETSCAPE_HACK 0x8000 +#define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) +#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) +#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) +#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) +#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) +#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) +#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) +#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_freefunc_type(freefunc)) +#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) +#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) +#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) +#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; +typedef struct x509_attributes_st X509_ATTRIBUTE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) +#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) +#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) +#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) +#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) +#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) +#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) +#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) +#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) +#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) +#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) +#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct X509_req_info_st X509_REQ_INFO; +typedef struct X509_req_st X509_REQ; +typedef struct x509_cert_aux_st X509_CERT_AUX; +typedef struct x509_cinf_st X509_CINF; + +/* Flags for X509_print_ex() */ + +#define X509_FLAG_COMPAT 0 +#define X509_FLAG_NO_HEADER 1L +#define X509_FLAG_NO_VERSION (1L << 1) +#define X509_FLAG_NO_SERIAL (1L << 2) +#define X509_FLAG_NO_SIGNAME (1L << 3) +#define X509_FLAG_NO_ISSUER (1L << 4) +#define X509_FLAG_NO_VALIDITY (1L << 5) +#define X509_FLAG_NO_SUBJECT (1L << 6) +#define X509_FLAG_NO_PUBKEY (1L << 7) +#define X509_FLAG_NO_EXTENSIONS (1L << 8) +#define X509_FLAG_NO_SIGDUMP (1L << 9) +#define X509_FLAG_NO_AUX (1L << 10) +#define X509_FLAG_NO_ATTRIBUTES (1L << 11) +#define X509_FLAG_NO_IDS (1L << 12) +#define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +#define XN_FLAG_SEP_MASK (0xf << 16) + +#define XN_FLAG_COMPAT 0 /* Traditional; use old X509_NAME_print */ +#define XN_FLAG_SEP_COMMA_PLUS (1 << 16) /* RFC2253 ,+ */ +#define XN_FLAG_SEP_CPLUS_SPC (2 << 16) /* ,+ spaced: more readable */ +#define XN_FLAG_SEP_SPLUS_SPC (3 << 16) /* ;+ spaced */ +#define XN_FLAG_SEP_MULTILINE (4 << 16) /* One line per field */ + +#define XN_FLAG_DN_REV (1 << 20) /* Reverse DN order */ + +/* How the field name is shown */ + +#define XN_FLAG_FN_MASK (0x3 << 21) + +#define XN_FLAG_FN_SN 0 /* Object short name */ +#define XN_FLAG_FN_LN (1 << 21) /* Object long name */ +#define XN_FLAG_FN_OID (2 << 21) /* Always use OIDs */ +#define XN_FLAG_FN_NONE (3 << 21) /* No field names */ + +#define XN_FLAG_SPC_EQ (1 << 23) /* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +#define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +#define XN_FLAG_FN_ALIGN (1 << 25) /* Align field names to 20 \ + * characters */ + +/* Complete set of RFC2253 flags */ + +#define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | XN_FLAG_FN_SN | XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +#define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_SPC_EQ | XN_FLAG_FN_SN) + +/* readable multiline form */ + +#define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | XN_FLAG_SEP_MULTILINE | XN_FLAG_SPC_EQ | XN_FLAG_FN_LN | XN_FLAG_FN_ALIGN) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) +#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) +#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) +#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) +#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) +#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) +#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) +#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_freefunc_type(freefunc)) +#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) +#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) +#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) +#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { + /* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define X509_EXT_PACK_UNKNOWN 1 +#define X509_EXT_PACK_STRING 2 + +#define X509_extract_key(x) X509_get_pubkey(x) /*****/ +#define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +#define X509_name_cmp(a, b) X509_NAME_cmp((a), (b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init)(X509_CRL *crl), + int (*crl_free)(X509_CRL *crl), + int (*crl_lookup)(X509_CRL *crl, + X509_REVOKED **ret, + const ASN1_INTEGER *serial, + const X509_NAME *issuer), + int (*crl_verify)(X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); +int X509_self_signed(X509 *cert, int verify_signature); + +int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, + const char *propq); +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, + EVP_MD **md_used, int *md_is_fallback); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ +#define X509_http_nbio(rctx, pcert) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) +#define X509_CRL_http_nbio(rctx, pcrl) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) +#endif + +#ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, const X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +#endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, const X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +DECLARE_ASN1_DUP_FUNCTION(X509) +DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) +DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) +DECLARE_ASN1_DUP_FUNCTION(X509_CRL) +DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) +DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) +DECLARE_ASN1_DUP_FUNCTION(X509_REQ) +DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +DECLARE_ASN1_DUP_FUNCTION(X509_NAME) +DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, + const ASN1_TIME *start, const ASN1_TIME *end); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) +EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, + OSSL_LIB_CTX *libctx, const char *propq); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSA_PUBKEY) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DSA, DSA_PUBKEY) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) +#endif +#endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) +X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) +DECLARE_ASN1_FUNCTIONS(X509) +X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(const X509 *r, int idx); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509, X509_AUX) + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); +void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *x); + +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) +X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, const ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); +OSSL_DEPRECATEDIN_3_0 +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey, + const EVP_MD *type); +#endif +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); +int ASN1_item_verify(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey); +int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_MD_CTX *ctx); +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey, const EVP_MD *md); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, EVP_MD_CTX *ctx); + +#define X509_VERSION_1 0 +#define X509_VERSION_2 1 +#define X509_VERSION_3 2 + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME *X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_get_notBefore X509_getm_notBefore +#define X509_get_notAfter X509_getm_notAfter +#define X509_set_notBefore X509_set1_notBefore +#define X509_set_notAfter X509_set1_notAfter +#endif + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); + +#define X509_REQ_VERSION_1 0 + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, const X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, + const STACK_OF(X509_EXTENSION) *exts, int nid); +int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +#define X509_CRL_VERSION_1 0 +#define X509_CRL_VERSION_2 1 + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, const X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +#define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); +#endif +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +const X509_ALGOR *X509_CRL_get0_tbs_sigalg(const X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +#ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +#endif + +#define X509_ADD_FLAG_DEFAULT 0 +#define X509_ADD_FLAG_UP_REF 0x1 +#define X509_ADD_FLAG_PREPEND 0x2 +#define X509_ADD_FLAG_NO_DUP 0x4 +#define X509_ADD_FLAG_NO_SS 0x8 +int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); +int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) +OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, + const EVP_PKEY *pubkey); +#endif +unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, + const char *propq, int *ok); +unsigned long X509_NAME_hash_old(const X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +#ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +#endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, + char *buf, int len); +int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(const X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, + const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, + int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, + const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, + const ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); +int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); +X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid, + OSSL_LIB_CTX *libctx); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); +X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen, + OSSL_LIB_CTX *libctx); + +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); +int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, + int type, const unsigned char *bytes, int len); + +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, const X509_PUBKEY *pub); +int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509_acert.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509_acert.h new file mode 100644 index 0000000..e92c827 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509_acert.h @@ -0,0 +1,304 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_ACERT_H +#define OPENSSL_X509_ACERT_H +#pragma once + +#include +#include +#include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +#ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +#endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +#define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO *X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +#define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +#define OSSL_IETFAS_OCTETS 0 +#define OSSL_IETFAS_OID 1 +#define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +#define OSSL_TGT_TARGET_NAME 0 +#define OSSL_TGT_TARGET_GROUP 1 +#define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + +/* clang-format on */ + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509_vfy.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509_vfy.h new file mode 100644 index 0000000..0fc2313 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509_vfy.h @@ -0,0 +1,922 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/x509_vfy.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_VFY_H +#define OPENSSL_X509_VFY_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_VFY_H +#endif + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +#ifndef OPENSSL_X509_H +#include +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +DEFINE_STACK_OF(OCSP_RESPONSE) + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, + X509_LU_CRL +} X509_LOOKUP_TYPE; + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) +#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) +#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) +#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) +#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) +#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) +#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) +#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_freefunc_type(freefunc)) +#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) +#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) +#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) +#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) +#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) +#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) +#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) +#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) +#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) +#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_freefunc_type(freefunc)) +#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) +#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) +#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) +#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) +#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) +#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) +#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) +#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) +#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) +#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) +#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) +#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) +#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) +#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) +#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) + +/* clang-format on */ + +/* This is used for a table of trust checking functions */ +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust)(struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) +#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) +#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) +#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) +#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) +#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) +#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) +#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_freefunc_type(freefunc)) +#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) +#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) +#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) +#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) + +/* clang-format on */ + +/* standard trust ids */ +#define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ +#define X509_TRUST_COMPAT 1 +#define X509_TRUST_SSL_CLIENT 2 +#define X509_TRUST_SSL_SERVER 3 +#define X509_TRUST_EMAIL 4 +#define X509_TRUST_OBJECT_SIGN 5 +#define X509_TRUST_OCSP_SIGN 6 +#define X509_TRUST_OCSP_REQUEST 7 +#define X509_TRUST_TSA 8 +/* Keep these up to date! */ +#define X509_TRUST_MIN 1 +#define X509_TRUST_MAX 8 + +/* trust_flags values */ +#define X509_TRUST_DYNAMIC (1U << 0) +#define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +#define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +#define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard rejection OID and as a wildcard trust OID */ +#define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ +#define X509_TRUST_TRUSTED 1 +#define X509_TRUST_REJECTED 2 +#define X509_TRUST_UNTRUSTED 3 + +int X509_TRUST_set(int *t, int trust); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +int X509_trusted(const X509 *x); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +int (*X509_TRUST_set_default(int (*trust)(int, X509 *, int)))(int, X509 *, + int); +int X509_check_trust(X509 *x, int id, int flags); + +int X509_verify_cert(X509_STORE_CTX *ctx); +int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, + X509_STORE *store, int with_self_signed, + OSSL_LIB_CTX *libctx, const char *propq); + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) + *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef STACK_OF(X509_CRL) + *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +#define X509_STORE_CTX_set_app_data(ctx, data) \ + X509_STORE_CTX_set_ex_data(ctx, 0, data) +#define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx, 0) + +#define X509_L_FILE_LOAD 1 +#define X509_L_ADD_DIR 2 +#define X509_L_ADD_STORE 3 +#define X509_L_LOAD_STORE 4 + +#define X509_LOOKUP_load_file(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_FILE_LOAD, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_dir(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_DIR, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_LOAD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_V_OK 0 +#define X509_V_ERR_UNSPECIFIED 1 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +#define X509_V_ERR_UNABLE_TO_GET_CRL 3 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +#define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +#define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +#define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +#define X509_V_ERR_CERT_NOT_YET_VALID 9 +#define X509_V_ERR_CERT_HAS_EXPIRED 10 +#define X509_V_ERR_CRL_NOT_YET_VALID 11 +#define X509_V_ERR_CRL_HAS_EXPIRED 12 +#define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +#define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +#define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +#define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +#define X509_V_ERR_OUT_OF_MEM 17 +#define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +#define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +#define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +#define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +#define X509_V_ERR_CERT_REVOKED 23 +#define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 24 +#define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +#define X509_V_ERR_INVALID_PURPOSE 26 +#define X509_V_ERR_CERT_UNTRUSTED 27 +#define X509_V_ERR_CERT_REJECTED 28 + +/* These are 'informational' when looking for issuer cert */ +#define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +#define X509_V_ERR_AKID_SKID_MISMATCH 30 +#define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +#define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +#define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +#define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +#define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +#define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +#define X509_V_ERR_INVALID_NON_CA 37 +#define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +#define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +#define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +#define X509_V_ERR_INVALID_EXTENSION 41 +#define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +#define X509_V_ERR_NO_EXPLICIT_POLICY 43 +#define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +#define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +#define X509_V_ERR_UNNESTED_RESOURCE 46 +#define X509_V_ERR_PERMITTED_VIOLATION 47 +#define X509_V_ERR_EXCLUDED_VIOLATION 48 +#define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +#define X509_V_ERR_APPLICATION_VERIFICATION 50 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +#define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +#define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +#define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +#define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +#define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +#define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +#define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +#define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +#define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +#define X509_V_ERR_HOSTNAME_MISMATCH 62 +#define X509_V_ERR_EMAIL_MISMATCH 63 +#define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +#define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +#define X509_V_ERR_EE_KEY_TOO_SMALL 66 +#define X509_V_ERR_CA_KEY_TOO_SMALL 67 +#define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +#define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +#define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +#define X509_V_ERR_NO_VALID_SCTS 71 + +#define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +#define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +#define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +#define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ + +#define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 76 +#define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 + +/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ +#define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 +#define X509_V_ERR_INVALID_CA 79 +#define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 +#define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 +#define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 +#define X509_V_ERR_ISSUER_NAME_EMPTY 83 +#define X509_V_ERR_SUBJECT_NAME_EMPTY 84 +#define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 +#define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 +#define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 +#define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 +#define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 +#define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 +#define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 +#define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 +#define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 +#define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +#define X509_V_ERR_RPK_UNTRUSTED 95 + +/* additional OCSP status errors */ +#define X509_V_ERR_OCSP_RESP_INVALID 96 +#define X509_V_ERR_OCSP_SIGNATURE_FAILURE 97 +#define X509_V_ERR_OCSP_NOT_YET_VALID 98 +#define X509_V_ERR_OCSP_HAS_EXPIRED 99 +#define X509_V_ERR_OCSP_NO_RESPONSE 100 +#define X509_V_ERR_CRL_VERIFY_FAILED 101 + +/* Certificate verify flags */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +#endif +/* Use check time instead of current time */ +#define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +#define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +#define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +#define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +#define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +#define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +#define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +#define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +#define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +#define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +#define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +#define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +#define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +#define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +#define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +#define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +#define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +#define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +#define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +/* Verify OCSP stapling response for server certificate */ +#define X509_V_FLAG_OCSP_RESP_CHECK 0x400000 +/* Verify OCSP stapling responses for whole chain */ +#define X509_V_FLAG_OCSP_RESP_CHECK_ALL 0x800000 + +#define X509_VP_FLAG_DEFAULT 0x1 +#define X509_VP_FLAG_OVERWRITE 0x2 +#define X509_VP_FLAG_RESET_FLAGS 0x4 +#define X509_VP_FLAG_LOCKED 0x8 +#define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +#define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, + const X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, + const X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); + +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx), (func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, + X509_STORE_CTX_verify_cb verify_cb); +#define X509_STORE_set_verify_cb_func(ctx, func) \ + X509_STORE_set_verify_cb((ctx), (func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn +X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, + X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY *rpk); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(const X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +#define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +#define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +#define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +#define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +#define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +#define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +#define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); +X509_LOOKUP_METHOD *X509_LOOKUP_store(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_ctrl_ex_fn)( + X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, + OSSL_LIB_CTX *libctx, const char *propq); + +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, + const char *propq); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char *bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn)(X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret, OSSL_LIB_CTX *libctx, const char *propq); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); + +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(const X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); +#ifndef OPENSSL_NO_OCSP +void X509_STORE_CTX_set_ocsp_resp(X509_STORE_CTX *ctx, STACK_OF(OCSP_RESPONSE) *sk); +#endif +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_policies(const X509_POLICY_TREE *tree); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_user_policies(const X509_POLICY_TREE *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(const X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) +*X509_policy_node_get0_qualifiers(const X509_POLICY_NODE *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509err.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509err.h new file mode 100644 index 0000000..7123a72 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509err.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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_X509ERR_H +#define OPENSSL_X509ERR_H +#pragma once + +#include +#include +#include + +/* + * X509 reason codes. + */ +#define X509_R_AKID_MISMATCH 110 +#define X509_R_BAD_SELECTOR 133 +#define X509_R_BAD_X509_FILETYPE 100 +#define X509_R_BASE64_DECODE_ERROR 118 +#define X509_R_CANT_CHECK_DH_KEY 114 +#define X509_R_CERTIFICATE_VERIFICATION_FAILED 139 +#define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +#define X509_R_CRL_ALREADY_DELTA 127 +#define X509_R_CRL_VERIFY_FAILURE 131 +#define X509_R_DUPLICATE_ATTRIBUTE 140 +#define X509_R_ERROR_GETTING_MD_BY_NID 141 +#define X509_R_ERROR_USING_SIGINF_SET 142 +#define X509_R_IDP_MISMATCH 128 +#define X509_R_INVALID_ATTRIBUTES 138 +#define X509_R_INVALID_DIRECTORY 113 +#define X509_R_INVALID_DISTPOINT 143 +#define X509_R_INVALID_FIELD_NAME 119 +#define X509_R_INVALID_TRUST 123 +#define X509_R_ISSUER_MISMATCH 129 +#define X509_R_KEY_TYPE_MISMATCH 115 +#define X509_R_KEY_VALUES_MISMATCH 116 +#define X509_R_LOADING_CERT_DIR 103 +#define X509_R_LOADING_DEFAULTS 104 +#define X509_R_METHOD_NOT_SUPPORTED 124 +#define X509_R_NAME_TOO_LONG 134 +#define X509_R_NEWER_CRL_NOT_NEWER 132 +#define X509_R_NO_CERTIFICATE_FOUND 135 +#define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +#define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +#define X509_R_NO_CRL_FOUND 137 +#define X509_R_NO_CRL_NUMBER 130 +#define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +#define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +#define X509_R_SHOULD_RETRY 106 +#define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +#define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +#define X509_R_UNKNOWN_KEY_TYPE 117 +#define X509_R_UNKNOWN_NID 109 +#define X509_R_UNKNOWN_PURPOSE_ID 121 +#define X509_R_UNKNOWN_SIGID_ALGS 144 +#define X509_R_UNKNOWN_TRUST_ID 120 +#define X509_R_UNSUPPORTED_ALGORITHM 111 +#define X509_R_UNSUPPORTED_VERSION 145 +#define X509_R_WRONG_LOOKUP_TYPE 112 +#define X509_R_WRONG_TYPE 122 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509v3.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509v3.h new file mode 100644 index 0000000..86079e6 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509v3.h @@ -0,0 +1,2013 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../openssl-3.6.2/include/openssl/x509v3.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509V3_H +#define OPENSSL_X509V3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509V3_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE)(void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D)(const void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; + /* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; + /* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; + /* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; + /* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; + /* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string)(void *db, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section)(void *db, const char *section); + void (*free_string)(void *db, char *string); + void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info for producing X509 v3 extensions*/ +struct v3_ext_ctx { +#define X509V3_CTX_TEST 0x1 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define CTX_TEST X509V3_CTX_TEST +#endif +#define X509V3_CTX_REPLACE 0x2 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; + EVP_PKEY *issuer_pkey; + /* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) +#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) +#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) +#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) +#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) +#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) +#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) +#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) +#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) +#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) +#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) +#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* ext_flags values */ +#define X509V3_EXT_DYNAMIC 0x1 +#define X509V3_EXT_CTX_DEP 0x2 +#define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +#define GEN_OTHERNAME 0 +#define GEN_EMAIL 1 +#define GEN_DNS 2 +#define GEN_X400 3 +#define GEN_DIRNAME 4 +#define GEN_EDIPARTY 5 +#define GEN_URI 6 +#define GEN_IPADD 7 +#define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_STRING *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) +#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) +#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) +#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) +#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) +#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) +#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) +#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) +#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) +#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) +#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) +#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) +#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) +#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) +#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) +#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_freefunc_type(freefunc)) +#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) +#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) +#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) +#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) +#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) +#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) +#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) +#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) +#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) +#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) +#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) +#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) +#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; + /* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) +/* All existing reasons */ +#define CRLDP_ALL_REASONS 0x807f + +#define CRL_REASON_NONE -1 +#define CRL_REASON_UNSPECIFIED 0 +#define CRL_REASON_KEY_COMPROMISE 1 +#define CRL_REASON_CA_COMPROMISE 2 +#define CRL_REASON_AFFILIATION_CHANGED 3 +#define CRL_REASON_SUPERSEDED 4 +#define CRL_REASON_CESSATION_OF_OPERATION 5 +#define CRL_REASON_CERTIFICATE_HOLD 6 +#define CRL_REASON_REMOVE_FROM_CRL 8 +#define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +#define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) +#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) +#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) +#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) +#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) +#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) +#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) +#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_freefunc_type(freefunc)) +#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) +#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) +#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) +#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) +#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) +#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) +#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) +#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) +#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) +#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) +#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_freefunc_type(freefunc)) +#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) +#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) +#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) +#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) +#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct ISSUER_SIGN_TOOL_st { + ASN1_UTF8STRING *signTool; + ASN1_UTF8STRING *cATool; + ASN1_UTF8STRING *signToolCert; + ASN1_UTF8STRING *cAToolCert; +} ISSUER_SIGN_TOOL; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) +#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) +#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) +#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) +#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) +#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) +#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) +#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) +#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) +#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) +#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) +#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) +#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) +#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) +#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) +#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) +#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_freefunc_type(freefunc)) +#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) +#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) +#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) +#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) +#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) +#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) +#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) +#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) +#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) +#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) +#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) +#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) +#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) +#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) +#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) +#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) +#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) +#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) +#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) +#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) +#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) +#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) +#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) +#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) + +/* clang-format on */ + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +#define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +#define IDP_INVALID 0x2 +/* onlyuser true */ +#define IDP_ONLYUSER 0x4 +/* onlyCA true */ +#define IDP_ONLYCA 0x8 +/* onlyattr true */ +#define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +#define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +#define IDP_REASONS 0x40 + +#define X509V3_conf_err(val) ERR_add_error_data(6, \ + "section:", (val)->section, \ + ",name:", (val)->name, ",value:", (val)->value) + +#define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, X509V3_CTX_TEST) +#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0, 0, 0, 0, \ + 0, 0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table } + +#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0, 0, 0, 0, \ + NULL } + +#define EXT_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ + 0, 0, 0, 0, \ + NULL } + +/* clang-format off */ +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +/* clang-format on */ + +/* X509_PURPOSE stuff */ + +#define EXFLAG_BCONS 0x1 +#define EXFLAG_KUSAGE 0x2 +#define EXFLAG_XKUSAGE 0x4 +#define EXFLAG_NSCERT 0x8 + +#define EXFLAG_CA 0x10 +#define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ +#define EXFLAG_V1 0x40 +#define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +#define EXFLAG_SET 0x100 +#define EXFLAG_CRITICAL 0x200 +#define EXFLAG_PROXY 0x400 + +#define EXFLAG_INVALID_POLICY 0x800 +#define EXFLAG_FRESHEST 0x1000 +#define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +#define EXFLAG_BCONS_CRITICAL 0x10000 +#define EXFLAG_AKID_CRITICAL 0x20000 +#define EXFLAG_SKID_CRITICAL 0x40000 +#define EXFLAG_SAN_CRITICAL 0x80000 +#define EXFLAG_NO_FINGERPRINT 0x100000 + +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +#define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +#define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +#define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +#define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +#define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +#define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +#define KU_CRL_SIGN X509v3_KU_CRL_SIGN +#define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +#define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY + +#define NS_SSL_CLIENT 0x80 +#define NS_SSL_SERVER 0x40 +#define NS_SMIME 0x20 +#define NS_OBJSIGN 0x10 +#define NS_SSL_CA 0x04 +#define NS_SMIME_CA 0x02 +#define NS_OBJSIGN_CA 0x01 +#define NS_ANY_CA (NS_SSL_CA | NS_SMIME_CA | NS_OBJSIGN_CA) + +#define XKU_SSL_SERVER 0x1 +#define XKU_SSL_CLIENT 0x2 +#define XKU_SMIME 0x4 +#define XKU_CODE_SIGN 0x8 +#define XKU_SGC 0x10 /* Netscape or MS Server-Gated Crypto */ +#define XKU_OCSP_SIGN 0x20 +#define XKU_TIMESTAMP 0x40 +#define XKU_DVCS 0x80 +#define XKU_ANYEKU 0x100 + +#define X509_PURPOSE_DYNAMIC 0x1 +#define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose)(const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) +#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) +#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) +#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) +#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) +#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) +#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) +#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_freefunc_type(freefunc)) +#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) +#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) +#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) +#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_PURPOSE_DEFAULT_ANY 0 +#define X509_PURPOSE_SSL_CLIENT 1 +#define X509_PURPOSE_SSL_SERVER 2 +#define X509_PURPOSE_NS_SSL_SERVER 3 +#define X509_PURPOSE_SMIME_SIGN 4 +#define X509_PURPOSE_SMIME_ENCRYPT 5 +#define X509_PURPOSE_CRL_SIGN 6 +#define X509_PURPOSE_ANY 7 +#define X509_PURPOSE_OCSP_HELPER 8 +#define X509_PURPOSE_TIMESTAMP_SIGN 9 +#define X509_PURPOSE_CODE_SIGN 10 + +#define X509_PURPOSE_MIN 1 +#define X509_PURPOSE_MAX 10 + +/* Flags for X509V3_EXT_print() */ + +#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +#define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +#define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +#define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +#define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +#define X509V3_ADD_OP_MASK 0xfL +#define X509V3_ADD_DEFAULT 0L +#define X509V3_ADD_APPEND 1L +#define X509V3_ADD_REPLACE 2L +#define X509V3_ADD_REPLACE_EXISTING 3L +#define X509V3_ADD_KEEP_EXISTING 4L +#define X509V3_ADD_DELETE 5L +#define X509V3_ADD_SILENT 0x10 + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); +char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); +ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, const X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); +int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, + const char *value, int is_nc); + +#ifdef OPENSSL_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); + +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +#endif + +char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); +/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ +int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* The new declarations are in crypto.h, but the old ones were here. */ +#define hex_to_string OPENSSL_buf2hexstr +#define string_to_hex OPENSSL_hexstr2buf +#endif + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck)(const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +int X509_PURPOSE_set(int *p, int purpose); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +#define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +#define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +#define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +#define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +#define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +#define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +#define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) +#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) +#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) +#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) +#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) +#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) +#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) +#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) +#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) +#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) +#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) +#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) + +/* clang-format on */ + +#ifndef OPENSSL_NO_RFC3779 +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +#define ASIdOrRange_id 0 +#define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) +#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) +#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) +#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) +#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) +#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) +#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) +#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_freefunc_type(freefunc)) +#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) +#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) +#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) +#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; + +#define ASIdentifierChoice_inherit 0 +#define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +#define IPAddressOrRange_addressPrefix 0 +#define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) +#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) +#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) +#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) +#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) +#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) +#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) +#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_freefunc_type(freefunc)) +#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) +#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) +#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) +#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; + +#define IPAddressChoice_inherit 0 +#define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) +#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) +#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) +#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) +#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) +#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) +#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) +#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_freefunc_type(freefunc)) +#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) +#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) +#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) +#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +#define V3_ASID_ASNUM 0 +#define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +#define IANA_AFI_IPV4 1 +#define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) +#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) +#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) +#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) +#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) +#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_freefunc_type(freefunc)) +#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) +#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) +#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) +#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) +#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) +#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) +#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) +#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) +#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) +#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) +#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) +#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) +#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) +#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) +#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) +#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) +#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) +#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) +#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) +#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) +#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_freefunc_type(freefunc)) +#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) +#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) +#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) +#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT *namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING *namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING *namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +#define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +#define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +#define OSSL_NAMED_DAY_TYPE_INT 0 +#define OSSL_NAMED_DAY_TYPE_BIT 1 +#define OSSL_NAMED_DAY_INT_SUN 1 +#define OSSL_NAMED_DAY_INT_MON 2 +#define OSSL_NAMED_DAY_INT_TUE 3 +#define OSSL_NAMED_DAY_INT_WED 4 +#define OSSL_NAMED_DAY_INT_THU 5 +#define OSSL_NAMED_DAY_INT_FRI 6 +#define OSSL_NAMED_DAY_INT_SAT 7 +#define OSSL_NAMED_DAY_BIT_SUN 0 +#define OSSL_NAMED_DAY_BIT_MON 1 +#define OSSL_NAMED_DAY_BIT_TUE 2 +#define OSSL_NAMED_DAY_BIT_WED 3 +#define OSSL_NAMED_DAY_BIT_THU 4 +#define OSSL_NAMED_DAY_BIT_FRI 5 +#define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +#define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +#define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +#define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +#define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +#define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +#define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +#define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +#define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +#define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +#define OSSL_TIME_SPEC_DAY_BIT_MON 1 +#define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +#define OSSL_TIME_SPEC_DAY_BIT_WED 3 +#define OSSL_TIME_SPEC_DAY_BIT_THU 4 +#define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +#define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +#define OSSL_TIME_SPEC_DAY_INT_SUN 1 +#define OSSL_TIME_SPEC_DAY_INT_MON 2 +#define OSSL_TIME_SPEC_DAY_INT_TUE 3 +#define OSSL_TIME_SPEC_DAY_INT_WED 4 +#define OSSL_TIME_SPEC_DAY_INT_THU 5 +#define OSSL_TIME_SPEC_DAY_INT_FRI 6 +#define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +#define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +#define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +#define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +#define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +#define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +#define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +#define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +#define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +#define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +#define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +#define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +#define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +#define OSSL_TIME_SPEC_INT_MONTH_APR 4 +#define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +#define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +#define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +#define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +#define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +#define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +#define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +#define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +#define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +#define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +#define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +#define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +#define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +#define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +#define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +#define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +#define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +#define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +#define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +#define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +#define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +#define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + +/* clang-format on */ + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +#define OSSL_ATTR_MAP_TYPE 0 +#define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +#define OSSL_AAA_ATTRIBUTE_TYPE 0 +#define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509v3err.h b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509v3err.h new file mode 100644 index 0000000..19f9386 --- /dev/null +++ b/Frameworks/openssl.xcframework/ios-arm64/Headers/openssl/x509v3err.h @@ -0,0 +1,95 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_X509V3ERR_H +#define OPENSSL_X509V3ERR_H +#pragma once + +#include +#include +#include + +/* + * X509V3 reason codes. + */ +#define X509V3_R_BAD_IP_ADDRESS 118 +#define X509V3_R_BAD_OBJECT 119 +#define X509V3_R_BAD_OPTION 170 +#define X509V3_R_BAD_VALUE 171 +#define X509V3_R_BN_DEC2BN_ERROR 100 +#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 +#define X509V3_R_DIRNAME_ERROR 149 +#define X509V3_R_DISTPOINT_ALREADY_SET 160 +#define X509V3_R_DUPLICATE_ZONE_ID 133 +#define X509V3_R_EMPTY_KEY_USAGE 169 +#define X509V3_R_ERROR_CONVERTING_ZONE 131 +#define X509V3_R_ERROR_CREATING_EXTENSION 144 +#define X509V3_R_ERROR_IN_EXTENSION 128 +#define X509V3_R_EXPECTED_A_SECTION_NAME 137 +#define X509V3_R_EXTENSION_EXISTS 145 +#define X509V3_R_EXTENSION_NAME_ERROR 115 +#define X509V3_R_EXTENSION_NOT_FOUND 102 +#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 +#define X509V3_R_EXTENSION_VALUE_ERROR 116 +#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151 +#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152 +#define X509V3_R_INVALID_ASNUMBER 162 +#define X509V3_R_INVALID_ASRANGE 163 +#define X509V3_R_INVALID_BOOLEAN_STRING 104 +#define X509V3_R_INVALID_CERTIFICATE 158 +#define X509V3_R_INVALID_EMPTY_NAME 108 +#define X509V3_R_INVALID_EXTENSION_STRING 105 +#define X509V3_R_INVALID_INHERITANCE 165 +#define X509V3_R_INVALID_IPADDRESS 166 +#define X509V3_R_INVALID_MULTIPLE_RDNS 161 +#define X509V3_R_INVALID_NAME 106 +#define X509V3_R_INVALID_NULL_ARGUMENT 107 +#define X509V3_R_INVALID_NULL_VALUE 109 +#define X509V3_R_INVALID_NUMBER 140 +#define X509V3_R_INVALID_NUMBERS 141 +#define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 +#define X509V3_R_INVALID_OPTION 138 +#define X509V3_R_INVALID_POLICY_IDENTIFIER 134 +#define X509V3_R_INVALID_PROXY_POLICY_SETTING 153 +#define X509V3_R_INVALID_PURPOSE 146 +#define X509V3_R_INVALID_SAFI 164 +#define X509V3_R_INVALID_SECTION 135 +#define X509V3_R_INVALID_SYNTAX 143 +#define X509V3_R_ISSUER_DECODE_ERROR 126 +#define X509V3_R_MISSING_VALUE 124 +#define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142 +#define X509V3_R_NEGATIVE_PATHLEN 168 +#define X509V3_R_NO_CONFIG_DATABASE 136 +#define X509V3_R_NO_ISSUER_CERTIFICATE 121 +#define X509V3_R_NO_ISSUER_DETAILS 127 +#define X509V3_R_NO_POLICY_IDENTIFIER 139 +#define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154 +#define X509V3_R_NO_PUBLIC_KEY 114 +#define X509V3_R_NO_SUBJECT_DETAILS 125 +#define X509V3_R_OPERATION_NOT_DEFINED 148 +#define X509V3_R_OTHERNAME_ERROR 147 +#define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 +#define X509V3_R_POLICY_PATH_LENGTH 156 +#define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157 +#define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 +#define X509V3_R_PURPOSE_NOT_UNIQUE 173 +#define X509V3_R_SECTION_NOT_FOUND 150 +#define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 +#define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 +#define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 +#define X509V3_R_UNKNOWN_EXTENSION 129 +#define X509V3_R_UNKNOWN_EXTENSION_NAME 130 +#define X509V3_R_UNKNOWN_OPTION 120 +#define X509V3_R_UNKNOWN_VALUE 172 +#define X509V3_R_UNSUPPORTED_OPTION 117 +#define X509V3_R_UNSUPPORTED_TYPE 167 +#define X509V3_R_USER_TOO_LONG 132 + +#endif diff --git a/Frameworks/openssl.xcframework/ios-arm64/libcrypto.a b/Frameworks/openssl.xcframework/ios-arm64/libcrypto.a new file mode 100644 index 0000000000000000000000000000000000000000..417388b02c178650db83e5ac8f40a597f836499d GIT binary patch literal 8913272 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

    v;&KJOx68z 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

    -Oo#gn)W@rg&SPK6BRTrTEEs%UR{zyQeOrNQ8 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

    E|cR)P7?3(R$YSk%3KM`^F|v9*t_-thJ8y{8TJ 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

    %|bZ|C?gnnnt+d~1K0*wheDfR2_B+N=mBp! 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 =!m)(EG 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

    %PA?b;lXT|6*z%lCnLd^U?jQ+jIGwMIC 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

    YZ&i#C&7a0GU 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

    iGvSye0ZZHf9L2TDtr`PuqvM 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

    OHzxG0FvVf$s*w+Qc@lk}z`hfPUed`( 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 z zn6%`wP2E;=Pn}V6yM#go6n82nWj4o6sMVe-Phb^ zZvEK7eeQ`Xj$h9teZ zTwp(MYTTrAmD-=QHiVV7spik7Ur5rQxc_OU*S=npHa+_>Gm39tdlPkcbn3kW1|yzt zlYU_+?z_p;>6NpLgx?mo7c1wi3)`ELHl^B(F3w07EcvXNwD9u!t8P2C4`=M1<6^wL z2L2-Mo51q3p}BQymR#-$xPK?-Zv4J&Hn#5!M;@5ybo=5DZ5e86i7dLNo8Z^w{uh z%(QhIss-Yv9uyxn_5S3~R?BXDGEei@-~8<3>*1yZ4nMz*TlVp=JzRUA$W)SVu{@bMySG;02zKQ&> zPWtH1m5Xfho`0Dwmb!4>3_G2)D^ZJo|9pR3sa$l)#p2i-YNu`(E^UT;!L27N4;VsXucXk%2pFiup z?oQ&=%*M}o4`~uJ50#pY?Xfh})43&Q@I>yQmfgokPvsq_w=JX@WV0gW>>j@tj0rT4 z(WVYtcUJEG_s+B5<1PkR$1U$WZFPcS6qjbcEW|)ZU|;Upk{csUm<@&>IlCI&Ve4{El+sro-FroR#9XIEN&C-y+n?ldrC2!BqvJ__@^De# zNr}y&%g*MP@4YuXI`!(X?mx5aYZiHZ>9Gynf9Zkt=Rc_$k?T8;?0E01KQE@dO_-YQCmC^hW8-yp zF-dR72LCOcZFcK!jyvvectEKmwRDDmM%TI%d8UiK_S|jmC^!%tmF>5nPCImq^d!L@ zqQ-|^CcBSO+qB%VJGZ1K<%<0Sm{of+ z!~1^YULz+TnyMMys;y}6#Z!BxO6=aY{XC=K^6}hX5vh&FE#GW=3X_U6TYTD{ZBdJJ z6n%Os;X;7F_aPPa1m;ikTh4vYZ!(r9&408<`TU90!8n)t+#b*G%lNJADzwFkR#g@BOE&(}_%G)trF*X|?XdQ2TPl-L-}bFbb^9#IgVnF% z-$r`<84)QS{eTg9-pX_S)}2|0s!k^?lMa&87hbvJ(vz#Y^~vE+3l~`?omsmzwf#r7 zO{#-)`>yMmYeufh-n~I`+^TWi1hq0>00r}w&k5Sl2>4TtCJ|0aP1YN9 zr?@^J7u#4g=BcQeY24nUSH|`VhhM3jm>s)evEtm>`;A#1Ph0o4ClbrN6(9SkYI=H? zs@=L*`9Vj^ZC1(ZvsW^QFHRie-gjl#xtFgs9&5kZcXq=2K$GuLX@^c9m+DU4dGm13 zEDbGDjimEQhEG^!g2LUN`sGgU&%&Fp{5l$CXZ!T*lsdi@(V4nWOy1n2)DXH4lb))4 zxmYW9VBhgF?Z(K?EO;M6Yr*XmHY+60-@Eadt}VIUOzzp#!kZ3fYKGPP`L^$x6)i7n z#S;P5F?UAs_|}C>r{`T#lSs2saWcK0oU`TA(jfh} z(=4LbT{^Rv|5ZchI)>5PN>huQ4bu#3#75{(wYyh$@bii7zH44xcxmv4d+e2pDOvPB8gr&R_yy^m`ubk*Z;%+Ve__+cB30t4l6ieHr6$vLOgo1mc4;e!lGO0fhtiliwp}N zEANxI%3ST?eo^=BUOKhSU+H%lwLW^jl6ZBprmv<`e%x%8T%8t=R;z^D&v$musM*%| zw2J@7%3roIf(olHd7UxYU^-miQCfz&IIFZmDpfo-V>~ltOx+UKs$0tf_CGkI8L1$c zrP{f2^ekb$vF4_4ZqHmq(`mi(v7>-v-I)Ru5ar&b6oStx6i+>Nq9Ad zoSoplasLI8rYinCGeviqeFAdo)mCaP&+w#)-<2$in z+KHT{D$HYtKL*64t(aSIPhMXx%KpHptcS5G5$;F4PwjqtZFs=1)6e)lLJtR5oJ$i6 z{CYI-eM&}B!LdIfDO)Qx96grO`l~eOq*$K7;XOrTwwG?#*)^?cxQS1(`{EBds$1&i zmR}oL=~s5*=Y>;=>)t3K<89;O zb{rgCd_YN9sb|>d#B~eZ)0VZQCsSQ-e!8*rLD@~qR}&A77F14dSrO{&ipYVa7(IjFW4J?UVgf`1{~~or#5yE4tIV z)@qfUb~hWg*+p=ZX?)11&_fv_tDHXE8PjoP#~jy(PaX;%8OfO4-kcbE?34s;ZB@GF zyWNp}CnOk`Cf{6F@z$*B-9@8|{sHMTe(Rf_ef1)(CS}#vQ9A0y+0#Bp1xDV^4uAcs zZrq>d?ud8U4=)Gq-YWRDtItp;<@r)KTY)a2$;#XBS1PD(JeOiEQF?K6&!PG0+8Q}E z$LlW+Tf6UJukfQyfdbZY;eT!>IX@D1m!_SHcF3w~pXTsL?G0Vc_@&g2T2-gdOdCfd zpT}QLYX|NT&{$R0+}^HrTRX{9cS^p7$Q;TMs(|kdKhd3sq#`o3#m5|a|6E~(tKQ`5 z$-{oDYbNd4^lYDzgQe-48FA?r#`5b&xW1Yv>Ge(6!}O(SXsctzo>db+e3_yoAx1fw zPTzAbHhQDz7ngGjFRzFWGLlsH+cC+}>h<}VtgV7(_TgK?JgDLmM|@0^=oI?qG^5t= zw(}X&x1Tq(H53kKBnXDQmbLvbZshorF$X4Ut+-_5pEA;Bk|KKgj_8NYDzo2lwk->$Y?82>YMMwxV&({Dy>*ag}DW7&uxK%&#!3ekg6@JT3c1~@|S@HbJmbp&jKdmS+U>4`D z%xQAo)cLzfRw*^AMXu=CydRGa7n!$Fx@-KjJ}8HeO*J$ee*d?5PPV$~mv#G7@1LuQ zPrYm2$2>H7$I~lOf9~wL;GKB>*-{&wj#D{tTE|&GW|`KxcyB9+p`Do$v*EMHS?!eX z;|2G|-b_+xalDsgpkHv`wq)Y|HcK)61aZI?wmqh@v##N*X*C|yRMCDQLnZ% zLR)#l=v%uSt8csypl*I()fc~cfp2=LWG6K#m%jCiNl2x{yR%i#UtHhx=~IK9Cu?g@ z{*8MI?=L9o&9K}1eL>$6nd+|z)+fALPc`Tor`UE2w_nJRH}d~{`LSOZWsl5-)rRGx zSyHEFA2)j+cR%FYE0tQmj9-l%=bkLDJa}p0@&gOT?G~-STXMp_W80(Q=N(4hKNomt zr0}$b>Rt8UDu~L;NBc7$9je*c>nJmS@i8G2F~-9+IoTQIE8{z_wyu4&>uQ;C#NOWq zAAZtR-#>qJN>@TQOIXRz<{*E!?JENp`2|InViFfzo0>VnDpPRfp~fBQYHb2?G7ZZg zFIpjSR46^~$Nl*V8cU=n@9xe%^Wjr%kjT=XZOzw1>2trmdR*aL87r{q^SHR1mrqK0 z?9e)#(kirPgq?0eX6FvI(QoeSZ9N$xJ6`nexOJ`B2BH+Pm;1CgThglz=69OkGTnIZ zsYCPGfHuo3W_uhI&LqB%l5$XtzHwJS?3cMnxZ<<+4YkgJX*yR{CiR}Pzwh@zKK8^$ zTif0~udj)U3m)qQbnl@#pLo+Wx6DAQC?W6Txvk8=j|xOg{a4!l&kM&pe2+h9$Y3N# zCL8&07tynOpC)aTxM|(ny32g@QLUPmc5c4i6%XdAPniBIv~gjs^KOy!hRM!pPng3( z;vEm!2L0Nw^wcorcLp~T$KOnzx^4x1lw|DPcf#vUa%`^4yb^h35Ss25<|MS-^H}@A zTP{JiYn=3t>BriO?z)q?wQ@q(s13G?$2O1LkZ&%z?7c^V;GXI;>VLv+#piYGr?l*O zqPVH2)`X9qEMimIW@i3u`+8>VC)Ta%lG@j*_EbcCeyYW3Z}WTEhki-Pwy(HzL(}T!yYs2e z2BTNl>>gz;^+f!no9v^QC&hnM$4NF`KO)h4K-BhxzL3ne&z~LQOUstM`4J#FYmKdn z!~&0^;hBEryG?ZVEPibC?oI8yodI1gYsZGnp~P>sr|7S7v`lx+lKEoBudgv&-0zCd zFU3PO8uBFxf0pUJzd)RlSbZ?VaijdpVwSv}eB->3HEyPFo+kRvZ*Jss@L%jbYq;LZ zarp^i4If=RRVSaEKFz|GB6Cw@{A&MMbE}pycOKa3cVdK6g7aicR?mrZr;;m2vT~Vk zl528{7u>X)a9r|%@O9NphZl$A-Nwzi$9hw>_r%4N-Lnt()$ewoW=~_?dis9Zf=MrA z>t-FN>6+BH3I6`Qc)p)zZ2eW=2a`-_o9cX@=Zq!Bm5+<+S~$X-E@UwM@^r_|KD%DL z9VHwzMziY2vIvc$6Uo2r4R#CYT|b?CH_7t-S3da(>Wcc)ro;34;>izFCkfp(SmNZJ zyS?{Fum0uM5lVJ$(jl~TajA`+fp@RBm!)jbP*(CXkK10$GMgac^=H%3u}`LYo_kib z;ESc<4cnyNnQ60^SXvkPF!q~|BY{8-)H{4B4kRRIDOw$``g#w*XIQ)@Pxm_~POe7c;HbtCuHi`VuKE=ZnSJ348} zS&{l0!?*i3Sk5r$XuNwb_Q4b4<+&DtslIJmxz@wwYfFEdEeMoss~;&XG=7X|P4}*o zy9B8UOYfd|$l57uU)l3qT}rjF+&^`uo{oTv_I$4yF`d^8xI4b**|67VM=EJ|whCM+Kd@GOM}C2DeX`Mg1A`r&U;1_`t!i^wD>YAN_EeP@ z%AsQQKYdO`t!uehwl45?_@mZm_kO>y+teUIMBIL@pZhX?to`$i#!A}Tg}02mL|0QT zI4gUi?sf*>lhRjNAsR;%WR@DVymfh>Wh!cD${L}ed_y5OWxw#fB~FiS1e-)2Nl+5< zeartm>B~&FrW@ipUu>!0kB$8%rk!`f@AW;s#2I_0%-H3ftLM^f>+3dB>Gwqb&5nQ6 z-+lZjw`k)B^-nFriTw7et~1w7Jv(MYp07uEgGa{oHxr5*gAdPgny0H5IcLesgZ}gU z>e_WQd+o24o|w4&##Y^1X$GzDecG~oPNqDTeO+KZ>YQxHxyj4k?iAmko0Gq+K}s}# z&557Qrya~Bu5U`&^t<5a(-_@7F~=M`BJW+Ud>gGi?|9$5KLMBT%Z&Fni&qjVN^|#n zH{RNQbkt*oYEy%~M_lf`;(IvN&+eq_>#Uy_YMak(p!%yxyf}MH^5E+GBP?Tj+lHCB zJQ4i*vT3z!hqd_@(k^SCEx6DTcsHiXqNVf6@0os@c)in5N1-wU&S znd;Bwm<7ip6>oTKa$)I8&gQf0{^a^LAYeW$oP9<&w)#lT>7}*H_bNPz-naYcrCGNk zv>CM{m`J>DG3Bx5{YJCEdlwaTM+G8n;C+{@Su<`kaHWzQ(@wX63h==gW@JdUM!9_~w-&?S8MQpm0?Q(AqhoyY7e zlW1L2YF3pr$}KWutf%>6tvy0SRIi4$l&5B}?Y{X%vrX?()&zMr@6I|A)D#kcVO-i;LFQ@jpg}!U+J4@TItT~pH7EuM^9>K~C!Qf+oefnxgD9HyC z&8p|O`j4Dp6Jz)=GUeLggtQUsUTT@?R;5ok;~r5Rw?M3L*}nWZ`*Gs6np0lR(i-tX zH|*{7-5=h*dAzcAWZly|m3!-|l=cVv>z^7|b#C^7vigQsu6rB!XeVyoGr7IJ@Q#X2 z=cPUi=Pd7Ci-NamOjqhmx_!a8g!t56;BW49+c0QX?-At*LB9^njK4da{%w@GxbEf; zKU0_urc)laZfbtlR->p-TW%J)rpe80TCq)l$jM<#6yin1%oZ75UUII`;pLaDWm+LA zrRh5q#Xp*#*ne=5Q_J&Ld~+rh92UvABfV*1uAcB)n+t+d70MQk(f{r4HCA1!bE-~F zQsUk=o#Q`FUM&4{{Io~R>Ps5SH@-QTrM+m3l;oSR*4X71U($?BZ6kdOW{qALIie`M zZ{Y*QJNznNtDWM%Xc&uBW}7x|yp*-}YTKP>C0hL7f^Y0Q8GGK?@{rTE^ad}3Gdm8j zx*{)q(-J$WAJq3D`c|2eV_=rR=?}Z-t8{vc#Ld6>U4PUnqq*lxFNTN=f4Rf*tlVO0 ziG9+}@jk=8&%M=k<)}$^(4F`MpJJu87BBS;7mblybM}Ifveb3}>!l-*<&E2b{e!opm8opL0hMu8$?3%&ho-2n>RQ57&__mi)ibw zt8UyJt`OTt@4DG~v!X$C|C8dF7b-p_wdrN+1gx8j>!h3a+Q&(?uc0(KX^ZvFOfa3b zSy^{x+w&vlBP(1Cm(2EpGGB*lkssP!<5ytHM^x$Jd^FGBEKPe)p)&eEuSAuxp{E7)6>uU>rx&@D46da`#otE z)l1&w?57%~96=7?jaw=P^v%5cL)jtC_$?vZC_Zv~j*c@G78pJ9 z<5TsS5BKQ(QCjaW%O}RS?Rxr^7OPBUQwf>HpJ%%-U4HXbi7j>G^eHh4pZzqhS%hmI zliIhygkJHSUS#)-epkM2rDfE%H?54*6w`zUx0a4mPJZ8LbEsRgV0h+%M>f%Yg}e2= zc9z1LoA(6PdPT);5&l1vhh_SxT~io6JEbts zd4ARPTsulk)Xkok-zwwF1!gInt<@xE)OwxS=MtCgT)VutP&9E5r z35ko>d={kU=G51Ut=i_Ve>vreNXvuBt3?rkVwE=0hNeuh>_Uy?+mw_A(!yVAO?B(b zjCPEBe(rvCPHlVGH|rm>$M4l${mV#Jd0pzp6FW^CpZ~0K6`8X({>sNE%!ey3J-Y6) z!-p}l;@WFlLVKo8yZ&R1vw98DGP=ii<=($$k*PQOK)>?Cop6Z+;nMrHoOQh*y>t02~mYq*|HYrv1 z+dH%B^(VDt# zqeH`-5lJ~l7RGZXF52t0?cSbUg2Pkpo$}orb?d08YSowK<4sEOS~j~{w`CNETD;2P zpZT#&)TUAWOUOu zeDm=q?<705CpkG^{bzIuOjVuadw!xfWs!~ahTpIFDqEhYOJ`r1HKnd$@A>7#Tbti^ zatr;Wv|Y5%9SHhUdPh4~SdK{f@_lMv`mFf3W*v`|P9|tCT>E@f@0xF)xAW7ARtB7% zlk2l>OV`|Vp+99;cVsR&_2^ub<3#n_`}7@;-sv*z3p=x&Q77{DdgsSGnn$dInskDw z#jD4zn@>&fNV%*(+cKS^n56t*)TFBpi$#ywIr~*StKYcqa^T1vL`SXd$v;bu#9daL z=6O$E@lfy&k@L$K&37!v-?g9lMypEW*OkX>&leo`Hf`Q?YI0KUo5*_}^EVeVJzlOB z&@^`{S^My}e!O7qHSAy~h z7~fY4jJf%Y+2Ii0`&Rnfl#itv6T70RQ~19vOMFIay5JLMLT8!F8I5XPV`=|8WXS@P z(AcSu;zblCdtB~aubMLV$`$=1iO266M@@A;={-%NG9+$g+nN*`%Ujx_4tkGn86VoE zD}F@YG+&&EG|0NE5np?3^@Y1<=T2~tzT30yN8WHRS;=}Aady*AR*KQ+t# z&-zUdr~NQq*?mN#NBVR_*!ox1w)?kjIlIAnn$-33BkqgF*BDC2YQ|@#3$@X1Rz5P^ zb#dwAId`l-#H~D`ks;D~9V2z*l}U$QT3^~bXOV!i?$gf?;?A{S-~4;THMP%s6zslsojKIL zZo}2<$;>=GWA#y6@5_(U4jX-W znyR)od#cxOwO>-dU)?A>v*6vzX{r>4FY8Om$zN-BZZ@>r@hoV?TgN_4TaT}N=i{aC z4KoXub4sMC&uAVoH)*YtagVeJUrO%cCt<4YZTX|uOJ1*fdZAi$E&uP-mMo3U6Lx#e zYL9igTz6=()2fki>G#(6acuj zdDco}ZB;Ahg-))HwwAM8R6V0r&HN)GLc&cZPV@_i@Q?J=^$K1w(K|Ro$0K~jR5De0 zDS}`*Q4b@^5`=>^mJvZ__=}TzM5On|G9uC!h(SCM9uettv5d&pi();Ht;cdMDKi!b zlX^s?cf~Ry3hysS>JgFN8_S4DA3`Pdh)5rZWkjT>V;K?Y^{|YH^tGr$z6NgIi1ZRb6dn=j zMX`*C^s-RSVkpmelRz@6169&t4FKs=ksE9%UL=R0&IFqkoFln`pOhQ1Tq8irI{-+p zhvhOXv#@LpI&s(~U`JaMmYuLX1Kg0_iLE7w(^#)6LpsD^xd<|Ywr(u5fM~mg<#H^q z1veC5DqBksg;;jN`Saw+(0|Z|f+7C|^f$C=!8wvuQ9pp~DeOpQp#p`i6Lut9pnd?G zB=XNyp1Y9@yOT7j_s6m-wqF^Xk-mmh6Z1HFY#$x#v6>*5K3*Zrpn&j*7#L}o!C~Ia z@X#>kir}CKf;m_>;65lwL@@R}$kjJ2c*RieD1jA`fkP(nH}~*JPbP|w$JQVpzkiqr zK34>X`SSP-2@VK~V0w6aGd+BL1A=^pRC@+kN1#)AWmKz*iM7W z0_^7r9PZ^25#bZYTxGs{63O z08g*5=#YqD9XQkBE)v~fPW!w6>*F72`p`0r(6HxtKa!EPCFz0e}#%eEkhVWdY?EB%{3oXNvZI>O+~ufW#n z!chYD4hwXdBlXCig%v?00|^JvixPwgoH`*HHdNGTN9BRc@P_@ryOk3}u@H+$6JEni zoWM^=3a=TKnBUiDP)=h$`R;fnuQ!&G*K0+jxl@Q@VeqE`{)X`rp_;uSiO0d82SK=& zO`$!8_A9Ld?ps0bjkV1C?pTqF;t&$G=pF%=p>QgZ_MJxLH_(Lg8)+l*n|8CD!Pblh znlxJ;y@%z@2?y@du&2VFhT`b65_r%PER)wcUl!t(1DoXYdT9b_-)OY_?=))u4;m$3 z2>c6CEV|L28?V%b;s%@Ph@7~fSW~A#oL5uHvX6`xsyUj=M1yxZlF=p))QFA zAm}+_;1*BxySbZzn-ual;8t!*(0`1frZvFc2<|AoY%j`#Mv$AZjC48RhIDLyAhZ27 zll~5J>2ko0*B^Hn?(=LfDmxum=ea*j4!Hf>@Z53zoAc~uoE}#iIpFsHRC@o$rvFQR z4ndtkT^!`j1GxQfn;*yv%FqAq_H+7;tOU!MyMCVt5TS8>eXbn0rvFn{gT@n1x%_`s z|Nnohk3r+Y{|o)i?C5js$d?V}}8`#${kelMkYi9%WY0fpQ z5zZT6uE2?-0j}q&aD5(5&JX@^UH3@ix~@yHU^>ith-@PuOm4he7u?FGPJsCV+RZ6K z9~#+nl?5=Tm=AM{d3im-bMs)X!Jc!Va6Q2n^M3hJ^17H*(9^&lAIv@YVLn7jYl|0n zVBQv+&OPsFy-##Q_$fpS;n)x_QYb`Rky=LxeV|bZSJDo0PQ#gpc&sAr^#}WeDA{3@ z;e3*4PQtNU8r%(Ngme#0Ais;o2lE_SekaU#e!@KJ&3K}_aUub85y8R+ngHzli1{d; z*Hq$5tKb2J*7?MRPBkcVnjG65&A*7@MDaIgi|*}w1Mco(MDcIXdB7Z~J08j$_R)|w zipyQZqPr1fP92ns5_ETQi*7ZjFOHikavNcR9!aFC!TgHj?k+;mH6R{;E#d;Qp%L0c z6HPI{nWn_H$6^*iZvYvkgW3urYZyU?8FA_&8k%RxvfWe&zR&`wD~|jf+|k^w0mp;# zl`TjVH?ik%Xg(?1p9Zpx6SoQ<5jt}?;W`4^1*$iKQqE`?&tmkSkKsC3;W}4jF}f@H zp)Ha&3i*e33HRDPB8Cgiej{jINVRSZ;S(B2}J8Fc-E_RGAAr2Cu#5@{fL>UeY93ipCS~k;vzg!1z!KOpQ)uxI4`FR8>T`T z8Kyxwpx{pt(xmd+&2*s!^P>L7XU#3<0oj6md%Jcb{t{jMu0=q5i@i zQ@~#v_%o4A-18giyc+6ANK!FBFMo@3o@REK3Pt$Cw=qPwFokfHg)oZj`eZ%yf%_}e zPElOda4uBNau&8`J#-&0w3jnxjGm3#gBFZSBZzM9HmL^nZ-w=p&>mTu#6Q}s7uLUr zHjc(J)&!zh2GVPVaY^`1OuCSaMS3fYOXREe*Lfar7V~y(dQxI;7_g%dw{% zg@v81!{I9W!|@G{cRe3F-h&)HRe&9KAYB2rzKNqBB3&wsx$OK5k?wkq4$`>_J83VO z<}{9uou&Y`mrSpsUq|L;z#g(34s!H3-hMsKk0(cui07(x<$%a z&e9W(?-h~}%71S~_LIrbKm5NkqlDC-DhSJfKRLKY$#AYwii56EZtSsK7VIU*fO0Ao z+E(moRCcX2rQ4hFSblYwb^lmiC2Kk4SbmjCf%zYqcTQbqQ03FYHxg-34_`c>PnW=T zl`}5G*y#LizQqLxC^s}tBe?;}8oAkmn+wdJzq_!U>2Myyo>!6cw3st}XLt1W$$e{{ zmiH6N#$R@tG5dNf3D@KQkXP6Kyvnot^WeNn-`}QLdYYeCS(cBw7o1{W{Ab;Ft(hYOoP8bWJouy{LvrH6b zv^&|(QTs*mw0>EUEqh|wpDHs9JsWLAbJ+gtEjcIoImQB}VT3fI0bDmaC&CyB<^2u& zTMu?4TP)!IsT`h1dcgdJH0#!~)eIBDW|=h!{6&0@$EI(HI853rM4RB_doO zoU1j73v?i79?p5rOV0I2C!+XRH^jhz8$*+ZIkkhU$@U<0;I&jXv- z_l?~!pXSVI2!58c=MG$d;Ev|fXwEcJmB>TS+)=p-_Z~=$0NbFgJw(sYRp(oDBYRPu z{eaya-819yp+7HhuZ{e$1pe}TJ7Bz5&nkk&T?PXn^~KgQ27wXT0a!m!feCeshrH_$7q4 zI9m|eVe6NX{=1+YRN)?#lYcY^Vbm7S!F}y6*vYm>_N{C&g5D=iTo8H}ldc5) zqlbp>mr-9O?}xL86ZA_kuhD>eO`!mbZVh&L)K+ETo(9Hbiun^3+&^AL82HeYq33?;Aq5jY$ZgBzSAK6L9hwe$qalQfk4do8MwGZj;E;O_|-183U zzX96Ckn#V;9nDv>;JzeQkoc1G6P~ZKZI**FkOP|)@>{UosxSt%LcWCHccNA(R}~5+ zvsXd-X5CnYZz&P`y~*h^fP>_WirKdgt|_}as1e;y$Jg5QFeKvYh! z4;qs#gSgr-*RvedcAX&%_it0EU$M&?`VnF_LH2LX?@8!4B>z1Y7gS`(G1woTf1vxd z26#ro?T75&1HWDM1eZcTr$B$F!q`H~>#Zcx`YMGUpyx2?cc*VK&Y-r4#!v3wp5S++ z{5Y@^+2SrS(0@7i37mdMKEojU9{l)MTmkJ2#fSP&Grp%r&pK4ap+3iu*Bs6mpDjtC zSBX-m!Sj~yV_yb=LYl1Y`dMY1V9?*jfZvEk@{8%RE;H>pX=1-f(u@}j(uLm2+ z_ypK870)?YFh`ApeLeUg?IC3 z`OkJ9caY@_zyA-Z%Q-aA2Rxu`C|u7-P+J}9nI^inLmN%&jkSVyI}O?|x^`CeUpv8u zLH#W5@IV@t(9c?Nf9#{7Yb+J6Z#1~h@j*QN5T5|_13~Bql(bIHHP)59Ua`c9Vl)(RyFc;#)tqS+XeTeK(f*sAf(De!B5w0y@ z8);tylpnH_^IUacu7a=O(1u7o`Fw&i2S#%l(w!XF(O5vrBlCM>ZJ`g@Kwp{;eaag8 zmKF5PX?f7s*mK8DsKX1;|B$UHue`R+fV?9ejQK;Bf!f9YFqVK0*@5P?LzORgdhjmF zknvx=#Bzpb^F!*?F8}BF2kLL2tTp};mq#fX*T1Pt-ZDb1s)n917W?2HqkrSLA#&b}HFV~uKdb)<{yl3AsbQ*oR!w;2V)!_od z{Cs>=egS?#J{sEi`Gkc91gHc*As_%6K7Kxa8jU(km`de`e>6f+P=NC?EJVnD&!6+U zBv%61omdTSU;{jo8oXs$M#!s(G@ zXai9=4U&wpKom|0h{AmzO@?a+qHwJw87)8*u7M<@9*Dvf0a3V2AWAP4h{7e4WF!Jn zxCD|677&GV2cmEeKorgzh{9QrWS9X_IAf9wIuM1^AoUJoNitMPy@L`-hCC4YBY-IW zb~Q5o79fhhfh40INCCNyB%>CH!c_y2zbcZ9a#HV5N|I3mME<;ilYnlRu9yy()|h6P zbWCla4*VaBsRWz=vNUiyumv?f;2j_;mntB#r<^3C6i5NNge0RFi0sJ*qHxJT6fOaX z!m&s)Rs&JED3Xi_AUhvG6wV2V!r1{)IBSv&3m^(-Mv`F+MB(It-oRGq95C%)cK5o?a;}l02_dGU>y*p zUj#(y9|od$lQAPO-GCP0ZVl7|N&{yB`G6?DJV2AtV`rK;+L22sa)& z4!}h~3m`o3b1);x(8KOZz{Q{!0z!I+5n+gR;KMQ^$P6?np?ErA5JLXpH)OV4gXMB8 z7hyRY%c)pqVL1fT9lJYW*#gUYSXRZd1eOWR4jA;19SuNaM-7(Cf$*%yp_C+}80ZN4 zET91}0jLR#0_p?(frdagpbO9ri0a3hjq zy8}_WPM8*$bRbG!k0e7Lh{{0-h{_#x0tu8ZJS_k+x`4?4can?_AS#C{AWDY?TnLN+ z&I4)#QTwQa$q~|L0Fgcsi1b3hrNAC2Y{U-C7R)-#L?H6N0O$_1!|rBS)&`>Zm9Q*| z)KA>#=+X%cWQ@0HXBac|1G*R4gZ8IReZ6SYCi-2P~TbQT*CiR>HCbp(fsZ8Pju=6hK|G~E z)ILf`vcKm>?pfG96T2q^(Rh-8-C5XO6u1Q3tA~^Aq!c(GMkYOi)cFCZOL9*FD|0wVu>BpF@M36Xm%5V^OIWZVIw zc3lE=0OkT`0<(cA{VbAwQTZ#8WJm*1`Ad*w2mw*~ z^O0oq3?s|GizK5J$gY1Ns^@Z`Ca?&I>Ny*T>Nyk0gz+eYyI1Ai6piq!|JIN&tsF1+D28iOX2J(SZ6-h=p5XE0gl2HOg z@#g|j{xX4cfyuxHz}1-ESPw7IvGvy2oeuN_f2vrPz%n0Z7gQ38rxl3&)nnFR_i`*3 zW9DLJVWt96covo;FwuGiC_Xn#CroQhV@z#KRUnE-0?T}uUC?P!Jnfk98#7z3#jM6G z#Vo=+jG2jXcrZuK9rZ%Q3rZgt}cFvBk2O1lSw*#{UvkvnPW;qa*LoSvx zv7CtI)tG3V0u-M&<^oIyObbjprUs@GrUWK>o`K?l-^|!-$85l?#jM6G#Vo=+jG2j< zjLE``!1Tv-!*s&5#x%y%##F_W#uNgga_ORCJ2BziC$`wkb3_PQTHMgzE`@vaVN z1H1!7<7YL=C0RhonnNZ@Mg|bg6IWyU15te5BpE1QaLXW;3WTYh7|KTykOkZVMETha z3;`wr7XUW^QGViqcEALnF>oVL54Z`4@)rP91^NKxfxbWqpdSz!u?&dv4K|6Pe8bdH ztQ81TEU^ZlC=lf{4p;+>0agP;f#twxUw(6=NT41t0;mBD2C4!Bf%3rRKndUqpb#(! z=^>x+UjQ8t8^9g095Wk}h3SrIfvJiKV22Z=dix7fGbvdVK3X;94yA@7NNuNdz_EqW z3dbtRYDqzAsbsk%AFW-oL-ISYT&hZ{T1t@mU8)O??NS|ZydzyBEkwZx^47p4=w#c=@F+o02UXa=$ z{~eC4^6hYBDJLj{h00lQEKx31rc!f96^x=#vqt5Pg0x0u!+GkcEI3acl>z4oqf+5K zVN~KML2AzgmL}Lap=*L5wMesA6Wp~EwJFpdtpsf<99i06xps{U20JdN0w!RC1@>r;Jn!_AUT@cc8aQmfM4*vEgXC-h zF!+c;hvBRj5sf+zxN+8dFoTAT{2#^v<{}yV>{BNl(0m%L-@{qI0?og<<*!&@K9=-f zkL4OHU&nF-mW#05f#p3|W-qV+QG~*E8`;D8U0@56!Jf0&9(Cj&+|W%p+C-2H{yER- zZ({#i+^Nl0JtH3#mkMlc&8IoaF#(MUk2sTKllm6f1@=(QcEtd7Ldw2|C=X&i+J>C{>mL+I*&bNJniQd zkL<(ae=(0enmn==PkMKG>eGv-eV^c|zimA737+~aq z&ZCDPt_SId^TeOeQy#;4?17ovpz!E^ggZSKp7^?X%6lS@{vA*LQC!^dt>W>2fG0j% z9(!O8JShA)9(^;9z39G?J3V-IK1fEtyL0QW@c4hs<6jaybNkolk}y>oBlZTR=oK!JKZzbaJ$x z?fMVJ5Mjx+-ooLf9$1)eAc|?Tk&KqL^9x?#69$p~HLO=~2#*>CW0EiGkjj38ND(3@ zPgeM>@Zt`<+$WloCog{=ujNc|=ug?(zh6f#F*ity1diU%CkU1ri}3lcJ%qp-b^%_b zKXR#1<_eF%z+f+?M_8B#qz$H8xh`M^`K)64M6tzLj!>}JjjO1^2T0D&$Sd0)o7{!Q zE*0MZpFnRY=av20;x;_kD?&dcEPzYNUCTi$eZpXsL2OcZga?uay@NG)Il@7zzpO_1 z@75h06cbwej$H4MJ9oG#;#y}{o_9dFS6IM`fFKXFIO3o<$d|&H{vIoRxZVImFOPxG zA)+N)Df@-5L29m+Mk={e;eAyskjaD>$AY|=Ox^$FjZDBZh@DBMS40#OdI!6vQDyWm z{kXy>!avwsHw@`;mB6cU1J-l3M^vTyP`3k0(llIVP;0P;p=UruIN5L_S770<1%bLN z`3@d*BnS>g9N`0@`}^77JV35c&ttBFK;R!l*c-4I<(;bqLvtdF z#MyDK6M8354-V{J7mO6p4^YHDVPS01ifKFGkDcBAh`qx-INdfpz>jTDWC%Oz{*s1Q z1i|VRAxv+i0h^JP5y5aiL;-oNAVZS_AY1Z`@d*oN7cC5w*ene z5XAQD84#rJ38#a+a=qmEm)6AO@-oOiuEIm_Nd7JOpw}g#!9q8OanQ?uIn&o8AaKYm zdwYU=f7P?4Aqs}Y5>_YW_AzLP`Zs=1JNtV)(3pauJCW(Y z2mmq|}1!2AP5jlGD;XmiusG8p_)WZv7w=$QJi6*O~omO(HA3ef+|FpfsQt^p6(4 z9G8C%B%}(8uK!}*?}D!E{UOOggcR}gpx+~T!fh2-4fzCl1$*-}KQ6U5tdfh=U;(O2 zG~)6!8Lqnf>rlb%XV6ID7wLf_gxG_EU|?ex%MjNtwhxqFpCIr9Rul3tMQn4jmtTF6a7r`7f3F9$@E5EwV&b&&P1GC>s zXW9}>$Jx_))cp$r|KGTRFk1W9fC#j5vY)~vNk;@%I(8*VX9B@>GIk|NhsB1GE36^R zj)5c{mKsK`u%X7RV!yE-K zH9XWh!`0}|xycbyd`%cdF2P66}q;ERh*%*!{nQ|FpK; zPx!w0H(u8keGi-fkBPs*`fupFHMlL6E}ut!vxB~&MBm=PZ_LGgR3fwozB3*8-i-Y2 ztegF94tb8gE9B_OZ#7BxZ1~m?eIr>h8oqO9e;0_pjU;vD@a2u13lXe5FPcT&226$D+AJXO4p**?6S_Oz?*~qi=%c)0q zs5_)X-@YQM5K7BEXlTui0XdEz$*68*@VEc+WIovbiO?U=zGgzYD10ldn=GUUYkmG07;{9vRQDFTEV+g}Z=PI-lXs>kC&YEx=Q4u00!TTVtXbr4JSOaUQc;a9! zShhQSznBAQkHdC=+u-!z8)l9_4^{FTRQSn+ZSzp^=74?u{-KRh;M-9c9oY6ZalY~F z>@$Gjg%ii1^wcB=!e0fuINvv;_Ri^RoNwdM_q_jUZIixA3Vd@-f$u`8@O>x^z7yqx z??qv~$yoUAI-ZiolqW*r{S((8Fg9pF{6cCK3Y&+qoMGLyW!X?}-)Q`>9swV$O+bS+ zA}O$DB>BB`IlO9~0b|5D*bh*NDXI__eyf)zV9gnncOfNWlCUu$sc|Y%L3j;qgu)uD z?eM-3tOK%cd)Y7|bgy9I9(ezy_%&7W!+NNvp~}%iexMxUL|M)-E)H2+vA`~1*x$PUDT(&CgkiUS_&K^XiEFN__%u{KbK)1fS_p-ioyY^T9D zx0bM8%l~5UOTel6-ha<=%yZ^M=CR0F!pR&-MVcdIh^UOELFO`56e$!+nWd7-P()H8 zN|98E5TcMFa^H2%KE(l1;{;o zj^)8&XRn|>RTs`{X@h;%zsiu@AI|Pi;iXVOK8pmkHB_JHL%+fIv(12Pn_4E#LX{pU zcb)mLPZOR01NJDLupPi7gFa3$49WxT4W}*#6OOReB6vYp7x1$|C}6!Z#IFa+k>5}E z473$Ee~8?_!Fflht??{_{0gMukEHPGc_11of*0y*hqGETXhc**Abc@WdnboaUFIeP zCQ^8r5MJy;wD%at6Dv&KZ;iqo1$#USn?@)S#Wjo|7%5b)9vKKUB~3{cqLImj1%2dn zlJlz#_RwB{{j5BqSea3^S9I0|soc@NWN;HWYv1?Jyayf!fyY0+GwtC#QxhDVDaN~y zOJp9-LsHK05Ujau;DvLigy5{mWCG43WP#x!bf(vRcvsTS*FA*#8ju51L+@I2p1~xv z9nv0oQQZmDhN#PAKC}&42HZTk!y=Z+EI1EFx^Tf{IL9*;__VsXWK=^-*gPqLZ_lM)9f5oqSZkvKL zkN$ohQyVrGL2U+&FVK0SzxKeB_rjxoXawHnKh5D?gxtb;GuZhJ=)FjO55WMfpq(_9 zAk(%qqi>L9c~bfzdOGd*9fq7y2}K&b^R1x|R?UY40GrzS~8q9`C9u!G7{AQ5q~6i07zU6i1 z%ns%?fH1XENCT7wj0HsDAo*exP8b=9A%G~H05TGh+%XEroosLBMnN zTpjNGRI!njNU`cqQ=iUP_4%?c<3h~$o;N|@ouNSq?C$C)8H zWR$-nfQU~gAS$1FKu$m;e=HAp1Q7AJ!psdZb0jZ}%%|XmkLpPqAoRBiWq>foQz*bN z2N0DDk_SfRVhf1s1CsYe@ze!G@kH{zD4uF$Bq{--^dk9R6i-<|6i*&N+qQ75D3CDKt8}Dfbi``0qN&M=4OB} z#!~2nt`FH)148GokOn9S7zT*yBgl@D&>ceu46OiB{nQ0S^%Ehmq!+~yfJB2tA6+LM z$N|!|!ZU+Dhn|5Zg+2|Q_4JMKtfsGlX8=P81IQE7Pr?5(hD!KPD$`{G4QLZ=eAIX_fzAyP?1Hb6ry(pDE6Xf-5{t8s#A-mc3tW@@eR5Y}mIqr8* zg=auz|C!2vAeH+XDw;q=gI=pS;lVeuIrOXr!oNz3V9QE#gg|BsKg^bHKJ{j{a)}Y|dEqPs?2Y zFtq*WSpI{@U#q(R;E1wP56eARsX$@F0=&DUqpOXZo!75r__?d{;NH~})&=cd9bw5H zD4)NrmV@0+SPZ9H7{|gxi`k^`$cw_H0QcB=x{?i1ynj*d``k%lMI>v?KU)6t@NuyR z510wkUpd#r&CA)v$y=FXO0}X4-hQpx0f8-gVaBAzE%=X?YaL((3;y~b4U^c~3wf;t zo=VUn;hn0y1k=nYO1dcPDN8{~w)`kR|<^d(G`aIq0kIqhHhy7r0d_VuW-)d2SY;~TCYLt4={KR zKtQ?BddOToiF5TDieh{MFb^5C_@vM__c(zGXJbTN3;zRNOfxwVO9S2BTv_5>prttR1 z>3;1aL?-kTq7nuOClWprP9{Kj*$`e4gjWRNB~XX=e~N!MjsfDq2=QQocrX_Y5=4qn znmXZZ-7W%C)<*&}oM%2aJydx$IfxgT>=q49U=#~UkP{0{FcmwNFo@@PvIz24ftmdYifFqE5Fx)QJ!r>*N(2+hi4vot#c3NT)KSQyJ2! zeC)S!qr~A4;m@vLlMsH(zX(4Y!Y_jGiy-`>89c|QZXAS$L5QD7bUsu7leUbhtdkvqgTyu|%!| z9TjzW*2qj8Z6xT`z;1d#)=22j;6}(0S%qVUn=R56PZt@5XMvk8G6csFdHjg&3(3IB zGrfV2&u|1jJHv>=!ZVQ4;|l#y9mL-r#|ZJ&hxi&m-^>bWqJ=cEkkW+G!icBulY@T8 z6mFm=9e`&jj?mW)b%YVp4t6NrMSakh^+R7a0DakK=*wWb5N!{AvjdNArjxc_<`Co$ zq`eRPOv>Tufgi^tCk^V)BB4Kvg8u9T^k*l3w(}ulJ*dxyu%`BqbS5&Ty;CD~{ipPW z&QOP3pblMzx|s!aQx57Tq@kz+=t`hXfj$oDyA1Bqz#XC?ennjn&k8WB1T&PzD_~Xu zb*d8T6s7GzKb}qL$Dv<`Izk8af}Yfd+=0Ib@Q(x@QKazMfPZb`3#fyQP~RBw^T034 zUslKu0{Eo`zuZNGcpg$7qI%d5^>6^{;phKf42mk%ieLCe+67A&M%s844(YFTiaP08U z%OC#vS2B|3v1VmtBx=)>X$>+G(RVsg*q(_HhQem(dmW+?0!^%jmm@N-BqPxTqYW_{ z?R!V|^<*TvV>H^&4nHD#*rM&9nE4bW1knhQeF~s1&J~?C(S+h=#B! zT)A z0z{`k{-F!joyj!DUjn1i_e|17k_E)(F=)n5maC%}kS2dfT99IZ=5ClQ^<0+@F8ghE z9<)*Uvn@#!5J{uM#B6Se)CLeD;-fm(8HGDZjM0-kTcpU*k>++VuTx!0o~X^4*QtT< z+@I!k%Bo7(#O@#Fb+cx4)blws=edLORFss9BzZYmERV@1R8P`m3x`ABgGm=gQ|5D6 zapC^$d`^k`BZ}T}f7jM`s%e7WGj~2m;iF5kg)@EN<1j7u z9|3&(opb#@KQz?ap!ds(I~K1pR1x7a0e+~eWr&k?$de3bJ%Ar(>IW(Kyph+HxrVvn1Hbe z(rHWK9mkC1-^em8wyb3NfHsnzOWv#?hy#ju3MWoY7tVG^|Is<)BQyxCw1Q zL0sVa1)%@L5|)of`sLnL8w-gyj18;QIhsK0+PI27*jw8@MC!1wSZ{;oA=CHGZov?fSp!ix|ky`G9Of z+2R2?LVab4}5Jw7bJ?yKlaPPVhuW=ceYIghqh|}>X(<$Vrgf~ z%>cc*8K5^e8FYj@L;o=jec~weiKwrffIOIl{GjyF&=-<)H%n-eYGMIyViI)m!29Tr<*$eF#ep2&pWXpT zwhi8YJV;OQB=osRmW!fqW*qbkO@JO(kms7`PvCW>k-=>!KXiD!4fI2zeA1nnQ5QXY zcpUww=)j`T0bHnj$+BK;(&T=>SHd7u?BL;X8YZNNhisQ3i&HyvNNc_9Iq4(ictyFM|@ZXVdp_6O~S4eZGElmpr)JM`x! z(4Vi$1bw*Bm$PJ{z6lTgcP|_R)5f3=eKzzH40^ege!>&-n%pkr5AdoaBxrw^u@MLI?QUK^^Xq(VO_RNN=KViQa?>_(Odm$cx`H z0RC-I&Y;IRrX!fF3#%=d5!wnP=*49uwHFGXHmI{bi#BEUscz2P4eufNPC$ykF7&A| zC)pr}$1Ov=P#IBpp#MFDRm)9g7?$?jg!dJ4LkS1?w_{--JLIMp;`iyk?t~7Wxz7aj zjb4JhLGIh(?x66-{B;CV#czCO1L*AF?}c=JDkk%gotW7`fWEjFrT;eBEDYS)Lt04b z0==w^K%;)Q2l&DGm`4-p*?vT$xRLS_l^p}bfdNY!=(|S!B$$!YO17iWq_P8@et4)S z9TYzdMo_jaaIb`$6)QtV;L8Lzb8b6fO|B@FKJe;~NPgHTH-G`g0i^ea9{i^zztg?& z6UqK8naRP-;{gQFofeGgISU3oX+TrTGJpVj%)sm?4e<#Cv!68NX&{*Wq=T8k{#RWH zAh3cx^DKKduxI^66F9)0?H3))3HBVnXaX15bN-@(xxt?67fs*=d+uL!Fdx|S{-hb< z-7(1!u>K6_=!F#~9+0I{ljYDo&FFDEkvzs>g7+$FH_U)&?88XPpKYLH*NY2hVZ#9X z0$OJ_tn#O|4BzH5zMFj^*K(;R2^t(Yu8ip!=r@oabXsyb{)_(_;0J|I1L4p1i^f^A z!wj67*--Ukh9AX$ws|?!=`t`^1M|PVN6U$SewUzeG|UI0#b8X2#=PP>WOqGF41d#w znhI_H-;AkI{e^qZyG&2}SNL`)OpvF3kBv*lZGP8hNEx5Zc}M+WY=Xujk@A(9;o^Fk zX3+mAKtB|PXUmEL9d2k`e@(M8Ggn0~vmVcpbshQ^PMUdH`SU;z8H~gAS#@*&q+6B~ zbj!j!Wtk|g9=Or_tD7Ni+*0(eL;X6E(?&AmV-O~}{bJ)DOokV^A-8YxT;k_g4by#S z3s??!2gv;*|F)oGki6f8A~THmVRqmSjW>2;eko%Qihku^VUfqtWM24~otWN2O4tjVCHjy|#enGH60_P+MMnGHI4w!TzA z5j<<39pIn%p)mm(!~TgUmr;8{^?gp8^rwuO>EWG22RCglY71zd zSx)odxA#vN%%{oo2LhBWrlSttL+$AOLZRV5nI_kFif-ylSbYcHm_61ukbk&?ezu2| zzlCc8;i7iXLGnw{jYkfbRQG~O^BIyoxh^6*8lWld4~2lfi9fmCLs(#j?0fuwpF;$|9uhq$vkV&0bxwnu$bfmPGZ${c zUmX6^!+&}}K0rP&lZO8=2XIp~+2uM#r<6dugO zH^8SQo_2!KZ+Y8;^ghFQ-WgKzvY1~HsATSxfJ$N;bH9z^x;B((py2E-~Cosm*FNxp>C$oKgh)irLM*6 z!V#rHsc=@Q)5Q!XO1&iayX0~q_dS%oK&W3uebG-E!XkZ_05ghv%6t%&VIbT;%M|LK z9ne4fcleKJl0WF<$adtqhWt|OX8)hv_mcbgUwtQv*W5aX;)(1jbq>+L=HcY|EW8sa zae(=OEj>QBXW8#{tsMG|`@yLE^dX=1V9#0wS#K+)%>Upg0LI5CZI8UoRKtz7d9<@Q zeZ9}};Z*G7<-1qXp0}AFIA3IOUZqOP&~mXZmG?Bd#`0B1j%U_ein+Lcs4Lx?bl}^_ zrKQVCU~Gc>|9adY6aF8){`1}-Y^4bH2hCnLB8h7L(jG`zPMUKX&TRMObF|R%)9ccmn*-InH8i)2Tplb?lh|6#G zcQBLwzu2c?ix2s*0Q4vR8?XqVeGsr#^c(*+Or)*=Vh;NeezT9|Lb1c)k|1)x;x~Jw z|3n7l`h@^x;pk@pGFtZlGemci(Yg^(9o$s{Dg(kML=v5bA<~<&1k6JK)c}0~l>pr^ z+7=M`GskE{j8+3g{v-ia00l5}q<00Gk3;-XxIKV~Zvh~RS3Vi7qXAL;;rkBB{0L_5 z4G2k5kj2a;G4uX;WOqGev_68-z8LKeh{Cf4R0cH1P!}^-!cY`LPCyhdT0j)v5l*td zP7IO$6l7nG(Xh5a;vbD+0A}uvp)H2yfXE+=eM#w}C8IUcpMuic42aT~4~X(3hm6*? z7>)F(fVnl&UxMrd$Y|{gh|&k+1XB98U}%DwYhWmgp#X-AfG9pwFdPxB){$4An4{1SGkKc7W1>^roP6nFFGH&<2EY3`tK4 z6oHu%(166nfQ&%Pl94D0C<*R{U;z#B=_jK#I^S6o%$os`dvx9~AW46UG?*P!~fb3`H^I#1Mz!5XkGIc!U8e1A1fVfFas%i1N1+5{=5Q5l|5@15gPt32-rB z2u7pxG!bnGh}14+8bD}rX4PaQ9s!gCceWTBVkn6r+K-3!#|=S0 zi1w4A{dQ>o7t;Fy{h~rOpaftBAY`FJ7@#yD((8fB#|;pb4~&yZ<>LSdQ8Tk8Bhd;F zm5&gh7$7TV&xqOALq9AF^`eH1)+vB8;4T_7kHXAhoK6bY9Z(AF;hY2_(i zrNP`APzulu5Spl&GZ~2vfG8feWF%SvN`gBxKoqVvAgT|tfGAuZ44dI4f#TUnMr*V$ z4~383f2v@fLq_WiKvZva0a5rGfKZjp&^|gqq7onqAMK|DB+3Fxg1aerPb~r*0z~mZ z@(>6sF-!qO{LTR)ez9aEMgt;#XrCP77Y2yOs*13*Yb>D&xe0i|yfpfBJ?KzG0mfLj1908u*E0iyJo1ERB@)&nX5 zS^}cS8F0ApprA0}YOr zmY}AgO;%uGWlKvyN-R?FG&D6d^)z^zNL!d5Jmu{4}hTbfhK^!NYhGy#R8gG zx^u8uGKwx5o(1%GU{hoceLg)SO%6joC^2qiXl7`I&5=Ef{fw~Lk+GAJmJrPp%XE&3 zmQc^s$kYsoHb|B*(-NXsqFG{DV7nu84{VieWo`qr8kTyNMlcIwjba5Zto`t8W9@`z zHAf9>oE+j9foDE{0jRym;LqU)1snWB{3Ad$@;AdXU!VZgUt|d62+$IcLX2@hqzofW zn3mAGux(-ILRvzONWMsc2rVH*G)y!~6x3LVPl*Re&=Pti`Xz<{(|=kY}<D+!EvdMQ;>A;L4uf&1e z&!X`dt&6#TfVnrv=!+O_i_uNcs8M*VSb%(phQ_3X$p;N$v=v6L0z2fMGF}%({D7v6 z&$mJ6f@sQkd>-bWGCx55EaD%9@e{_vr_2vfzlrQGVfL^tPoljr`UwgTIx33%Qay4H zbQ@;xi-k`a?_Wjk!3{+oD+tlRlafC4KAz2QKcayL+8m6ocKDCv2q_n~AD%+uR3PtX zS>rAOF`FiU|JigC6^-^e&$ho!WiL;~&k52p+r1>jWHzls<$gWn&1`#rD*s5o)olAp zs_^@$;)mXQv)waN(SwkGv+XCT{99Amn^Dm@RP=GG_=Qo~qjL*phqsX`K8{rOXkYPc z_vpPoo6e#N54{&=+viZx%vAY%jH*18sqF7l(Wj~Mdz^}YB9;4KDti<+bW^SmRPHsY z_s3JVYe^ogAeKS(>dqP|J5b=!1zB{&pv0KVm<5Z?f)j{ z$p73sO^M>H?acq%&xHR&7=J&P{SS`GW%K)K>vIlJCR@W+YEnwb8(nSwJ06Pu*987; zb2rGL{}&HQ|MNG|m~>`+wy`bu3M@4$+={c>2FNBHh8!$p%hJpB=GT-(dd| z^;s_F`26)X_AefPIhf;b&gb2~c%9>Bj&IWDgMWWQ`d{k-<)HGvI{5o>=W|-bzjQ_k zj%pYC??w7=&qe=3yfOU(u=)P)=a-Y+phoa_H)zxRU(Y!IL%5U*GW*EyKREmCNN~#c zesa%)js(DtCZAK_WLt-QptOVPZ0$MafRaQx5PZ(5-Lvb;uD_g-O^FG)C!2dj_MFBt z`&8^X7U)be8`6fBKct*wKHK>}?tDRK6#P6<8vax5dil8*2AvA6{PR5NIeGSTXAId5 zoGuMVg_HL1layfmOfH<~0q1KwdU`o3`YQiv8x1Ll*~d^T+bI40yoA5)t5H``(@<6s zh3g;o)!2C3K?%>=UGop;C5Xbn1}?PEp@;PEZx5IN!iBznkS{U~!(Q~g0+zeU*T3Cg zgE^nYk79xg`1ue1{HOgUzuf+cA7#$@%kI}d75Iz3S&-ukUtX~NA&5riVKC8!p&jlH zpe!H@-00f~x{w=mqbxvf{%>6WtLww-OTS(gR=jYQILVf@rpRk@^WYXX+>z=g z+v&PZ6%x$xnry!NJWjeT5isl7Q~Kr8c$<}_^SAK8nvdPLmG56Pum2+8(qSmBWc1oq zC)KP&?@d&e!o7ksk8d^}@z4DDZHqVIZBEwd^|ZBJ?7Bxdcs(P^>K@jNo^+0Cwq~(> zS(l<#yOQsQ-aHThTTn1^aX6pt)lFeDbjtEyJytyC zFV-?S<9F+t43qsSMw}9-=gT$p+d_xFGmB zpA8SFp2KI*pXatpKXz~WLOIihji-m+mM`ksd^T1~{L-r3e(uW-62#>c%6ki6Sd z$_lG*cD7Dpzp$(W~p2 zJEEGrqnv_f9)!QFwdOJy-NkVrTkuFnbJb(cr#ER=oAT2&pGxrZEUC2L8yL%ahGmgr zS(m`7AIp!*ZnU?sXO=lgqd=RSl>4@2yPL&fo4uWhbWgTKHw(u5Uw3`~;J&o>HHX9F z-*07QnK$g4dhB($bos%;v)}6I?d-SeSQuTePf9cwUKhORqQFA^D#uTUv$ojCa2o|o zmO3WQyz&%{!zJQ&a4rld_!O!2ni@20(fDc-e?rGtkmGiw5$(C+j||MkOCux=nco>+ zxF`Ebe9)vR$R#N7nkh$9+Szw$1;LU_G?z7MJ1MS`3pI#1;=bbKy6&c`SB0M&&qaKG zT^87x6vT0-WWj=!W_A5T>g)8iB+tCiaN8B5BDgq)J2_ZuY)4$a@BvkIGoCE>>!*Ab zTQ^FUhu)p+-SO;^wTt+Heii5Mw8u-fJ8YC%k!kW=oBPxJ&YRYQhIPdjc^gJmgB;XX ziaue#oH@_X$>Qo&cY)QsudKuBGE4aF27O+Cv(0Iu-MxeBKxFdSrG^8yLbJIo?vHJ@ znupgpFI4$Sy5BTQ;H{W=UgHKffi}xKWleb7Iya7ollyg6*{O$TY%sdCIn?m7M_u3n$Bc#I)+eWzrj1X#WVec_F>U_fF}ksQ^DDu_eTUVwZf-ft z>^dCr>Pf?4m+MJ2g=3Tq0OMJ#L zp^e+s>8?bqy?=yT|c`8N|{d;CkotvJr-SCO6Sw}yUiy^z4>tmh} zkMP3Dmi3o6GBlW9**C)Awc>n7*KmEBx#jnM`A+9kznzNNDpBr|U={;*G+HtJ9rZ&=VpxdY!$Nc zgMT+#@;xy0=%-zN?<*X5>uRorymS>g!9T$glO&eMY0#hreHUara5@g;KP`D}22k(4=Z~?E6}>-_f}5ds=GBi`QpOH2v3gsV!J~ zJe1z6U#PM%@M{GVn}ZY^Z*9}`iPZ}>JYLtctWM6zhtqpo2F?35+l^hmq&B5^W#!bV z?d$j4Vlu?BTgmH_I=(||nBk+0Tw0}a!6J`2^>d13r$%g_zCz2)37o$rU1 z3eOkbGGI9nyV78MW2@)W7-f;uXX>)9u9(;J{#FmJY9vhLOwj)P!Lfy_rf1A@H_vaq ztInrC*m&WM(>>=l*TBbg_Yyxo@!Gso(=2NFQXz5KqMg^Bc8JHxrJ9`x4LtP7A+T14 zuaZkNo5jN3MS*{f)&-#}!Ze>Grt1t|o>MFnj5OfBFYa=Xw?eX8({jz&75*RAvBknY z&o|GkI1%+GZSb%STkdO#Fv8vb8|!!VyN9g0l2z(tZgoC~^N0DDGRt}yrO=CoTZ0N- z^%=;sgygj_ZvLkA=)>JDlA1lmwsgv^V+u|!=7C*z%8y@*qdmu56X50~Y1^eIec5VL z7ok>-|Dc?Nf8ebLFRunPm@}2Wdm(j+bCN*dy!fJku|w1%d<$)RzSUd$N{zdNb{BTJ zC%iuW*e{r&^t#KQ!hsz|J$igb!B21Z+KfxCWDF0`H}%g-eJAzfmQQJQh3#&k*ud#s zdzDOF>}#fY`<|WmHvG({Pc%C$sanTzby=*tQ)Xq$v>@@qNev6`c2AGT4EA?5+mEXg z^-2~s92I+{8x$8~m(#?1wYec;@y*<>V457A?h&0eI_shgkHv3TAn{ydCC6})@3d)3 z-;I`)i|8%#qjz&T^OfDMI^7nv&4R0I^||UF-2q$sOBuiRtB)+WrpP?zd32FqTJ*D( zOD44?w$(VqZ0=sDSN956^St&!gt2(eR%Ml{(dnEvtD|Yb?fw1+yot>YCdvB+%h^9`7kz3`l3>chbsBPR4HDbT! z11BMutMbEkhV7x2Y8C$ep&xw(Y}!voToTGV`O3mb+SB?2li4D_N#QLn%TgBUMBBNV zi_Pp==RUB=;Vh4r`xhrIr-*}E5%Qk$w+B|}c1^f0d%bws)N_|daZ3)mZuJdyQP;aV z*8MfZUHT&9i!Itu#=kvy8zVm)@zPjKZs_Kx!fYjOoiT$QU)feAM!Z2?8 zmy?+$#$Ru}dvs}@y}&*1Iw1?iljn73WEHpz?;R~uKJd^bvf6&kU!1smV14pKFR>u^ z+V#!mTpYCLpVwdRUNGeN*k!Z+M6vW+u{Yni_FB;DUXO4P5EEWB1FG?-+nmoD5 zh-ORhi19J=w&&slGxXn2PbnCNI95KdG+i%A?0WH9DMD!{tztx85#ChFi0j&(XLd`s zJ|Eg{a4%u&6Km0{H>V<6Tv8bwldnl?d~y3$e8W!6)>UsHB$r)YZM7Bg)zK4(&^^vleWnXeXhYe2fe(fOnW~rFcxLeG-h}j zw5XM>zpm$PKuh{S3$0V8`1^^DbM*dIpLf~ZiCDDPEh^vic!$1KrHDqM5v}F(YjH4*9N$*-pE+R_gt{ zt7U{{?$EP>(VpA(PEXkS(i$lG-%?I^`PTXD;nUjT?ZVPqE-g8q|Cq_-(}9}%BPq|` zI`@R^eE5iAd0PA@=6#VtFC%%(ZhcRj%pxYfFBhoGEe%L+SXN(9Lwou{$YuH!o1eUI zURS62qTbHo!_`mfx?RG)@;1@@jxtL&HVa!S_!zEAExi31Kb(nQ9%4G5dV-ZbjYor;n9>tFl|2e35hO`=nvo6RSjD1xa^B4J>&T zSgBXxFf_b{TS{Za%R>cuZ^|VuUlbsI)DjvQsbsR}%-l))wd`S35WDtW{MC-Ld%lRc zFF%=BZ`QoHtW&F)>Gixgo&L+2gF7D8wItm1kEdJrl`o5NQ{nbz*X1`aKWOG0NhNlh zyh&dDVwuU4z%}~UO5WEppFb4OB^cIh%IaFCWG2QDM8B<|G+wN!p?1w8Hc1wtI^BDZ zb}tiUwYqTj$NTp;oz@L=I#n~r`CJ@Iw89_!kQ203D}?337?x; ze4Q8GSY5iNv81g(Z(P#;&^fJqe2)BNoh!{yonP%<-oUN8p@JR{GYc41xrilQH7zfN zJ>!nd8lHK$}@2k3nucE*DBIKg~u4D^Wwz7}C6JfpMD{ekG`<%UA`uHh@ z;+@YD^!Z|r2BsFYoCuW=RJT~C%Cc{tmYDMB7bbtrKCc(P{24*Q0U1r3JL~V+hMtqZ zzf#iP*)(Qz!dgWg!wV1bc^ocA{=UMxVrH#!!)y)m%W*95exsk zBTsEiCVt+JWf@0ytZFizI)Nin}rW}k9E^myO^>bK4@TaFs#>t z-hG|JGru&0k8Z=^5>D|tH=V{KM?dqI;%9h`-12wqi_2@=bs|#b;gc(Qt76yGisVTQ zSSo7NcID6qYu#CRxJbImzP>+$cVpQ>X+8lhU8#{xpZXfF)R%q^nM~ zJK<8Aes-i!zt8mQK~Q3`_RjxGLwPe&&i|TvoxjmTx-rd$jxC0F;v8M_aJC6S=F#VEL#5@DmDcXVU#&5a8_1|*u6d)k-11D}rejRI zI0Zu@_KK|-=PXu|7wdh*#ywUbHvf*s1OK`+Q6dhfww*k>-DCTyGCZAx1mW%Z(oLm$&Z!ku{Kg zN|Pb)+pa`?3xR>|8&-0=ChhKOY%?|sAwG<4ymrh|eL>h;kMY*3zy^1{NxV0w1+`Q^t3>+ZZze3-*zz_QsgZaDwel^|)} zFJXT}5y3WGXAz6?JW-Ts8(dKI&Mn_gP*sC0?Uh}`<_`qL#IZM|$n z_jOfjA9Fsv^-yMZ=6Sd$sgjF+Rib^oI4*r^*=@DPVUS*sD1G%L)8}51$Av2sf=zoqS)5BzsQ<)XvCwN6)NmXK{nFQVC3O2XNd`%;@Z8T`0?HN- z@89yV^$yZ+Z+>BESaiWX;R5fTjPdO~L;N)MBWaHxF|j1Ftr>E@QT~cP*{OF2ZOiu( z|BjBsL49=n+b>stedXPrwe~{aOrvnKCY*$^#MCjHR;{IvS^T>~_=DxvxkkQkl9yL} zxlY$nay>ELPuo&6Q!TI|{Iux6wM`;-)eFte^{iW_e<9+vV{MsLlJMjL^V2%GOaQ;&R$b?Z%&QIj1JoZ#KPx5tSt^~lmb$AYtBsrx00 zKirM6oR(HyY1A1s=qg=p^Yr=t;iL`?moLll6FMXE=euuZuZ+C5S+HSsjAoaLm+B5y z{]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

  2. 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 z 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

    S|kndG<2q!;_4in!xyIo`IKkD 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

    l3+U*d&ol_>y@g6Uc1Gx28%K@~e5}tX*>R zaj4Q*cPw`t2NjG89c&yeb}V1v5$Fxm(pIY6krPAN5R?fx;whO{#$-c_T4p{WHEQDN zMTFFnIUFQ2bVlKxaKPaE_d#aOL^9~9K=A%$ixrPdV$_0zt`hc0kGC0 zt|paUWfZ*XXX53~5%Md~4u!3XKdv(l7IJN|^yUPsAZC z*HP+$e9pnmi~e{s9t?jXc!$+xFa7Sd5APru{ue3{V51k)Ob+obn>?ccc6GQn(9L4c zH7_;816N!NEapOsS^5h77L+e7Ep(KXS36|6cA&R`Pv{w{lna*yhhs-=N%#!vqJEP zIp`s2r1xXooZrzG>l5coT*_j-#e5IVAmml<-&f{M%DhIIw=45w%IsBUtZj<<55F>x z1#-SaUwkwfxrP~Lmd9V0mgl2stHwZMVU-?!h@Qr@=~L%Sn~rZMR#)Q4wfriKOmu@& ziQy50S^bfQ(rc2q3@1Oms1MRsx)=JiL-ndOq)N!Q){B{=Gc$!^w0?I?>qU(1E~6I@ zP;d^(0P~S+TOD2c`{*sok2X^$@q_-vy_$a`J?enKKzz%dv?KN6CH0u5^Ph@= zIyLVlxrx*Tm(yd*)x4J%m4TNB^SUHGYNXf?LMy4V_=M|ndaUk7Ip@znWUY3zJP)m9 zA`DpQGwZQTSn1d*fOs@O+VBVret- z{pcFJk4%3^Yuyy+NiWPihXd=FSPG5w->l9PqrWT%-n}+`(+L^_?-0)d?=z8x8A!`* zNYkwi7s{tMAdTV-4@GmM|C@H4w}vy{)VGEBzJL3wxP~w8k8SWAm-@OH@2i5QNJq=y ztchuz>=TNwcQx=FGU&g$SvXVrRPX2e&a>4%hqgqV*KiM>aaQu@#rXaa@~IAIa&ACc z>ed7A#W_0n;k!);za+2QQ^7FzcdLDld<`&qp7P*~0zNxp_-(Vu^xM=~UTuqF8onyG zA&my78-uc|87R--V%VOLhfd28d@BvQJcaqB?HbWm>G$tL*mL_Y@Q%3`ZbnyEn~Ny& zLcXtkxw67D?08PXSe%R0zAC0+Io`)k^T=v%k%26$lcfz;cMq3+=^?v*Urbc$-3j+++<_dcfpI|iRnA+?QZP;AQ3_79NSOOae(J*it&BD!mNg+c#iS%`*QNE2-J&lpF@r| z@OTaGzPS6~{_>mlT^`89Bjvi$xY$0fxwosWM&!jcg02VOl?(L1Sq8A{bD_Pl8Q+c~ z-@fzh<0z9Ew&V#VNOL0MY=a-W?b1_0Dn>`S2Td z18R&@H9ch6yD-(*Eo5)Iw)xcLRC6Fm4{o0Yb3U!&X; zBHaVfn|%MCe0XsFj0gGTf}N%#?0H@Y^4x6a$2Ly-HQOOBQ3iCLx1j8#wX`=fY~auB z;WYo;KCZoo(KZp~kYyarXA0xOE&8NdZ){oK@pl@tR!IF!eQU${95$1_B~7g#0|Vqa z3>age4EDzPSeMts0i3DXin9iJriJx951!vc{jB)i$o2m~Du^z=DS`V0^&f6d6heYn%8r-1U?1TovQ4A*Yi7Rqu( zzV-PFOp6O=H!_}l#K(40e`C)Nxn;nvM+dxT^$6udmLpob7k-w=<=dfLozqrf$Yo8i}Ga)*mjZQ%S!rpK(HfDotJE7lgI7ews|5o&) zaGsewW6+*Torb;!>O5p5+U#+_Vw~TCejwW>QI=Z<^Gwa2JWETo*X=hL@;r_;wwLI) z8SbKu1D$|4n}^@|lxLjPuX&JLUF&e>D$iYQn{2b6+KclgFRq*cK5s)`;?@T6E&30| z*ODKE109xq>Ubry!+%rHJiDXSZ9}*igvYrTE8~z(+Xjq`kSn9U7AH1lWm))v(dI{kg?lm^2_?D{rafO%>I*DU!@!z z&|TH@jD}Gil)+}jr}iJf*%X?ehF@3Pm_cd14j2}RXd3we8> z11axSokG0g44R-`WPRFty^N;^@`PsdnI^67Eaad3uAt1TaQ&AxBviNZEp>~0oIT&Z zt6Al33($*l7k(}d&IN@YXaT?W{vm!n2#Yo`h4qVNh5R%AXuRvQZ{Qww1}V#gxvU%? zDtTr50lB^6!4*C4L+f3q^uclE!t1Y5p9rYf25p3XY$Yw?y$C@ zCaq)HU&^@z*PvJCI-O zTgbLR)>Q*`%rh_glwR>IV`HNiyfbfgdq)26z*#U3!9%!?uNS%qw4^QqkKyi&A9q-O zUMii%D6a>ilws6y z=!5W?`jpR_2JOU{uoJ$gi?$#YVd&l*n<~m#>JVc$#s=NmV^SCKTicqB^ds}Pz1`Mu zt_#i*x&h}|s(9?6lSmzPqp|yosW^A=gs~wNd4xIM4d-y~5Zc0&me^Z|wZz5`8(`QM zeTM$gpgyzC4U0E6Y)v(C1F@ZkwGTCRV+^_I9gJOgJ`lDiq_hlG<0-n~JK)DJw&%9p z;MzSo)>t$g{JjxlEIEz-G6u9M6Tx@jM(K7AV}s$}NdEOW!^1Lw{xS0%{BrCvw*}u} zZ69px#=K2RE&6(FQ&{fq11)!K&qW@@M_D&xEI`>^fINx3MO%gR&!56JSdN`sI0NfE z_-mQq+Pwn{HxbY@~>V!iD8f)T<>j5z;bn#MC@d?{{Jx9)xzEDC=6zuHrS)z7n)@R9WFB?q z+zgh-HF3jOhcxfHo=dZ=)6|*K=rp6OUR*gF`sNPkoowiz+o6YMVV-Cv=80m1^F)6F z@8$yfB;FE_2%o|ENc~l7S*6W+OLBhZo`&% zJKH%I+bzhG&!EXZ`jz#)Q?Jlp%H{nD9&m1IkRSBHgU>1QIRM`F;(h`5THHuqL;OU} zSq$iKEFtJ3{XtrB^4Z7mJH;GP_cWaSE829VU!JRJ+wO{>8JaK5*WbfNp73mI1F{Yu z%b5K3*8Pkt@Z0Cg{qDWy%Kg^h{Ce;x^y20C-7@N1_?>y>e)H#Dx!=9_T)E$Y_g=Z* ztbd90OI?=b2#sx7P9Q7Mf8q0`&Vv&tzv1*W?l`;Ayqr;Bge}I1?|IKJDK}=9t5vhg zD#yb`l|>G*QZ~|YYk8%ksye@{Fu$@eWS&^fBfup*( z2)-8NFD->trDJ}6RgpvQ=&Ew$FUv0}6`%fbOe-mLkjjGcO0L3Hmpiyp#PEwJ8xFjr zP*$-N)+;KCZgMCC7BQ9u|1}{)>`g@k!Az zK}^lf<9-d?rC2j8DK85TrJYO2mYZx{%00-b{35!Re+l;N<(Cx{aZ{fg38!ETvXXuU z0St%+*^-aDtei5fD8i;a3cCbb^uRFk4Mz~_Jc0xa!7Rf$7Bd5@%PUtnh6>C7kGi)3 zv$8txy`T92HXkbD@G0u%Lmic|fTN<}Nj8EB>W(6gh9uD0BQrSY2nd5A328P;Pp1hv z2a-ubQ+l#vI6VU)@5MRA7F&8{Oh~S2LsM!=%1LRvHPd#|(7vQ%oiTWLfB*Hd=h@HR zn<0JAb)BmZ%=6!C-D}s#}a8wwuV7ByCjCfj6+F zaFNh15)2p_#zf)V6m0y7g-VUnSJ>+O{oQ7}tfPj++9Wb9miee8^u1_s2S%%Q|${x@{feN0f`d zlN&J|IsSMKFVR0&A0atT@>fnS9)}LDNjgg6&rDcBCHb-u<;MYA?M}VZzeB8bu8zvoc>lPuQ#De`^PRPuT;Lh#qmq(uXhCbzzFh*JT>d6l>W>S zjQO8T2d zkY`7b9~wb^dIWhbA6#@)%HRAED8K!@m_|?M%ZeQ1MoPikAizZyDG~yp+XoF{pTpK*gH}D&AaB z@sgn8O#|;BUY*5oBB*#1K*b9{#T%sl74JN#cxSlG?c-@;2Ca8GRK*gH~vZN$E z!D5&I6|WXlJlQ!?ymO%9$-a@|^@A*7N#`wwXF$a}4JzIVQ1Om~iq{J&-cgV~pFUzS zJPaz{AyDyFfwzJI$hwdQ**#(oZ;(Bso52jY5ln&YpzIZOf_30cVE-gzccUY3am^|4 zDg0%xhnj<5Bvn-_gY-D3siZwfhxx)Q2nCAV%QF9 zytG;jGoZ>Ndq^GN1n{F^t(B((i=pfssXQk@=|2ie{}C{WzQY#79#H!CTMToc^zQ^! z51n8em;rwclzk&%5_}XqH!(2wV7fu&M|O%Nmp!6wpzINC23I)w1cy7XGRun6S&Lyi zxQ=j5;CgU5_zWm}L(*I4{3n8Q$nOM;VE`)Ld9LfM$uo9|isQT=;80JC6J7Y0C z4XQq6pGfuD1uFecQ1!P8R6R9;s;8Nt^d~^IR{%=?g$V{j*(;KM*((CWbD;E}2Bp6b zlz!P8QaQGP3g2ll+ytr|?V!?W0+mi0yqv{Qyk(Pr=ill4J3!^X9=sl$ z1}Z<|K`TGvM_-E`*((A=@u#KtoW<}gsQmPS(tpg!WzR_YJq$|!Zcuu&;B~~`ZZYfx zpToZ$+ywIN)1z1g@ow1Jw>apz0?FGKHu2Sq%4r%3rs|a5t#>$%2o8?cf98D)2+# z1W@lEQa0AUp!#>?{faEgD`rwgID3d&0^RNK9By@;K#rwkf|`e!eY4G z$rn3$BdB(tZ!xTQ@|jLv2QoFJCt3^xQ0{rhR0uLhW=CRQ>FCxC`8Zdz*7>{r|7wZUj3(*}2*d%AS?tYZ1gc za2F_f(zz3$=}+J){Lj-kFM@f8r@*zikAn=^bg#uwc08WMzXv30dcVam2l79?&tkY2 zRQv7*o57u629$j)hFp4^#jq7*=%h0i!_^>NJiW?dxE!QQrI%R@7lBlHy3t~o1gW}) zI&debOnewT7uf!N7Hq1c9M}|TWZgk3F(xD0`|2%~f_BzZt%sR|COgT(C z3>@aktcmY1=P>Iq<1png=`e7Zr%)!o!<@sc!;Hg}!=%H&VV=k)zQdfutiz1Ml*6RM zz+s+x;^*jIhdGB?hZ%<{he?NkiH8NBs;;Ur)t%eMRCjE`a!yqbu6_S#-HRoIQ|0XbK}o*?w+uB0%0cX=A6Hx{|ZvS z;tc0~SLLokdez>mYHPAr@4UL}YAgU<-FtOy&CW?(lXgwQM$e={&WEl!d<}7~Im7u_ zT`!i2a&`MT@2%S>TSax*$>gu@G`~;Oo#cFU@-ch{Ctu)vZt{7~=cf!#@s^Cbr|m6R zFY23ig5SNDd|lHg=2puN}Zv(V1)WoR7>rI`?|f??ZZw{-*qQA z@49~X^;k5zVdo9h$($qDAlg5thjVuBPHYgJoqLXR|J;GOwKaQh+;?N{#zggr8&BRy z8E)*ov9>0EWB-iTImj*GUA1}1CC-*WD|_^tT< zed#|i`ANQWstx~_&i(7oebKpJaPD5`{=9R4)4BIM_g9?zzdQFC=bp~ZkB&ca?(3cV zH=KLJG%Npo=dO41uRHf0&aL}D<#)Mrf6BQ(6>&Vo;{(b2$6d$*LKRU;y zzum>x{g32(xp~v^2d=z_oWB3+^q+R_&pLUn>remW=gZFhao66z@7(%6 zp!h#_?r*yAZ##EF`9)BmgbA`Q>$In8hJ$Nc;3G05fi@2|7ym)pOul|3N2C%XFW zAwP2a_q|U#x&OX#uZ!>BC!Zj!!u$8rO)h@#HKsa)YpEZ}{r3gke;fVudmUS;Z@K;V ziv^k*)A{(H)JC->i9?soD0 z_ku@Ve*E`^JDhtj{X)lob@k!DUvyJ0rSHFYa4%@w{`<%eoZEj-`E$}Ic;Wau`lD_= z4@KSIC1lk79mYr0{kP;N>TZk4Z;I*rPRu=?`iaKZ&0o}gESCNkV)@+|bI*yz-xzc6 zjD?>ZlmD++{d_CtekPXxrda$LvGV*j{W)5m-@p-d|1=i=A7l0T&$0Am7cLrK#L}qy zUt;N9AJf;u_>6`>6-z&EPw1LheO*uFXnfvH6uJK;R$o7kAahU+5z$%ZZEQ_*ERks|G4XFAZ6$iPnp(KPW76@L%*Js(pKUQF&b(wm$2X zz@T2cu|q3Snp-+LBEHc&A^Fbsts9>4bZgb(Qym+hZ0Yd5m6aQ=zZP=PvUy8ep*I_O zQMLIVslG0$H9q00e#MfNOFn4&^w!RGm_RaQ@a9dOn`4P6BU)L}&YB@iOO%nS>IzbI z*-dS2&opxgNzuid!04Rc=`?P?}=@{}W11%>5hk*t-fERE-f z-|%XzN(xFt4wvg0tWROUN`1xJq$-pc2}`i7ZK`HEa?4uE+x|@RI@YJz&StGEnI8FU z%jRc>JLIs7N|aeG>p_LZ3f9(UW@|G9FgyWy_}a%`{>2+LpEL7*{CF{+Pp}S+-)2swi_?H!*bNIXuH+hH5Lus!YrJ zYn|zLZj?KDks4q3c2V5$>ada8DjvQ#b46qK(m{(eU{+#XUfL$;h{=`-WybpkY}(l> z-eMPqMG`GuG3M&?W6icZ#aap_krq&QvZlF;hgZbUkIuq?j@b9|*G219WDv|umYds1 zF51_h+RF4C>lm#Y&Gm*3pa~7B)AI?gLL1i>W!KDDnD|pC_xR+!Ct{Jz-QzB}w=XEzu`2xdKV#79mo{b9{K(@?=?5OZe_8YUAAfjh z(*ut@+&pa6YWSDy0wq0^dG>a0Wm<1vaETE9=CTm7sQK-kUU^wbPpTX&aC(Ys^Vj7B)~s{saK+=Ga@ayo^g(1&2g75fEm~w{?3cEqbH^R?7bSI6vZG`6 zCFj$%J^uWifBxUR+Axo7I`KFdwDXJ?B>CgeYpB!F2Rh?Bd>VA`&AJqa!@GG+qwh*a zpZqV^j!r)x8FfgXRAzZkdQu*xc65x@Rf%*oH#gnCs>%M=+3Rty34;#zerh;G@vo8W ziw(Ja&2@FLBc{(4zo1lhd9=XVAI;6nmNYH#E~=N0x;hqF2zq$G#iPDiT%vl5A0yfM zS>^QQ)PNj$r*F|L-nm<^qAV`NPp>SkCtq-5_R4azgP_;R6)rQ!thWiYYk}4f@LIB9 zuM97(mC|>4?RgX2%HJ=0Byz!?v7c)0f=hVy*iVh?I(YHook=)S;#Nd?P8m39V+mVN z*m3aOZhd!r*Ea~;!e_^C-Ba^JUMJLv|MofDQO=WiU^Ln8E!Dvu%Y#k8pS$MZw-c7@ zk;R4!dG5}_GZp3yU+|iP_l+Iq*WzFI&QpH`C##e{e;&@Kc(&sB-9uV=+|m=Z*%4sl z;l5EeJ#lMUKyYN+OO%CjCN6%p>to}BSH!_pyv#UwaBz0F!o&L-9CL3UhIL&-N&M^Q zP+yei7Hs$MimC4Dd*MoABP6jT*fVZN^U>x3CDpI-FL*a@G_RNe5S zr{Vnm6Lwz4jaoAJ^o(HWEqG*4FH8+R==~N3#^%M-vr|I{-*w?;2SYzoIBXS+^M1Dm zL;oPZyHZ0>UvS~>3Wmf*fBL4>(4WFfH)-4y44si5eBfKX-}S-JU&-(G)X-<%ap7(c zhF-&O95xP~zBd^90lyQUZtfaOTaLYG`$H9+Mzt}okm};H6lGPrrxQU_W?X8B?!UX6 zwif5ww{ga`ai-A5*3N?3Sap5}dfRVWYHTPCU^_{+l70#%s>VK8UlrWlPFV-wgLU(# z{-HR%qp(X*9Sq%ACQrUkGOkUZy`Q--Vl0g?)k@5&I{V zYz@5g)OUL{ro;i1&VQqxWfLN53nCBqQnp#ZJqj~`{gxietUjCfHfbVu47~k6{`Zvf}61x~xtku9WN*EY1Vv03%i z>fq-ys=B}Otruqu!WaH|?X=W8uTqZ+&tFk}?3icuv|JxNnx#%WpO&l0YintPLG-`H z{E>%iD|;N$q4CO`(zt(Z)nCXyQ59j|fIs{b#}&?u4(`N8(n__VY|6YxW7Xv?7?t{F z{x_<=8I0`>^HZ~7Vmkff4(e_y{hP7;!>6kb^t}XkaQY3C`d$j|QQ6-3day^fiN01X zo!OOt@9aM1C|?#{FkI-Lx7P$K6WHjY&an$soL6j7HOeN_emJO1_1H2B_Auw|{vN3O zNAs?<*N?_VR8_F~j;b%rxCqZWH!k%~j<|v95$^sE4ewlOOcnpww1fEQ z-26QAmM^<>#O*?;zEao&Vom0ApJP1z9yZ;49cpe!P|xD=TRp{g6Eu!9^Z{M(l(tRZ zjwkxC(Rl?rOymWrM{~8DtmPjzCWmZr>xA}KN;QgE<-oh<8r!vy#-e?r#@olfQt7) z-0&NF7wW$~*syq$y!dOSYzT~J&e8m@x%5u{bno)^=-}$VtDgEy3J!f18wB32fvyMC zSGVSE&29Rf6Q>`02<@PmQ>w7HMjw8w=8H3A<48Jn4;8nuJ73&NfPh{1nPhT>IP3f8JK1m#eSMZYsWCRNJt&@L<5)kV3EA(KG|@ciwbu zt9v_N{|XmW1uy%#BpJC*YHpG)%3|&JTxK|3=PTX2s+}%kd*N~BC-%&0%yC`FGRFPb zNzyN0pf397SX)-=*QDP)fDH%Lf4-*cEAcw__XSv!?doU`-A8?RM;{UoNGby5{;kWpGaqrhPx}@|~luZz6B9m+1Y}PP0sYt^F1C zTQAGd$7Gk~4cCA3)UEn61NUWx@%5{;HK&wb)2Enwl{e6#I`3yriPy9Gc0l@ePA#qn z-|yq|m!Gd}Jr2*~FOeta)|E?Lo6zo!x>xcxYjU(hsU4l{YwfzvsR|ahbDtBJNBg_# z^Z(}aTO#)#<2my`N*h{5( zDVfjvjuoY8=zexda`<`6%+=g?ps(<3_G)P2F($3Q!mJ!uUpHrZLv?laRo8PeNAOD< zjxg`<))pHxFfYnmI-c6d20-o47PIGzzls*U%=IGwfw|~ICAQdOU#E-2dcDsVy(jtH zTcp#!1oo!f*Kc5Vo!HCww$8Qf!HrwyB_HPFO|t&RElF$|wB9l=xxy~&;A6LZZwVIb ztKfU7!~fsMOsj!rEk2xounTXlw|1rz&fuBzn}kgf;le$@P$`qf+`gC(jV3Tzruybfowzmp}2FbX4kJ z+J9b0iobI4_c^&H3XYQc5f4kpasJBnKds-@(av8v{aWv=L+_c($?NnYm!sZ7N&PM! zLGJevJx_d^swDm@SMl5%l+AzU3Y+kDpj`cnAE~3#_-uzFpRQ!2P zUMc=jCwIjxX+OWu=scTDN&TF2@hiz^PP7p#$(K91D}Rap))C~{5%eE&@=E=)*U9yb zfTN`Rr=7e~{hUEg*GMZI7@h*}}CxD7q3(g{5U@^Qve^9(ZQ1Q-!iq{V+ULI7u(;(NA^eKzs zNl@`lfQqO6Y~Kg&1J{DxU<4zpu+cq(sL42c=4pcu+{me zL4{uiD*R&SUk@t$T#Mm;#__$#yTOluJHci!3$}tOa0OTgUQ4`*7Q+c3p8(V1IfJ42 z&1u5*gW^w~0;NZMX6C?#qt31M+w$)Qp91HB3NIeA!s&t_|Fg_*3U>s29NY({!PVf0 z!4=Nk2tI;ad}7J<0qjHIDdyMrf#RX4yvHnt;t8+A|1h`=JOn-jC9uchn*HGY_~$^z zR(hYsP<&y&QyG5m1EBc4%fX4@`@uZdgAah><)*+KsC0E50mCf#B>r<94kRpp`2=X{ z2~>S=2cG~pflXjLI0-$i7Q+mvayB_R-&Kr!xsxvfc~)&W&ZNH@6#rKGkAl+Q1zrs< zbMnPbzR1Z3xv!whH)#DcU9aIVNLOj-0%__7-n$!~WExaHmVwec7km^HFIN8jWJ2TP zG&ljTQx?Ocpqfe#)L?iR{2<|aK#iXqNLJGOEQWhQ)nm8Ca5uPwa9!Z9f-Atsz!XSR zq{Uwa!$lxfoo=)kCPCH5h1wu^7(5J8Rp~<(!)}n59SxnJ!ioQ({EL^We5F9;Yq7;} z5vY7MS`6od%2yqzDwt@|@L5&=x&o_S4%OK9-3yYXhEDKyFbysR7lBG|KFI&{Jd0sH zsPyJq43nVJn+d9)PXO0~wO|W)q1yVN0~JqvSTN*8jluGn(nrNRH~UBNeVZ<7c;{DUsZ{ig&NxgtOgao4=4)-ZUWYk{ zS%(>iDThgifx|rYtaN%E<{V}nW*nv*CLIP2^R`|`_d3iu%sR|COgT(C3>@Z3+@$X? z=P>Iq<1png=`e7Zr@r_(y4PXOVb)>BVaj3BAzjD!ay8# zZWIj7(TCZ|YyapT&bt%c@I{X$dO06S9OZmy>|wa0$Hw)-6g@KTDCbk-Ps0m6GX5y% zedBYSyT|Y4+&A&WM3|2g2RQG$CMUk<YmAmU~%r7oa4NEMmG%2t{J;H@1NN- z6V~T-Ct+irzkU!l=BXP_!^X@ecP2?Ud6@I=S>3aO;JZu?;Q_hOm`=M(zJSS7$DcEKMCA$kmGt@N%72oa@TXn)*^=Y_U(T(5btQjECU+fUktx2v zZ=UYlJ5A3Hf|s1WDK7l?ocmv$zO}YIwf?^Lz0U3LW2ZXzOjn-&-)C6!67IARoDLQPA)#4 z!vDH+YjK0p>viED;kV?+ocsl+f4_5o!?lm^Py6JKwD*_fri^}l&=Xu-48M+xmyS>I zC%1nNUC3{_{d4C_F1&xvZbp~n{=LVuPR`tEj{ipfB=^t#U#C9h_U{Qa&&ciHOWf?j z`}Y{nBa=Kuz3KQb&aI2Aju$D9|z0?@0z+dj7pluPeWQPm{$>l)@3`-+ci|RKA7$McsUaFLGZI({x!+#o~)E8cpwkSpNPNVN`xR=Kg#7LsWhu=KiCYzR$(dQ`~6$*J9zh zr!11oV16___Z&s;FUQKS`|@b`S7Pm>>qJ!USBLB6u4g8F+d9MKAeFLza|ezVAhrp;n+p7S$^Si-o%# zUVv*hdK;7==yH^>wQbAV&FeSOV}?mSj%7xKwe6S3Ei3c@Pu2^h*bxz|`QxD3@@|Gh zh^sN|Dw};vEQ?guB|;T{@=)2_*OEx|qPmU*DO1V5Vq^?kWWSC!(8TwxEnKL+T}j}= z`(6hI#WrCUNy}ilW=tofql(W`JXY=8P+4Nf|GEyiSvGQ<+Etj9 z)O=BnS5e*CWFpD}%wJddE)}VWieYTc7fnX%%tx)_ay!2mr>rPvp8aJ!9o1*E>zlD! z^g$yuB}W8P*MUvod#{~w>ERnTw{23rv3+}*c6yU+&rRc9#S zQP!3(i)CT?VD>6y{UTKvV|*32t>J4K1zzW+SYNu(IQ>zQwDl??gB6v?)ZU0Bu%cYp ze!aQv*^M-^E(614F%zz+6qgx{t40ac%qT0Gr!kc88WQef38Bugx{7DOOEa$My^UrA z={r2>iXUdT=`sYFk}asqgo%=&isqu?@6(=)Q=He5%U&T^kt)+Qsd4xD{L+C;w<`oG zYDJAOdvPc)FI1fuUy3^PVABH&o973=G;gS}@vix>hLRO|Lz|vy`}pt%+~s&feY(+1 z^2fnDv`g;4-L4y3jsbUb>fPKv>;0!*Uzy`_c|*PKeTDRK3mmNA<=qp~UCJBc>M2^T zJ>t9}uSef2b%>V}J)}E&jKs_7<7K{%oQrsPvMbvh^Bz&6B9#mA(7Q+L$xDbBFQ$=g{*$k#N1VM@y-TW``a`+ykZ$f(iEZf9-fBnlJd9#kTE~tRfwOwS(ti26b z+x}9sT{ojOm08xck#KjWIvC2?-@9?MhS!Bh=6_Re!)>7bcdsQ3kAJ&&f+jwD1Ln;- zz~Ob>y{xNwA!FB(X51RRCtKh{INhG-FwBP-UjJRXCeE$XWX+z^8=xGwwC-FvWp3iP zGveU5a)>{qw0fOeYv?kpWlWJb#p|k`^4XsfH}Uw`--bK#+v{g!wTIH5#@EH&g>LC( zf3lbBSWhUOS$=DeVd=~9`=42-8m(jY9DU^${@8QunO9k3J(l(2_56veQae5M&g=NG zZu{p0W4=1$H_0FCxF_XVUm9IkD!;_bT_1`2+jYic%{u1S-I`RbE7$r})ngy~L2J*m zdj8h4j&C`CBgNshO`XrrpHM$#^TXcJW7%)1p1=Q-dY2EfHk5U@v-r!A_747hJ{yv(cvUR%5ln0csZt+Cd1Gc}a((O!Do zj+-pH4L{Ah=?`+h;oWeVhAU|^FSnsKF z`LdKNXOi`yUbplr41Z=!`|&%g&6R_-ay$5|ig1&HSp17Mqu~urf(LR9Yj^8d!#kO^ zyi?!+Og-@KcSh|Qsu_Lo7p&JEWWDY?tk?ZF*6Y5_dS#76<~DdjZhzjI8G{#J4D8;z zHDkV+uNlqXsBh+P&W7MYUuHfyntpp1d$|v=ckbk`nfb-!e_&}9oUti|z4-FKaUUF? z+HVfLhc(O}4Te5WefhH5u+xje=0*o5Y!7R>-~MRzfp_3548A9LWoS+?lyUu}cY>|s z*I%^r8sGGfOlIBro$URty43n$E&^s9vR@02J-tTD1#oi>~OLEDDO>2`n6FXK0r zc1*J7JI`41Vc&4!ct<*vy)8JB)P9nM{P;DIHb1>rk{`mHni34vYcIfR@S4;s*u#J2 zGE>Ykd?{Q!4N2%1!ucR%?d`tlR>>Bs5YP4w}{;5w~5 zK%X~z`RzmRO!Q`4-%uWU*=JeT6yNrcYfU@(weQ(_@3!q2;J&z&dS%bZd`-1TgCyk+o)iOHZuJ%PuQR0_rA%&(0i(aA@#TVtKq1^ z6G&bW4E@%4^{Z>i=k$ZK8Pm!;@6!*mE}~Aq`73IlSr3-Bf#>k3t`tZ0$@l-V@mt(J za#_k0pHnif{>rsQ@0%B!Tz*RP^lWzJCn~gk3;RHxsvz6(PPnHPfS~nn!BqQ=Q}{`K+_g>|I$3+{qNV=*Yg5%4wH)Aj@7 zgI6xlSF-&1u+m|F+p(V|Juka&hU*J(OTFKd&QE#welK`G${~GzybO#_y}~y|_>tm- zTwCB*I3BoEuJ4PMy_XEfvbaBh6@ z^&!JJvpfykE-!Pf|KSfVzI-SB=$0sc%U#wua=g#iRJXmC;5zl1`;o~9eY^FV`;W;7huh5ZRD63)AaB0@^R>hE z@BK3WqCISBJNk>#&j0hpLL2!ozO4gfdDs3XPPDzxiT_hN*L-c0t>bcYh1b95f5UyI z->xLDcWlkB{djtVbi~;c zH_v0~Gl;#f(LH?^*W~surS4f?6Wr<3S3hXsUeM%gM(|1!KGE~IegF2Hsa{N?mhmf$ zV_yfE>w{M`e%rqk+_Qd0>Xn~z|JOCzK3`;68n*s=`+FA86`sc@-5L0Co^#6m^K;)c z_7;jcjXu25|M^m0Q2lPohA!PhUfB4DTpO#nMpkpJtl^qj%l#ibQ060X({!(QCwslB z-1-w=stdaXeT?<>w9~AsQ?Hn^!w1Zc9lmdvDbC^8phVWSeJJ^ z@Al89?%_G*xt%p1`h@t1nK3G_<`(u`CcQ*$>XqLVx0dIwuW4^*%J0+bh4ZL+#NKCmwtd#_ZJk7K`)s>MbNlSz6+M4-nZ4M_7j>ig!IycsUGAs8mr?IassH3)bT`*r`wY+SO$z7tw>JDc#R;bV>~-4L>(8O<2 zrnvpqI}gjTw0+6(25GnR^p*3}m(up*t{2{6)UCF*?qR;6+8~2%4~ zpG{YNlu9btyeiIdmQI&zR)f@Lb<8{mF8hqtCMD+1#|9c&J~1hdTU@ z=a;5enb({#dR6qpQPCSb%QvcoTji}_mm+{p)BzUUNUu5WE*asH|*r^Rx-2cJIzNeTDWG7nou`Nx&t8SJ#N`Elt z>9DUC?Qe5-{^ng_Ir&5vwo-h(i_}p`o-|U{F@f|8hGOw?#yNXH#zBdECy{h)1IxwN zI#eC3eJv~J8fp&SC6<+IU5Adn{FT$+>T-0J0&=}8$=?bdT68!;N&RZyu1m?azt^SY zt4EM$ocsbx%GKX$x4v&bg)5i;z%_6kIWH%#n`HC14JcPXyPSN24OUYAy-r?VAwKU* zg1fa|7rYJZaJbsx3XpWuX^Y`9a4F$ZU?c157h7DT{qF9^e;&yHbiKte&w4q+nSJhf z_uruPbWegkULnaN1Xp5 zkY|{5kHt{?<4Mmha3i=JWJoqF1{Z+y!1>@@kfhVRrx1oSLDlm#i(wu3D})ojC4t-~-@EPQ*M(~aL5+j+pvJ*D ziy_bHraY%XmFEOV(bIhv!{eaJ(`zw22C6*T??CmO1>Xy90&fMi|40M>)1cxlw-_#R z{_~uFz4M>u{3kg7g!3O9XZ2{`J?R;+7@h`iM|8sZ_c?#wks02Kcr~V;LDln4@HTKe zC_UROhMSy!yYp{#{;QpTlk;EU{Fj5O*JYsUHDz(lVo>$E2vof`S`4RwtMH!yUX6dk zVyJ!h7UF*voTzeH43B}zuh!Xa0kyAQ8_2VZX`fA?+NT}7ig>LS!wjf$X?-ggt^(CQ zDNx}Tfoji2i{X4w;pbTl>p_K2f=a&*RQQP&!wI0mCoG2AuTS9zX?%q{Z!tUvDx9u| z%7=JH3U>z7_&9AbJZ0tSlNQ4hpu+WmzX~1&o2g$u3<=j90&l^8Kezzg4XRvSpwi!I zG0cKWUpywIzYUb$4)6i66;%8cpyG?Sr1;A$hAB|-7h4P$fr>v5+yoAevAh?pA8p|O z8BpO*TMYX^^-J-d;P51d7#Q&Z*h&*Gb_Kfpz?cR zw5><+q^QsEJg9WeSq#sD%I^tK;g5r=cb-X1_+y~Sm&Nc1sPH|Y>S4ddkna^H+&+t; z)@3W)ZtxLsC-@+^4SW<7A1ehe2Q@C1SzMC>nS#=bEr#`=>MaQ>A2Th60jPRAKgyNI zVkjP08h`P)R)E@<@FDORsPx3=TCaX$agF#~?YIwFT+9Esb22}d1Er!dSzxZDApXdDR!JE*R1m6Qr1C^gTQ2Ci?F+5#uuhU)N2awNqcmZX` z4R%P6L#@M?dyxA*;c-y;KL#R7AGH`B29eqz!GoSPW-^q}5OdJ`YX+ zKL(PP*{?KJRI?OrDI?OmsIZQeX9Og-npQC#n<{V}nW*nv* zCLIDM-k9on^Wh~`?SwzIZTpz&O`T(^+dIZoug;9AZd%2jZ&k;TSRU2x(cSQ<&Wz4; z9vpLF47>`v&VSaPF@g;C!;~R9&LF zx9&KPjXE}FG*~M;tJyQ;G?wfLAN}~G0)GT}Vott`oDn3(BaPFOY zT))l!erKnhLwb1nk?F*meu#5!#(vmiduQz9+;iZ7=7O*Ph~h>bleL$t*eM|hvs|9 z&sb;hDLSy+{&{)|gGp}x{3<@H-2Qp>BhKxgPk+t1S91~3QJ=8k{qyx2rAPXME`8nq z$^9$b%<8z#x!>#D_qhD{=R?hp3V+baGsKbmYUln<=YGJsrz2B-GcG@$Qu%TF=iT3R z`Ss7I%)LhLpLhFR{rKlwvp*a<*E{{ATz?`;+EmCN9B)XjVSBKK{v_}`9&KNic+e~!if9`zU1FFt$J{jah7Y8*u6J7Vem zbu7J~5jYzDg_wI)EWJ3NOWi0M|8HXX`TdytzF7JTWBH5o&&2PG>R%tzcQ95z|1GBf zC$ai?kiH+)_v^9vPsikIWA*Xfn7&(M;WIIP?!LUxfB!aCo;aV4_xVNn`$#Okld<|< z9_wERV&UWbw9&EjKOZaK+cEvMvGH>@R=;<|%DXL=pLH?!k(mA;#M0M&UbKC_5tCmV zE8qKL_4S*v{IN!`NZ_~IzNB&Q)}* zW<4#T&>PCgRp}$iFF|hfNsK@)^u3kpE8!d(n%*zHtDWDsuDGe~C$Qq3=aitM`$e+h zeWGNVay@alj$PNJQ#`Sv`Jwwi{J{@=ut_{4LqfDHzT%F3DVeV~v0OIrDXloBq^4oK z)OB=N2AA3fPBmHdfvzwB6|1;w7J9!Cq1f&Q=eeO}c8s$hEZa7yx0Y@l=L=NWHisg4 zWp0}`(^R5YiD4=fv#>Z=Vb3-nmkwjNsKq;5*VPm@X zmMv^~SD3wxe%n>7q^M#nt1-r4EW}lxH`j^bd8wINc0;7>7L`S^!faN&r(QG%an>Wn z+S~?%r|o$$1&6zB(Vlr9GgH@aJ-bBxwrqX?j2IxcV^jq-Hk93<&eXO0?Ei6g{M-DL zCp;EBEf26zhmrbsq`~1r4U-a!d!)I1+R)`X%fFYd7_E1!-6dO`G4(8yM427zZ24{d zZ(UCX$OM3!&-{GiiH_0aN;bPI8aXA>=p9SP#uieD`p}OVfAV$t_gm&U=d(~HH&)sQ zZ@5!5uYJ;A(QScj;UYUc#^jsW;8D>(wsCW-iCk2OLa&R5ie_CE8(~kDaxTlN93DqD zZb_h`TZeL+@hNkKEy{|on`QUJE9``KwUP4TYAMiXekLieMDx5%Ox!&&C; zVVJfUl;bT<Th1bn4u1W|W$$;U_s=?{Pb&5P zokt3tvI2jMw4YeY1@yQLWvB`kaT3N4^j(q%nROBPc4CgBuDs4^^6GyJN8&;Dy1+?? zgD!t7$egS0q7)VqPVcm==T#*<$W_GSQOwpEn8D4fvq0|;dqDkO!JiI=)1T7eajqoq zc#U{?d*wN;M?C!X%|z(VvJNxJx<9{H41T-$+ap=bpKrTa%*+iRtugnyn0q*+{pEUd za>K^X9`o-YP-6*c&6{`CIUAFLrU?>ke@V^_@m zA-PeMb@IX~kS)?9)IboOHN}&nma^>~oDv#8cf3!~HU5 z#ec`Vc;~`97n&I|z7M3I7rC^IFfaD0;*$Jvs2vwYE7JH5pOP$6(lOw|c(>+6{n3Qx zxLiJWZjuczeVPLje2{yubeGPHmz>AEo=>_Abm@a$U&OR`AG9Bu?9n53k7 z@Ww(_6{%c^>{9dC;7#mr>B^{ZeT<@C1AFH4n}HXd$21q~PeoYCAKxv1=|g)gMfX>_ zcynNRV=unAIRD}c{Owqr|Bc{42JWy~SIgR78bGfNyYsA5&S`x)>xH{m1I#++A>MZ% z$+Lc2@*7xElK(5MAGUib`F)fml&`t9-pmHfsh6Q+9CIo;&&HkUU*^g zz}>8IXKzFp4(#~VB?p+Z>#7Jlg+Fmo;6c15o?wRd&d}Z&+B@@NcCqxZ4t?l6{b4=)fuBAW zys~}@Tyyd|baUbs<-v3Gm_YA54VNV`%I*u8ho9m3;wkpyF?muQz^m?`k$R_h@M4qa zQKW{DNB9ZfLXYy)NL!GC9Y7ygR%`P1O56l8O>SCZLR?=}3o z^Dp);e*MK)7bnNS5oQm+diY;M@E%*nEj3 zbi&uYp(gnGdG?ii8@^|THeuQ__8wkvob*q_-~9v9`3d>d-b^jpFN}OB58`i(rN68v z%vk#Hdi8VqA$soK)Q07_oUa=m(&U4T%RTRYvNCT)X)6D|Z+RYP zoNuK)>@;Q+UVj?v8N;)<=HQYmZ2o^j9Z6<68Ft?*#o^|MIiz%MYjN|K=B3xkLsf+P zj-3bU)asDFxJ`(QHQEEO3jRek9Ge$G`gcaC^F_^Yagr%5>R)VxmR zBO135HZgM8EMPJP`o7dKk3t-_-q>cDds|rf3H8NWem);?b>^VxA$S=<=Fc+ zszV$v@6MseU)wbo`}toyHb36^Ry)MaVIiEZFFst3x+n^JWiZtFL~x*&>tL37TzT%r z4;_TF{a*JUpBo=EsjcFBr1`z*6pz26dyyTkeCoF?$>M(dJZ&J37q@A3W#e9F>&BNm zUlZv1Z0>O;R*3WJ^~G_bZNYE4y^WtGKd-V+uI3M=ZSq3B^ug!zeMEi2^SH|O3&pei zKjtvnH~1y%=5@Ena3A?d$o|2*HIJ&E{JgIDy01*X)%An4F4XmG%f!zs2tR|Wh~1=hNtA-%VZn2KXC0Iko70F9*;48}|fLCw3Le zk*NBuuMEx^&bv=T_j5lR7c>q0B-lgzqB$&}4;VRI-GS=fdv16=c#g@b3FG{eGKrvZ z5q*OtUUe5M#Ji1q>wIT{jj=5LqrGoceLRESX>eAPH>Vb5 zFI*--V4;v~4wQTti#e(&oc^?Y@O= z9p6Wpdkb~s%kWw1_>0WfzHHHU{RYn|e=s`uc^7RkjWSN7jJ_RisoDFL0rrC~7Y}>w zP2VD3FZUf^86E6_r~CQEl;f?RRQ=C8uio>oOd^Ie>g&Ag(?9&}#JfxXa(zwW`|rCt z@r@nke$aA8eLf#DW1_STKFhPj@~Nps@VkHR^Hi?BdG^`^PxvqXfPL*t^6Z{*-TYQ~ zPSw7_gUw5++xr+d+$X_}Hgm*x0-m?4m=n04doh47O`A8SUeP_8@~gkxSlz!3*LSpD z^~|Vw(cdRt{7zu>>N-A~xhkH&6#f4N?jOFbxske?#rsIFkLQ}k7m92J*gmA|_zPTD z%f+Ex8eiZ!{|)rL$n#fRXD`oRUH8Ig9>sEaje!c~P~F4VA2HlR=;(TH>Xr7vi;ZP< zQUAN%mOYo!Iw`(43%Y3|`>r8v$APX}Ey>~Q`$&6HE}1eM?^WXY`}mRKeQmOhr?wp_ z?5k5RKkSm}mmjv}=F1PeW8US5eZArG!!G%i(y(fSC6PAJ7@?lb{g{4VHeWmX8gs4P zg3`Z)?cCV>(3a%KAW7Tz=C>!`zj1SNOJ~c5)|Sn!!y!Jtacgn|-`1xZ|O{8t2ViDU9z*iE!o<(u4QWnUYnCo@&#RQ+|4SIEyC9(3pKJelaClWlS@FiLowCzwzBXSf0B=RNuI=24 zJ>HT~<~yJLI#w#w0)@io#1X{yLt=@3qrxqRNwSUGmK(Rs9|zS%Kls4HQ`oPLZ9$&%6 zp?CxMKWfe&Fy{x&`LX-&Uv_Ws)cOsrZQHcP=(u2$S&h}U*}B>-&|9o&<8|vh9Fg94 zufp0JEiI!d=|(O5ZP+;c)rHQne#81sEOXP(*nidcDRLIr)>6dev+8jeNd9>8X6t+N zu!{9tlK!g=y(gj|S?@mXU|n5By(JiKSMxR6=hH7=^KP?z%{$Pswr$Inh}i&jzlLE| zrZ+MShmQ;VWUhB_xr_bf;u^1mDYp3FWurOH^5Dw7XG#2k7f(8J{1K!?&b7!KY4ntn zi}$7@WzMDX#jDfd-i?>&*Lvzp$#*(=hCt=Y-|yu59?H)W{rkol^}ND0M@jwcck+5G zFNrUntBy+Y^CQS->VpA?_(~il>5GS}qmo?v++9kZ8bK}|u#Ur|T(12uIG#o)m0M1} ziBG*cI*^yE|1&&P>(EUzM@jwF@d8OlC3)J(EA@|UBgprUAU`>R{K5!w*(=adDSu5P z$g@t)eY1{|_V0G`O6@Nm4w2Fd2Zr0h4Bvk{!8^fCU^9p<9`Oa!tro)!xDbEYYv6r( zgX}dZ-f~d!WUoQ-WT)X?;>k_}7&d|n@t+SW-ds@eW`c@04OF~|AP;cq2^PZyxDfwZ zQ1J$-SH(LAD&AR8@%lmfLR$78!0-&Hc&9&!vRp?`$2_220jiR0T&SNu*Gn% z^WP25$A6c_aFg?I2jR7*TP=oZa0Pmnfw$wIvKY<-AHjbv*nof1VmQ(HCqVjqy4GSi z$ULC%+E?s0{Lfkp&p7{6;H~(dv>5h)%6|^L1%K^(3WmGEZTRm3KMpPi6;5_9ZY11% zi{Uiqul-LYKL_5dbS;Kwoc}S9xjB8*Vt53Up2HTyE>Q8aR-WE&G28_5Je=;Z7;68u z*|=LRhATkDTMjDSWfsFm=RY6h9b|f*#qb>S=xW0EgBq`Si{S}SdX9t27w>F^q3mbK zzZ={Pb~)5Otjbr`Vz>!ZxDIeG{_Pe++1Z$bdzrov;|5G3)|Wk2@`fvTresaQ$4bdBNFm4CEa~LpL}X+y$!rvY^^;yTz~*T!()e)c9=# zHGb!T%<1WRi{V^Q@sbw9nV`n8_$sDffRg7ehNnU4Jqk*14+wWGz29QE4{XPOH~19T z1uESv$W)TvZZQ9m8Y{|rbKr&n7H zSAj~W$zmwG3QA`gD81qjuLN1+VDwJ|pTI5q3Y)+Ikg91o0zSuW-eHSt_JT^k6IA?F zp!)F&(3Hz!*a&XLe**X^;wLPwIagzO`n_NWa@j|C7TgC?mFc|}!)@RO{M$jQCf#Z= zT;=?EpB|9q^m2>gOi=a2`%F_$=g7=cxVM9C;A)2{@M+vBVaj3BVc;-N zWE0uHGKZjCkWX;dVurZG5f|Os=E@qu#9jbaT3c2hsPcndlZ`pXU65V$LzS% zI!`!_?Sm5&PIB(M>IC)-dL|yilEK-D=Qwv?y%$RbyC&_%7QxO*T?Oj|eUnb`yLZxY z&ik+F!A8M_Nm&WEQS;oLQC z7nTPGrk>@uwL)-aS{|QW(|2Qq;P~`D&i&H|INSYfkI(4CBEjJqM>r46ILkSE?M^Hb z^j>?MbNGy6DSn3=^=!P%MT_}xEqfb-Goj^T6ox+C(x?wo#Ke}sK; z_uY_VU)+;7oZ@`;hI5>ECcCg{kW238+?zbkxj#9;dDpDnvxqh82F2y_?rv-#9G!cNbN}3dxoXiM&~-Js{`5f_S#JMcLjBJ0 z@3~0nc$|JL_g^{p3MMxb+B*J($xHGvT+DUsbM7h5t?MP})%xeuHYOQ` zpX}nZrpvg!J%MwIPxv$!Hyv-d_;t>Gw=GZYHs>De-20t-yi0$h)BoQkC%spl`@f)5 z?m5n_>y+G~bN`FW&-2dxJs1A_&b`;==cG&T!_MuWV>2#4{<-y!oxI7_-ygd4Hgof$ z;~$-SlXHK;xwkm?^UnPV=l-yBZ+Gs+&b`OEZ*cD4aqep8{D<@Z_6hWSuj8W{AEfus zPJY;phtF|ysN?gteOZ}j-G9!-QQ;3cxvu|m|Cw_?$#1#ebna`M{)sMsA93aX73Vhl zD--@P=QjICd40j;Ds<(BtwUWwHCAJ4-i$G&( ziw3;?xt2YVDcvx4nh&=0P;EFIr72r;1d(8tavvkOn@Y6w^};x7-nh1tPR~%%?vb|j z<3YA|u3J8ZE&B)iwai6bocY1#-q(zvy&I8_0{cG z4-9|#9jSdvA{1x0Xnc(jHkJpog5ffgx7_-o5|v9iLc!PA6W`p8I5UID9jk6LY^}fT zPi6%`Bv)!bvjw&h#72T;!57VLg^Ax$=4G?Qk8|r)M5$Mz);rospW4dOlnPy}4eDo{ z)^2jZKD<%tIu!ROTiBDC2|8A0-wwk)+kF0y6uPLQD+Dj@2b$uvC2%DrUS1qasw1TH zqGY42^M&_#Ci#NGufmUo1uFW2!mq-Qg#~*0g2J!DkA(%w`hvo*!jFXo8vBC6ufmUo z1#0_(!mq-QJD|H;-uuGBuLXr){D`tX?-<_9xbSO1;n%_nO;?y-Z^x=o>+POUf2npvdLy(t%_Xey0lUk zTGPg*0~V^m^l~5eQrj>)!w2&VU7_%6!F+CU{~dM??z-FBMX1E*m8p$kLT@=c2kqR8 z2T7%F`Mjs2H{RB}aNg_QXThy8hj(*3uJ`GBM{bVG<@4&ht`6xl+2CW@cjZya=QYN; zB+?PzpV{ki*$cc~PaC@QJd&M*87^P!ePfQ7+lx)hW#B}OC2T!m$HAw)_1*DZ-ym!YpI^RpPmRoc*0IL;xzFMDTqo&B zz{{YDOZL(IcEYYb&9ZixJa=c|sR+em5MSs%_{Uxk{)RJk{t@_gpJd-LIBt2?F<*qA z3GPw60rn~EVGXp_Z)@LVt4sS(FJle;(gU7fba817YwX!m@u>vs!N;=3ejM`g=$(Mx znmt-yFV3MjKfed3<{HE8NewNjviarx#KB&dS6+P?UdUIggP+f+>i){NUYs%bJ~)`Q z(^Bue$~tM~fj@l;D(vsK#I4V5xjrc3>Cn2bWhmz$`rk7AMsckyuTeY%>c4US+N!_M zexOx^eFIMBPu$*Ud?>q9`)ASb#DiV=9{zmZf>9~<$F2HiFt#_$v+rmE4(`Am)E)a7 z{?)kPl^;G`b)fI1)IEvmH%#h#DY&PXvc2*3U{62m*mtl8aSgiu-tirBlrITSrl0)$ zHOpHpA8a^}`(OOX;Op>a847S$gFW<#-QNS1=V*SF-ultOqm1dzcT|00#>ML3x!kza zJ2~P9syp}rKZHZ(`DSpLR#JzCCnDsps7_lNtz3DR+?V}Zw9DA4FMdVslc0Uxo>O&z zaa7=MWmxO%xoJxK-A|_J3lGsJ9;9zPKp$BSSKtHmof@;I->+ZyeIY}C^XtboX7oEg zZqy%@Cm$zA9HklU+cxg-o>%A^UuyL>rQh6gI{gUzq@GqzmBcJ0ji3@4_SR#;f&8_0zdbGuhDY&+n+wFJ@bz6HBTmZHuh#xs8wTQrcs_`@ z@=I$|2QtA8KZ6d=cb@tq#zht5qndFtJQs7bVK`^%8$IyywQt(c)a9cdDRP(F)j^;tl8~UAt)0Vgm`wE~Luka+fygv6<%@=3<3%n`m6i?pI z_5b#v`^e`K#_xB{c$5xt&EF<$hWr)PHF@@Bjn=vKv-63#^mX(x2rJkNs5^Kc`&dh7 z<_&x8QGb*F3;6qXLT-4$aAXb!jK36Z6dyA|mD<@}t1|4J=;JC}z}|s=ye8=nzCUaH zOPAMwx#22tjxC?8>YzC6k242+5#Cddxi`yP>eEcpKgB=lpQG|mHvOCQ4bNNckcYn* zuX}&J?SjuVz_`&hOga@$e7`T@FJ9~t=3x0{)t7@Q-`Bj)Jx-nH%rd4AzGeEi>>ya) zo#jzZJ@`XxS=c$zUgLec`?M?d*SFbg{!R9(AB0aATB9R^bOaK^VF^SH3Rr%h4J;Pu@O*5rPocnXRo#W zaLvJf`dGZ4)yD(Uryl5g#r5F(f2DfR{N?X;G=HFnYfRAnZSuxkyK<>-n<+NmKQ?VP ze7*PMCSae;`$pMzOis3Q!F1g#qND!eSG%Sq*pu9~T^3GxE`j}%D}$j|;lX*Xd6xd4 z#eX?{jN9DZx4^g6Jn@-(Q$v3WS3R*L*fVZN^U>zVgXelKUTk{k;>C&c)<3=InXwZ- zo2k0tN1tJg{uBFXjvKXP@H5!3c#Et#WKgbVT98be9H2UrehOh%O^)t-FfBFmOcT+GVZuDo~n;N=RevIYMyf+y7k^E-! z`yCfz=nNSlG@zudY><#!mEFkzqdgzxfQ5U`+i-cvkz5 zl22V*{C$(Z*7`Y+=X1kN-Eps-*W~Z-^(%#a^*xs#c2;=#VO!pN`C+TrYu=Z^=T~E3 zNpg4$nEMOLM>z9b^Zs#l4RfY1tgf!U>UvJ*2Ja{Dlw4C1QO|;iJ=&d`~RW>EDHWvx@6CY-rnTKMHuw>x{+Z8@J3$KFsF^ zF&&d48QwB4xx#*{Au;*h5-ir&srLqji29_~((%+r>`J#kOWpk+Ic8cd_H|H1qw^26 zew6Dhm%`#h7kwSe`70+sXQb?viDvH6O5)GcODc|f3nlUlkau%O8u*M1o?oIpGQAGOY(QdHN4hsm&<=YH<3CPQ~BlO$t$e9()c>$c&!sCW}W#T%rb@b14M4>p6^7kUkN z()o)INBtQ-9B6oK3ctvO7jI4B>s|Od7k;8e!%I{6-Sl_q?*bKGd^GushbH~)7DMsK zRE{&C@_z~x4@*2UFgyV&y!d3wkN9LNM=vOShe4&&11g=I^X~=~Z@0y8yYm;nOyOHW zg%`g}dRBl6pSBpPqqX3_cbw&ciRZ;LO}GE69vePcy4zwXz82rY(z`5%`i8TdaN=Wq7+eKPkN8)upw<`5UGGpl ztF^ebE?VKWo?YQ~g7V)4D!lkkkAg{XIhbeCd>lLl%6$|R|L2f%YrW}XxV4VZ(+Tm`NMrC7NGDwHwaYSl-u3koQv!yypyP`i3mn z1a^Q*M|>s4TLyj*T;%*~L5&O9Ri{bQ=PjCjTNAiX;ReH#-~)u~12uknL9&oOW-*jq z1GNh;%S=6q$FK3z1AYYD1U>?0K$;>g{u3Ck0;$?`lf_W$v{l}E@Ig?#D5^BAZ_Z%Y z3qFj04pcbpN2&aGg36cp|H@ap#jq9Re>!6^Tn#E;DUhP4#kT@O@vT(9^FYA<$% zageMu><85!cYzw$J3)=>?asd)Bx<_VVmKe1Nt4%u)4(LidkA9(oommP^hxn3jXm^9 zAWrcVuT&w?Gg|#b*y}LoFzYbmFy%1mFmRZsP$s^^oWrccjKh?}q{F~ro6$Y&aD!^|wQ#L!Pjfy$YH$?4N1f(;Y*a7jBcqOTK0dY&ZdQJ5 zKj*y@_QA)}ZnKH%y;tsI$Jw1%c5&{$W-rXD|Bt-40k5(;^Sz(!#IX4&B1S=^vPG-` zjpdurvg<~m#=2Ds>6CVGk_c!b2uMH?=y3~9Cl==nX*qKkYmaftw87dAeTU8@bC}DB z%(>F3XNI;+k8PPTDsv`Q&pX(mnm9OlfB$FQ&$FNXB%4TQ&bi*}eb<$p|GL+`zQ3OJ zd9Nof-N*l<6v7=0SZ5ux9Hxj+;^D$uUYznap(V~^kBc9&O_=oqYoJUeWSaKzS#T^ z#_ie!miu6wUT<_TEP9qHX>eELFP{Sk2y zKbQwUN`8wD=FRF)L&$*IuMh6&1oP0}!>;TH^VVBQkLX|?t$P}xClfEJab`c5 zr|z}*IxcswExcf!|Bl)3!CXrBTI64_PVrwXeZjiKZ$ZNjRT=S#(qDlSr9VyhQCb4D zqjdaU$G2fd`E4=x|10MI3o-w0i18c9|EPZ&KSk+FWATr_d&-_sf&KWsmj4y=ZwL7o z^}jRb{;3#UAG1F#mR=1aqW;|zbN}CB{Oe-r{d*io-5-z9|3JA%`7g!jKZyCaJ{F$b zM%^Ed*=MX%A9uj5xS7<6njG zjoc$%952@mfcy)b!Lep7iu$JEHJ8Dz+zWM_(6o3Lc?_wL>2mHDOWQ(T$$17bG@?Y z-Y66m=je!Z)I3-*#`oAFb|e{o85FlUC?y4VZX*5^4Y^PC}%xe=%{F&%7Ip z?NHo!{~EpL8NHt1S23y~n-E-@8Qg}8b0Y6gI>$V(S>SbeSwn>reQ2{F=UfL9@yz2D z-Xa?;k=!q8XNWYo-I>D3nOW=#P(jRsTRFZVy{%t0>H^b(q=tt1CT|yVR53XEAJk3P zpL%uMHf~wR2A1V{VCq)}KQjx9(Y<3DxQG_8|DL3|pqP<- zYA(Ynr3*B(>h5XU(#*~nH8fUt;LbF2-`}t@Z@YiCvmRufw&NbQJ1@RjKGy4kP{SN{ zS7V~LwKi>zx-IyOILifop6@n}x_0wF+6tUe!6lu76#2OnT+RtTfrH+sEQp1x*IU-z zzllPoap}IQY7oBo_6kz*0j=>(82TDeK`*Q;IW7!t2kHIdEzvtd{*9f&w%~5vP)oVZ z!vA8oRzApulVVpi+&3|}L*Zf<)PX@?w9r~X8}nMflwc+-r-^6%bw&eW`r#I^)Y6bpUe44 zY3i>ZLw&6Yde`&2P^J3<(fa}J%x~m7eq6f1tSX@2GL!zlU>)Iw#rBS;2QWBgi`Vvq{dgHgbkh zXUQ5b)tTtBXBD=8)}1qtInLd&PI1JK59aRO8J&@J=Xo<_-n@TwThsfo)bGj}LJrljT9sU_O#mk-D z%wXp1xO1jm6TG=fi_SDEe7(~pL{5G`?-U-69fA-wt{NwH^cJ}6S<(aeF!@1hj z81Kly5^tgW3hci|oseI>OEL?4cwdSAt_8U1uixFZhzh;2hj+sU?({m}`VGNqW(0ZIQ+nmIk8<|1befA#5BFqp#DO)mXD2Ej2ro$U ztG-{8e7|x#t2p<4in zsn=N?2-8pRotaK#+0B)nUqRVFYIaq2uTqvJku!VqiYv-$R`e%ZP-vJ4cam-kA3)Xu$_c;B;_vziKTxcf3nU-bN>?gdn) zG7H%=TA+HD)cMP)-oko2U#+^lmwv5rs=JRQUi3_SCGT?7kdIxQkMFBH$~}a_ci7~= z`lm{rJD%&Odw=72-m*KES;%?f@tl`^vv-7@ljSWLog-Hqb^baUhwC}ds{Vqr`!kS_ z_`^orR}yF03GOMlcH{20^dKsj^`nYL&NC+;eyHPd-F4wCF0zO8riTCiQWI};TwRiJ z=b*X2kfD4Ow<#r;y;)D1d84Dho&KmEd%>L<`8%a_!kcaIxi8VGc=VndvEc7Hcl*eE zuQU2qTVLIA|E`1X8>G0?kioC><in z_?;VlQ!YEP_>jl_Bl5xThm(u&m%Q`H$459f{(Pds&!gZCmUlk;qMsL!_+b~`xf$%g zt26WPUw259e$|IS-%YtRkapecQFywi!G_V>J=CLkcx#$A^8kUDANYC~e1_5=WX8@= z+WK7`FAvm-Phs%F1<%;8Tbo+;8_VmK-?r>?sr$F_BF5c3e!$z(_ilvKkdoErh6mSG z`6K#uTi0!g9kSHo8w)?oh(oVQzEg(*`Xai6LM3ylqyxI!Ld7@LSH<{U!|=O@;h!-6 zW@1J;42oZdF`yJ@F@}skXVrZ*jl?m|9^_u@#!_AUhT?C=P^z9EZD5f56UJX%gnthH zN7>Il1KtSkGt@bYYG{)$o7MgRL-_PL;xkM3LB2^w_ z9|ZZ1RUH7yhwOfb>3!gI%yY)yYJ8O!_R<@SuX7e3#@7?yz)byl8%Y3^1@?taxNQ03nR@-3>;xe%;m zpL3Xg3RJz=2Yw9Hxe&$`RXPts7051km|g^4h51a7b4*p!K>3q$m>vh}d`1#fee9zh zRq>~J=L}Ht)tF~hb%Dx{c2N1z1}Yz)a+p2<%HRDC)B8Z>M++!-I%gtxL!C2`yLxk{ zb0%`P98|a&Q1R1w6UC43w)YY6EbUSC{fxuAUIG_kejLcXvXZgQ>0_f>Mm>S>T^;REgi-3Rv~M4%7tw29 zKUjx&U3};{G)k$HMt{QSJ24Yqa!I8aL;C&&-+?RO$^W3=-;N#G{~NRam*$@?jY}yi zvLAd0sDnNo^!w^h<^FlI|JN2?(C`19@q_sPwP-4Aunt07_V=|U-D~ zeb@|M#edP=Mqg|E4x?|zfAPDF{tWgb-g#fgJW4+wd4BkJ5h?#_zw! z!ha%WU-d3(|Dss@z7`Ab+8BRZ%)h+AqWor}KgbPtOTryRXI!w*JZNYf*>?KC77Lb~ zhZqwF(!B0xYhcrwx`r)V8vd<2`F`BaC&6;4$h)0de1j-@IuH zTl3D(#VZ!yo_`;X{keb>Y=s0n=3#cnc8bKeb@!kM*zX<`A8i=BodT1fG-w}rNGCQ$ zD)cYheN?!%)!>nc4I9?2i5Lv>ut3_QWE3vuCJ=eOpB1qQXiZBj;JIKVF z!Dx2g>m>L2<;0eo(zUG#A(dMjHwC+WLGgXCjYQjs+~M~P`Od8Ael^OvHFpjUUOj5q2 z4``W}Zk^$5fx98oi7P(#O0v1YeItRGKV=PhkUxdMkXgjageI3 zyPF3p^D6FNkWUjMg9G^&sEDy|ROf13z(#Icp`5lx;v;py;+L7~;@4H}WS%*0{{L|M zkXkH}%2)xuJk9ynx6ofd5z9i7)|pKNo#DlU_90uCWNs!=;>%ti6Tt6+$r|#Ig^bbY zm-Cal-+roEzt4|(=>@BLWMB-v=FR#jYpIue<*lq)kFQ`|c0V#0sCE^vBqsK~f?S6w zrHRfdOT5l0rC#SNiE(`sUQBd$-R;(ycaL^^46oen^>-a}X2$}vW5~0Z>a~7vyx01C zqU7xq>%iL+m+eiK)-0@if5iN*#Hv26RZlH-ew=1qnk)(TJ*G~QOp+zY3c8uK`o+lP zIo?jfeYrT%eSu4H(@dP}S%ZeZpD}uWJ!|Q{zPwN_PJI0qJNx*x2I0z060;<0?Np%$ z%C5-lc!BkEk3E6-dad#*XJK+FWG?G3zWj+*pKLUNA$-c`oxHc{fK^dM1L%zPb4GuBl_JD{jrEXF*0I5qTe0SAB*S{ zqayYr`rW3t`VrKVF7`OAe)Y4qbR?)Jsyl7i4eCqd*u{M<0|UMsCDn)25cMzG26A58 ziW1tf?B>{G6w2><+5#Q(5$HknJgD>ZLH^!3{jI+z!xU@ZW3&nRp|~<(>u)2j+81LD zbszC&?7fN_%>J*FpM&G#_V?(d=l<^v$CsTnsC<<77upY{1_u63c~ET6&o2+; zwE6pKd@C+TwxhlmI#-~)(KllPeY48?dA=LZQ{KtQcjI~cZnWK9_}zH^ZtB*t!tciO z$GraUP4!wQUh1{}q}+R(`d1r#GuruPG`>G@guU2>s*nH3H$(f-^~XxykAEx9mzD}I z(;00unNi-{di=YZpVG=Y;CI_bdbLV#Ps00Nz~fBFm&NZ&x;7?$W~5|~xi;j{27`8( zqTU4VUb8*U9Cb897=a!6MgFm`tNrl8Z=K?=Z}Wrnk^eis&H66u`~2&En-%vUeZg57 z?fDl=OWbZTd!FTw{6u~zPpIU6bP+$os~Fgm;QUb;viUAzJW$TKU+MqccK(nRaL($TH+OGmcOEgjR!9>YG? zI$PQ6@ay~=*DpC#_wb^=oA@>ET+}gz-%b1mb}Z_nO^k2fv8bbK$1cV@lb#L7Oz?7M z7L1vm#;kJBl1^lKNxta=I+s%ULd&GeJ*Az~f5*kSjk5=nzmWM#<CDig^CmB`+G zqcpjG`iH#nN&S{R{`pJcPlw-Bo}6F#JEfhCJDWSYIfJ0~>Eb$vxX#h_|BA+)yE=ON zN6hb?qVos4`YPYcw=c;VbLP!`E%d`dyKCGzhcwP1jdMuj982RI(%2kJ;~diH%<^fR zF6Qv z_@-3!;C~a_DKg{RRiX4MPLoI?J$F2_O&NnZ1_P!LihiqEeyN~>my3BQ&2i%;Fxse^YOW|Jq&rt0v@Kbi;e!foFQMb`{`47bHbc`Q_H&hzrkKz)K zXArJOHQMW_IGs-_-JY{dFcn0B$H?U*`ebNN#>qP4971ZBJ)Z;7ZlO`h* zdPJ*z$NTw~_qTH<^7YaBj+W9-xigVEFVp@XCaiqE+?#bP;a%~<<4@x6pz%O`SvYp= zOrmd}+Vo|)8JTKZk;F|eGMN>YM>x3O&v$DsbIW}b>8CuM+55U1)9E~=SL*Ei59;rG z%txLCpHDRWGU**2Kl04;<10&ACQT^0Y}B?y--6&Qi~7;FQcq*93eGNS>&729{`s23 z58L>am`v`W{Q1@U1M~X`UvZGk#ze|}XHzBKyxw0leYrQ{pX~MUD=|CotSLG4tMz%g z%Ylq^CX9&r^nVMO<#T_T2`dDpsW}d z1mmb2@}oIr zeG62tg7~*<{JkUNmksLy`?@S18e2T^rT774{S~zxYqg;dZ<7R(7 zWB-6AKfWxpoPXTGjdfGxUv&QHkG1)xOP*rjPGKt!(elJ>*tYgexK@)dQ#TKGZ79S1 zNcEzE^_|C&Aw80BbiLJCC&x4IuDIM=cjk}y_-7r3UCgn+#~I6sxjmhid&$=B9osu5 zcxA23mFM^F*sfzP{<>B_Y1FyNV9iTsvIlll_g%r9>ZYC5eXs1`3^jhpeK$u)dLnLL zGnuDnu|E&HKgMn`xuXMnydS>5lfG(+*V@hxxeEQyfQqZ~9=_kU2KJQv@V$FEA6}QB z?<=JbDR$l+3vAQTonNq;uuNjeT?Y zhKzpu3qKy?jo!Qeg-m~4)AfuoD?45(_a1l_dowB1ARkhrax0ECxo<#^|2_1cWxZ|T zT+C(vTga+a+YIvfWy;!qJ@3HDqP%m`m zyO;2Pd|xHw@#NkL!f(W%cH+RYbzztrT>9SMxr{PjO4%==4&2OlPj$ofyV156w0-(~ zzaFrj^S~RWPk(-T$&~SB-8H zL|M;0-9y-}~jrFMR*2)8AkEJ6(tc5So!^Dz9_wHvlaf1LTc<1^XpC(e5?*9BF_UVp=e8ymfC z8`p2#^w7o>0dHy8!jamCo42mJKP27rcPX9?+}gB}tKnOk8}h``rhD#bT31!GZo`KA z8#d<6*EZeTw6$SFYTd>M*KOFed0n2vUGq&_9!}l8?VfwqZOI#Ny8Ax%!c$yI+_<#~ zFC(nw%WluxTN@31`@ES8Q)?t%^`53R4O=6jG&FCVMc`{Tt>vw}ylb`t?`gVs+m?o{ zTz^jKMYSmJ{`)Z`7uIZfn2Y0i4vFI?dDEKInr+;Y&6_Vi-zA{fOxjjm(xc!q+R>X&z+ZQj1 zuxj)A#VbE|M}&3T(ufx;YwujKEN^w??U5ueTNw#?xm|b8+qI(}d4r|PmfX2?*^0bD zO>J!?g83Tl-F$~i*jqut376LRz)=MsZ~n|DeZ2GLPx+{-=UX%Dep$(2@ya`9`5d=B z?rWDV@j+!RE3TNOlPd~X+GTg#a_b$-d@cFzoA{MTI{y@h%axD}5+;LtxJ$YrEJKeH{8a3Fnt&I&^Qx7#Xr`9$#OP&QG;pL|LH`8>gRM+sLX{#TbAdsew zoULfW;+A{2-A`-wX#PQiBholBX!qVBNn^??(zE5}tqcJGFKlZ}v7RuW+P9rD*J&nn}^&u1)DC zdd&PG1R}3<48E{lPXD5c&s|jIVzj3%)QHN(Xl7ppDi@g|ucS(#NqrLGlew@}gC#o1eM^!FH z2O@$4J2|F`1uE{Jog4`5F!U)<+76E@hJ8_$i_tpnU7%v&=i>a>_IWNApIkgXEb&HF zE=EUr`P%#EN54BW%1Hz_Ud*sGMwi9ti(+(nj2;oA8Sh1deS#^{kT`=es?=omdFMt>+qkB!k6$HE&IqYE-4LYzQPhZOJQJef;X^P__u#7|nU z`x3n?9q1tbN$XXQ7jdt9K2o|5F_e4B3zKT(HxxfOfB#ewzU074SupW$Kqv?ACF~59 z{yuZhy48^U=dAdxvl!&RRsUlCR}RBpIt;&l z7{25wOBDgWS(FezEp5cNl)P@y`+dQ0;53jWUY) zUv2!gMdJUI@r%{34&(1C;(o4;T8_det1TK3rp_3@($RzX6D{K>lXFA4pKGIz4DN@@ z|ECo} zCqUAleaT^(hx2@U`y8g1g7Qa)<(>h@frr7<0Nr7JjCxf(| zgF@P8ma{3UMA>nMV;rW-!2g1M50rhO?4P54iWWkrPdUuKZ1hR+tGGJ>@+r)|qhv^NV!mR}rP6ha%z$8ff$d)-w_t7s=6xp*5)2Bh%>j7o&l*9B>pz?Vi z_zh6A8a6?zc7aO2Q2Dq4l)ZXT_Ldu8D1O#xq4K!~ls`+&Tqt`PqlL0J)68!$dLpRu zr~p+S;~b{PfQpY$<&iX6sPgC{QHtLYQ1NRAWnZXp4;n30xKDwKpWcs{*BDQ{Z9DPlDoigH)O9afj&+Gj9he^6Wu}>HXk$u-^#E-71hQ%GNqeXTTQBD?sH} z5>$Sj<2$PO3zZLjMhlhhGobS8Ei)I&Ua!$Y*?Y;%yN&Jwm0w3eV5oOP@8UUtSK(*7Yh6g$1B3kc72x~#L*X0h=y8Nzof1Je1-+iFk?^;6+ z)cEddK=lVp9i|tV`4~gaO8NG>LHU2&Vfp~5{%1ef4(fdf`LBDgf2?povM5{cFkK5i zi+L85J-rv9enj#M0&>|4_EI$sJ~|a)lb(rQ1xgGNK_9BRWCg7 z4>6Z)FY4bxq0G-3EmVCu4XWSn0p(sOd#8*R%3g<=A2IqcsCxAr$X~YIVfr8_e}t-6 zZAJ@KueO4U?`AU>D!jGeLCjZ!imy=StBe*Z9yOriyA)J7LfOk0EtI`#a6k6OfPOnO ze$w%?=ZK8LI}0j2q5L^xv{3%^fC}#vsPKfc_p;GK**gp>ycXj>X689i?u2r;9Xx=& zt!6Hi`C7wzhv}@*HAYL$gW@Ta{c59y3V$y6P5hk+(v-3{I80Z9G@@NN(URy!MqtS4+;c~;JhSi2Q7^Vy>43mcE=uG6F=EXwY=N9Td zlThmk!Y)G{q!rDcrH@Y;?lXMMaJ%6K!+OJ7!y3ayhBFN%k3#-WG#q27PEY1%=~RT8 z#|cjvo-mZ$ahZ1*K4;iwxZkkFaF^j$kgh1JJ3nB$5mf#Q$*SyHqlM7^`zI==Rc0=f zy;`G%vNzMrbq`;3C8+*L@@Z(|*_6ZdWKiJ=%P^m4v=BOdmU+q7an}o~UG{*oFT~&M zDWio7ryEp%{2WNuW!oL5+su5k;cCMhK!OV8S*Uz(=2N8mS&P9IFaxSwZvq>^Pk^hy zG^p}i1XhC|2P?skffK=nU=pkb`v_zK*bB}FUk2xa-QZlX1Dpf4gR{W{;4H8OoC$6R zKMFR2H-f9cDzFA54P&dp>%mHJ1~?I%4kp1$u#a?J2lj#=0bd5M1(jdZzz*;lQ28|# zJOEw|wty*cJ2(Yw1g`>Dfgc8Iz{y}WcqLc~P68)_EQtH>)1V)lBOmSqH-k-JJ&0dp zmxK3$8SoxZ?O`350@s4$z%`%;-VL51Jq=(FSP!cH*MVK&Z-IxwyTCS(G9J4R{7op}8v>~ioHFav%PoCz)iQ{Yk|jgp|t)i{McG#+7>VVhyj zu--6Zm@@PXduUX?d&4%voMF9T#xP~*8TQb~eD{WJhB?D}!;E3d&@=3z9DVnOZH76+ zdc%xi%Fr|H!Lje&u+1=MSZ|myOc{EHJ>)Ce@-D+R!<=EgVa70J2>9+Kdxn>MN}faL z%&C%|l0@RU#9`hAYD*mC|AE9){6CX8%m32|rAZ{77_l!DEAw3PFoI(aCfoV{RI*J% zWPGtQEy*X)=aP>l6Nw|EJ4WOG=;!#~Hu@m{PmSr}?Vz5qr+F{v_{H59^M73TIE31a zKRJFx;@oAq%gaj7P0C&Q*p&#Vx$-Fg4_|rY%0#03%9r@xd*xf0^j&$5|0gHE%)3Dc zKivLd{P=J;|IdE7@55!KPh7R{s{Oo>`_@%wct5D;s?+>``KnWx?4NRA3NEI!^M7Az ze`-XcCG|v#G^Y-ue<^i>|EI3*xtjNkrnXGQzpMMupPQPyhX2>(rX>2Rl?;Q#UI-TdEo{r>AQx&8$IAG@LDhVi3l1Qb}H zjxorQoSHi)IFs+e6Mgz}N8d6Mn!1{q?r8OgdY>k^cl$@QBl&ld`Y82>;-e4l4gW{< z;s@(u*Wz)B{9xVdMdJtST(21&tZQ9u_Jeh-cH$=gf_2G#3ZGxFPQN1wjUTsI z`bH}K&?Al3r2*07jjlHODx-gD?&lbNPT?y*DqVW7G=7co|HRw}`L|d!Zi4)1vi#m* z_Qx6hC8K}K;`awe514<4jBYdfPmR9O=)X2v@`{um&WQU;@BWGQPqkrkiP4kvK|ys` z_}3X-XS5EKOO+dahtV7Y^!;0B^sg-ZM~(h{qrYnOG^78-=)bh^j~RWB(I<=^Vf5b_ z{T&Pc7e;@^=zgOm_fF{>#m7(}wALMzKVLAKGn+pB+eYs*`ge_9VDx`7`tL2iUo-j!i|-#9{ogJ8?-;$& z=sz?1oP~eP=&u?5eWN8WO!51n(XUweKR5b|M*mNvtBiiz=#v(|KBK2v{1Oc2q+Yc6 zTw?TEqo*3p#SB0EN~6DG^a7)Gs9Ev5%jmzg@V6Pg%jn09zQ*VdqyNg{cg*OC7Qdev z&B0&a|2K^OywPP0N~L-&{0|%bxX~XqdWO*%qkmxGXN}%s^yiGe!su;AcUk;?*XTX+ zFY>*aCK@||oQ9jwORib4uk(-C6&>v3^q?0VypQ$^`eM<&<9b2Kc{W@?pbt@+7iUaXq@}}VBbpX8?qnllj*xDdg;Z!b5C-{L?6JO zR4YHx(@2-p+r|&}fh9*w{9s>phJ{~0#@XjWrSsqDf3om{ed4`lKiIcDYW@fNv=5m7 z!M^D^^Do$E)jFBN5B6nWF#m&n+?D2khDAXst#`~;2gmhEWBzKyQP|pe#+?hh5V1wQ;AQMW^PnKZzF%A{EadD%n=Lt%VPF_Ge&qi6fIhv5o7tBScK6BI`IN>L1|_B)ZkstXQ^qsV@b}KkbbyweZmvm7CJQc*SjN*TG3jR37To(( z@fPAA|5Y1VALsa0*D;je(JWR(TsF9C90j@Q82&S4(M)#6wBaEv54IOIxsmG>UL7aT z>zX%irtxis3d)xzyJa1fblrmzTbHl=Yu9by47dw3Y(qhm{gh&+ZQ%8& zh*_bDDuF#6m2cDXUpeE#BGZG$9t0e(PaC+XkdKl}V%{uY`)O0MD8F4B@f(sa?X6)W zjanzuW1XPinGGR5FOnruk$WV^^=$=CtfFk$wvji=)(}RtQk(2Ot5fcvei#cd=Z7ALy7{4QUZ|TJ z>gI&H*`aP$s6&H1!g+zG)uC=dsGA?^=7qYsp>9s7n;q(Ag*r6unYKDT!FgkKC?#=0 zsGA?^=7qYsp>9s7n;q(Ag*r6R_us0+m*5tJy7{4QUZ|TJ>gI&H*`aP$s6&JIv*W{q z8y6zf(GnEu7KFO_p>AHNn;Yupgu228H19**f>1X<)XfWZb3@&nP&Yf& z&C2V1?`MYIhq?u!Zhokn7wYDQx;de4cBq>*^TOp=&Yy2$FNct0squozvW&~IWccni zY5<+$hte`pudf^WpZ05{S_}i4X}R{lwN2ow4=Tq}`;$`gPi|l4-!(EQ^Kybf4JU_j zrumaH2Oaps)W*|3yRm|(`8L?&^W`f#LnhPq9-L?`753roBj76LlhSK?uDv2D+0jq_ zDvWFRU8s70=kv$_ardsfOlDNhFk|Q$c8zc{rE-QDLo%GLOYWGL8{aTv$exws+q+mf z!%Xl_mSGpN9pq2WFk?s=IQJ$uE@zlAB=L@qJQ3f$VaAY5a(v_f_pJYR*eIh^HyoTO}8bOu-s_H@NR@Ewyy5ztAa4lE^Jr2x(EDcswgDlZk z%>-#@Rh8gnU<#!6R!s!aSK)?YC;cGj^{N16LHYlU=i288l+K-KT`*`jVrg9>P%puc zklx>5H%dPZ5vBh;Mt>q^|F#(aO9T{k|Irx#b20bZV)Q*R`yY?_r}G?9|FsVkr5}sA ze=BDHk7E99iqTy$`sXqFpJM*M8{@ae!aEtW|D9NTSH?o1?l^fnE&N5_g{(8 z@pYy6x=4JTX;I9*EiP!(>Ce&K%r+Q-#<>zvUyQe;wiu^&WibvHmy5BuO~ zF-P3WF2>^Gb}`mxZY{=HT2qX}eehzeC3oIYoX1`HV(#*{yo=dbvG@*_?1s)1|3ZB+ z=CUQlI9zux#zKTaF_!MF7vuT2+lw*Xh4*4yZu%EvInf8jxVm&7@@z28kXm0NzLB#& zI%j?=uZEMiK6lp4^N&;OHmtk1VNLiV^1pSwdV+pRDj2T@^shT!-Qc_n$E!Mb>u-Hs z;COYj`BQK4>!UxHb|xQh-@p7&+P68}cr{6aG)B<*?|R}i)Oc0?YCpjI_x-(qe+--a zJKg^$FpQQB^!S<;s$c+EjIZ&JR58A7Zx!Wh93@rEy)r?n7+>QtsbYNFt}Mz=`L2t* zpEe9%<3p)p;osocMft9E7k58*8274+QpLhw0ht^q5c zr-I|atHCi~3QU5Uca?#f_W}OAFGD9vS6ZGjRHrJs$Bl=}yA0b5bB6VX8N-yJXV`-$ z@~6wN%`j(JZ&amDvW0*1oe0QIxPmj*uYDE*b&9Z<>Lr3Rt ze@MDTD}SVrv*y#vH>sZ)t^AbwEBumu<+IcdexjBCQj5)g(68zIzW6FHsRxap@+tR? z5ntsi^`zOS?0uzuWARlVq=It|swYz4;wQf9kJKrCqJw_r2n^bgH`qtW*oz1HZf z2_NU7`fXQFL;Ck%M)_Sa`i}`O%CEy^l)g4*zb9sYRg5pUQTMr+{Yk_>%K!6NeD}rN zzYwESG5>xU<6j!{@1F=P8s0Br;s1vijj-PW`)|Z()vKs~pN_@nPh$Sv7Ng@6#ON$l z^GJWv8#OGPi$$ldq4lU?q4k1EYiPf~w9rApR5o-_U>b7}o#5sjL`@4F6i#hJ7lp=! zP6}tWp_4-6n3LFyHt#6LD0EgZpAFp7Fv(aokQzU!$Ru?6Y9`@foY+G!fAHsqR_a|$xt)w(BV+bLg$6k@6chP zaiNpgtUPoRGcR-$ovnv1qK1Xm3#Ra){Q}cM2L%)R&_RJ|p@YKde(0jmxX?*#6(DpI zGcR-$UmXZt#TkXp;%ft;vpA#BS;3-#f850HAq$M7YY7*+jxc*}wR^xVHPn9B-8yy9 z9C^NN$oJd2^+8DSLuubjXU~c$-CvdJH9G+vtRwKb@zn?2_X_Sm$UiEhN-f1zr|gmtgMTk0sl2r!k)# zY3!)?jK>L+p4SCN*C`Zr{S*#+Fxuz1U=@{3i(~DLA(xhSJz{TRjN&bfQMuC2ByWDy z@!rSP$RXzJ;w2+L>|Hv2;pmkkOGb{K{-Md^c~|JRBxcFSN;_+KJHwZA{L}k5&dXaM zOr1s{zjh3=jUQ>cp>MP|X73}&)+G%U_aXQAOUN#-LuT&`?94#k@yKLy?@fz6-WTyY zE5;=EK7F%fz30YPzL4n5O!Aj7viky*%E+1wsv9m^es!5e7) zn-D8}dgp?^Hq!N~@hR7eDVVj7nt)v4MCXyjnATiG7V*s{`+pAdksI-w`i|dDeskRK z+>Ql(4ASs>@S8V;UGX&hq2!SdCDZ!rL&&r~x9QK3V?4A>>wbH8;aB9D{|*9auQ&PA zN08y&xO-1$)7a$R>PIvE^O0eF)1$~x9+liXr6ke$%D-Oxb|dwNyzt*Wn3UrU5@ary zfP0Wzt$bsy`u0x}Pd+)ZH1{NX+(*P$9!fs->&W_+ok_deMoqcxW7X{ERa{P7l$0> zHl^lc)$b4{G) z^T7JbzQ#my@8$UUFn$gtZ~EM(|K{)i4llpC&N}=x7b1X}EYGX6Xo;tFafRkS1vB3T zM);UZRXP~tezH0~R0sB`1B3W&bgrXVzc}FLE7|=H(-T4F=2f~cj~Cf8hiRQ_(Ejv( zQ2ZPy{w{}U-G|n`vhJ@Z!IuelEU575YpdEp>Q~i%P~koS@|UH}3)36;C;O{G+0TNq zUk%E>_KW$;Y9F4zbOrwuUJq#$|0TmNQ1*^GOcU2|zZ>)Nj59A!83M9j&dtPR>Anu8pkVRZ0)Y>&}@D4IN#JP0X$ zZ#16|l-3PIt6oSg=I7I9hcz&t4$Ajl=!kRg!5FT@W_ZnJ z9t_uj%zwN)9Ds$#O8ukR?%x22zt#-(= z;BaP<6PNCwSHa;cPE7?HM;H7~@636#-7eEmk)@f7Vv^)x34)Ntdxz@O{Qf#kPDmHdvX;l_D6 zi&vXDYQ#SoZ6{xY535^?8;l8n1XF3xmL*Z7X{SBh_5z>B}_ zNZ9+k_)bRsdm;4Cy`}TcXJ7QcOTn8L|K4N4mdIF8W40dNa?qG)xG`b-?!oWFweK#q z^cKc_;KdT&rYd1Pl;C}bQr>weps>%fF}g3h#F?H~4fnad7qGljOrP@?$CavV{D(nfIP} z`{G6S_C>Vbzlk?k^N~?$6MNFDf2G5fiRf| zJn;Andnd{5)dK^(HRbASGz=Q$kx^k7qXvaB(lfuAo6KNd!nlD@&@&Ao7r4%79Z?2iG(SG2rS1`#9#&@r%Ao8ovbn{GJ%Cdu|%91pW4O zXpKjLe8?IdpH^O<|AUe`07)rPi#D$I@=FVJrp7F!xEgOrRkJdM;TN#n!hZ=7D z(8705O7%=Cpnu)*!(;X_mVc`9lFx95Jifs3L*P$FZc!T)p@@>-Q8nE7q1)osWsVNx zpDK0_jl;5_z{}yr591ghG~!;4Ci2@3eJv?|&t3`pLkE%nt{al>9JwgPJ1H`^)a##?ndZD)wLL?OxHt+py4f+8*3$h? z66f!U$8R4$t#7GZek8LL`Y7GV`CKvq6rK$s0 zKKmX&nNQj9iMMNbZ`$Rtd(*PzpC4V3ESdNNy=(bKY3fpK%9wx%MeD_4|ydn<|4^wJ4Gn8G+=>Lsh+Lv9*jTtPW1EiRngzYh5C zBJ2G-#f3N4e0Os5&V;8YMcq&T*MZubN+!SA%lmBext9>QsVwz=P*O7C2mafhhvM4w`GW@%ex6Ws^G5|-F%5NQ@j*k=Nix0q^C`3*K^@;!S?@aiuLWd2dPSgf~;a9H@=PWzEGdjC#g$)SaSndClxSN z$oMrdhw@+YUbViq7G#agm+#8=)0gWCrn8t6c9rJ)z?jISKRUivg2`)e@o zHf#swPa7zIo^qJhdZzr*xK;jaH~v=RuLZBce5PRvoCe*8Co=CaJZSg?sQWOD;AC(W zNdI1?bx+0(Rl4^f^9nOhf=Yjx!?YqNduJ#NnZM;QeHvtJS9KWFd9qy~^<~3$hj%rC zvM)KDV0smp!roGl?|hZkK^0%kACwR0DDO+alc3CB0;ht9jczyoL69uXwmD2c0g?sT z7KiCw;MKTm1c`cft;2LZNKo0;4$~U{>%LD0RJ<2CyoY)*EIF zQ-*+VZ$x5k=v{rlsTw{!74KS!rM5T!O(xA~kJ9;;qs%EZ06( z)>4Kjy7E3IJx`5jL;RjZ>oN67KF9y#BfCdpKB{dLLheSLqR#qCawenmp*M)6=0p3) zY^ffjziM=!(T^KFLhkwfw$aKD(ZRU)xM?SB9oE1^>TiqgLmXT57|r{m1^ioLwCbn)2-N>X6Q$?H?0+#v|3%Ec+DFtqb+~|jH%2dw(QeA=uZwF! zn!j?tb$cKPC4WQSi7=5pUy6gf#g8Nr*2MXiG*ggIH%+|m8ABr8o*~Yb!0irWV z#G>vVn;Ay~@D2S{d*n#WZd|t=R|t*4=G{BiZQ0~mZ0>GCTbKx5^Q`lYnWiXYGU~wFZ^YEg}Vm*kg+Z*KO`zv!O03yxUubk{BD2(@x^q6>2@0fGIzSDhlO$) zB64te-*XEu7S=Vbwb)9Oh805Hn!DqP_k||db?)%qdT_Da%wxB{^BWHrx^6IM{_OMI zS7~l|aNWPpzC$ia1xEE+r4Q&|cirHm&F|$OU7goR2li0~aDnRvfj`&FE$S!}iKvp_ zQ8nDUfi@+ja{hnPi+^;xUeD-o@KxZY`dPl$ej5CdQf%KrgQl6rm%W+L8mrA@-Jl1= z+d=ydWtb@%78P_CpdRq&hd*L$z5-VjL!G^-x3{77*8AnW-#vkKZN>!tIyhsYidPa7 z`(8&D{BzGYi(fUpeOW|75Dy z`n~a9>+^|{w^NMwwbTy5`3klPin_X(0`a z(JP)UK_5R`q4dSg{Bipv<}XVU>>re}K3>K;`9-Xkm$Pm@g8hRe_u3P!THlc08N&P* z^pnCh>`ChzF4EiJgnin(GxcK0`@csxb4trwFXNqO=Bwl1Wxf~9uSdu)-j(hjNF+K3 zZuU9{c(?iy^6Q;riO%|1em!zGZ_LN?>ycw#e>3^@F8Re<>~HfSsqIbFEUY1~>SKBJ z56Y`Zy!3YWeXPH@_4^$iS=QHio8r@TrQQQivcArq(x<1CO!C**-zXh<+k4EBsLvH6 z`v>NVt|ndgkspnvWv#u}Cl1{Q-B_ALUvlW7(vhvrrK4N7m5$L{?)0tx^4$9M+jBYj~UeMQ0Y& znJF)FcH`#{b}%3J{rJUoHy^6}>4SYq{HgJAV&7XIU3{p~*L(dfKb74?XYbFjgMW=b zgMKm5*$(~4&*yjC^war$N&Kt>AK~}(Pv>_G{0#li=65^~PGlat@KUdp_c`9~BEP$N zr~Qr6g8v4--(c;m zpLy%_-zn{^#Jn!;JqjB{6h{fX?Y-REL?Gg3(dvD(UHin_w+2hjw*A((pXV>1} zc{^^i_;DM4eF{HsCA=EmY%lf0Q@iJF&(b^SQ=HwKUNY*o z>6ktK#nR5pSQBmhX=6t(XZD7QS2^+RC9cVbxAnE?oK%Uou#)&IzVCc}$)PFW(>vI& z+%d1OeUH{LbK^&1mf5Mj%6!|a+sR&~nFaOdCd?Xl?Cfa4eeabDV`pDC{`ArY7ofl5 z;hi157ian}M<4hXoXLBa{ zR*`|3`{#xjf@!Expvr7~x0C`JYCVd)^VJhY_)p+zl6k(~QNpWi&S82r$k3-M12Uwl zDg(6+be4)O`ZRbkcmkAr`eWbyafj)HpzQAhWj_bX{svI?buU>s*--0H3P0sAog>~1 zxvEm2?42S0!c&IY^^|?B6M<>1`-s2V%vYKD5pq=KZH5~_xzl=&+@0c|_*$nCK4rK8 z40F21Biz$e(J5{<$^!vZ{JVmuC!9hJfs| z)KR@?1PdZ>@$x`#*;_1tyj*??)AkY1u>jIG>LAM<$3N8lAr?a}evFLOx=?hzBQ2UV z2IK9&j?vws$s+8^~&3f1jTw?s4E8HfMdt^QQY4Jx4NEY%Qxy0_3+Q+aElj(H}Rrj3!D=Qx z9fTE~w`%Q6Kgn%SzeE;aup+Me);RItgy8mfG!7-w`v_Or6q-v0jkL9k>zw z@99_Iui_H*_y0@rB8{F^?{It|Gbz$ppo0E7FbvvbKo>(k!v)Hkd4ZXT|G&f|p74L~ z{D}Ksj1KZU;9qDwXcGlWeMMBo{g3j_rynjJf!la}49q2QYvrxC+#w0lOO~yu_2LF~ zzcJf4yLIKt&n)AkzHG&r&5`-0avaIQ#512rXw( zxY^shX+zVRhgqe+XH(RTg776zH*5$#13~mO7M6-PufROOLHrX0CcD^Bz#~I0f>J&%W$1eF9WGUNZA;Gd~V09$jXB)XY0T#p8&XA2##n zK!w|G=4zjWlYYu*wP(@$LB(Sq$Tunbgv0b>pyH7;^Ic}X9aKEFn)zlk-vBBejb^^q z%vT$|%II29@mg-?Su?Kz6_2GLS(?o_Ojm=7$6Pa?Y34V8ibtiHPc!orsCY~^^ND6Y z&gd~lCqc!d%*+9Wo9?FP=5K5l|8P6D4O|Ew09kYP-z!}VZic=RTn%Xrl_h;}_?t4MG?*`c`^4}xn+>HN@CTaBFBdq`%;ok(-gRFJ??`Mt&Q_!pp`0tKp zKt+}*)Yu;4&6LG|ca*gG?~Rhyu?H|`Dl#?)X29*B?5_ezv;RJ(>?=Q+lZ;jVF#j0a zMkT=O@|l4~~8JhHZv9!+OJvVam`m>>=K0 z%exHQ40DF{h8e?@A>g~?d>E-{KlC%6jSCV7-s3q|P z|M&BlC2kY#{6CyH!vCX*F8+5XUgH1B#LN8e;S7#@?$Y~)3X22=O7dZ~p0tmj)JvlI zsa{LXHvUA)M`|SY#8Fi-DAFZzfY8tN6J|H9~L@-Jfl7WkFZjNf4P_hTl$+NsoI#@}ZA zD~8vj2TpL46e{b!7R+h~=8)Zg=y`m+URbh zTd*hl>W`$<&xk(iQ=S*Rvz9e_HF+ieX`_G7;$x(@#^{4)FvIKzDJZN1UI##YxfWblL7fuDmI1-=sEAPa%Zp?C$36%$|B&*JPY zcdqaw<`>nichoMsg_*PX%kRwIy5w`W-toyhi$>fE_|7G@%W7Fd_n&r>(_5C^v24ZS zY~3A;Z(kNV4k8!iLP3Q57`ws=>^Y<0CV9Rl`A6Ia&HO{t!m=3uu1s7 zStR7yP0=dtR_X`EByU_8mArWnLf#}EnLH=3OKhBBJ~~aaIlH!Yc9UPFqds_bu!b-V z>=wi;Z#iZh*tQtt?F9yQ>@EKcPw*f~_{>fCK27+NOzf$b-~`=}$rTE#rVsEMN3d)7=qs*FLR4x?zC>+u}&pp41^ub<=ABr)0C^OnOi2c)eT}t~N zQUT2v``6k>3BJSfPhM8?ec|td_fax(gKG2tbB_+s_>_3s7u23zTn)F6(qj(($uJl% z2L4#`1Cob*^psq~nytL*$AQ$fb#>XLArs9B%eRynCW)8gw+}Q{ftSPWqv+jJ&C%pY z-|9AK?TsF0(yFmVbRUJS8trlW;V|d%-2fM)g1g!EAL9I4{nxkPcz=#zYl^cX!ToB? z_VLr6%Kn(Sx87~zz;cRl9Mi+RYK+lMG5Wq3eNT*D8>837=nXMCAF|V}yMOc6hg0jC zn^RhSO*O4eZD?ZKE;Lx%bT6BvDRxI>+tSvyoMJlYk$<9LUjWqb!E`{!8pwM`R}}FUc4Pz^J2LH^y8@O9@a^4yAwk~aUlr1PWo7x{Ac`dc`sM_Bvo6P%C6OlJvS zExqhnnMuYBaXnI>(3xRpMmdFN0sT9r+&|@9?TQ2c#rw3*^9AP&uf{C!BgI+2s2@GN z|Mf2CeuFcGoZDW1J@i6$^pSrR?|^6R?mOY{B=kCV`v%lqzc4K)aUq0pd_aWy`7xH&n$X~+ilpM$4PPN?riZbZJZe|qai+ism zUv@pCouA%CnEUB=_qV0@?OsF}BMR@p2YI)6Y;MIz$Y0szSCFp_Ccm$pv)D=MSjiuG zmne^~Dq{cDxc!mdr)7V95&I3Jax3U>h79{^lVK?L&k%kI;RpAlX=w%Jt8&$OTIx@M ztbr2l9k}vdO1Unf?%m9JY$w-esPw*IVTS1?{>9?{46->pIZHZ}KZ`Y1BtJucN~X+K zI)eDCKAteQ@7?=fX%8jDEnfFZY2yjxHV)m+)qY)@p2$7ze7jD?+VvmMmb!SiFKCl$ z+oQ|9TI5V3vr_Ha$&*kWmVd#$a`h1z&I#8?`v}_iM9y!AewBLb-+W*9@LjuohkO2N z!@tixewFLx<8v$M5-a9k>e}$1f@itwF;t#icpJ`_XTslqYB%5ZXE4hW<#}i-yC3oB_@do+ROTGDvB5mQBD`I{Q(1kVS@8(s6Ij8jeNi0+C$L)tAA+U zvwDy$k{3n<{ll%)l^W{IEwsf?a)-j**%&I18YUKxgW8YcAsJ&sxm|oEWn6^!0=!~< zVZ-F&Vd~z@P+`4lZsL8=FU@|jey0z)xKUZc8Opbda#k2B`wHls(W<-K>FYjsLvF>p zye;~-{07Rs2Y$f)4D~N^7xXVB2!&&Lz($E?@sB?o+sXf9KHsg6;^_zBlka%4ht8;Hviq<{lvK zKfT`NE$J)x_PuKTlT^7Y|` zRN=R=g82O*?e#3>s4-$6{hrFLje8{n*OV-59QF8$%F1tS>Ai*ijxv4qQppJUE_*G-0%F;~# zgpy3B#$B(MB4fwuRffK|w=~0@!Q}c^`Oe9n`bmw$0(m{&`vdcS6Z7AsKl@W;1J=t9 zaaR1UJ~vP+n)>ReGwEeIr(EJa(C{wS<8_DBl&8MciC{UEa;B zjAdA8s;K$K7guzbw{7WdF6;2izUCWSB-2LmwqIem*XI4uIA&CluwJdq+q=3je&d6F z*WH^c9Fr}kZ&29|cYjTBJKsH>=H`#GzT{7c*Ldz&zt#oZx>B8gl2F(1n>MoLF*N%@ ze+MgOV@>0_HR}t!X)ZW{82YJYhWt{u_QIS`D{B_d<_-CKSPJ#f&mtWKs*%A2{XD~> zLM3x4TfZH|@39H_a_lju9K@f=WJ!vIg`Cu4)Ib1rLC<+p7KG4d4bdUv1_$fJ(2{_Fzf&sGqt+072q8$kKf=rFw&ls^?9e^vUYbe*JLi9QaBJ^(76 zErzw=Lg+=H!eQX7_518hhv^$Yg;VJ;Jq=VilR?EV3Cf)u@s~YE;{nrspxm8xm_7r_ z-D$_q_Bc$Ra{TPe4%51CC41eDpFQp{-R1b%qYl#@pzP^A3&mqUsCd|Yyle}!;-Pza zibu|2dKV~n%R%ya19!*${LX;Pld7u08Q@Hi&Y@}=DF4TS@}K*$emct>rae&ppX0*_ zru#to{}!nH=yjOZeLvajahN^@%AW4~$={=(>~}a!^X>8NA9k324wQY#b)Ez2{>*G} zGbs0spxm!@n63vE-fD;GRiNBw9Y0&+Fum0Avy3DC_%8xw?*@=_Y*m%u0x$(KDXAI< zGC!&6qd()@SalXuJ39ql51s&1;BoLWQ2Rb=XZyhGz!s1!%SsLqnBESuG*`6>RC(wf zJ@BqEpvt2Ryc#@5kE(Kb3sibfgG43U<1l>+RC;xON9Ax5^z#e!>pQ4;Zw2wPYAvYt zkTw1y<5wDg95@xe?n^ENPk;(v_n;L1VGt`>-J=B4x<{$-4?0Y@feL@W<7f9dOzR%0 z?6o*dKL*O)X3#H3Q2y#Zru=12=iAr4Or>iTDEl)(<<|`k?@EEJ`&4N^Q1y2lsQ8}4 zk^DUi%HJ~%(|TW>zih9=w9fy?- zQ2CqzuK~4&uY9fqmA({6)@LU>Oiu&}I$Pl|Jq}d7JNTBXUbcgZrv`hls-6H-XjSZ5I2J`;u14pY=ez#K;q)W6OTaHvXNtgm4-OZk;Kg+fRR8r z_>y|CNh=4MLP}CjLytv5dxV1<+TsTF&{{Y&B{gY@LsFXX*1{&|$T4|~8yrId;r;&B zWoFNogs^)%f4uuMvw!

    simbue~nMUTcA~*Iaf9ze(Uku*I79O*^c0m~xnK2uQxR z0LyDZNm1&I1^Juu?THR23QnR;d92_#_j3j3xt}RG%YApBR!(}@*{6m3@jfTGAMJCD z``JF{xOetB)2ASRZ{K}=_apao-%jo)`*v{O+HX5w**5pv!hLVQecX5VYvtb2|1_J8 zo#=nEe?k870orbi?a2z83sIvScywUDy!L^Ixt|``$^GQO4(rd`#mq;_6|A1^T8qQ+&hMx=6+(xN$wYi zq|q5YH{?9e`-bl4xpnAX?q`Rc8-@?V&I~Ka?;L(+_}SqojTUV!!l$BU?q^4y8;SkM zGu(F!|Ic2*s!^qYCodM;#t@gaYv>g*d!!_$%^3bUlAv zqbVF(H}vZ&-@{Dw4Q^fJ8u&y%^~x!0`J#xj^m%!5q*F5Pl-=>U2&ST@4$_&M*PMo zb5%y@ZSaNdqk47UiSSdma`@HGh24*h$QvKA|K|vOHp2f*ME>E3{U;*!)a4xi^-*Ow zJfDu(uZY--H_WfJ4%6R^(BDE=Xp3349JRj;qaUGW401d|uPtNYIlY;Vu3WSD)6>oNc_s{2mBW8S-{W9=RZUIJ z^7W4_sj0cO`*Am3+M%-1lJov%OhfL&W9*E*`-VU2e|R(>648AS!pu3Lu(7wn3rPtF zB+O!UY;#mF**hA2Dl5?xqyEGi@>g&4b zUDC8kKc#dg`&Ia>w|y(7O`AD=s$q_v%T%}SvDHgfG}JHiDwh)9?Kzyqw1GiFwx&;e zMZHUPo^`4JZ7xSMw$u1deRy+St)9x+p_X6rByu({bbafGptQBIcj=Yn?q89+--MUL zw34|dF-W-5)vMl%3)d+pq%0!ON8kI=o8C*uHI`H3HeJOGTJ*RmVbh$)9FdImuek4G zV!YKAk|XA=g8218Fb`aG6XpzfnS;vgyQnPEA1^i5(K!1(U$InX&bvrw7xi>*(Pi{8 z+R>Zv`>9`Gy#vp-GyZE6)(+F!1#75xu`d*S@oA|G?Dh3_!8NI0p1L8ZmTrOgI3HjfC(KE}Gso~MItlRjJ1JfKg| zc=M&g=C5DAJYyH@1~1*7|AUeq=H=_qqxsFOorZl|`Db)x#=EmW+wrHI_4uP#;H^WS z;}G_&oxS?;UtNBYbTH5UT!C-0j`joe4Y~_wIcs|gCv&Go;|Tvz)^J)_6Q@j=eKF0R zmr0xUEu@{&NqP}7f8CigKW5zWt&MR@RW;{pNEhkpZrzT|xb5)y=<-DAyo5Ztnmny# z4NUpkQ-0cV!WujI-cx=ukN4sX!f)c`!lJTT|6$hDkl+8l)P?V`CbuFl#TjNp8>yU} zrx0%}2jlmoE*yc!tfR#4{GoJ^m@8;JGcc%L;$%kiwcM?&QkFgQE>gV!^Gy6Ke&U$O>X!e53>weAi zP>~H=D`lwjlffR^p{;W$*SGf&mqV0omA%#p=wTqcnR04$*ho*U^Sy%KzKkeMXl_kj zMbq_^(~0ONP0*jQXC6Eyy$zSgc5SQcnPUDtG3BLSgYV+ki0L<)-I(jFW9P2OltF0xzREH<^xswnZ@juPSnk)diA%Ii?5PZ% z3c0yr8T{CPei^KD>-+x^Ww4I*{C|%!c*yGokmhw)D1$kCS6c>2^KcpLPB;1&`F*HA z1+-=P=J;67qu=+s)4AaNkIsnR7t)E8ex=Ur z9*JA4`(fOod(@0u=GXVDuDnD0%6XY@wYYX<1TtUD%l5m}x7m1ewtgPMO)R9-T8pfW z{H4qJHOHs=$h(EJ-@EEgV}~A6SMziC|1~;~F?1e-ZMF0-`lq}0A?pac`eyWJP5

    {+{+}Jt{5<_u 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≦ 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

    W5O4Z2y@yvs4? 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

    ExhQ$hR+ccdZ`sk}ZQcI(j!8+4UPFPc z(SQyoe1eV z#D5`roC>Y07=2(0`UaHhQe)0#xs6Az=7)6^qo*uA#TbybBrpD&Y}RGdnMXf31%25} zBX5VZdGT8{1%0ihFEwiN!f&5~-a7?-cnbQ&6!gWjOvH-i?@CKAntte1k)-%QKMvl- zy!Zl;_jyevSi|3Jkat0{+@N0u&JhVDZvy+Ek~>d)B{v32jy|ov10>HH^kp|xa;HJb z4S|wNgOVEnCD#veDmdm_yJ*USNZs`+e#kLe{SzEO}_kYvW7 zKL}ofKW)&L9UjRYH~3f&D1CeF{dRl536#DhcrEg*;}-f$LFubD=q~`Jj}PX;$Hplv zK4#a9g0sQ1;Jd+L@D4Bys@w+*`g_6malggVH(0tp6sle<2BmKycpq2^R)b|Ab2NcH zQz7G#K(FkYN^S&He#@?DP_7^%fjv_&uxF}x^jZERpz>RGLlmDBNZVJl4U`;vRfK*E zD7hwszU-L>yzF9pS~bxQA%2&j0TXV5A6QBd+3g9YuKO1>Yu zvR>*LUv9i*Jkk z1SNk0l)UV$stWdjl0Rb5?*%2V^~Q>Cx4~e&vG}?ypT4t-Z!cI2t^?l%)*E^WLdJ> zps(+xs*eefAZui&<#v!ULlCaMXA*v}9$EJ<@TO6G#tr&MKvV_xO-0{k>02zl3Do@! z_I`uCUk;+W<_yY2*Y{BA)%Q^Te0>Mi{Q={jv|p<4porG21($%UES)tjf!spyPVUdP z_vzyY_s{b>k-kxoTgi+;|BSsqV($;z`u-KI;T`j?C)Ay)bJ6_w1|; z?&(=)a1YJyosEsf*#~h)XOH2Yot@F0B9=E#UORxz%@f!59yfFCsP0_Xe;u*9 z?l|t*>oT~f=bV{?wZ7}q*O!%Em^(4|61F#o<__cb%{@N1th8tD!MTUP{guWFXJ+0g z7CF=N2IrNP9-nt&UO&Dwm1iqS@%*m&gb>)|JUc(b@2(qkas_Juc$nNb5c!|sU*C(} z_mNMR1@yADG&;d$_{-X@|F12**ZP0Y`dznEh|H2oA^aqE9*w(+~~;rCeopHj%; z|7*)%XZhz?`a0{Ey>?xP!&qvPv5iM_m~xyzsAZhvHs=O-)Q7L*H6;~p2C+M zc3pSc{BixfA#{uWyrp+o|5vU5PoRnZ2iE^HHawS~@0ULmzxT?|zx&=(fvmp2HwB?n z=b?qy&sRZ{-}UPsw0<`Z(0YB*UB6!KrTnXG`7E;jW!BGPE2E#6hAy>-;&=Uez7+(1 zwFA1Iw)zhmulJjl?#4O4ZROp#WeI*nCa((k!~Rtf`i~?2ZY0C}Z$#*dc9{N;5r0R- zzXj$nKWk-j{J$0P+xD5e=K6ml@&6IG!}@r)<@h!68m2!I@qZ`6PoFr4e{ICC_gGlp zS0nV#MCjrT^B35U@X<#ax3_*O=Zkgjw|*G1`}x~~fxg$sO@3}}-L0?w_Uq_fZYIJ_ z4rsdJF0e%sD&B(TPT?0S9{GXy&o!YlsGt^@-5Xu~5(jQ%vYHSTI{ZfR^|GGjAK z88)$fA&7{A+ts>z&o(T>v~GW*J>NJDO7x-ssn%UvAAj1Kwh2UackA}HJTIK{*3I*Nb}|`tg*}Tv~DlT;#Oq@=8Se@O~mDmHc@1C2ATKxp6#0(8z*xw z!Z9i7a@9_VgjQ}i-NiZbrdB4kn%x-L7?HJ`w-8@jFhw_Okfml3g$rE8A~j|;#pK2KySKFxc z*;2~M4^!0|TenZa(9#-WP-ILdgeuUcV&z?cGbi2Q%+(BCk<>@ol$EODdv>?(YSg@3 zHidcR9+2&llh8^Qdxym-#>mMPm#8#;=%WqEM;?8!zVV@tKDwsikqPC56s2`+!#1jXiN)%kNux z_x-i^Ex%`3Jburz<=k1puXz04+FC)pcA5Q=zusooj;FS^wC?)P+5Z!#pQ3BbHulcX zm`md>jbVc8YS-Chc#r6kKK(35$!)s9#Js>=wER4~Y81`Y*x2yk26e*h<@6-1e~A7} z__D!F-kNG%Oxz{J3TphRTgw>K&M{hYR5C`r;<^~wH(3CWgoH!*mx5jN-!%4AH*OvO zx|GHGS2)b6X`SoazAmqceP^OE#`pLVzQ<#a;92%{l*ZU=U&{CJ683Jyj%nWkYv9+T zTzer{tKl81!td^l1>b<@9qTLg?x9R3*YQJtRW<d$tRpBTobVbL=`dmC+J4AgBV_heNgo{|^i>Ay zaTEumua0zmt1qj|_?5O?J*F(AC&d(rOKUucQ&z_438vkNTRy5Dgv&o>*W`Rl>!v8* zz(!2y`ycjVh;R9^68G&|>ke3-@UPdovb1&(C`S_)Q%b<#Dc#40Wa$jr&15uk_8zHF(a-!1@n;?2-Bh*9R}CO?$R(WB&qb%vDaiLz5F} zEog^q`(}r4InTNzwLe_f2L5Rm^5iuyqiZey{LG{GTY7B~y4pisRxmI8^Hb2rr=VY$ zf<7??UF*TG6u+RMyF&cSY>JAdPxE2AM))VFy!<;eh5Xs8px?~=m-O5Lra{ezY1~8m zT+M!EmR)w0#$CB$5Z*<3aTC~22X==a0pxo_JVW46sYe84c5QR`sY~x82Kl;3@Eu1 zAZspb^pG+pt1iBcuf>$bCW{G+af_bC40`xEJ#Deq zV#;EZ#e~JUMIex4HmR(id9}`IUCgLmDog3b$aOO{B0Qh;1c7KiB*VY1I#B-U_C3Bp z{2}^W`JwTi3a;CsX+FZ$yT`5H)uS(2zpM9c$cf+8Lp4hByXWR%e#@_N*Yy|t%kQ3B zwJ-9!=lnmcKG$xnv;39t=$c`}chB`9?nz$tN!LGEdFj=~oVcL}KAs~>@3-{-8;Dzd{tP5EKNt4@4&j9T+avrl&>yC2{wM6$@38-$Bl`X@;{UCP{I5m)FGT$Id9%e&Q=Pu^54C# z7@aKB+(*!RFT~Kk>uGG9GEt#z7`d{Ox6KH}DGBCZw8_JRg*>>>= z5ppHW@F_5e9SJ^6$&+cfa~VYhbIEzqOdGT{Z`!(TYx~w#tXbqHTjA!=&5$r}GALK8 z7Lzmv!_>*y2*w)0G*K?&p6xsLw36vN+FEyE$9V@PopZx4z>uq93i&C>8ezK*OlV-9 z8;3AcBzjEFF#Qm%dOSZO(fcGEGbOv*ckG&+;d0u7(o>>~F>G)Cj{kBbq{Rxe!yGM9LU?Y2XgoQcNg1tZS+(Jd9zaMzi-wwRz}C09&6xH+~atIaXag!-M$uR zm9ke59YyAARm1_RzX-o+oXzV(5ZV>{_HH9YWJv7IUL;y(ulJaO;hdGQ>L z?ewreD!nmBTi{*%d(mEr?TkzQ_hW&Lfk3X>yC_?E!S99M#lO*S*2`8bW}R%Eci^ua zZMJvuG{3iAzI;#lZ0v?Ib}ncCPnU23wibm8S!XMZLuX7~zF7MRz-s7jjIA*|dulS; z*T9Cp=`vz-`WmDo7!cqBCDb3sfzr`ElzN1l2wYB(fC0>=F z=;1jM#m%M3%%$9b-ILU-i>+?rz}_J3$H>kz^#=1K+P7rp7Sh3d$9(a;%DhPsr>0An zv8fQ;3;b?C zku67s{e9;1!uBr-=Rh_NS-Y6JUntF*uhcwUIdx%4+_WXtJgZB1PVb~GX;j<6UYsxR zjOw{ly>@v+ocb&De3luTzOp+LhfW>5*mnzS|Jk=Ae$sTYP@Z@}ndauxRm?kK=}a%! z%@kAi()f^zM9LZ7f9?uDn2evM;w=^ezC z7r!n`x9`!s@cS)&8^VR+7q=2!Md*E&-dlt|4xRT%O&h3rk_L^0~g0*OlUpg~_R zWkizQ2K{{?y^6rTh2-nWKl%kV%Rop;l^5t&gY+3{NK0VXgzO6FKtPYf#NTu|!i>2; zJ#DeqV#;EZ#e~JUMIex8o`Tt$rJU>9TY3Zw7Y9oZ;dYny;GQoVFZ%-$5uUgCN8~gw zY*Z)q|o2C6;f3!zqUk9n@1rOe zC{F1#&S1xxMoar(OJ`7Nhjy4TT4pA#%sgnR1_#aa`|q`OviC{?I`cl)bG`dY&VS$Q zULW_m*Z11%Ll5~KE}wL^DRIHLJfQ!( z<8tj2(G!fzi)ehFlfj1^mk0i+p7I|nr=`@!MV>Q_%NGqZ);p}LQW`r|#a&eJcE}&` zatb{4b&O%(arq<~Q&m{v%ibg!?=*Ov##?LP!{c)L7wTj9;Uz$|xgYikk535JjL{iG z=h%IR9s2f4{~mws*?8yfs-eG1f2u7!-U!^j-m_m(-^6>r6Nkg`{i9DDxRKxH-HiV; zj3Ii>?Du>2HU|E|Q}elr|IL9PjMHA0dH0WUI1gYDdtL|g-To}T-^cmh%{?U#4B7b} zcXPbM_!N6v%s9*JQ%=!O*PeNqvuAnb4HLXF&P>!j5dK-D?{GdP?X<$&!oMFb>En-^ z*H5);0oda>?(E(({XE>yV*kHCMt#_PPj2q+p83pRZ-n;D%P;QASpK_9b>`t{#-5{m zvlISU%E+ZX@?Uu?wX^$jjcLx^^}IbNBd`%Rw7$YIOZ8*c{$JhGU%w>A+6=|r#5aN2UozkE`qZd-=H2e;yD|SS>>UI< zZ%946pR)try-DXc7VV1JIiGI!4xiMSsGJ`l9eIptB~xaoH;sF7Pi|qnML)PL7#}LF zzr(oEk289bd2l9z+-dwM%ocjnW}W4Y=*}6v{59?rQJB8JBNW#n-1Lsu-{HJQ%I`CQ zx$`lP3Cs)fpsop*;9S~u79<%n6x)?Ju#TGXA6{m zMUizgsgaxwOP-T?Fn^IPKvvF!y~rziqt#jWB3>usWN#2-Qtk$kEQa<@rZ{`_HQdRp z1D#JpPwU7_%2S=n*PL79tzSReTc4fnmXV4vDi5Zd`0gnq6^ZEj3-ag4cZQ};mi>G8 zjH#q;_a)v*e@zJY1}QCdwv717|3N;x_$piGNN?rMstZ!@K1rN1=zTnX$o>Vm>)_0Z zz|9MRoAbSsncsA`NuGqApOUU9ubS&QqrSiMT6dYw?$up4@mT(@;@7&{0$s~brBAk_ zd)lFn?it#w14TI@jK(^V&yZ&o2p+%O7E2A zmB*NSq>?HOhjlx1Lkh1v*IRkw+$U}?JkmYmSNIX+8S$9cEmYnJ=9Ba;bNr@En7khL z^Te;ZXK=>v`3d;%J#ans>vhz#3#o7an0ohG&Klqzq#v2{eZz4L@LwYLLI~kaD z*!uH(_{&)i{ybuexuX8&g{0${J;zA%jx#s|_|>0qjtY5T$Kceg;&}L65mT>bxnC*B z3&Gr7$KbwZsea5_2YJ(8y*jq?=bV-N>c^M|W{&vPAH-I6P63ID&~`)AzH2Fjk= zaF4cE?{Tl_(Tig7H@Vln?7`)wrE{sD1T(2j?1*H+@_-DYvMDVh&2Vjbe>UFe=Wg!-OKe5&Cm zJCL>CyuRL^b=*$5em;8F)yV$Btf1VSE*#Cx_UGoHB%9RfKcAvboDN*0hoVdGTHJ^7Gy4N?? zHs9|xHQcRxe=Djyu1sBBSM3GgcpcxFI%wk3iiUTb;mb3=_=_ ziPiO(H7u*={_-kwX0mrb>lSXi<`%Dc)#_@mZ1E?q@%UiQ&W&s5rf<2%Yqd1K?>tW7 zRrnns?M_J>I1}6g-T=0MGr&5_&sg&%pzLYC|7eA0Fu4FM#a#RTskBS9-(UXbf%4}V z`VoBuB(+Plj$HEWGkB-=_v>7QW`oH_Q1PiVn5+R6pA2|CsQv$pbJJx8lWA+d0Hh$M zQwEcz)?Dk~Y4g$(4f^K=$RC{-z|c8eWH8CyalW3{YT$$U8iUD3P1(Xm)@6vk~0Cyf9>BN3BS-_a+o#G14m%)8BBJOzhqzc5EWpqeg0rl`}}2o1Z32o zK5Q_#0c6S`oi&(T14=&a+h=MbU1u<<{ri%y%Ami0U-C_Y9uJNOnd>bnvZ(#|DQM5) zQOe5%Xzja~efl)Mesuo0!fOF3GwBTmlWReRr+I7XqZw3qjiB78!E3-`@T1^Za44vK z@sq$~;N{>^Q2ulnOzySj+7B=D-PU|9sB%#QN}eiE@?;Dqmw>WgW-zJ!v6814R6Z>P z6|PFO_Rs5k%p6eb4n^+;CFgEXa%z5E_Vrz6Ay^0gF_;GDfu-PFkTHTufADJPLQv&E z-vd+*I>1Z8{a_Mo1&4qw7MsEAq4iycBIJLU0Xg&Dm}}iGSvI}IU@~pZ7lLG|w7%bf z$x>^c0I$QpVW2MuN|79gEVhFxmwQ0j+X|NOw-J>6HK6R*fY*X$p!B`~l-_59WSMlS z!K6BK{G}%uOil!)_XJ3ir^gyh4g=+{EGzsI)S(IR05}fZ2a+`Dc7w_1KvbDleGewv zz{{}L3gSh2o5AE(@M6q2fm6Ya;C$+v7K3+g0H0)7rCne@{*u@B8xh^TFzH-VuKFfr@SN@uS+XA3x0R?)*J$*zd?c%I}7u zEo{T@8gh!w``NQMa97%~VaIzm;~zfzh)m8t&Tn@31~%Gn8NQX@qr*G-Ju%`O z_}yBt4N-R&?BTb)U?0C`1OADEF5Zt7952Yr-8W+Yhyx?cHvGKY4TUX*8`)leu<#JS z`wI^g=H+%3o+`|a%FESe`@N&Quag5D`||+OM|d z<#vyJKisH<6m+}OZH2@*mVCiEzqnE1ov-m4NqPU=^$h{T%D@#XcawWK_} z;oh955Y?bBYiOhzTE2dIi{(wr9S!L_w4X}8zTL0sANCu&zDS#qJ{s4F4x#8au5Rjk z#6ur(-D!Z+Ma{MAtcDnP1-)MuYOSF9HtpZP6p_}NIP28Uyw-j|d3z=u94Sw?*uE!o z_O8Z{=5N0|_qX!CC*#|Bm)<~o3wysy5d6gp;Z$pAv?oS{3?nNU!YfB23`2zTvOPQ^ zs#LQfz)upJA_yNoDj}Lj%vJzr>B0bu4eSvHvx376dR``%21fl|1JZkVLjT7maJ7f^ zx#!Kf?PE&s`3b#m{#gu@0=H9o-X>3?diS3Xdtd3)sWWDpg%Ex21?kzJz$TB=u7hA+ z-SZMAeCAHP!?Yy>J)2U7qw%1gfM!gmah=9c{_{c4E7;8-R*(FXmqqhE??t`zSqH%m zC3XqbO=i@`IwSudzt)_e~C|d9)EfwB1(MbrL5sO zBowoBJdABMpW}7i$=+)`@Y4W#QHAII7VKysZJ1C}H(q^QJvZ9_E5ZBuZ{+{OK7H0t z@NK)0?6f6E-ysTj&9mQ@GJN9}y)>Y?myjee>pB>I1@Gat6le1LA$$IP;P+FOHs4PQ zcf9}|_K&&9ws)8P4c`O%p8ue=AMwOo?sm9nN<0yp<+1iWkm>dD=39!w3Cz$_kIZ_{ zum)j39&z>Uu*X4Ib0Ob@_{Mua-*t=l5A?-6;ihNM+j*ewn$@0!(XsO%O>oC!SeFUD zxrB9@;CpniPDA?@6bAExn-$JGPkEa!%8kGAP45$NiL3w<{c z|NQT$LEhku@7JxIN~08dBaBV_Z&p}=KYGs$W?g{Ry6b(o=kF`=-`Qi5<=dG5&RO*d z-kJY8S#z<{+nZ8zacovtKE*YV`&`n;<)Md@-YD+r0AnEjM&y?+6jnRo_-l&T8zZ`d zDM3F>?g~+u8Jiyx*bj80uw|EjKaP}Re?8A@_Sn1rU?rB)6ZOMw^w*mwfE8zT$D}f~RXqzx)v%>r=d^ z#fuN}Hn&{pot#Q~$PIaCan`1>$wSfbyML6&ny_kF_lwxr3kX$Q{Ig9{;)g=kOon-+TIPzuejN1)7HDO#PVE!wIc3u`*>@ zQ=mFc`VqdCYswVgf+uHKLjb)i;47~L?({vf5dFkc+{L`EyyX$rZso5V(y~kY!BX>Q zbu#TGSqU>zA5bq$V{OpncD{|i_rPM}d^2%h#JY@|SeKFK?{n!dZBLi?$(MzJTpn>e zoxffBu6onoq30O)ID4BVe?Ib09psHTcU^wVPAmTo*qr*q^8LW=9VIPkCk4;OR zoU3w@Nj>YQ*NoowX5L-4oM7+48RU;8y}Z}Myw42XNqL(USN)UY%~E*2U*ugMxqpMg z)zfyrkTL$M-B5e+dO%;+>%ZJZ>foil`N{Xwwtb3&{CKLOx2}U{G6#C{7iW3T+=`#RoexpRvgYXJ zTHI-GU>tXG)^vFOzt={8jQd!Oj%?V|yf4k`V*k}MGm)p=mbVo5YX2vBkamBucUJ1@ zjY$%jSX^ft4G!oLF`<7=<5lGIQe@~MaQ6b%I!w2rywrvZ+G{|7PJR}j=ZDT9+uW&mP$mxBA{?^RixU{OjFpoRO$g}zH zJwX;SeXG_y+n-uWTWR`ae*cTQy*JL3i+S`Jg1d$?mzlT+VJR;>b+y&Yd88$NHq+jk z`ZU^B%1mL~|483xE`H=w7EWj9wNevK2W|Rm{KrCfUG?g$|1byQhwFK*`SR=2qP}_f zLGtOANEu*kV)JkY9_u;Y)Sl*`&Qp3P(07>bo@&v zpq@U1WcVO`gt_D~)@Gi}us1cRGds|~)}#e}LdK-iYG@O)@t!kq_VQ>Ym=Iu>4~Rht=_0ewgOmKl-`8E;G)UOR})`E>d@8X$Qi2 z>vfxVgM85LbnHoeC7UlOd9^~W@cn8s^; z>Y(7vMYlf9skV88xQ&uH0~ef}f$OziG~(=g-I&pFF%did$aSliOlnfgKVENyfe4ci^RNjKj3 zlpi0B&-&pTl1G!Q|7ksCVMjJ2{(s?=cOpb^VC$R@-U%Uh8LfUr8B!IQH~@WTmh3 zEaQO9o%BKC(r=9W)^Z=3t@w4&b_8*I^fYlJBK^nh64Os{OOm65GaY0%Y?kWBj5gA@=ll13uYc?bi};s;cKvJj#}-Z) ztdrKbV#mY&bvltXunF{n-U_D<#78%heIWig`gEq;E+ifQnEK{g&JZ z5A!3OjcV4t>&%9Et4zLDnN(kju~S=6Z?uwreqQBF5Xm6DWNAMF{pB7424N|VPucK1bQP}0!to5k%2F@*?YEVkx?);0vS)h6 zFX~tJ%BlE$7`ZflFn!ZrKN8HHxMjW5*2PQ77q#;k2j;1*GcAJ-Q!^`D6Uf%e|R37c)o6 z-lGiT$@byB?WFHc>3=cxazU^8>y_qiOXWAsJFsAITF2#ccV@nQ_RdExP<@bnna>`D zoG;RK&nLZ;zoibJpz}szoHufI!OEwpd&)E)n!&q$G9)|Dxb-kf=Zjn#VGqm>Y`Si7hJ`m7X8+t$VPwDUR?ZiJrMSb6V?rVMo z-Dv)PhsH+h&c9`6+?)Q+VCIts&E5M5m`o!x`I?`0S}ygI~tb0L22 zf2ifLSBHCV=8&%@Kqm%>%jw#Ymyl`5An&CcPCoeM>td>gp=eLWppR#>ijo)zlvda8i{FukT_Ib)q1@kM^9sb?jeB&*YoeFd)p7g5x zg1l`qf8FkVm469qrv0#*PscxhtkF)GMKN#HzA>p!zfBuargX7wL=cv5Kjy8h3$+nnV=NZ*A>{8nv>8ep_gi0Z zR=J<=?!R!P^4$#5`WMVeww>y3%ZA%H>R{CyYU5-ce0Pk;qhn~bZ9k-KQ+beIs(;-+ zkKgYq?yb8zsLOnP2j9(Tf5ZKlQG@BnEH(MfgO|Czw~zVMcT7Hckh$)_j^CaUZ}}O# ztIrd>ht1tSk2@~1>GXm7qaJZ~{YdmTMH>neYa z{(g*pe-7g}?mqaD$M~&xzNei$-AsQmWAk`3`9`wFRaaQER`spSchi~E;4#0)*=@c1 zIJ?UC`De7@#-AfEWR9G>Cpq&lIJdz6mRNY`i}Sk57(48LC^c(G_gORUqwLQlKd*7- zyj9LL=S|z{&v~on{%SM~$U!}j=q z+_Q&NWwtn%?_TenGvkluvrgf`@)p{@5j78*Z*c14UqV_Y9**|K`8G1$+Fe=G-D`I) zX`^pxfgIGIi&^KQc4;vyWC~}3>{%)d;wp2^7b{PS7nuJrr*OIE2Ls)iI`Z^)*2^#D z6S+-M$C)^rZy!p#T=l=QCLZKDzh2LC z`n}IqQ2#27C@rC}~ENxL8k>7Ezaa21x4$GB5PPq%>?aDnUojO@ZkePF@r{?~P9Kj@s8> zFt!QCD4J7z_k1J~L zEnOIkUr}5;qf~82Z~NT$tW?#hrY?=n706uk-flcDMvm}#yXBtuEZ@rg{MAmL+d-Ua zkx}bfeoK9^bBH(c9%NcrTT>dp^u;mpm^YHP|Jgt$>DFzx6)%%kQJK6dlW#Qd?ctB~ z9IIk}6B>V~#8bJmg0ynw4zJD0_;KiMk292~aG&c@(xTr!*9LuaHDmUmzooLAwRQWz zarxl$YW>AKd>+O?@950$EA^N6f_fx|opJtmLi2qiOI{Alr1RiCC@&fK>+QJ3<#oW5 zjCpg!l3%NC>(m7UqC)+ieaCC-J&_-nK`lTSfJl0XYFm%1&UZu`9a}{Im@OF;M z#C8@I&=<3L7k9KNI?Kt_HwoGk^(Fj%8tqr$pX|JTw(&1x+ZEYUI^RIwg>{yTHFw3j z$PsgLiSCk!E%^JP#tFr^>y6KOyK-!NRQAS6c2Hq(=5v|)FI~jh4ZniAP2aUNr&db8 zHXKLktQGmu!Oa()ex*KOfA#XYq{g>TT#l!fay<&SXvj6cfnA6VzE+c2&8)F7J~7sknJ zX709ESB1NB&a-)~e>r-}-g?TcbYS~Kk#(Z+)c^hUXHOD7`8o2vS9(eyQ@Br}w2_=a zA5!0dJNPbW(%pQsFglL9bKA4v9zE4(3diIjGp3S0nSXEFLI1B4xq^CG^>v0a_Z7Zf zk0Kq_?`-n>k~&+8__U=alGvCAFT`SGxeEx!Px$E_A6p0ziGZ}Zld?BvcPTd-2#1S zj8Q0i6(M`d)0lg4{qS_#=YyRm!^V?JFS^&K?}nx*Ke8E0N4xmPx^Oj2eSfM(U81wBv@@Vf)_zBWGFr(dw zJVPRs=dE$*VuzmK&{sJ0l@2}Gp(i zB9G3O2tOYQ6TDyO(9~^_r#3=)-aQVz+@YC=jyx+Ol;_nuG~1LS&(H|fbAFOz+Lv_8 zMPMVS_X7I=YkPseXTm$MKwaP#cTeVe7V+O7f49%|{QGv8+v?-~n5|&a1Gv|DEqV$J zxYduh(3&Wm{=z?D`8FT-aUZu8*2V$cZ?XIxc+P7d`DfdWht2TWuGWXY$0k_S0RHP7 zBt468-=F+dwnAjAuk()j_^#xpKU8l=2iL)e}Sz)myl2TOW$o)FBxHV)$(UUi9&Q+jzqtD1En|fxr6<{I)aj zpR@dd^t1mA{6m&++qpjaJ$43u-lZn~iw4k7ndJ}Uf881Q8_vMrX88lvk9#bCKl1gL zzt&u4j?w448=>YCGox%StXW(x=1Ap5Y_^oH) zZ$ATnhvg5X-#usG?>z&*{S5s5XW$<^1OMlXMAa(>qv`bjS_m@ESy!`?zr?o!}* za5gCS(?Gfg=}88Y6G6EzHkcd_%Do3Z1s+CE+rd`wNw5a|CYZA3#TLg}JVv_Y!#@O4 zwo2N-yTG*;GvKeGCxT_5^1%;4<(KC`<*UB|3&3^YDe~dN;BioL9y6Hi1b1M*4^%w2 zgNolakgjWbtHIr^df`F1)$`d1WL|ga47zaH<(O-@^`GkWDzJi z0*`_Rz}LZj;H%(s;6Hifq*wF_SZ)qeaLxDjjx zH&`qKrJn_$;-3P40eaxG;E7_-`)lwhsQ4cQ75_GiJ3!gn27Vdb2+IBjkSvwX8cePQ zWv|ilYe14bU1cztvHUwgk|4drU~&;C{}zI%EWN;Bay-aiI$UX%`yi<5R! z-)At{4l13VGnm{9D!#3t(m4w%epR62w**wWF9elN$LL@2S8|9S*>45KPg%MUY==HY zKkc*NaZuqMGnhO8`uPFOhrgFfLi*Zcu?3X;&7kD310{cr!DJOE|1t)XcYu10;P|`7kl1ra6c&fdn|6U zSOfa*K!rOVl)Jd)pBiWCjU%A+dJxRE>QlQFqk|J%AW(^zk}`IL9h*c8QcN>2y6urq>uu)`8nFuL6l$I%6<-2Pip~7)+Ldl4Bt#y_H%lwpawpexbqSFmN;Wy2xyN zpDH;5ZUOg!Ujlc4o4}3WE8qt3UqSYoD9fhT8cePM*I`};{wa89jEP4(xD9$QDE+k= zOzr_C$8Lkk9pGcws{*s~$C#%V8B7*|(#tTAteuVs>?*U1Y^lpR6wV?8A4XAK47AJzr-@`!FS4Yk> z_1ivB`D`z!cSg37iN@k42#5EdZ4+!we?lpybUnnAD-~lJ_w4QvU`X0RI7O z2VVl)z!$(Bpyb;MD%=+EmtZ4EmM9qyD%=84;l@FQn`bcTfeQCjp^r)3tx8)U3hvJHF|+ywqLsIRbXU>&IZx5#1&L^bKz29v`;=^<|L&h`<;pEgkb zYzO7fCQ$w~TbvC_{}U~awO9a3&%+ER^FXEdaRyXM?@o}Q(nk#@J3v2O3?>hQO7Fek z_rM+CUw~UcrDF>y`x^`<*I4s9YhGi`?*PAm{YBP1ZOtcwXJZ}*)qgs8j_J3wf_Fi0 z1!ca`ny&$s-x|T4UUxS69&oNJcxtNbNm@EQOak|i8G7dg~y;CSt zc--P)@C(p7Ph9@)H<;W366KPOp!BfTVx!@w>kKB-;70fhta-|sPqgOat$D(l4+9mR z5>?@y8scN}D5&&01S&oULB;2Q!Q_5W@!4lE*#=54Eui|Fx;I5~=-w3hTVpV(`%@%; znKfTz&2>-89?WNh3a8XyavJ!Tm`?lJy`b{b7Et*<1O5t}4N5=b!B2x@Ef!iF1}eUBQ1Q((nAG4# z@jZ2xiEo#|7MW+Q`C4n<3_gMR zslg`wJHTH<@33?WDE+Plr60}^@b!}crJp+tCiOi^a+MiOE&`<=)*<@-9Uo-;ISQ)& zI0$|R+y{Oi)E%p;M|OkX2DgF#2v&j8?|4vh9LzKQ!*)v^VQw+*o0+b%c8cY^}a#v_D zSpdo%ckX$g1CN2?v;NihcOU4-8&o{Ap#0apDDuAwl>Zrn$vZ%~*BPjis|=L?DNy<; z2IXH7DF5=nPVfkYs0rK+s=jIkRerWuTHlM6|2BY#oX#3dt_7dQd<{s^Ommi%Fj)ht z-qAfOzB~r~d+#5{e6}^$_jt)U4OIOy9;67C6o6#;k`pjxeiW3uc8hHwf9X92lUqQQ zn~k94%!0DtXmJThRMTY!llneQ5b3nRyPvgGWVgi)^IuD;BkuEZr zECdx^0Z3L(v!6wn%mZa#o{=@vr#v5%U7+lr0Hw#{29uEGT4JMa>3NH;Ro(l~o7k~;c1uDL?4JN07($9E{MWFmEG??6jCnZ$DE#O2@`RfXB zA$T2F3KGU}<)=Rem7lH!@J?_(co>`q?g!_Bd%wS?s{E@7`jo#jM4Q#gxT_MbBaf`IFbd?G{@tW-VqcrYt5b0=_$Q zm(%RjSvhQF$Z2fm+9WP-IxA;m&L)0O#j^Y!kDcI3rz5creh=jw#^gZGL4Nn;?B{n+ zZd)$bKIJ{vbG=h`(1t;0<($at(j`xWk8)?!;lW4v?L6z)SzHYjZ{@hd zALKoozk$o2y5gsJe=fhB_annPxc2GLu*3YG8lF7|+0NO+sE&*^N#bo|NH~zBYRORTG~>ymEX3az5Jdk%8thW zqAuQBM{nnS>*#I#ZW*(643|%h*~9ONv0Y>FXY6r)TQA&xA$Bg@#_xf|!30`K9OHMx zxR!BTVl}Rl-y`EX_}zH%ri*iOo*UmjJ}{DIC0ZNOeVJQyZfViK8kKWx}V?uQw~f)e^Ykz+d5@Czim_Z zPCYB9W!lDR#AE6)-aDoq<@eyULzuKp-#Z;2rtjhR)Qs#*v{JgY6v<0Z@!L^)l;6Xp zNBG@)^>bH~ldf*#wcYX0jY1=e-pXlrgnZ?7j0jJ$)f%I9$s{W-=m8<`OV(E z;buZEYb)dZ6B|B(hCaFDlce+~Tlqcs$wU0M-@5Ns((JZvx1p`uw(xuGw&VQnxvT9i z^l{g2emm|u%J1R3j?lT%^GW7|!uN!6_J@D(R6C7~o@vy-;s@(retx#0?=Wm{k>$sW zje+J3WItGsxzh53^)GuZU+uV_pVB^IKQCCHc7Xa$?t}GcY3g6m!TQTP=#1-LtPG8z zo`1IV8&=+bDlqng^?di@R_=Ebj-E&P7agp3+#o*wHCg|@X8jv#>EFsf_*qN;=SXN| z5AJJNDgA}$e-$75ms$G;3W- zKH+`e@;@c}=rFji;dx{e{|lD?X>0#Gmi{N}|4%Hv+|rL*TJwwOD=%2zaEGD2V7{>X`DpX!*fn{8Up7_D~o!wS{!Fru<+wz;R_J3sQEtcMI!&hfkkM8S}f5Cd2Q#Sw3vFZN{o4!H) z^b^sc{Qk6P(loeVGY(Uk#0yJEg2;c31y%wOu*KSFs3^YuL=OxHW^|HiR@gJZwkNgw7U zBmVuRlix=;^4M{BPyFt8!n@We~%bDa2&p*)BAt&aSq zPJI8!@y~u&>WR-KPI)MH;{T$PzH6NPHqMFfg-&>%apJ3kfx`0ti6ieDPJCB7;XmWZ zdzIt=6i1(TQh$cS+w90c)zRN|j{V!6_BVURB^Yjt?K%F-OFv8s_X79*Z%lO=uHi)F!0@KgL-*$jUSz+<_eknagQ2B zCGt1dSF9qT-QdU`tE&CGcKc!KHc(x|+sh&y%XR5+Z4+7I?uylQ&HXCR-)rA{f2p4Z z`q}dz(tA|ie(XBF>DF2{=dY^JHhup90VlZ|S2s7gSpYR))+aydCdklr!-2ELRn^3? zw!XTm=U{?fR>Qr1q^x2qR>0{g0_Lh;SJPN+u2@>Pz1Y8onZileU$X z6vCwymCFfUSxtBUlFPZ%xVCRJ*LUs=T63)}qQ+b!|?S^X)|@FO^17> zJbTZyG~?1CwjU|Q#T@6*R8U;M%Kd!f5HIt5@~mG*?%ws%p5e-mRr=tx;Q# zI{GmES|eaZC0bp-a&`5p`+G~SD@q@BAUTOXRIFNV3YW5sq5SYec1)uk;`QXNh=YdJ^%Urake8KF zBi~oZoKxUMRTuP?BDbpz7710*M;}7Fn{57=>_HU=k@U_+T5M_ zV)3YbzlEZUfcpH1^|Wk$9Z+d&F3Y4!s;#V`x^S3&ir#Wf`r7icYi=p)k9pmV3$B|# zx9ldnirHJw#B0QsNmxH;I{KyZb_FfT71(duUl}9@5QA4?L{-PpBEacR{Pbt zE=`ZJ?WNcQ+^6o_t*WkUP|v8cqOzvC{O&scrgfiFU2iz1^6bkGTn@xH=BoDbz8_1f zg-w;*A2%8iN)P&|Z6YR>#L{HYppti(QH489l`4}4OII)J$q+$*x2oDVjfOq&UGTm= zUlw)vRQ0c@romc$w@rs0*1e51gv}VwyY42Mfck)p24re8*KJ@Lsy6ywId2*$H~Fj1 zeCNDTWy8{Y$}1@+&DB&-w9LVKRK6hJs=aI~U)@+`?E4wlZx1PC#%R$sH_FuS_%~ID zyJo5ed-}Y7rf`LhoZ~cL&n#lg$@P6tiW<o7(Kb5HTzOflm0lB zHMMnB<&{gLUKyKepF?hXhO_kz^_78=dJO%+Y9EfDqbZT6=UQjw)NAyK%PVV^moHmQ z52jB-(Aq@$1L_gGmQ-8$v2q!VeXO~PZ1bAtDfP9u_7g+}T1CX~U7Io;BBNQis(~i3 zJm|{fLsb9%@S0*RNqdVrdAs)RS{eGDMcWG7>z21R$pU-PHe+CW{j?qZTJF<^^lPi9 zG@yfUWfUrj(kusGdLVE4oMf z4rz<&il`-rG$odLTr(m)KDo5ICSt2NEY%Q9y*4*<^$s&kCZkBXR)TSeYatk$tGc9# zsIXZwXuZqr0PCt*!OP^*;H~F{tBA|5VlZ~qMxv0Ufujf*G-vP&WnxdB!6P=lF1*PHZ9TnOrBXfb=I_*lc!HgB&JWA z3}Xs!iNp+RYx3k-GmP!b5Y2A+BdZeLN_vFqoj|y%A(;O2{^8yKct7}Lpm{^4pS`_$ zN$}4znt!di9O&t^jKkJWKr=0^rGHxf=0D|3BCTn*1W--~dP!L??Y;&6h0L>|cidN+ zX$5OIkbjb2kLw@Px{(L}8tR$l3ZC-v1#`>h22_taw1(7wx`?mh){aMf66*6z!9;6A zO*l-_4jSXz5iN5$M(q*D2Dvz53O4 zbsy9po17oi`u{U~Erg8j{B^s03K*V&MrXq{&yL>w^}0-f`|EX4_3#4B`6R)tx}P?~ zzYl7?L-1@D9m*V^b?9A|4$}N_OOwL>v(eIpmj0?}0!~=^9`KwHeKT|@cBnLd5R@njl z->uiQt}gJ;&t7=MrzvI9tRQ&KRIdg8Sn<3zzTbqOP}cR0Rj;jRq&=dCa-UlH^7MkR z{liwSlr?O}KeDH%@8;I8h?fJ^Ygge$Wvdl;LA@v33oUc)%Q_5(>p2Cje+8guP)GkMT<*NdXXS|gc#2z2ReK4ElUj=8Be~R;+ALQKgN4WpM!`>tIjA*&}VNPuM zC7gBskTnzi`Z-=1bvkG0U$E=9oJs#X&X>MnRD0=_?|09<@)}gYJ!|XncQt3h%l^{g z9^3V@i^t}3M^Qm`@vXVp#h0%7;^Ke({&!Y=`|6g(-+uT9s~+QyG5Pnub4Oh<$2;eZ z7rAHf(dFKVW4U8*_yc#>l;Hl0*!gYlkX;2e4W;J{j@{f{?XAp5=5s!0-gly#b6)Un z?!MGpx&LH$**Uj+H-G75_srwD6Rs#2^7Ap>v4Z7s%zu07*%xez4IlbyZ0PcWDPJG+ zYHaNCg3mqS^B=~)n{o?oIKJ-b$1nO!=B@SbbeH|dy0b6%`_0}6$)>wpBwr`;J;Oa2 z7a-e}u^~4sUl+S&;<|4=zVW@9SIW5`?4A)D$J~(rPh*zHh75gh+*vDsgul|kG48i} zbltZfU;bX^l`q7G-mrYo$A>OoH|Un@@&60!a&Hm;hZ8PZ*~wiuyccbg>prTZE z@yQFk%`ETS#F^#Xc{gg;^W1Gf0rKw~%dnmAYdNESM)@iX&O6t=K;{hbb9X(2AF@kh zGEM%QGtA9-^DLcP`A+WF$FTOXu!}o?o*(JG)QX;7za+N#H{4Mwca-yKf8aj1QQY73 zHs&v0o7y|)z1YeY^4f1N@Mh^e_i?z7ldp?Mc~j@SN7})gux{`z69$c$B0HTId9&tW z?|kfCxvt=rA=tg5Wbo9X+(9&9-LP9G}+O;`YjGhE06~yT8LO_mIv~9Oo>*xYUmyx{};M+{mwQR=mr-NyME!Y;Dq= zWDeW;DtFK9A}@0{@JQ;WLLv1OThFpDhwc6zUCAH0-SP0Jv^6$zck(#$xXy_ujW@e@ z-@Uu+$Ns%#a=WI!qy&sSd&um_Y-{OWmdy2x1?hYA;qS);nM<~U)VXzA4BojBBn~Co zcZr-Oi!4qA$$uryRQ|LrC5u4OvqAj#_b<|EDk*?w35madk)|=N#sW+pLk_C?l7pba zJ7Dlm6;{%$B!R5hQ#J2nUhaWG2L~Nu|3`N4hQWEcTk^N&Z$qGefFJIUjS!6=LA&>& zL;pxLG6e0|3TV~`<^}rstfBcePXa)Wo@bszix=kqg+qVJq1FEj+h6O@Y6HW3_PRyr z$qwz6-@0h-{2Q(*(;RXo3miTaeBZQrqC%4%i~t04(e-${cJukBFr0Yd#MhFpCovI1%NyluYFmNTw5qiug^ zZ3e!?k$&D(+i^?iIa5Dx^0XQL_%@Mn$FnO}6Q6tQm`D!|WBVP))=2RQ{(02jqy8E2 z3D)$63%r$C>bvr|x3ZP`zMMN&#?eng4YPC? zM4USTi>Jk>Qn$>C*#I8I+neVeXJ!L-N6KLw4N*PclzHW}o-G zx0x4Z>&RoxwU=K{AAYH= z2L|FFvi!CI+-ESy%HWj6ghjwNZvw;ZoZ2n5b3u8Z3axeSK{z*9I*{uEO9%0gII`dK zm|4r-%90g%s>RD`ApH5vKAgVhLA~$VH|7i|{n>CP|IIXNPhBq=K5TtIwRDD^25{^9 z-tYAKq!HBl|I_h(tF7QVtiMAc{a8C7mw(DkEmTws_rt#P2RN{``y@3 zU+v9rShZ?(W3$)PT++zRW7T@m+FD^%byLs?QNXE#^icexk2Uw_c>Cjzx7H_tq?d*k zk*Ca3OThm4yDh&MChb-q_d)-tz}V{}-%;G@ImLf}{&!dxYE=5;lc)Sg;rGYac#3wg zMDr_*F-uxN+PU-wgUKpuz69jYKgSA8mRj@iAVH)P2K{rYsN?)|s=(x7n3VPOA%jWg zz5MVtf(kDSD!jD@{d1^fuK63hOs5SdCxJ2_3-XuNxk3CTHO{3xrt=IYWk?qxt$n{> zayzK_(FXeN*MbUfjltv+Yn}!b-a>=PiPpRj#LIMn!DJpt*DI}@1SUIBDt&_zeV^qo zt@PwCxt$+{+YCzXDp28O3?>&?^J$>M)wxk%vdEfKZWKg1&tOuXN)F`%FnJ6Vztdpy zFvvV)$pH|n>HP+ibs%4EOJ-Y4fRY#4e0$3O*iS0|$vrao=74XmAN~e+7@BXYDx`O`MEBj*yIA5hRc8uSSoTEBfC8v$w4LL3Rp7Kv(Ih1>tvsSwD zPT^*M-T{6$n#0sOP5)?)zUXv`iqvn&C;K>^j((TYw19~oubJAS<8P58N=hORhACwrHd^c)I*$M z<=a1sKYG5$zuX7)gz6E|LA|2$0Ys0NWuAlliw^2dUVU0TJ!fGcv*1xa57SpT^p~(0 z=HKG*?WnG|J@D6&vGhmVG|Uzte>qq0nr3Yj3ML&LRzv+#HXSg6bj-tk_F-!MPo)je zG8g&FMEwO9t5)mNq&833VUg=Mi}Fk(<qlGXUZ%ZGS02I%kmpvF3d3tJYS zh_$MU+EVkGLXH}Ue`nO>Cw~3*$v=Df-g};V>#v$$dFyLMN8dVsU3T%B$3OS-;kSSA z){=w&^wyfn&bMmbpZ`jH-7g=HzqjC({GXry_=I(ZkMoUeXGgBLIcCR`@^?p$_eST` zmdE1j4nKbGdy8MW$Q$*>C46%Y`lxT;I*;#{b9?&gLDZyY(pk-4nY&hrkhXeJxtpQqPcbjQ(X;gd91IfZ}79at$WOS zpBbwUJzq6_@&M~l*qpG6#WVg!)Slwir+lgT*)PEp{PWPqIqf>T9V$dToi?%oEo1%r zWdr=6eE=PK=qQDbYS0mDcF<9L`7YcAI_j`GlAf2EIjk-JHh|9b?IXw&(%Hr5 z46HL>2M_15cIj+%IUJpygKo(y4~$?g(akRxbhR=^sQD1hdyr>dK979U{iyeBkZ<0( zBxiFM`G!1Q_)GH3Gw&~Wp+ea7Ai)tr|1BGMs#C0_Nf_N&-~}wSB?>HttrXm%=zVSeI4{&|G@Vn z(*0)QvWPg{MBHvSE;XHpnFo^fN%RX4VJD3;JysGj=IKFey#|h?t(ZkE;(z|&u9@*q{dG_LCw%HYKmJ2LH8T?b7m5E2;veLJZX1968F3MI$9-yM z*DrhGf8MUw$qTLMpc5T1XT12ggv~k>*6lEdOdeWDS-tYM9eW={?;Fv3`nH;`65_Amv_B^-s{l!M(ke{8@Bu&+Fjg^n1h`gZY%DJzu!Hhzx5^k>G$1bQT?Wv zzxLuO|Jzt9mpMn?J99whv$fu>g|e-DLz~o=&-yrhYg|scUGay{ymI{r@1-lp|Maot zXQ#d#N6w34-kXWh^WLTYcuBls;?siv6NaU}?A>46Wy*8*Wnp5d*EZ0aC(YFd^W$36 zG$-Y~nM;_R6Cx>WORapp?1!J|I0j+SJQX6>OS8`PUg}c*8{)nBA~Nr|>{pMCK|kIDpYHOyyPxS# zChvi(yAtnrKcnxQ9l1rjb_`E_IiI@bE9fqtZ_N|Xf%3~v(O&k;pJ(pzx>)|Bk1$7i z?waDR1bnw27OWpS-CSU}LsCg$3qN)o8fjC-55}j(R9^Hi)GS7x*|vSw{7QfPl=ZO- zSImp_abHSA^<;35KKk&rZb^^YVV*wnZMXco0r*X4|BFaS{4P0yJ*=b;8%%Bh zW!`Ab>#Vuv_mH!s2BZ&Kr+Gc_&LzY{beX|Br-8Dkc{Q19UQPBg#6a{N2Jf5=%AUp} zd?PC<0wss$%RqmgO!gIXxj%uS?Cr6*0pu^8HJHqRzW)aA)OTX}UtrC3KDzu-ddZ)o z=!VyHhr#4QQ0@;HymKQcdl^vn?l72~1j^n-gLm@o-xq;8e0zW}*lq&PMpN?uyjN8_FGV@ziq8*+RI2eA%4q8^}sH)3QQ zqIn*TLxTS8KRWbFqDkAJzj`yY=53G3qcEF<5NYkJB<#LF{{A2Yb458>-fqSZjJAfBaE zh#4x_@c2=4+4|?tqwnOqv0{8+c<+H9GB)%!XU5ZyNj>S$^cAj`CzT^COp(Q zYl~y4*ffaUg6MJI^jR;@W0^j z`92hppLRGxf6k%rckKU(!~eBIKjP4@J2d^MNO-q8{(r&YPj&cTbodnfh<{a%{Xcj3 zn;bshOC#>--$&@bciiuG=%*d}yAIvv(0d*FZymbbq4zuViw^x$hyIyEQz=H`^JRyo zUliewcH;kehu-4YXFq4e{kI+aH#+omhyIvDb3T5=zb`rToesU!p}*$H^L2;*reptr z!+*h{w>tFsj{84#_}_GB`m>SveAS_!bm(t5G#?`(?jLjff83$BIrLKwz1Hz>wL>#G z7YXlQ9QXh3&@~SIrbGYSp&4&Q{Qpmf&w7Oj{}T>deihaCPIhyDwPUhlZS z%b}AF{bh&V;L!h`8;uWr!btoUI`lOT{c(qW!jX52!*6x?BOU&e4*y#Y|51njmScaN z!>4l>iOsYnGXL_hyE+a{y2v} z)}h~U?C){t?>RK%(uh8P>Cn$O^j|ylvkrZOBhTMBeC94A;a%_0&pGx#>+t{1;s4N~ zS$`4ne}O|k@7QNCXT<&*hhFB;l@86?*ogbf9lF{HkMo%$_V0E0haLJWj{P4w{Cy5R z*|Gm)hrh((|A)i>i9`R!q4`!Ek^g@={6BH{jIks3zvj?SIrMoBop9)XaKd}lp*tM< zHHUu0@$X@W{)|Jv;<#sCFA|@*4n51Ef8n^l!r^nicf`M&9D0#M-|WyIap(&j`X8O} zKk4vqbLfMP{Xcg2=Q{K#hyJ=l*EsYM$NyS~&-gu}561Bky3V0H9slMy{FFmabm)1IrLzMX1`!W{_`DrghRjOgnzEXU+u(qokJgW=zn$Se{<+&M<1VY z_$>}y;@H2+p+`9MM;&^rL%;0!f4@UN?$~GUC!)`KhrZ9DA8=^ymx#FkghP*Z=rIn> z+)%{*1rC3_Lx0SnKkCq|Lyq{Dap<%|U**v6JMt7c{7*UbJcqvBp>K2OTOE3dLx0kt z8ytOq!%5E#4*jQ&{p}9_YKQ;79sXMm{dV`qT+52-A+{2H8fQx>KmGC@4nx|j^WkTCu%soy{V>Rd9_#3++4k)u{qJ) zkXTjC!I_Ds>ZT@ngDnn`yqg2f>zfm-y!8)?t7uN}F{!CJQM_P6S^Ad5Z>^c zze@IRS`PwIo<~1x0Ck!?> za0X)FIKlV6rPZs9?IxqG#-`;7t|+K)u5H$7bX5q-y6&okzuU;Cn<^4)QP#PIKA$5? z>nl*b5w>YnW1=D)rVM%xxNkBpRy8*!RxGa#B|?*oBwlr;pJRE|;kk)APR=)On(7iV z=@Fwh0sV_R5VM(!Pjo&e`KYR)x=EQ_5miR#xM!c#SJ9<9T0F>bjYP1vDRJMbhWcgR z(t5&M>IIo6p|726ny##9^ZLqh@+j`qV~1sa9EuexHnS6SI4EmzmxOYZeEpBE}7HV!?~P=FGZOB3df0@>>u zo?m#H{GwN7ayNU%Yy^mpDQntfZXzBeS7lu->29)Tb6t~;fecCxg4tL}>N;sFVEGkH zZIg~P#_!&e<_oNB5jLx>^3&ly$}qJ9$7zoLw&u?7)t-1 zq@)h2PpF1!sIR*p_kNA!bE_)qtI4H-Pz}p#s}swr>l2Z*HNyG4-n8Pbnoxf2(fVpm zxLuJzC4NO&M;@!F(?Rw3Q_E4b>lArE(Er2Uo5x34-TULuEJ-FaWC$ieL@tgRFcS%6 zCINyaWmpXm79q8%+ax5xAWK3Pja!WxHGoy3*rtk-d#k-6LW{R>8(OQWqQgZ*rL6;&dAxOQ4oTw;`#M-?+zu*#ycP|=v>oy&$e9KnpJVofn} zrkSZqk)FOaXnv5uqQov=d7Xj#G(_8qcFU6ASC$%O+*F7>xB@Ct<%raT0LoC6zY>?j z_=JRt=W^LFmX$?mPVMhaC>A%W2cR^UmZz*Kxn3Tiw2JD2T4b}L;c7tCu%@*7CfroA z#>Yod;_=q5!1GEmD$g2`Gi2UGvBPyQNGzkQt^^G}lBu}Px1y@}x;4~4s9t$c#E2xJ;6|mX77}}oBRPq&9--MHr zSKyp{6m|4Uu0yv+_J~A*ab59hpXfqZ^Nyh;s=p+&rm=D@x@b7PzY1!X zA&YXaW+k>-q2qy9B|2ida}y!Z-5AtWm1_~0#g|1`y>?}ktgZ(45}{tJU4fn&wF&3~ z;?#NS5v*K`vV>Z^7*$}6$x*RZ?@PI`)Lc|p(RI_#E7q(*Enwvb=;E0H$xIl@*2){4 zWV34#i9V^xqXR(N%6Bfh4oajuRkEg2_LPTp+L#)O>Z}BfwrJ*+9?A) z0#2+~y)ESox35w6WbKLySy5_x?r!S@qD~YYVIL7Y^(bqp=TKdV+)!r5hhxOh1*96K znhTD>eMZzqcn#>pS0g7?+=y(A7gLM(Tv>^G!cZGW_gtbYW(!|kPFIVmcABo?P&D;5 z)>d#23v0|oK1G9R)~QJ2m1}Czn#x`z)TmrlLk~h%nv@zS<<(Trl%fgb`cwA5l>n9L zV4@YMJXV__m=!~{wnF!IRau>=cdLDCAHj>E+@RMV9DmMvX^Vn|s=R(NI{=IfI^(E-C$Z&>yG2Xch9 zc0SpLnn9D5Xu7EVS+lYZuS$<-s2#`62^JgC-c!{ITW*+_FqAbMNWCh2}Y#VX^E)VC6ixtYnU$(8DJQw3;EE|u2k zpP4t5z`5BTQduDXrYhV-!AcBOl{(~xEyTb`M9LQQa%5X<4&@uJ_4jIFstEMa>%8R8uNRx$(`ZlQ1RAHqIMXiwNe527` zv9iuE?ZgOIvpTB(Ibs84ZW2}&rs zo`yBcnq5GZUupPWU0z!wuA8$?UWiy$Q1xSwHC~@8tjm=JSEnV*4N>iD9Yp@%R1~7M z7{63ht+HB~3W(mZL4!e`b)G?3(Dv4fS`6;$DyioWS2UR-=O(I9j&YQWvh>MFRf4IU z8a0=|)_N|1E>J<=u#(;!?m(fLGMT=pT6E#XU>MzKbL_4KG{%ZZ>`0NB+}xi_nzEm7m^~}p z;)kgWG#yAy`BEchF;o#l##WOAwHTJ+@=5d#ZzeySfqXaOI-)WkI`$+r2B;L!a8^}e zq^m_Vn4@NpY@(YsIdG!c4j<-KeCAwOwIPOaxW*3^0F?&nkI|ecjUHqzc&c%pev!ge z?b=n?K~2*s(eq~pDxxg$>Q(15VvHucbNwC3Bov*^egSBi>^KVtmIOBQ7z7ikBPB)( z{pK?IOF3uLNIp_%sea6IG`NeZvKuN^(JPIJ-WmocSCk7nE72TCnblTgD7u1Br8H8m zMsa4pGb#?MgDiDvq~}`Pxg4$OA&TN{bRi&A<&H9l#&5FouQD5>JGeLw!c8$3f;ZBApC0 z?GWjLZjZ$@imZvPB4pzM#}83%EUinFf@Y(xN`TcT*HAQzOTDa!CsTEBN%4Tz){aS} z1JtMJ7h-xqOd-qYq9%T+gsLxA13QSG3Xra>`KESl#qt_V)`^=3rMPx2JrEi#w19G6 zL)q(kCL%-mRQ)F3G8C7`k;5AbgX}7om59kLG>RA_p)}z04YdfUoNf|xobp3fwYI#m zxN5D;r)*hUg6^OG0#_?kM!}S$U@;ms>(^={O01`-^{k-P5nbfwLyeJz4=|H__;7<6 z&9Z?VVDJ#Ix-e^J>tvUu(iUZRMWpJcpR$S-+_#`^A$6cEKGn>b#Y$#1II{LqR34Kp zs+i7FR@PS?DUcs~%mK6MLE1;URr6b>Bc7*IJP-L4OG7No{i1=Oxp6v;P)VpQqDy%# zpHfU&C3%Z*tqPs#gsOB^09BCk`za=?idRs}LYHM(dx_|P@x8C52&TFMO#{`#mKxDA z&qa;m027XpE@Tq@G4*(5NkfY{5~)Th&7ttG$8gOcvFDbBjI%cv9{UUmuwhVqvP!bVlAlmAP{Rry`4a; z9rd;Yu?NQ63dCA|Z!<6-*a*bhY;PS9Yp%WJK&-9t76P#+z?%oeT2F5da4s+nI0u*l z#2RX^3y8Hw-o7NmmnU>5Mj+OvdFy~!!{#jqVlAAv5QsH$-aH`I&Utfy z-vHBqUjtKsUjbdfFM)kt!#E1;1s(w&1Re%<0>1#Z13w400iPKtTzpawX@z7;31$3_&%^N!7#AL(Ax{d+H&tfU=Oep zh_&e6cHp0Ztw8J*@iqgo=Gof_{1dPah&_znav;{$c?*G9^Y6_Az75O)z6DGJ{t=i0 zd=uybz5(nTVi?`PUf==XLEwI1C-4uzcHll>EAVw-Gw?NFBk)yV9k2^n4#eI*Zy~S~ zmUBDNBeICQWo;7bT5PK=S2Z0^HPT+IEcHpzXR^ab| z&A?}XjX>-L@zw!<11tyb0Tu$=fqB4R19O1?2}}d-2BrXa0bRgf0sF98_CJ8Vz^8!+ zfjfbnz+VE}fxiIK`T9G6&A{!zM&MJxI$#^H9EiO?-a=q2Fc0|ez#Jgf5PH*qPXbeb zPXJxOp8@GmF6?ph_5%MEco5hE>;!HFwgVprwgR#C)!Pi*0&E063akS@0xSpq6j%ss z2Ic{O0?Yya7?=ip7?=Xw40Hh>0`|EK<3V6AunBk&xCz(^d;m!I{M`?11^x&~XU5(K zYy@ru)&VyF%Yo~Gg}_E&9`IgZ4)7je8t`sl3a|m_0^SAei!+QnfjAe*>fOWv@f#txJz(Qa-Fb{YgFbB8- zmuo-wYun~9_unu@7upIaU zU?H#&mB%q3$c5ckm-Gk^zyAz&wP zITX0P}!TfH}a)z%<|_UU?I>2%mbo`iTiqy)x~|i$a3Bk*yGiE;l{u#K+vN9jPrp~(};eTB7tto z;F-j^Jt4NB_Jz*zQ9SaLIJZZgJMtF!N5FgW&}0^qd+`6od?zUj-i5>=GlP@{pT&F! zDGh!W^V3Or@K-YbEGZAZjCsmu#NW<*H*_byk@+AcBKV&({}k)j&U`BC_agI;v3_qe zKZ5o9kokvMzb~0jX8lew{}Ah!KnV@=FRb5%%>O&gemd(nh52V$zxmAPvVNtlt9WPjY^{mU-$wQTo;~e}wbfJI%<^!zXKbZe5bfWYdj>dq@d90tG`OU1~Wy~kAepfSp59_y<`IDUA9%TN9 ztl!U=Kf(F!1?KNn>Bsyq*6$(b*$g(%pc+M@G0}RKnK##gT|E%T~bHoB1&7x19MubNN`u{57oKeawHv`ELvJ>umCU{+js%tluA) zpU?Vz$ovbe-*M)rv3^MxO8s}Ueit&I&H7!+{I6I)TsACBko7BL{u#T}=Vs>T+9dxV z^FL?(b})ZF>-R_In_0gPm>CxIM(kw%s1JkK36i2 zIVDjZs+qrq^}C<>uQPGWc|9B|1InH-^^#Ten*-A73+8ISgBu- z^~+@b8P;z;^K)6h?=ioh^;^SyChK<(^V?Xz$CWBr26?_~YvF`vl#J;3~W*6(M`+gZQe%-_QLz0UksoZk*H zUmYv;`I`BoPRYA2mipbQ^kY7j^-E`dlhTj*!(1M&WPT;qJ*?lW%;VdE z(C;JWD_K8RhK%pyAyR$;^UGPk>CFErUdpd#zJT@nA@gsrel5%|W&NIK{s8OuA@f(U zez6l|{2u_Q{TRpm9M*3Z^Utz=rOZ!Z{WdVall6Ooc|Ys-JoBxr-v`WJ%=-PE`KMXG z5fi08-(mgInSYV>o5uWDuhe%b^N+KB>zE(O`mJZ4?){+W+s1r6>-RGAjjZ3h%*U~Q z$C;-C?#aJ9Q|fmf>vul$PqKa!nU7)pLd^e=^;^jN-#EWr%X}s4SI_*%TpqSEU(WjN zVg4g758ceKWBm>@|98%BZcN^hxf?&y-_QI936jre{#w>=E%R@)e(RZE!usuC{uS1* zi}^g(?<3}4X8jzPL?m-L>oO&< z`zG@~*7q>;TUlQZCO659VSUq?e~k5=&iuu!Zvpd9v%clb4`coAWqt$ex1D(h>-ReI zx3Yd;F#k2@zgSGVlBr?+E@J*m&VM21t60Bf%pd3cSH}E3tY0vse5<5<5(ncvF#JU=Ks$5?Q!O7Sik>d{!7kpFEd}o`n}Ek5zcR)Gk*)~=bR$-#W!N1 zUn28mtl#;}|C#gKWahum`Ym97KkHY-{5;mLiuq2~?_TCFWBoQUe}L0p%_q;N@Q|kJ z9O`taiSOd3A=1Lqw~+|m2+vu%G)(Ks_(HtuFm12ILF;ro9hN_avC^xW_K(TK(Xm)j zx@Ixffa&wsDJbcjPA0FYQg`g}?Q_AY=4EvOO=>Ebqve{^RB(!xYf@9e$y%;SO$8@u zxh6H0m2Jv{nha=CQ(0NssU`!Ov`|6qRFeTsYAP$BooX^*Ax(K!rbz}h8PKE_Pc?4_ z3}{kQ!5l5uq^5#Xv|N*#3QpE?O=>DQNy{~V5YNwhE zXi`&I0qsDQS<5x4sjNw+JgCWlCN-6nt(|Hzph-<-Wof6H3~16q z1+`O61~jRutblf^$$*74PO$IcnsjMvR zRFeTsTBx9Qs>y&RHI)_6PBj^@kfuB<(@v?XU+7em3}{kQ!5l5uq^5#X zv|N*#3QpE?O=>D@k|_^rGN4IKWo2upnha=CQ(0NssU`!Ov`|6qRFeTsYAP$BooX^* zAx(K!rbz}h8PFuecn!FBN8WcFoNAH*O=>Ebqve{^RB(!xYf@9e$y%;SO=V3osN~&bd%G6FZ8L*JzHDoIH!Ko%0(4?kZj64=|@hj`b8)C z>FyEhWCdC{&L#Z3v>usNjZl%MQ)!8rw8SJR-y1&xcBE4X{+6(u+|j+(go&6x+63h= zEhXdtaUe6Sh5ndc6Ed|H0bfU4!fb-=8h|~`+T?)_dVP@`xo5NeBzdw z&|wDdDt|OL7-*$Djg}Ee=l@X=~hp7A4k1&+y#CvJ)6!8^lS#qZ=QKNlTeun6DH!X z0_S~T8)8P*gvk?v6UC{F6%(T>)Dq=IU<3XmKFq8}8nP!tnG~jtWlWS$Uw?tUPY&gcZ9uE^NSazb+7!8{?k-^KPjnWwsk^lt!?{`C@b z>wpx0C6MALr0}p;QSgKmUJ-B@+${l;|9pwLdBBmdPXmqsVh@?nFA+%L5mI>A8zy){ z3hy}58MS9d9}r2A|CPjCdVg?||Ea{>cYsN7w;f2~JRvc63lN_GGMa%%mwb9}z}!th zikFbw-^V;5#ajs+4u1teO2;KECnWdz%oCFPX+Y952S|EmOBDCxlAhzi19L|MNzZ!8 z#}+Y$7=4TYa*uWG**S6c@tJY<{3W=`*4B(mZ|}2h!vC*qefa;W?J(Kk0^B(JYxe#4 z|Ec{jUxgcI?{MsO#M$3;9K`=a&R#tDT?o{=J|24<#d>(^4{)49-XK}pVzP$k!1MJydwu18aDZQB?c-A;P2YBdQ#RmJu$6m5CO}C*;6{lGsWe#xZ7L@`CSK zB{(>sOlvv7^}d{7a0+*kX;4+WHXLD(q(WR`Y-LXS$XN$D=*9m`ycS{3w*NmRm@T{i zzQOwccr?}dM-0*Ze`I}e2f5)B(bJwA+V452p?Zi+Bk~;?#jE~57uz$w_jia4MueyQ z3aftoe>%LNxTGdryB22{mWIRmv)QYFL}rQ@o1q_yxzWc6G9vgOEK*EM-5(}LWS3zUZ@DYaXRR^J;9Bqd%gZU3Zilm73F#-fX z7ig`2L&PI=m7dg2Q2nOD2Pt@^586(_1EdKrUNUD9eeA_qD67IavV=}bi?YOlm~_g2 zq-_b#Aj46tQAOfx%R?65e%=56Yt?gUkAv*us2rym)Gk~{PN|Hdy^tDPJ7Fvgr3k<*$>J@!ddiG;atxACRH&qA6?*2 zH$Pww%DJHSB0PGw#AGw6B7z(&KdJeFM07rj;GaBE{a6WpHgG2ryc{pVn!m6l#h@Q; z`54OxI4cu9RI_8-cIyNLTbSxn?bj+I) zI`*#3IP&?(t)qqx2^~8L`U}vB7~`IAH;x>R+dArqW9yY)*b=YbXPfAr7`t`UyPy~0 znf48PVAOMP-w{9K(ly|B*zOt_kow4 zP4>teavnm?d2DWheGlef8W9h@tKT0zS&&D=$ReW&?M|}MVKgBRC6gZ4C%88*xGmhd zD#kdl;I<*1+o8v)bX;|((X{HsyNzL+XO-Nn;W^j&@!V;{8Xt*w(DTPX ziZeZq`H(hP|Gg(E-Z-Y_0;mmE&q}&J&(BJE&FTh+m^2})o9RMsXO5TYLeEa_?fl&R z{MOr=P)#HoJ+>y)#mPp<-h}dzY_!;$P&`p09kgu)>EdWYzTV@CF^1thfjy+JRfp&@ zLGiqY`5<}+G+(B8rHA#oX8LtlaGx9o$N`$mR)}a-wut7kg$l+j zTRnErT(&xh=Caj7G?%S3j-#>=n#Ep`JR1eT@-$0%^1fzb2K2 z_Mm*%lxHdZ6!wLm!91J|^KqCDyv4EY#0y4~co)*$=7;Q|V_WUUvHIub{AB&}HuAr@ zaZG5>`U#;uZd?2Ul-+e{m{Y5N-rjV_K=OEF-9;x)7Cf9D+T%ywXp1$5Er{rpP!PHb(YGUrMdzLB0c{)D@;3(rd7Q`}02pTJH1oertb zxX_;SZ6j9oAkFIUbT-`)WnYZ=d%Xzn#JimzpFFv{5$-9UHjYC&!@UTX{iyI8@qBP| zdE*4QiHiFn%uOQWZ`y1(nu^{EZ7WAQ8Mf(f^&mgfysdqfOz$r-=Q$klow#Kd(s(A) zdd9ZC@ZMG`x6yO4UyHd|TN}+MtM_K0{Lh>%!|K4hPA)J+T*x2Citt`!8H=3rG>*U9 zN#Umb`H-nu9j^PJZB)9aTmpQoM$bGtFdu9{fHjr?Ha z`l8-pOe#X!DW2wzq3fg?-zj+>0dp&dhQ}FH$|Km zi#WfjXIg%FWc^3)*IEaf`33XD%hz!n$fGhZ)pt{RhVZRHxubCHRni^mUCejOxn&Ah zrkUm~-x)Teu36WE_E*h||Fg0d=w{WQ^dudv`pvwp|1+N|zR2)w;=2Zg*@5Y6%2TSX z(a)ft(Lh;&+hiTS;7{?q1IsB4`nisW8(lV=$8|iuaU1F`^czHbNa+h%CuAET>tvZI z#}?U!Q^?u|mc84VhIWAJ0}986a<6FD@pl^`GvinGq~{rYFHi%R5`)gf$C>gtq)#61 zdnt}`tnpot>-*lkMFo?y!wY8=BFqSrj7~e=DVn)RL-u6y@f%29#Bv@7_VeG&HZBp0 zfnpkIT23RUeS2hXMdTPe^$R~04Kx{gAgIz$ek;odi@$;8X#dId({B^Yiw24RFb(Kn zP#+GMKBXLS`5^MwSWfffF#YuJJ&oKMFFg+CpZ2+s$-!@+_ebYmkr~W?4a=v&%|QNl zvYgfImwxRm_faGRJm107$op8%3DYn9=S_$&Jc;YPGBnR z-$6OP82B2H+;cWs^y3_Yx{E6?sz}ys+eTuh7>J!_+*uq%PSi~4& z^f4NYJyMU@4#pP7dd4Eg5TlRLVC<24#nN-&FSdoTp0S8A#OPx*7<=#>AY(fiTNvvZ zix@+UK1P7>7iX_`G~jFME=N25f9gE!jI%e#Y>A1p?~U!m*V@MT`{Lmyz5)Lad3rtg z20LW$5d2Trn-FL3@gDNV**k~6HWc4%6E`Ks*$*dvh5yaNwhW82x1aOOIh5b5^So71 zmc9?Pa{V=$<*GmOec~biBg-#mUb$aDJks8v2}2l4Px`)a5cLq5JCOf~SMA3l=BfT8 z6UXjV`}QW>l6%!2euS`zSM4heiilV3J)JK=ylUSQIQ&8m|8vMl-p>3lI6l>$JK4W# z{~u-lsy&;G=Oh2B{mNpwYOj95ylQ{GVEt5k@&L!L+OMZMKGhzrX8)@FxPslQ_U0z$ zRsZQ7bQoV5fOeS zBD2PadD{qnRusQ8il_bQR{xJh#lJp^C%0DjaZ%y@3F&Q>(|R5&KQ`+5sou28&x;Cg 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�+(qYxTexW%hi(*3MkXX$KSTex=hhE+?tR;19tT!gf{l6$p& zXmELK1=G;4NV~VyM!SS{YLtcsnGC&QQE+ywW@Kv`&kGLJ?M3-f$4RD+O0ScX=c61qj%(Xk^;RjEDUXh`C zdSv{PN9IxT*lwojvaTZ27xTGNea??`0>NjeH4%gwfj2A#NGCz5%yWHpWP zl&QQtLFicn=~n+zB8e=wfOH~*eh3tLu>8`YZz*x)6}%GXpLtyDH$`oZoyXkt;T+7bfIjvpjl6;3@;P(!G z7pmy8^n~xGxDs}xuxD7-z&@3fgMGFdFLjX%uI7O6uF!Zt^S(#(xaox zz*%PEj4JabRHo!?R;k`FcWxo|&_X?wQ4g%UWR@82=t31$c97}mpm0_0nxqn32RJc` z9VPj;_*F{SbJ*vM^y@t_HJ6EVc_})I9;3qa3v3T7EJsk=6EE#AYmV}C377R1d6rn9 zOSo))%Om?XJYB-q=_S>8y`O;HbbLI1IZjd-w)XY6f5U*Q6MA7x1D)LnD6IM88w z82!prbdf61pE1%?xi3ca7cAWZ#%=6kh%N_qZpupPt|=|4!`^Llu8|VG!tk2*Yd^z& zsf^uXw}~*Xw=}KJg)SPlSWI0sv8Qz(I%ATrEzYQx*Rf$LdHsv2Zxqk{qn&qmwPLIC z!d=)_<+!!rE#l&LcR#lT_=pU{J&Us_pvP>#o1fl9qdD*G&668Z~(jZP&uP zhonFrULKKqCj=GH^zQgKK^ibmla6D%?RG7EF3*+9z3=NrA^7B{CrVdlH|=`Wy7eY* z3xDwa5jGy16JDY6FV)^ICr5v%h2_gy2U|_!?%q*{bN0XahU+t0h+1&nALGxp;uJvNyNbLEFj1yB*QkTK|-2Klz z^~n8Esn3nAd1?nXnIAEtqn|fMnzo`(I!AfM2DR9f7Q54VC7tcoK<7|opmVqV8l5ep zI*mRg-s3Om_FL$CaZY-d^ewJUgXW#W&eb3zth|PMY-7J|%o8~(7u`qfUH!fnZ~VYP zy-zz`USmc^qhW?vH97j9@-q4`e|OxQ=eWe zdhZJr9lhQ$!o3^&NoSpz-iI8K?sbkn?zoy0S@%1Vyh$6cuKN_b$&@Si@y$Pd>Zi~za@J2TOTU{* z_gl*Tv2wQjjQ;tgVd%2ETe6|WWEEB(jV`6=DCcb1UGO{qwt{GEX_cehOR2VhF~EEOJ!_-dK{C^pwMvcBj z{q1j4)dM?9)RBWXtCWp%)wh08sy>ezul{TNVD-uicd5HySfSSb@G7-#XSO>3^cuDG z+S%%bf1j-y*UV6Fo;1||#Am7p|FT9+_^n6nS(UDS{KEn^fNxf-p4_C|Nq4Ai&umah zgIB6a4{lMd&1LE@(f6wNzn`QQPamKb$1GRJ|D2~zxx-YyHzHNVbhJonm3p=BYBlZc zSaru;lhp5`Z&q7=y+zHK*k2u-nXguC7^WJ2x>@agB3eZqDpM=iB#+uRQ@wWG7y)#pR6TomuKJgsPE!l~Gt{4c_zm^= z@j>d2_HpX{1w&P9_BYhJkMq>uvxcau$~)B1?K9Qc-eKyY;TUcUTd5X4HD2va%TZrG zaFe?2sg>&E;j`7ZejTe)zBNGo4dt0Tw#2Ayk437=DR-&x>$j*c|8|cW(y&3D|Hd4( z9f{(>lVjAke>7A5@uPdx|U%XL$x;9fyYRFUng%P1) z{hjKs-?~QqC?Q?laK{2wJ}XfTXv|XEqY~BJQ^VCwcOp|=v$`V>@!J~e5;T8<+-)$aQeWY0kFt&1&zVt zrTx_a-`r>tk zD_5^tf7j}jOJyspJISqf{>$TRdQHRLdoxGYX zweB%XZOW?^Lfjsn1|4Rv57=&ztK=0qOP(v0SBF{A&GiP!MluKlg2*qxevmIOc|Vzr z$L8ugO(b^euClAhtHJW`wCwrWo$+VrpBr^~{ooTuOe23yr)mY6 z;9CGb9Tb$~%gMh*q(g)@X=Td4xKYtlE`&orFi`$QBo;GY=658{Kl8ZW=sR~1cVO;g zoeo@_J5akkx0kev?8+B^FK|{~##`s{H8BOUvE)? zVwjH&g(&&FvKC+xNEg5(6D^+gQm}yM-|-)dyWaGJLZaxvW7nBZrUd^Rypk`8QQwPy zJXONPJfFo_(Ek4t31#kTRaPfnsRMa*GBb}d|H$Q)Z+WES5vcQ>*xPb{-TxQp57_I1 z_V{+@uq zb%>D8xpR+xMd7-8O4;chwZ3@KilsqDZUT4mwV6)6C$D$Wr86I=@3y?m#@tu!=f_RV z9COKaiFL&**GPUfJ-X}X&A!ZIMY!C4+>4sApV0KP-NNVc+6;81{rnN#Km?zpV>Yj3@nhs84=OJLsLo3m?)oB`~5 zcFh+iXRB20-5y^xW#tT;v!)b#6wRF57yATq7E{i?%GzV=>#Y58PEgLC(%&V?dZ3&k zEoD7$GV6iQV2j}VLuz8%HZ@VsiOCr$2XV>0d9JvaaO)gapPDHF=d<>*cG(DSN#oEq z6wGs5*xr_P5ze`q=T8TH-*MW-Jq{0WPTahQl6xG|xzEAdKYrYs|K}TZg>8l9P0T|J z|L!aw$y}E+uL)l;*AK-lI2Gs5p>I+N>z8t0fQN6ibFSKnO?g-+N#XA944j8=_aj{5 zcNcD$=jZ1^^8#o;mpYh3UCd@3G#`8Z;pX|cp3?fryUNtnk zG(xrgNX~wlerlIJhSuR%7_Z8&!-jK_uIr+(Z1b)iY)EgK$l3Pu*oraF60<%m=VZgU z%gwGo`)nGGAhXGtJ(2N0p~-1XwC{J5Gs?(!<{EWLNBVwU)62bJ0qNz;H0#&qy0Xxt zX#}=C%yB>9ydkvi?mV%5me}O0VXC}o1pBe<1MbsnH!kkLc^I6?5V`JF_Cousx!!>N z(i!ZPmg@cIH1=@i`&!O0;h;$t&O?H8*@Fcx*`MW}Cs&j!+NE5%_I)Gi?8D}eR`z3E z?76a5K38zd-E%GG-E&cV$8GL&clVw4ZE_b>6g=XFSEAvW7}_a!wNI6M+QnXwle)I< z0=4SZK69Gd8rZJ3vOZ_kSKpc`0q61$(%v{{&pj8qZ6#ReJk7R6n@gr0(6-ICMP2L~ zG}Lk0N1OZ8@{JRU-@Lxk(@XUh+ulCvuKj|uJVx4g1oi)I-{YPwVe^XJu1eGPH%BH; z(au8s#a_Rp%LAvRv%g_*&O9_vk{92__VM(Sy6ttnbG^~zhgr}m4|?T7w;bBmOwN{D zcSu?7s%yF;-L5XK{twa^q;-IUGtu{jah})M)jrkz?m6f!ecyR)pFqydhSFSYu)AiU z|1ig2FrM}#HkKOAJ2M0NILaz}E@G=G(00OJ`h~`!)_%-UZHvLI2g+pmi=Br)*mvqY z<0*UR-QA@neUR|JqVBp2AIuspWnw=j*v`_$)xR;PN7$Q0ZJ*Tv^A`HW$U6w=sPZQyWr^EtX!k^RO zBCmIce}D)qJoLGW%y#+yFg-DPj&R1?F5$1>i72$9&Vmaow0paDZv-MTWxx|=yd~OS zkWnWYa(;@*foUIF+;V;jnJQxikntpAK2Y$_vEag1@+NU)c#UG@;#X*OFXG>anIN8Iob`coB4l(I+t=h2bBEN8JYPX29)$33ofh&k|d%^ zL%)Va8u~Q!Xb3RlhdDjN(!!ia9Pc|mbc8uiInFp*fzLT#bnfRcPes@cj`8@zwugl| zPdHCG&p5-JuY}i!zY!kh{4nyPNX!K|<+#rKQDM&Q?h5w~H*WV4_xr&2qd$!PD4Jt6 z(XG)Jfk$HAkNGer%=t-NQ{0I-;`gfPwWC*jZi@y>cIA5Hl-FABttBMkCx1U4WZMXM+gvmGTN9GuT?q@^XH-xwk zgt%oHAuxSeh+Cn5yu5IcD8gdWRQAm~jOTV)wzQ^-C=(YhLLru=E3uoqxD0*gvchG> zr6DTO<{o^IiQFy-wRO>;NZnY+?eww@-v)m9t_{U&LzH;GlGZE>dP|orvuy3IDqY0n zy)d&|#o2BmcBs!Xfgb~9zxq1t#Bt*VmoH%|9icGoqFVH(oA8y>2}R|Fny2t zTt zZOm02YkEN_FFW5ST@mRekz}nNcLs2$$GUTbzOq9f7x~g$V`Zq2K2v#kzw*O;yeIo- zBF~B(C-%Q31+1C%dTKLVxZ;%ny@|u}Hf5E%t(Y%8T`TQ`yH**&{c6fe2*=d~K zn}lq;*j2q?)|BcQ%~R52qLZV`A`+wT{&sR|(+}0l$6t!7zB2(Ej`t0kH?z<;m%a1y zC~VTWvG+LBcsM2f{^ZmO!&QmiG;iO^=0eq$#(lIj8`Cyq%d_rkg)K0Lwh!5`ShW>l zBeG4;DP+CIgZsN%raa#KY;H9=!Ie$p6t;@uceOf`z0J-ZUEKEjqn#<$yol z{a%SNpt5PG!~rf&Bn>bX+dGSUSGSA?&f|Vu@=$W`2I9IZn?@v5w~UCaZn{nTOZ=b4 zRJUBC+FFjqRyR2#b~XJhuKM`(s%m#vC(Pz>op<|e%9O~wPQ}@kJf%SV=GF}c^k0zw)b`CyJlML=fm#{)<(A4cHnNX z>@)p+vacTU}d`*_%>*ZT+Qe#Brfd*OVxDEc=k>M@!zV zG}t^~-7L9V99y;h$n!%x6_>r!eb4KeQi^RTez#J3q$Aa3(6#Ul{Aue-?rPk%%hAv z`k8G}m((M)>Dd511=rbjNA)D;h!>e7mcq-zt70Fvd7h#jM^(OwJ-2l3fjjX+Zgsj5 zQ;8ltZ~U&d5vsZw{&l5CRl3rXX=`rY7~SsTcQq}Rb%LmCTW?csU$8cHW)QYRDSzW^ z=^s*Z+(t@n4p8*z(+pQm`UKz0UL!hZq!FFVTrx-WCke}u`!vy;8k_bm=N_i91_n>L z40wt5^+Wi7A2d?fw^HE_UhKDqJ8RGU(DyRN5ci)Y?%%QR*9xy5aQ5H0_jL!noocS} z9D|->7y7T72k*m%pUhWTV>!K-xnn~m_S>-GcNBUEothrQ78U$X{r(<1e!p)bTp5X# z61JOk5-xWh?qO~%b_^S6uZ`IAI?9@{nSKv>As<0Fo(jQ1oIo5+KSYmJuMNujj`WdD zq-lQK*ESA4)FfX2@(tK2wCr6MEgxTZ0Q-cmI^s`flLyMOOK{ls6`fM9ZDFiu(Kae` zt0iAw4Dz)VL&x*fk+esfkJ-qf&*)dv7|=hQ?MIyJEdQeqS?P;#H_~58+%wlhFFjsW zjaQjVz}rN9hsXL}mN;j}$v4DaSCVOmTfXljp3T>1ZXh4f`9>VGE!T%vhLRekDQ^-O86dYG`~L%KeWIPC&;I5C-X7vWF9sK zM03}5?mK+5CtI1T0&Hbw!yBv(ncv)@zbQ8BishT|5No*|deqVen)s&0f9pE<&%brFPzRzj~h6`Ok)x*VqcKjw_hJ%x@Y<#ETF z_gcq!pQmq-d#_I#u{mP*^Du6SE4rMuMx48u_33odchHn_aHhvBUm>)VH7WYuB>67u zUHhZS1NkU8LAivEk3vJibrPJXoN>9Q(cR-a*cpv?%lF2}CkSe)0kMJjbCcN+_Bw?NlM{eAgn%WUL;@xGT&&~NRa|9gb8j51>FOdP9UiZc5)8OMb8B<}HRh<_U|G?aZV(VuUH7tOv3Jk9WD zCjC?*ZxMZ!QMRFO8&JmQHmBQcbH|DADeLUJ4#Fp*Cog<2ZB6Wk$~U%PV>KH(N`B_2;wM)SKQ$S0KCCBxit6Ae`F8Wq zW>q&M%N=LzgRcsfA8Ow({i?A1!BM{2p$XZw#oPDhKd}9o{Gka`%-=)%Of})N z+kc$D$n>99TeQ6@e`ufS9sa}m+*Iqw@7e9o>Nq#+v@^`Ol6F|1nYCNNEpdkR$q9*{ ztK;Vd#Ge%qKffdXus*Xp{H^@V(fOGhke`Bp`13mA59>2O!2gyGe+$p88qaM3coqc2 zzr7>=us(ML_^=I8Wg*}2)_KzcWU1W}RR?o3onPZ7f=X1=l+Vnh=Ic>+D$y;NH>vg&y3`G2Fo@8u-!06&K=dGh^zQk#*pCo)Icht1#a z=SY204{^t<%Shr)u53n@3Y;U!{OGl7EE$wV%Kd+*d{VXs>_j(QrS?C=*yd$^bo`{M z7J2MGCvzLxD03)p+c#a+Z9^lupCGw%Jo03e(WkQc&(7+mPs6I4S+j5cS$K6{Y{;Ku zZgY(MHyo4wwE-sns#IhN<~v8t`Hr#cBD8MMVMQq_^AnLL616-5E|KMqM#`S6mEPB1 zW&Xj@hrLs4EN@!II5|L%lZ$+9*Eo|a%P8{+@?V)AU3r4M(~sik{+-x}K0$x<8FB_| zvPq`wW6COWXNV=MH_%UtjatjDx1N_Xe@{Y2KR4BZyr<_~T4t~MpZ4+G^;__B@Yzu4 z$Qv}5X!LeJmyk5ikaiUE_-rGt@_9#GWrN7N^D|}-=B*D`wGATkcDN1P++EP&cHrg? zgATV7_p|_a81Cr-?r_{U1-K({-yGnM#62Ux?ZQ1Xz#WAWeL4Z3M_w51h{|X7xpl7OvC>s_Cub(kd!ckx-C^X(k42tDPW>PD!i1mL#xZ&E@3a9~ zUlKq0Ep5$SBa!y=z_k`n+U?JtukLepwQGE^ueE3U<$d3zue*aj?{@mW1@wWpp|^1> zdK;1EUR{4=$cwb8GmQ5(-lyp|L>3WQTEfJ?QQEa`(-Mx3j5(jVfqClRnWr`(*Hmz> zPh=2uX$p=bQ?@YHOBrmLdlh53EkCaAR(|ZCGaCO+`LTb{c>lT4-~FeM@m^?e+mRRf zQRacr@Apl7U(v5f+m<`LC4ak-TRzrvL6MgvpJsn{%-GdPpLg_G!{6EF z*HaETv&3(iH$1<5MP03t8jU=g`#k5BLeG)dbB9?0a|c_FmpjDmyo&58c{OD+zG3H8 z=DV^sBYBlQVVSq?qmJyjX4#Odnn^Q(@}=??mEDaDceg3OnSEK=b#-DF|6^o+ktaiO z9^=~$lvU=O!e>XR+hg>*l2+DHrM~Ssrw^O*X8kiau-Bxj(3|Pt37t-9KZ7#aX^U99 z*}F~V_XEr^LGahpH#ak0r1kN=oQ{0WT3#-8`pejBn%_9u*H%S*89yX0d&A}Du=hM! zx05Vu?|66cT53qYt!-fkt^vt?9NgdqJ~dvSOH|uE@LBbBybYY18gPH2;gQQG|0#UUJZPj$Z6sa6!!!mdyFd( z$^6P;AwBW)#pwQC?yavd6vDA0Q0HDz4l-r`m3^IXEf5sRDSMiSl3Y|WL`NaJkP~4)I zAo&!#uaeLCK(jnRvpgCm0U?!X_f_iUP=s}VwCE*_z`X=0_2L6w4V3*|&M;?$0fz&{ zE}ppSfl?kh7c2GiB2en*$3XU#GM)g!!Wr9vLJz+Mvo-@IULH{DX%bNCDHBLPo;SvV zStEgxF3o~j!+=sxE})c)Ie}TO2B6f_D?rKbi$KYr*jp91U%S!qGToWlJpd?pTtK1E z89pYkK||JKOgg;?9E!i_FGxLKWDu8n7Ci;L^4NP4m^BGF82>Rqq02}MF8qjg$j^); zK>6MqK>5y(fkKC!+PzuB`5O9wQcu*8`Q0iYcq0577HR0y(4!&1jE5?M<3-1QY>YOc zfPmFe*M97T?sGk-t%ahF5LF-b2I>bpuiAap6WHzCF>oh0QD5}<2V?2e)9S(J>YZ1I zIrm>(cl9e*WA}4p-AJsFj(kzFq|E!5$&mfjLPzuu!aNj8o?(QEK7qX-`rq1JrNe)! z-3PQ=>?2D23Oiiz1*G3AZeDvov@c9+gR z|0F)a9ZzG3dj{VQ49_5DpgS@oelCH5;g5u*XG0?>oMUo9?g0A{W}eul4GMoQB>wk9 zzBfMPdv}C{OWp$WCyqe({|yO$IK;gy#C=_e`?iqpuL*IBeoEl?nnT=kLhwBrQr_B- zaM242#CKK5_dX9v9}yC+I_`lE)b6k(fDRLQm%kg@G=BCK>?L-XX8Grh$y~}t#0G?y z(h$QDK{jl@lJOaR$|L9;V0UIHLawytE^E^OVjy8fDhoM+BG+kORx>BSsAdmBTGtrz ztxh2>DED1;d+fYx^M-+W4ip;$zS2{afQyQ|y&oHN8`do8;YRF0q#YG(pPcM!{jeLG zh1vq4uxyaU!){Cxe#N`6ujumXo{S21YaKAu0AK*=Le2f5pfom^aRRDk6t+Z{j2f%2 zbEbzd^_Z@mU>zJX|6k7jU*`4W$6AU^-Pk`VTe{L#Ve0ODQ5}7Z^2k>$yC-Sl?%_%M zo)z$+j$^wK&rJO##4Yo=QvD^@cdYn=&qVosrG6tFVi*0T6{Q&dEM75IdTcqj8Ep3? zUgK%d`D%KoV=iOHM_dhhE_W{V6zSzj(fAI1*K*tcwYTjw&yim0Txz^dKS6i)O*{1Y zr)N9#p*nEMkFMujgUdTZRu$x7JdnrpXz(~<`F8%loW9l!(#s=qsXQK5A>`)*@`rpc zPf(Gs#RGX+dm>qe+*dsZLD9nmO%h4GHPzTW2afr7^t50WrVAbVT7~?U7dct2<`tRY zt3KV`pDXL{{ntTM`!pSK8@OL?>M4zHNatGFBJKBTZ)NW9R5?`b9`laoDXfKwjTFn4 zhpX=L=X2Y)$(?@P+rFA1>0?#-Gj28i3$2fZjA)+ooxnL?*v-287QLn+XRUnt(5p$F zqpJ6D7Qj`~d8acruvlm7yti5O+dR=KVEwN%%+!ZsuffJ2m`?7X^sv{^U6`zsH?Yn( zjy(g}_wsBrYCZk@S(C@9w#i$ftA9v+Y~a0>H!(sTkUF&Y*KK_O+xC{d_Gs(EG4I&9 zj{CC3-ALUXHMSPON4w><>sHe2J#W#$#U3I1lbv-5J&Ha4f~`i?S~xn%*6ky`Om{kT ze72sk`6D>(LDCwewZ18Od0p*xQJ3bLX9MeLf%h@@bPsJ&Z)+W@sILX>GI!F}DyMxf zGT%1uuJ%Je*PZNh02S+Dawfu+hMTj9UE7MmTAQVBB=k1mmBkmVGJ0aw{y}4`x}r7L zsu+J(1$^#;hnk`DcWD=e+>e;UI%ZDzcT;kVM0X+fjCODq<#?3JlsoPQCv>(K;Tvf) z$1Ym@z^EmgBR?xN-ZObm(lrOC~=%4N1N0@7-|7GEsX4Zo}Z&yt6g!{8R#-2&X zxii-n`>&I{*(t5*2UA)nXJ6GiE<3f=^{0E@Th4x#_h4$PCwo9^qH}SodkTzDt`5B>4Xqluu+jMz6;DD#h zcJwgcNY{Bj4y}CT*++hT|<509#xL4LmqKZM@%ZMOqy z1Ftn(G!z~%+k|#Y8=)IcvS}@R^?*%p=wbUi+B?&SerJXU9Rb$cXJTv58_QW$YlS~w5K84Od`&1JaQpNQCnzC(Ei{-RG2&x_5gg3p~XHH^_oLp<+1 zIY-6U9QlrFJ>~3`J7(CCCr`es=1z7P<)@rGpFHV&ETuL|?fQ9?dUx`L$kU5hM>a}V zZah6!CA7b-%45(G7!8h7MtsdlXF^S2+}8>F*j&H0&LyVxho|5PpQ$INYCYsb+R04X z$-|Uu2IX=yE=aiy%H^g^!rNu^wJo|#oK-}3Bw`mjBxadpjb3bcVauxEGiS6}rolrF zV}Yqx%?p(2BswFbuYTvr!<12c z9!VhI=(U*nUgCN8N&1l*^`PQ>T0(Bou=*#*{+_x}MtOtN|Kw@su9TDHyHV<*)vAkU zOIL3ke632DeAudsa&UMYs^&CfQ(#;>-+}pTp&gZx?`w=`vrgEAA-}jkwZgrLGqdNBFn` z$i1lCU+gsf<+tFH{ihk=n$g~VAh5rl!QG_j#~iTRiS%O%*+R~hKI5{+9nojA`hvuo z3ho6JeVQolzMS#n@M^`GVHIvz`QqF#i`liuNNe}wf%ypadq(HEM5zNaI{SE&cSHO3 zTj7U8?59jt+%rl&OaCi*lzy)Y-5kkxJ!6brjt63_y!!}~{7XM+_q+br9-8ET?cqt% z?@Rw{^=S`I`tH@vYU#gR!#KA(B&=HcQ|W8u8`M2^Mf?T5;W_vVo%3M%hc(5W2N<(O z*DkoPLLV@ouM%ABKT&Ub&z(Gk;^Lm!Ztmta$cw7E1v>1@;r>qey^^z}GpY0A@T9cY zXly!vMt?k-J^vRC-^Ay`eG`Aq`S&BS$>UBLYSZES!{!}MNbr6ht~L#FWR^2d%>UTP zEKdX0a&F$zC3BS<^e@sM#6eVxR3&ys6lyV`+8g2PTj7t#QO#{3)`jV&717E{15o zb_XWUl6@D7ITLL2mB^yD&W6oj);Z!%{$ig(^JeFr#jS;Jm}h#W4Frzkb{nwA^A^I3 z-hOaWrPo=Vj=XW)5mos^Z&aSo>55=eon;-w5Vzk?3r>IM?k6xvzRaYbgI8qQ93uZ{N1A=a9F? zhz*7r;JX>TH=!3XowLiRQW3(QUoRg2no`=wL;7}Y zZ&S2iKV;no#tG@SN&{rwBF2d##);$ji_F^slr~Zp&_?djZKQ}cQew6d83U}d`jQ`O zp1{4?I7&jz;F8U=G^BZ~h zZR_89W}9QzI_c9)f9$tR@x4qP?99RD*5sG_mfwzTgA&@SjQtG{Icw$oP}5Y$#3f0r zLy)%dbz|2M&gLA`diy?1U%Jq3Xoy4?OLV&Mm$NEDpQ3N5%(H)1)n70NH+6NkId^e~ z_pW}|Sp3{@gFmY{(x25d&ez7-*97b^Ol%~M^o7Q&!x6&wGzDre4E4lJQyen@)^&R@dS$GVDo5Y~>miTlpFJKOF0R>Mi_E zT<@rEcf_|W8Z-OCDQuXuJEB{LjGcWU{^~s`>|O7i2rrCvhH+jXp`~H$?H8hduqUNu zwt9Ik{dbW{sBGNuK*7<%e=YFDgym=dHgfheKT)fl%sc;zjBsqIYWoBlURWGn9YyZQDs2iIxpOZpo?cx$j5+XZ?&pY5*NJ@nH`YBy7`-ajt6r5q;C;&B z+jLR+Htmk^ZTd9Kx9Km#d>h}wZ^yXQ)Xz32r9OZE-lqpN>3z5?!&y*tN~4tPzyqBxSfuMO1#W-Iq7Qh^YJ<@FCo% zfd3PIa8lyG#jk$9e#xk_^-D*+=U=kwT>a8jzkID~)q&TlMtunU0QkX!X}$VBls5YS z@a%)Yf8Cq^0q^eKYet>(FI{!kzjV}rlw0$E@!+ETKh_lGpB*?p|AS?V^A8OCMgIN= z){c7Vfwil?2d?jf>u%sZ!1Lhxqu>JG0{r3!d-M16elKNS{ygxUAx|5?b*_HNs$ck* zt=jKjHfnqC@=?F(UA}4=xF4#oTD7yjYShnxF9Fwq=idijn?DX*@%%ouJ#F?<@P+Z- zH1OZ@w+RvOm7gd2+J1-s9u?j4%-FmOE%5E<*H5k9qvA|=+3-Cn z8Sv~L#TW|DF8ltTluzk{F2a+4XHLhudlLG#yFP_~_e865X~P+uQTsRHJs*0g)LWUe zSLF%A_3k4^WaXpq-~0UjHnyH>cx%Ibo62|(w?)4D;nlv4JK@87?~hHrWy{{D4*X-m zdk2;~QhybZIrqp^cPbabBp$eNo_pSwm)tKo620qgRK3?sNls1t_THz~5qHfLM`|K* zH{7Ta<8QnLTha&Ie~@q7KQMLqcz0?JI?2(bn+4z2!nZZ)j?`K3?ThejCA^xGHOKw4 z`(HF|hP;XVEj+jfUUb5T|3zOtQ1fAn8d$mHJHEU!=RkCIUAva?`v>?PdGP<|Md8KY zKB)5kvJGBzx=!zf7dJw?Mv<9a$QFz%QLKM@^_s@dki}XU*JN$rJbkIXrtukbrS8@= zJgi6b`ig5Brl<45Pi+(A{fhKH)LX z`>}R_TQT2OjI*w1vnS4oOTOOFXJ2K^9EATG%8UME!F9aT`Q4Xq$hvTU*6j?wA!Dws zOX!JInQd41uVk&^_tCs^MyHuERo1PZAN=N%wBMR*SmR-BFZXA|fA?e#Ydm`lqrAmg z`Q&jYclWSX62n@_p0>!-53ok@+47Q&d93ji>NTDkaO8sHIBQ{nab>N<8oSBM7)#cz zM-GyDYIpQ+*@g^fh@2pK)#a;)9!Fm?7}G^&uxtm}<@6BNw3@l_R#h(a6#9AK52<@Q zj_u!oOk&f_&)TT{8$FgxkrjA@=bnGI@>dcfyNAvpyE~`a2u)}| z?mXsNj;bBc?>~0PZ{6FWigG+q5Klhi$&w|sE zeXNNO`p>@QRm2^HJebXTGV+8ecUfl#`slN#))@kk#~TPY)Yby@c9N{QL{~dp)aU%M zmk5`H%}_#X+kJ7>U((LR{(#U|?6-+MF|pT&J>C#GJhhd%4)V35b{}gj=DcW|v-Zcx*lm=* zfwyt0Va|b$!E3_9vPLyzo76)xZKWUUFny_qKAZuz)|$+@2x;uONFUly!$ZDWe}pw> zWFC^#5D?y7yU6~yvt7u1A#h$B+BSNsXM=kF^1gg%G7H+|L8DxB>2s=~nYpJV-)(>0 zV6N&UJdAkZ&@KYn89{T^CidR8o4grj+OQB?7BYvIGe;H5SM9uodE!v!iMlT_=ZUPT ze1e~~meQ9wgxFL|stG5~-!z??XbZ^1>^;(N^U65{;Z2JkoTuz2Ty(>~yzeIRI-NXE zqfApNkF`g3adp=lM~x+K9bVP^Z4 z@&>luboj&1{QKEkW&VxrPEA*&dj&&b6S6tM!`Hm3&vX)ho;6rP^xO z{CRX+z4Uy!54Qip;jb{-sBLf2Flidx@Ahwfg?9QM)X}e4qu&IN?2VDJtkV{rf0F3> zbLKo?d~0BCY_IDbMYa{1%Y1q7RIyXRd38)x&-mby#r8KwiDL9VJ$*Hkn`9*PI`O72J z+-!b(tF{(QiFM>3?d7bUV5GSnbycf8ybaNg+6(ihR-Ya1d--8QCHW$KwWp^}t##Cw zk5cvJtA+vx1H%T4$)C=9HSb-#U*t}yoigp;S1I1byn}gvGVP^R+j&3b{VlJbGm6h} zR`DQbIFE5|(UIm{hh!{0+!pjVB=DKuQCy>GYAM{O^2jU%S49vfPs&yn^WUuzs| z=Hge3-#bQP*>Uy{-Z5gzj^mEzo+(*3+`-ww*b#?QOg#nWPqFyd4nC4n#@WW)j_RHFTa*i+k zD$c1co?7j8MpbfNvUmF6Kc$>t+}^=Gz3l7mI)!|2nmM)5bF{w*8h7> zRb{FSRFEN%kffN25EAA<3MyfSeo&-Fg{#Vy$R?X~B%_Hg#ud+mLW zB2SyC)kJrd>gUHj~%A)mTz0SnE;v9E& zC}2KVkY2q(Ac~Ouqx^-~SV)-;wkm_zBaG zB>e|}!t|p^f7VZ!ekaoZx1TWmXwuL83Db{3KWU%iOu#!PO^gPc+ z(WQ+;w=RWyhaN^}BPZP1V6V(^rB>#;x>V+CqcGjr-+C#ki#8gpi|VS`bF;KmOm-A^ z6h&>)Qi51#XN^6E=VvYR3}4#6zfd{F$@8nWUg>K+R>8Y6@65%krpSAA*Mf7&tLwsx zs_Me~RySqwoXK*nxAZKs#bt+G0TaRQtFpuVFq10lU6U&}yAs)RvqjfyHh+6jBIZh) zo<-|1x%kh)|MMvJ(wE)x_hZ6 zcMA4Z81rXJhUIf5!|#lm@iOxY|1+kHzWY>9@0F_O-W1i-MO8hW_bHy(m5L`ZMe*24 zvxhn(IRW0|_bKi^s_IU#&qzM&=M3$eqPn~8Q9bJ|&d};0XDDg7yDo(ebcW6eb%x%% z4>}1t1lr~d?RrD;blanNx-6BnXC$x3t$&i@>AGF@xJhGd8)s+_<|~~`RL^A6XoT)I z9y$@4Gy)==q1_)-+_6^_PdIUlp}W2Zy&YQOMms~h1gY-C64LL8KXm8usyp^E+!7T} zzw8;wiMS=cr@H%ZQ$6$jiK9Bx`xjuhQWo~#E-TLT9=%l0-^p*lWW`-#f>h#od~865Oi$SRnp0 z6?Z?0SF3uquJUF z6y+JvL3NjeLDxc4p6)YM_XiR_Tk#z4fNY*q-CM$)>3!^q=gm&e&^{lj?qZvyr?`*9 zH{sk@pu5yU`$3;p+)uWKU%Toqr5s(dRrlGp&h);us+;`rSKX7^IMc5Zr}J~Fr^ign z58bVU>KRZwBY7%3d;s0~BgNDGImL4g9!jCR%v3x*Iw+nU$h5kHGre~&#oetyaZiN@ zTZA(`b{lnkUU8p*hwzTbsh8^RUZA=cAk!!D@3M_{bY68|L#9`Wzk#y%cB`JglU2{0 zPR{fl$nxHB)zi(RcoL$W>1`-`qMJ56nRXE6OrMI(?BR;1bE4vYgYa$Ok-XB6WA9U< zNIvNs2zQooY2dyY$xqX^zotFgsuHx`+ZFdhWWSTLCQh?v+7~;`GWwRN?w!c;=^)aa7Mjs}yDIV1KcpUP(RS_LE2{fzWcoCGBu01E z7E*?t)50?DeT+UhUiD0g?xOVxQa$nSDW1NM!OwVj2vR(y?7hb(DQ^2x#XacsjO0a> zaYJ-B?cP0#`Q5nHr5zx zdZ`vSduvzJkGUgJ?h#?H${C^DP!_g_GD|g<3!xg;cr?g z>+JWiz8=MTa(mX5_5HgF^g?H|KC16i=z9~K%_=z;!#N)H#g6A$r&K~!?R1xYj!$~* zbEr{vtqXMBGfNwC8M{|9W-C#hwb@bKG-p(ec8J{jk&ZS+v^3c#F_XjI(344yP6VSCDA08Ap0{=DSx6SZB z&wH|b>qy$(x2ARvt9(z)M4ozE{NdeGcJE%<|M`1iQeRRJmxhHFe%U{)@WQ>V3eR`3 z72YcP{aE(pw^fQZ6Q8?vir%9#>lF-wbs>pwZB)tp-riJ#}(l}yy!#1w)1xsMfxWfMNJ!;(P>&zMvQ+_(R9*2 zM*N)0M%Sa{-;Z#Ear<+7rRZ4I?_4L5&&QZ|p%>!!9_1Du!dLHb-BbOxW~+KrJ6yR% zJ5s$(>rus83u!bGe?3O#-eaLxZ>`bl8B0Cjn=jXB^2{p5T*JNr+)(u!t+Z;V)}1w$ zI_}>5%m^QDgnc? z`>oiEwXts;&iB$R?*FvyzeL-|sJ8FgenqSAxBX`HP<{QN*{s_;8-1dS(I>jnCssdn zF1eZgvMq|LZR7K?Z!0Ekvtrir0!9>-OsCCGPtKT6TUih=tY{%^WfAS<->GMZ--x0S zwAY@r)xosWB--hapCx4srH#Ia{}=SD3sW5#7wJ2fEy+dyvJ5M_H8m;YON;cIfTE-L z{|Wyl{Hv+kAj~q_#c{&EOW5}byN|Hacl>FKpW{Ca|MRp5X&b+%-!)ghto;YrWA!_l z^uxUBdhIB9xbihEocc|ac}i7{cEzwuyV`EpyRjZ8?MT8%dpU$|A(yfh9ml-eMkzXh zaaZkfsjF*UcKUQ;)f?J&@?S~b{fIY(c>QThG8ZbT+ODNk)oR@%CTq>?4;~|pzhFKh zjgK)$svBI1)o-~HX`g2+8?|b92*)H4-$wku8|fAB-3obc8cR8Cq^Wist7TQan3ji5 z*;VunV^q_Xm4E-w+Tmo{(j@Ns%b*=h5zAGvh%ZbreKhSs4$43q^1FygBw|tK$2{ zsp7Wro)R3WxW7bCx;M|W3f}X-LSMR;KAeia^h@YVTX?6IIl&d?=$vbG%UR7Yg5@lz z?PVLfr)QWWhbxw~Y9Hs4RCJfO<^%ci|q4=$}nf%sv3o&VDkn3lh_uQ-;OWvY1IT~3j-_BZj>;1JZ z+y2`4{$L`Qh%Rr5q0>7_@YkEPM9lVzIj+WvIq?Am)~rbD1>~f8I6D=H@b5a4GS@O-a%Hk|Pfl{BwX&?vnxk0a zMk(frt8uHc3p|QtbNeol^OUm{Q}9UQ`(B-KZubu{L-jhlY}A>J@BNv$PtsRs>#4JK>Ya6V@{T%V-vXWP{^)imf*<5 zoAt-*Y*ja9$&2cpb*BDkok`!TY*A;Ax2Q9@v)JmbGxh(GI-Br=Iy?3Mp*q`m*E&o6 zf1%D&sk6)$b;kMW4?@xZmwtBnKj~+7Uq9pQw3YK-lJPN-zSf1lmdp59#rU|La~YhsUpt!dQFPNj z=NWWZ`8fH=_r}Mcwyzz#JwE=huN_u?oqU+_vECRTg}*Gu$499*%iNMBm1U;L)n%`} zP|x^SXR}4FW}K^MoU2S;ZLMbx2KUX@&v5sfo46#AzV@hM z4wi9M#?TyN{FHI^QEy*Uz2oDr86SfUej_aaC2$)~a#;JgU3b{UGi+ zm3dko;Wr!M>%HOYwU@$KlR&?HB=z`&iEqn3#$18tPKb$pab#F?$8$&IScmKiSE`;o zbw*kJcxPy#s(R`tgDVwJ{Y=)sIaefiDb%O@E!{<#4~=)GyHwSEXfn7Goas!z;tX)P z_9^asyR-Z-X}D5U_hHg-?E^^z+Ec8~EITHC`xMVH@k;^mYrTI?{BiX1rt-X*!t-V! zSPIG+pf{N#OaY%1tWzG&&EY+Av*uc=dWvo+p5mp7rv#a02dVDa zkE!lAEz$p$lcaib_b8scB*l~ep71!MOnCep9{lfjhHg%Argxu!ndD3_9Iv{^%y6bJ z=;kaxF%BNzQ{6iVcLF{a+Gmz6#O>)xtclKWhR#2&l)nM*rTdifr}me`Pc!)EJk@Rf zuNwS+(1QP`R+YrR0sm8svsDY=^GWzDh0iI`Z)(RY=eribznr()5k0``{uJ&D;D5nq zO8JPxH64m3nqIil*kOTd%g#MTvjvU;q-y?_lhm`W1L}alY zS$L4cWYs-CWk%T>$l?Qd{JYd;sx!SGvMBVZ?taK)ipZjuvwR19pMdWjgego^JPT7= z$O5-r$l)1e;5(ys0~vfn8<2BlgE_0_JF_O|)V{$ygA8^dgA*O6Yfp2&Y!|$ofY+Vy z@-*wiQ>zxbeu)g8!Tlf6gR~8}pI}}2m&jnzdE{O-U;CL6?*n8f@um>3umBmHM+ODR zpaU{^4jFVn2G6PPpAmQAd&r;{GT4R;K0*dFSx3*FQMMBqe25IbhL^U;V4%q0Bi7)N z!OxJvqCU>@UC7|i$Y7VqpqJuVoISH_F>cS`_8Z);BZH5SLB|6%u80FQ@x#C*FsZs{ ztEI>w0-PcEVy%{h`3M}=JOeVTrdjSTFHyQo%iyX>mFuvT^d zhPaFWhz#t=pcWaNMh4lcd-2K{Wz*qhFuV+=Pqaq{-!M)TomSm{VVr=!^d*VT^4)|v zNto**1H0l`x^iaOQrw=yZ4Yik56p>=JWvw&T!Z{?lUyYZ1izCVID4IFokp5$#|mGU!D+*hV|(MLXE0y044;JjkE} zGI$OdoJR%)s(VT8jI!OdgOjua;V%Li43TzlUUd(l9n7E|JTlN({uccH6@K3m8FWxQ z%W7wqEyL{v+}_5m3>nNq2ET^)jqv_E@E!0Sc>gE7Zv;;X!v8y%S;(La89X03OM3tr zl)=mM@VX3M?vHs}i>!XcRfY`8ao-!0>~((u_cCNq_O((zqk4(fk$4Z{|17e*-z&Sf zv_kf=TpnaF85txZgYC#55gBY(-5o`KA0h+xw{qRc;0iJ*QQeR1n^E=_GWaVpxCt*E zk-<=r!4=g#6dBx)49b$6<$K}x6#VWL8H6jI@_jSQ%5nP@ZtvjsTV(JeGI$r>KZf`7 z;J4tn@IGR7&y0`3XhHb@7V{!9_$@Lx6`8613SNE-FQ?%39eDXw%sbkH)#a{VBZC)l z|5wa#Z6ofdV)kmkhL7bpl=8Q#AJJwR@rv2+DtS-wWRF)ovy(V~yN5YllIqUeqq_f! zTqVu>Nplu)%Rf@e3)vTQJ%*fucs|_VnZ8tYm!FW1I+caX^nhqL@|@c%9R$IySy!F$lY8du=Hn)txgJzMpJ*MieC z%eEog_mJ&*WEA+TTJ0QsC+?dQKZ5bn_pWw@wju9li7V&C_vkoIyTVvMf-&H1Ob;!Q zu|f9AwpY(_jbLo(iF-_^5nA9w_l2!#XLX7Hm6+|?h+z+ey%=D1jiBty%aaP zeguBHm-LJ55 z$e6H6)JYd+Zs_fdwkmF3zsWcEvBbA&Yrd3KzQ+M!*w zNE$;5x3>#(H7+3?WO4N&;vkEwZNgk7=|c+};s44bGr}e#iz{6TKRUUvamJW1+x?@% zCLxPPc)xQ0jIhM}r-w~O7FPyHnBj%>PCwUSr@u?eH#xPnD}gd@Pi+et<%7@d@N_k` zy{pa02-l*aQ^Tf@?CAOj;l5$+^$)@o&r}NQDc9(HtE)ag%$5Jp)UYwg;`6DLt%IpB z{}E_p@p*2TE3bp4@H3w2dHj;UjKHgHHi6Qkm{X>v(_^;lR5Y%P;_K3 zFn`SYZvNO;&g9?A{4qDw6c(&l*M=|`UyVJ#le19Pf5K^#vW_6TGH`=|PaF741D`SQSp%Ol z@OcAY@S^H|kTtz`c<+fu-cRgPJU?Hlcz%(>x*jrcuTxU>9I!vEs5;x;oz zeM+3ll@FGUVm!)aJUR${eq@YmP1B0_hnfoFgN<=14V=LEG=cHyamFVZr{)U&YOgi{ z^H4=W{F;gt@#YQ_c(*Cn)=+omPV#QE-1}}bt}@5K~42hxI{I^5R5OCh}c93Ixe!|PxJ*Z>b-!oxc7eL?tWz!bvEI(T`s zL%Nrjb@1|N3trOT#RV^agqJ6_Q%5E6lL$ZI)X`-4aZ`Q|<#SVp$?y}dc&bWpOZk3X znRs4)kEiX#>EJ9s;N$6v!P7pSCoexdQ+@$IdGPZ&d|ZN$E!?9}-&7M{U)i(OXWX4| z7JiO^pKsi&)noGDrwV=!u-74Vvl@Ox&&*dh8Ss+>KeO>euAZM4z)vsu=>R`7;paKZ z{t;z+41Sg>?$vu(XU%@Ftd9CQi0scGV+*`=rGB2cp}4zJN292t)t#K>tKp@ddXRU^ zC&nX((+`&A2d)R#L8)81Fs{9@#KE)}-ax{j|}!QLar%n)Z47CP#O>zqY?? zh-=fR2v@hH3EJ-pH0^iLpFfk*kQeKx<>SAZ@PETUFDXqs`vU79vHsd2+`4z#rj6+q z=GtNp(2fvii-Z|6O8ea0PE;lD0ZG+EubNP1{cX-R$kP*X!jUxOoS_E$tW$?-a*U7uZz8-R&S5g^6*;L|Lv_lChE?Um8y-%P?{S(~ z|Ka|>lln6$Fv!F+De%H4=vsK6NnoH&araUxo|Na(Mb?JWyE&JH?aN%!iuJ2Y+?{c` z{FN7EJ*U<1kjTs2Z(-v;j7yI7R@?GM>m}6|cZ~0_hU2FA4+vM1C*!`|YEx`+HtxLO zTcW{#BF<&*#5l@*7?-#YL(UR}?Tc9wcA7l6tK&=Zc%3|C4e85)A(5{W{*w2Om|qb7 zb!!9R|D^JbRNSuk4G2#huBX$N?~=CSE<3&-6)gA4{K*?9!+O*kCoC@Xbj*@KJG@~= z$XX7%78$HBik`=Lc#Zw;8SK3mM|2vx@_ZYOUZ>6COdGR5FMjO)Jl6^O%3=D-*DdMKiFvze{A@#{{$viH-CFmA%g z+Rbn1D}ScX)H7fGoIdQ^=V>Gy^9OG^8wt0Ea3|?c?JVro(}rY^G@Es>^IaygpEiMg zwejqIj$;pAKd*gh*e={u{7me%nb~`{aGu+bGtmB=g$`ivlzYaO1+fora({au+;iql z<;K^tf5@Fra_(JpeZF^=*4*y;XKyPv_Mj)!lRF1w&%KwbxUJv>Q0^R*%kY9aC?(xv|uf$FED&-9Jxh|aF=Dr;HHvD7UsdQnW!u=F{Q;qn6 z-JCZb4^&FN=+Aw_+ygc7Ml1Jg=s8`;QEt3q3SN8RKIMjdO|$n%O>mE zFNP^Mz9ijke7}5K_n@_XZv?pIo6O=jDTq6vxI<>!%>d#l?lk-^azDrf+`hP1;TyBz z7fk&!ZhpbNJS)u1NwH7hPM$CBQTMDchh3P>{Zit`B@OGjY}&ofWO1)Bhg`Vyf^wrd zaq7(p+}Fc>lY3%J5_j^=^MpNrRoU~^1ImpUlf>8EF25pl$b~CUaR+g~sW*EO@BF9A z9*w$w?W4tS-k|>t`07LaC7gu+ zdT^6N&YyjD+wL?gK{H?JBnm}zm4x$%6*EjQXg_RQat8$#?ti|xu0kqri3w8S>7sgC1YRb zvOV6l?-WbB$j+?sk7SMCo;=c;TK1CFu9)KN$x3UkSBZ>WzUKvnb@A{~?IL5jmq;aC z;_wu!QdVnCG%0Z&#=C}cTjaWdtsE}{wHiu(Zf5sgRIL6lwYgAAr!WpM}5E8GD&8yv;DbzW0;e1225YfIBk=0iK< zkAa6l83X+p1AX(O`i;A^!d0KbtETd!OltbC-CZ?=p|r%>F_h`wOEg zvf{^7WVu$8UbT^~2b8^1nVW=@_7>(_-G8}DJF{UI_f?Hy?y=arUOxwY`(pI&6DnrM z_o$fdQugn3)sly4|IYYNN$)e#k#gk`{{ZueRO}|~TS#XTMnM-u^#9GIm&;gPfqrm~ z#OE12ku!MNtCh4~D|vQsCP2o&7wNyB9anB-aUa#TliY#T-$}m;T6=-E@-TSuUhZ2K z%;7tY-0>C~6zKkHBK@3in`YAPW+zU#`4#;olm2AtKjG$4+Rv5yxL1oldHDg_SwGzk z9YyZS((R{*iNAWGc_jV`y4x@4lbPmL7o7CR-_x&Fpkr$4Ki=DqSFnd?>No!8Md{z% zTd^r|{LORN*QkMU%mXf%5_G>n+V~2!)rDBnIRDIx9r<=(+&IE~LI0C`$whBg?tqP; zk7aU)9rr>{Zuk@(NZQCn+DIU6y^k8aHq0EnHUo2vw!K{)we%=$yTNbN(hA!5Y257o zw#ZH8VUZ(gcA@6dv%?yXcBF!gmyoc_Bo%n-=FrCNZXnUP62)UDZYLE z#9!~yreJKXbK~dJ{!3{8i5;hC{i+sg_wkG^LEmCZ{u1<~-p~?O<;V9}mGAN=t#H!% zJMHxKwZY|I5RtAO|sDRDYAq{f=Q(>OfJUFOO-qYyeox*<>dUXGW9$hASbR*H7n~Cn+bady& zp*y!9|6cgV;eRjwpP+MAhWT?Fdq#J{4kPRc!uBTYKEh_B+m?d)CH@Z*Za+r!>ryM< z(N2Pu)w{JOu&Js>dk?f%ZqufryY^?^r}kHE(tc^!4_4J_?F_qw9c0+|Rn=;-=*JyG zH|{Xz-$geLbGCB3tEBo>m+0YrhOVa{dUl_a_YvZqjf&^KKhcwm_nx8symGU)kN4Ng zh*a$WX^76A=<12CUFYhpuBs}=`pP#LKVQ;5A)S280pjP7&R8S8IM#k-uJ{S}dgPE^ z9%*%5{bE`y?MUj3b6Q?qyKHprB^9jxO@a=44+>-f@+|U0(7=Ojoeis)W4~0H z!?`l{K8?NR{k)(0_K;=IS@w}rWq+A>-c6xO!#etsH%)ZGPm(6@Al%Dxs^dA%I#e(Z zQt2b-m=np_=|IkznZdelN>NYFn)!(zyq<^8YwewTzAi|)fT z;`Ro9ayO)$FS%-*L+j4jmN}TudH(tryqr9Ny3RyKr&%YI`sszN=V6z+da&MDZA83D09IJ=wOBt=Cb{d&xe>oUY^Ija~I8_6EAjq|M@?1 z=iEi}y63+%Khbdlb)vDRA$#(xkYUlo4=s63jSBwTKb4Z+QcuKxRSn_3fv}fbhLt<# znvu6}+&ag&bFRg>bCq%DZevf=9DVGOcS3njlxN~s8H_!QG1-hepU|eepx65eW03#+DU~Epr)Lav4t^VLVyFcv8T4a)9^~@Sli(8vf?C_KaWAr@v`q&lpSC2MIfl zu<6D)wF>{)nBU-EPPk7oA2Y_}RQ^``2&}K(qwNDvGlq!nZz{UKi|NnbM8|5MR=uSC z#;|{eUhiPTE@7t|_D>j}Qh0vIxN`(^it*wY##Z%)>q+!;Md#L^@uxfEMF8cvOgtND z>pH@*ULD~8!hAxTs+aToq#?S(ACksjF(a$DxwfD$Ec*XBm35k#@>i4A8Pcg_u2yWM z=No&>l)18Ui&jNi-57i9j6E&Kovo>g`#kSvy=c4E*oxaaFc&x*)cJ`O4VI@@{I~md z=O;#Z&yC7Fkv?%{A8k|C7kbf$V_8d(dxquxHCCR76I^)l8yR@*get$b1*6(lIS-Zb&XYKyBowfVhcGm8_vSfW}IqM}! zyqoQdNzyvk1@;ZZt|r=Dar@-F>5Q_GtYyZnR6QeEmyAmRS(l{FJR@0mj@zer@K29h z39`SPx;x7imx7&rZqVITb(W9v##h{p~7kMABO@l#Yc{=^4~PoCnRers5hBQ+{n zvtwde>zKfJ{W|ZCYGsjjI;X-hesz(yFQ8SCJxVXLl-Ha09?EPt%DmJlbCOZ!8n<94HrB}N$&jWSNAj6p^j-9{NbMj6A6GEO$i z=+?{Vm5b;5&U{*9)ZXDy0p~Osit0-T7RgrciAf)IlWxPxo0}^|WG%634(EW1IiFLcO~RZA2rk+XouoazIk0b=!~rgN^9-&O4@%r#s(YHmEdV9%Hc;Z8 z2Z_5A+3ci@8!&&aTA+P{j>`$k_ci8ZfVC)szTRO=VBd(uA+9*L>KVFkM%n$6&t%ne zzvL4RNh_KcOF>Cv4=8240aC_)e_`t#QAfcJ~2s zr?ZFiDe-cm61{85{n7i{P8qIbR5;$BGgo^Udn&T&$NS?h=w%pN{#>mV(*gTQ{6E3J z8hQb9$Wp?Yc&A($BYQP(YoB)7rTz2jxQ49QC@mqjlV)QtqX+vk=iVOMP!k)b1+bqH zz+T5$#_5_NW3;~Pue8GL?4xPKQM7@v0a{z)yiSZn(# zk0wWO)LYsk>?6f?4%0dk=Mmy$4V|j}U!4QBtT|DxVbR;Q2fCwIK^d2mf3)O{USY+U zcCP=cbEr4WGWLIxJI81*;2(*9Gx}u8oM>0sBU7~~$`#u=Kr5$Aok;&zQl>{{XkWgR z(ojYox__wlRdADIg*{A*A`IvL2eMeS2VJ!>!IXt%9;7KQe`MVzgh8Pbcyj zw$RkjJamTk&lg8GEF%w*LF_|Qv@&}qEsAu?NN0En->VurMJr(+D;&4KQ!mY(6>Wa! z)>>=APo`dmj#e77*sDsUZo+Y^LGJx1OKZaS!#`>Kh=$m?sqBNq6`;syE$7ubi zv(}Vj(D>mES?sgfk-aMM=Z?`jQw9_9JL5kv$kEVDKZtcCH^_TuFXOCw?c4hNi?vMd z&pN?b@?LQ=e_zR+moi@w{pU@*R|PXa>&?4W7v?UxyhG*i4kdR^$$e9!37_A@eH=~o z@$13WpsXYM@%|+1DMwgCsoStg`xKK;*khG1@qS$AI?Vf?E&3%bfcL0Fyf;;O{cy+s z0By?>U8k+aeGcYR=C5^_N13a3X>qs5N_n4R{%E`-O*zl^XWnBS_5x*>_oP4B-+%rK z)%tQA?@8#`PyBti-}Bz1mT)ik^Smp0@8%9=Z26tMCvk?-RWNtS6Kb2_-x=>o?-T!V z;`5H>y_?$?R^F3hc^}(qo_1a4cyjNpm=UZY){@S*2g142Y&?583~JJIQtbvs$J>$kty zm9W1!{up}ZAE0k8d+PV>ukq?z{|uCGHpu$j)3lTRm^b*wLNUh18ellOk^LBJud?nf z-*AxcHoRGp@2Vt?Zsbu#{5jZ5Kw0~{LK_GXx2#VUgja z*^RKa;iIjI%j>N+Q+V8Zi?UR{ldvva-*Fw$mH6UTY? zt74Q8zKt^O<~Y{W1KFd|+pyy8?{eP3c}IJZ^=&)tF%`3d^mF*u$zwKU>Q>gZL!EMe zVbIGO-(%^Ev0=hZfu1w0XJ2CN`H-wXW4GN5@KhnM9?0&^vR08tI$0tYa0X%nygj7_ zM=pT3r{S%XZ%1t4+YzOvHr{Vc&V4xfK5HA&I$QRp z^()rQUmIeHJWAjFlX1S{pb`-GRZ?)I?5BUm8uwAhX!ghJtzG%ngm+IJe2s5mG$6OX zAwS=DCWIH^=_~eHg`YF@j|}j0@EGPv`ik#+C-SWm`F@Ff_vF9x&6A(%dnb453h|RTfTjEf%PUCYuPYi zoiTWAA+neD(h40uH*G|vKI2X5#G~jf94&7Zxxajycdt(yVvXESJ<49+QHQ?Qw_i2I zxjLX%Mm;7f;lXy=kL-UW4%hcT5>0BH+k4)}b|IDXkhZxlZytS2wuud--$44WlfJG; zVfE@!oc8X8q|i=ky?PX(bK{rD8kx(EexfNnxQH@{Ud6+PZpOptTC8P{MfON!+z3ke zt`7;na_;q8_?2^Ba$e{cq!Z3LSUEpb3%{M=H$gE?w4n=PTOJl^ra#EOPq8yN(hNUx zzSA~bKi_FKnd8>?VqOiuDT*3=x4q9#cuu8s=3VsEF>$>+B6R1~K-rCfv#tKJgNAyhPtS zO`nr}sJ_X;k*A3#^>E3d*TZR5jr&CsclEGVoM5sA%NS<&j$tW`VYS{dtT9Mgx;>Qo z=X`7e^)K=WLmtOSS9EE@h6YC-BV7~mj*_lz`6la8$|JgnVVsHWP5u8Ie-CxDj`AKY z-_E{mSlp|jjE&R{Yo{Ls&1D^{SaFNqj(&dGqKW=aHe;P}ez~ulUzU3NlC@*`ChLS& z%G5C0XCwKjoU4>}x}SRMqBxgM=8SG4y6f^+yl1uCqe3FP!k?TwOJt0ebGuzl zmbmTXSw~Qmr9XCV_fy)~Z0c==qI&D?kllI9e{RXGEwTCWXDe&8%b}()+h$wevl|<= z%T2YeD^2>DX6ds%ez{3I+cP_i^UGoAu!M2yD~$8YVVqwM3z(aDi?c^zoAEo2qP441tuOn$!FQID{9=Cm^;%-HIPN%`xQLCYCd`TNw`CS|Fo^h8p@+anv(zk!lysMQGw)Oyd*%b5IaN0;V zd)TR%5sK-8y<*k#cFu0bD`9{5TatcG`YZHn`jW;`&bII4YA61;)tmf?IvDi5-8+%!v*g1^X+#9iKb%qVoZ+|Uww%YhMU|Ue;RWhgY z?Tt3lK1whN+>IArmE)aPO=7N;n4io1d%L#&_F2szo@KA%tY#%=HFG$txli^h;KzBL z@6IrmenLMOsi+fk7*}%2!a39as&PI#)O$Yq&a;N*Cq}<+`x^59`A66V=7B z|HZmk|G!ojUftM@vgc{iWWH;^<2m6s_gwO3bWpZ5WwF=H9o;;)d3L+bf-=_@U2>mJ z*x`*l$1z(fvRs=hvf>Y+7t3?os|%*wT1iWAG7=X1x@DG_xR|RcAuNY zuT5JqKDs6P2efN1v=3YQ`Rsu~5go+tL!Y}3t-&25#rS9+hJ;3Sx|`kSCK%Q#I>tx; zm|gt;fBF8j@{N!0%m1R{JXdMyygvQo2gUd6n=^lD@q(hhh4V5W&MPz^K1V4cM5gYD z$I?t!-eP5;t8`&;anbw*dAYIaX?-S+PLIVacEQr(yrHq(a+UkWrA!>1*l&n#={InY zSo-(5Z5f!@Pbn-YEiG`(i4~vN+=4lIr3+%S=gldaU$9_qVQK8*xdrp`Vsqx_WiOCW z-AW|~MbE5{#5b&i2MzIA6BGIkP>QqXm*!;_FPtsGiB;fQls&H?Hx`$91v#-j7W9Z+ zl$W!hXueY5T97y2l|3&uZ~pwE`9_8k-N?^~A?X;2&R=wAqVo$DWiQB!?NNF=RkHjp zV(i@P(z&s4T9~~cXRb0Q&m{@mHDmnp=HKSE*hpA{=ecsSi|-z(IB$M_(fmTAz}|qR z3+ItakxR+V`!7cG2D}~3JN(`Llf{CS{G3eGCL16Rl zez8VAO3yoJ!@WY%<<}@ko{}x=#fsON!W-VW=)Wujn+#Nyeg18%AB9Y@E;1DaOfq-3 ztO(erbTWTp-5Zi*`oO=Z`ir1peh2+N4<4d41rGFk(l0)+y(u+#X3&V>T>%5lc6Fk< zGvt(igGCAYEHEJOanqgvPtX!mVz6E5>9;JPRnQB5JwA7{ zOfLs@5BY=T=jL$bJ?mK0OlzM1ant3%G|NiAe5)tqymHMnFYrk47r|TnOZ`8y{?mVO zz;5$SzZKS3%$A_lK~sbN!(!1*GT;N|Uh5j4h=dXby)cwI9T6>$mHicOG z2OhN~nvPjF1!bB$TmNRdW(_rsvb+=cll^ zZeD5~67a6+Wz&mhbHE?foB&7gUxV@k{%)@F`zW9}>aT^;Etz`FgRU?501^H;rCvbPhn=<=0gQW3XYhmg zjYfKi@0*0sqa$cvto#@gL-4yYf5tBk@PsbpIyCW$s7( zLHd@Cy8l7qx4(=3yOFxT6aTx_UtlNQ|9#+YLdh?p-QCN#ZlLb} zpbkH%zjKEFyZGNt{*8n5h-=9IZu}21D*hHJhqwBnd<{BVyHxit*4x<+F9`EsMAq8IxdsHgukex<6ZDEMd`B!d|XlHRq8ma z?jc3_8R2SlbUX`Ah2Ef}V;y)O^co!<6(ARrrj_aFSO89jF4oa87n}s0tE1yVFavsq zj*dy72A!s(V-%PU?bOjR1We=q0398@!HLj4b#%mn6QHAXbhH7-L)&z81cKwBEjl`G z6)4JB=<7N9i&t9Xr5y=tdnKTfsiibvioc(y#fS zmaC&93Vehhml4`h@Dx}Ho&;Bb?}O#w4saPb1C;Q+K?xrLO87RQgbxHI{6&N=;dg_N zft8@tQ-zMRb|duOlw*gEjz;ia=vQ@g)PZr(H99(;1$#kn(9y95ly*56lyq}-oRt7d zez&MZZ@bWORvnerL(myk>wRuTh}L%L$6S27nSj0+je`Xe^T75>V1vpyRB$;A-4Q z8F-DxQv%%#b^>>U?ZK`zhOS@~DE(*$OiMbAI?k#Cm*Bnu>jp1GaX5&5slzh4x{;`I?1(bLvqxAGn=s4?LP~^KCr08iobad2#BHxW5 zMN4~DN5=+GgJ~Irofs#&$jl&N>E4`1PR3cZlK72PY)ntgfKQH&(}43Ml2+ z-9b-hhmNye1w}3!L9$AFR!7G=P~=hx5;d(tM@Jbba#^CIV*w~~nFk6VSq8>}k3ffj z<={mcrC=7g4D1a``0EIbsYajPt@Y95jO-H_WriVWTO8ED| zHefNh5PT3U1}A|cpEMmE$)MCv0$2^&K*_(3dAO9XM#ou840?eaizHz@Hd zKr46<;fuU>gWmFkh^o&JP~_GVECNyb@}^_c(IJ&4^0`PQi+q|v$>)@gj`u;4&sv!gUMEOV(vo#_3;`vb0XjMoKq+r5h=|gnbadE2i600`e2b0_X>=0* z7R-T;>!8Fx2~y-f?}7yBb1_KgyBT~){6XROT~PSl3rae>b#!b1iP|R(6n;k;{!YU` z0Th1M2kLSu110_v9UTw)>FIJ=gV%kMj*fALd$Qp^#BlEoN_nCTf1BYSV)$RPD9WSw zUo`NHfu{_t1n1+w1e9_t(9tmjT#NfjvtG_)p!mP9qhkjs@#+ls8pD06;XcZ6cN*@2 zpvdc*Nl)jpj*g3<$n^}k3Or@t2?O6Za2+V^qYOlZX-jl;6oXQ~bHM=I<-H$tWPwuN z2X%DJ0HuDNAfir7*3ppwO8l;%#E;d{5d}*42vEu$2ugYu9XWcZm-{-7tMI>UpuATL z-E3eTxDxtV(4Y7lbacr3rMSy`I#rdnL`TOw!#xY63ew~~A9PGI+?^nzOiR|$(G!$* z76tM@P1Y6o@8Av`DPmfPj*fQ~oj$0eV*@CBtpf>?wnj%s1z3tZZOZFT+TQdg8Sdi@ z_fdv>g5loPaF6x5ljwtVMJbFvbdXh;4P2AyS~)4*5* z6$6`LlBE5c46HG*!oVy8od(7ls2JExWN&-}YYeO~Fv~!vfw2ZE1~$V7R{tggYYeO~ zFv~!vfw2Yx-gp6~*scMlQR4zk#R~#VYt(gWfa#$6E`OgjZ8Qa#)|uAxcZ2y^bAai( z=@#}=re^-`H8sg!OOqwQRAZ^*Z>41of3I6^@%N179Dh$)n)!R#@0wqLsmcGKKOqC^ z0s>6$2OQ(?wZQ9vq;Fks4KVGt?&a?>>k0l|x81T4zV*S@xZkt)o&eLvb~Wutzug-C z-fCOH-xKXl@^^2$CjRbdx0}DG+BdfkFs+Z+5P?0iIT9`+-{tS#$R_@-i&`H=j*-`~ zUyQsQX)#}mx*l~a%3`kRRM%;1C(0CkESeB8*JI$^zR^w``+7U!Vz0;EiVZMr?fPn0 zeEM(fA7HBJU&-I={ciQMn0NHw-G6U?aKP>Xdk0v|7YAM*cx|A?yl&9?K^q2H%#DM0 z4BkCB&{Q*^4&PgYD~41Kq0C9UlSnOTBY)Q?ZAh}1Pb8g8ItA7YtsA;^sKvZy*t%is zhgr;9hrK$i5v)kAOkR_0G4FLWISx83=2OF)ho2c9Xu3G;GQO{lXdJO)1i5AG$k?4h zni(7TdtJMwA%E?f1|JVyf9Tdj7W1*f6NM)WNw2uFculdze6ILn@#SKZsivf^L^VBI zQd45$@5T~~`TD|J3o8~`%x4yzTXb=e$+Tnf?!~I<)x|p&oA}#^y=L*N*lQNoVc)R0 z2K$D^&n_nIWtGd;ETa`HKeyauI<{Fou~}73?`~GHngrh$x@ohD)g*XO=-r!DtR}&| zLN{(!v6=*T2)%W)iq$0es?ar?RjlN{S*;WL+080eO21j%DD?WxDpr%=2BFt%RAUd3t>tPuKgy^7T&c#OudTLBzR8fll3ZAli(?#->+A(ngovt-Bhn)g`ax$ zpwNx=Dpty0ukH}Ku3p7z65Lu(|Jt}qt=R=`*rh(ZOGVy0)muB&3UOMqM_spvpa&1B z?;axR-a{%@lVFq3I}WK>sggtLZlPa2q++F74ylcTH6N;VAL72@LlrC4@}c^y&}%+a zu_A&G)pbJOI-z1k1SixAp)a3Mu_A&K>a`QlXHKYC5y1)doX{svs8|uf3H6lF@1Iby zB7zg@F`=7Is8|uf3H6}RJ5H!rDd!1wx6oTps934O6Y8r%Z#ib`TbywA`S7nUlp&SPKeld*OVT}Ekt96%Y z_=WL+OklDizhCi?75@x*pz+fTdWJ!N%fnXuvkkh*pdT{mrIH^0kp{ie@Gmv!>qdHg z4f62e8;tK6sXO5<9Li^U0a|k2p|K5oIm66_G4Eia9zGl$Ob-eL?>-z1D z_%V-R;rF#sz6l0B%81|FpobAg^7pOl&k}!V-#T@eLHpLVyBp>Aty6C&tT+A$Z+6Nz zLX+n>nK(oyg^|{dqzu1Vs$)I01;``S9 zcNyW28~($M@E;kp%)cZ*-#Yg@2JKtd-Yoo*hHbUC_)2GKUoGe(hJUQ#A8*LRw=Uno z2%lj1|JDfaH0VVJJ;|VZ7<86F+l=_d2EEhpuQ2FBgI;gY(FR>(&?o)$@-`aua|YdH z(DxhkF@v@nbhAO<68XdLWrO~ULCa!_{6_fXVbEuc{9_IJF@sJp=%EJfH0TRPev=IP zRfEnl=t6@oHs}EcU189iLD1Wm(Vqj1@~roz=dYK)#-MWzy3wH98g!FE|H(-Im_e^M z=w^eSY|xhtI>MmkWnF$(4f)s%`lvz28uUP;d9?D>B0S_HFy(CgFYi zpht}Sc6&oJP8zgtAGs3VB)o6mIR(4Wr;P9(gEmN6+w%JR_G#ZTXy3lCyr)Wh-#%rE zQ9j?k@kiu`_wC=W@o!1bBz{YJ;2reycf^zc^JX`v=zaxD2JJNsaj`)4< zi2n^GZ<(HUM|#mBsRckqAd z4w`S;e!qNo@ULVR<`w4fRhrE2sgTXf%*@PR=*r2=jQ^f{W=mx|LtCsxSi{AamagO0 z!rw?scmG~mzFfTOYNE!ce9s%rv7%hG=5(#IANt=;7!|r7`ubvfHSBcn(bFbnj`HgC zjdv9+$jn=!WKK!ZMtO6{oV|2GUg>vk-;v+N8dHE`o;OHKiBN8@`r*9H(!~WR)Wt8z zo;@!w{_a6;OZaZynUYodsLYX5XLwW096e=c{5)I@0hZ?FES#U`4Lm>dZa%tOi}v!pK;QG# ziIy^$voL#p?)OXJm3rp3h zc*Ac<<`7>X!$KfzdZ61*gMEPv3xRGsiA@jwo$Yq8LB5EFg^0JE#AZaiZNsvluy~*z zYe=SH8SJwV{kD_XjOe#*ScpEr7u~Q7&b;lCc-u*AM)cb@EJW|GWaiAy&Ft?>#jp(a zxeV}GD9vp@u^GwTwqYT;etL5Ke90M>!I_3-fX_m5xBbLsBzN0}h2#=_=@^#5nTBP6 z&(hy#8IsxWyU^bS$7Uq`oz0tcf-h;qGC0$)4Dea{`z$1VJ9Ogh;Mj~`m&CpU2E=~% zOB_6;f6{=#iGvbiV+STA;?WOVZ0sN-RKGz3lLmQ%XIbYJ%+^)h`(W#nombjtPEKK; z?D>U@hV)tJnqM?;-jK{e1L9d0N44tam;YiP$UF6rKTJy$SzGu0*w$2@^$~Z$o_V_C z5F?I{W;!nW47cYDnVAdnmdIke@ypDdI(o)bAN3vj;!Ao`mfJszQgPdkr5`2&!!(6o zEAL~(A8aruVrIlis= zMPIe>;$TzZS0l`Ye$MM3e73@}jk~{#e*IBeLD7&vNTPpxupPi+i%7#s=afKE^WQ$RbI z3Z{Z%!L#6KupW#mNNLEyE^+1@RirchmS8`xqbZm__?#JKE8Zq^_Bfj9(`qxDj3z^D}QORGflob zRcejBT`xXfd}a3WekV^pUVY{EmCslHJ9&-l)#Ml{be(`tx)Gj) z4=KAPB!&Az{4T_e;d>Wd_q}TEz3s)Ux7SCGG*Lv>zx$pmT-}idf+UfoKR~7AlY}Jtc)`69) zGW&nNYS{j|>1|J09~RASdus9Awx_HYE2czC(Tz0~-SZyTZ*zTOYWKXC_1j$ZSy^1M zIIH82rgzVKQ@=;`;Oy>s{9c#!2j1R)are9jW_8cop?WKIpkLVuSGAy9KiBoF-ZvN5 zDLt?E*y3w@-z>Yba?j%Pdykb(ZQir^w%#`uH}}52c=bisw*1kkaF6l%dw705ua=7| zE}9jO&2o{QaAk{S!gC03(XHi5(IMsq9r{S`8)cRa%aiB%ic2T#|5WAP#VeZk#`;_+ zCu@3NFS}Fypo5l~k-bM3*G-t$Qr>&CY`(@3&mFhA~^-EMKPW{^8bRTrw^qW6xvSI$t&Cg%E`2C;6=dV?Md+}4v z-|ojU^TPC-ujaS;VOkpl@5~SL&pa^Cw`-msn=q^8ziE!mcl7_KmHQWePJH^Jc(hOR z{i^2Md@z4r*1TLXExZ3`&HERx{@4ZmJlQ{CMvM7io|!-9srj~~rhNa+soe3`HBY9^ zG<`>NVm_H~|3mY`e4%UR$v+4EGEZ`0PCN%ot{J@_e7WMv(*35V(_U|zq<-9fj3|g zShM;g=j{h?4*%PU7-tHx1Pm#}9xw;&F}A=Humv0eTfiT11snlaz#eb~d;uT87BB^D z0FP*ouA-;t54ePmf>G$LWdbY$lRV#+3vk2olf((jm*ovCD3l$~G5Ar4ao7!(8E^x6 z1UDMQYu0$n3^-x^x7=BdEPs|E%Z}y2GGu+V40-I9m(S{+*b|mDFs2Ywz!KyFYz1Em z`2^m8HDG~x3h&Jy^Uye9UV#hX1ULW&n11sPYycO)1F)o!CiBU>Fpt0-^T~V$f50Vh z0?Ys#zykBZ^n)elrFn+lo6qK#`D|LuSJQ8P)rxPdLCi5YV&0i2<`GzdeuFcn|Knk9 z%op_D^qBS~(s$EsKA^9r-*lNK^KglD*tD#!J8!>fHC^V5=>~TgJM=*tPQ~K@MHA@%lz^*91KiYqfbo~>5c-;={3+#ypZohs9_QZ4DsUxrIw!rS$2!diW!bF#jZdA`a<>Tvz%a`}3+bKNPb_f%1| z^tmWs=6)%^m@@sQ7Ye+Tinj~;C|z!JCxCG?XdEe%KJ0w=Z!M% zx%QwiCA4?j63AMBG@)bUVAK+_YYIsH)2|t z8+ZX9;6bvV9|-d=O1I9NRG!pZJNc=Sy~e`nAtK zvHxpNKG7||vvWdrapi=H#oYUbi9H&R-U)#hqT}3)rp`20o_pX|nzz?Q_pBB$#C(N@ ztEIQ|f_|f~=qGC^Yoz^@)#|rLKJF`*SIZZ!kuO}ks_#Aj5WZR2x`b~}OsvTKkDc$r zf40xeT8Q7A^rw?P627$YO0wPWQ{!jbr!ZdGpD_Lyn`|@K-v%eJ!R<2`AB~5`P1a&# z;_}eOn8-S53^eW;*Nk<>H{+GD)7Z8y^l2O`#5v=k$KY`f=1+TErolWhFFYpG=CPYc z9$O(TrknN2<6WCUkJI!P(&I6C{N~4X>W4Uk$K)~Rl+Su@noPgPXg+)Frp;q# zoicqMzxjZliyV3E9!nt&rqQ&RcFz%GWW0=x^#>ZD6B?n5u^0N!k?he)vQ=|K+McrC zY@gb(B5dJC*|IgVd25EZJ!KhxUbd^{`(fF~UzLr!U{u>vKam}L{rJ4^jO`3<_|Jtl zt^Hd1H#D2!sMfdQFJ@44U_{iAP#&53=*w>Z?%Z=p(``0pM`LIm=vE~oI+VhT$ z}iYdXz4>|X3#^TG6+N9LX9z&ykz1`|vdHn4exO>ACZ@0w=w)ci4T%vbDS z>|g9^(}$gH9+_6`W7BEgTqhoZCD_o|&gKXDfQ@XvfeoyI%%^F@$HxApuIV*D%qP=t z{@^Q{7s)l${G~6`XI^AO49z^lPsYDC{j9&}zxhKS=9zhGUP2%Iuf*W86 zxKW5d_{d-oG!Az$ctAs$(N(EUOgv+NAO7Wvwi8PC7v!LkF^ zSXL}=mOsmr<8R;yI0NRGF8lJv3-ieQ1tW|h=)QSv{+dsPJOy9SVbf;5f)VBy*kQgD z^7Ky0EjVmmfhXXEePl2Q%rIXZZv#WjvqD~(ABB7}|G)y~&or7Q^8`Gx%$PssgZXKG zST^iGV{4lhaKk(>-R6_&Hebv)Fan)74W<$OHxJN#(`*_|8{@NFSa#5R^b-1@1KOYq z`k@_K@SE|W@r&&v<1^WpF7%_P%eTfK#%IQN#Ye`6PWr_5pYfe_|CYFZZlHgRubuRt z3w>wW;y;tRY%u@XzB7Kb{bzjVxV`*mQuF}-*?uMdGIkBVA%30xN^GD-^8cm>AKLY) zm-k)YjD679kCfj?UHi`V{ie&mrX77!ZXbHO{AK&DNxvCi5}(cftM5sBj}Jf3{vCbN z&vg0Cw3FXiMqBdTmUgz4@SUk2(-`}z$K*F2TMP};?;jfaINI;K(uc=woU`w19zZj3 z1NyYzJY7CDJn%SdLnZxq>f3jwuKnlf@~Q1Zn-_(Cvwdd#W&GwspV|0|e{KJnd&4_? zXYPmpyhuJZzVjmazwp%lGxwc&(N!(P#jcPJFS%%D%M$4jI!Nql_4Ol9@ty78zmpH0 z`s~?1f42Xe^qbH2xwD^B+uo0TaQQ`Eb6GcyZ^l65oAJ(=Xq+?d86%T%WMi2z%=l-_ zGaeZ$je*8KW0x_{*kGJqJ?m{|Em+57E z&;UKqIPQw>d5j%;poRHav3TG!@NDzR=ie)vGy5x>Q~T}5Kh`{C|BmLN`+wd%EPgIt z*PQNu2F|l6>}&h;`kr+O8(Q(5|-aU1(EdYg?bOy|L4= zv&}|`^9z3f`x~FYJi>l7o#uu4iCJn=I%Fe~}I47>jh z@r!xJ<~Kjk3+(=+pMifsEWo@s?dF^5F(2?3JYS}HU6>o<3FeRa0$wr4em-wn@g49F zOtbltmG6(eK-|DQGapUA`GT)tUO}7rbi2lb%!5xnZ>!fe@@qa2ON2gr1n<*<2Gd2n z!Td8{uvyG^c*OmnAO3)0@CTZq-|+-64Lk$?hz-QJrx*gy+3`KVGvWx27l4EK7+@rE z1MrXM@L(W#x9|J;=kQ?NU>KK`41;sVGh>RMzZYVk_xgZ==A-Aw^8r?Q9z0i`2hR%_ zXWoEajz4&wz(Md1-0~cmzhIX6?)mYveDmJ(=XnLMm;>Y+>>&=pT!3HTnP~yLm=|!5 zc|r!jC2)+n0w2M8bf5VL@0dUE6Zt@fz${{;;GO9i1Qw(;#Rn3v#LAr6^` ztYPLe7-xQhm*$Ik2CfzI#ym8S%xBXL#uZ|iX$A|yBjcZG_kIAdjF>1mMx27UhWT%v znE&QC*km4i50Pp0{CLc!+x!Ew%v-R^ber#Bn0X3*)oZSpTd)c21Bbx0LSBHA=9^;| zU=TP0PMFW&kLha*^5FR}&%h4TXL`&x^SqEJ9y6F|UYJhP4lbBZ^Tj*{gTOS8)BIbm zF(SKQhk0Q-89(DNFBr4=X_~+i=wjTT)d3yQ@0f-61UQ~?+r)1yPVNOD*5N$@$ykQt z7{oMmj{*Au3ikpeV;;mYXmd7u0lW`@`rZrReE{U)uM^WCmJ!#{egN+U;M%baKW8VF z;TS{g2K_@fZE45Y*&|^4%l()K#44!kSO$GMmcjl2_5zp(^v84mWIW?cu?%A_ zaf~zV1t6|L-|&*S1~H9fEQ2_tV-zuFNFTug^b);A|5$(7vwXID0oV^v{TswH@CkpD zm_{;|VLKri|2Os+(+V-jIAz>2jG60A=`r0NtH;QG5|7g~ns(D? zx=c6m43D!gmSK9>Z(tfti+OUqEv=qiPCMkXq$)->4PjEb=QMP-HY<`{z@{H2^5+0V1;5f!tW#{vp5W1e15AYND z3HAYaW=Ko}n;bjeaSQ8hVO#^d5&PbIYngLw+GO0qyf^R6SM%QdHc!oK);sKfblZHx zjxY2h%wx}m=YX}+eD{3d8xW`Qe0d)1tMJ?sKfyi#{sA^V^MXDxCtv_JKej&e1~!;R z<`7I^PSF$Q5o}=|krS_5UiX-5FvhgwTlo2>`EWXZfiw6A*#6b(hjC!9GY8oEj)9o( z*!9@h=7o8R|6o3tFXpBBXC9lkUemmunm*G5?wEFLfAa<3!94SxU-Q&FHt*u+%;DVy zKkv+mPWbBm5FgMr{5AhP5BL-2pLt_iOt<-he}J8j{f?iJd~RyKByD$m3*sH-mHAo7 zBm4;b1N#Ji=4pD(EAz>8o0rV1`DUJ(NB9knX_yXt3e#%Z%^z%jY=*4j8|IaHNj!ph z2hTi_9rJL3c#AA!cQoo8`Mopno4AGFAHW7N?dA!%2L6~g<~cNCt3Z$E1Dc>2Oe1z- zou@3f75DPKh5z_$YPKR%fX@GII zSHLqh;g7JU>rE)c>(Xt8`B34nGW;Ou@1{1_+y@fLtv750N!~H&42R= zyd#cb{y1(+T*JIEPs}4QiFpHu3i%24fFtIQdGp6XcG`lBm|n2Rd@%pavlz>SIi}fT zH=X8>X)`a(EA!Fu4DiTwntqSpyfTfZnX%z-F*aywMD;kX7q z=ILS@?9*UxM)Lgz;u-2Me(%8VE3j{a_(pP%hTm@(ES|wT55zRQ|HAJz_B*Lo&)bUFh<8T*n8l31{jB*4&C4t{yKXLyf*{?n)-!4J^92k@^#bu@saWE ziFJ6dg4;O`Knww2o_pne>im9we0=(&FWRz)!)?i@K7HVWGd}9GAA|b%=j_p-9evt{ zqdn~$OJFYs<@Cop4z#5&@6Cw!Z)kkPHt37?#y9ste~#be$FKK0L^FLdrjz3@>ff7U zTZ}%a#~cvXfS&yL-_ZCK%Lp+RVjA>idWbDJronp-e!qb{_Gj>ZL-O4QV=wPGBx4)w z$ABjGW5i<#{3NCU592vdYy-O3pWztC+3wSLr~MfXo6dfJ2HyiIvU zc$M^Bz%177>q5Elly%wkREIhqzsFrj=k1|ykJ+?%%pRL*GYzHe)k zkIl4rJ{S|@g@!^t)GH4f7$>wc58l_Z{Uay$h-B|Qxi_TpUcH}uZ>E25h@Z{Y-J6d0 zSv!{E_mmw^dFJe*E!w~1-l6fk%gH?=+b@ew@iA<3<5Lv+52x%0Q8~6N zF_^-*i+Nz4B>fK0aUoC4SIY+2f-eJ)zybIPURVa;Av$Lnfrsc7d<8F9&mE(&uVJ}r zQysA5kx=)uN|W&u{1?lPY4CV0C#J)4vR-{~e~%wq9N)&gh~pv3Go2q$eQ?h5LtF>{ z$$rgX`$n+oy(h(Vn;)jzG@2jg8$OYFY2M)j;ZuQE=7s4o{rE!bG*)E@gH1HKU-GM!%EZC991d@5`U>=@H)UYKt4$o@?s zFY$NG2h+oIUO(eC4?H&W!2XT-WuAIJi+P6cWd7pwm=C5O-^si(5AiF^NAm`s2|o$H z2OkK33ctww?SGD|_>pNeFU&{t#QX#A8Z_VNhxuea;zNO@#CGtPvWnN3R?|j%^T)h1 zFY%kqE7NQqnI_Xs%!j`E`IOkt0v*CS@AIcE87C zKA8`uA4~|}3@`Cxv6pXQbMLfpvMXg-6n;G_9(-hgwa&2wOWnRfF8{4{Tk$>uqj zX`BQ%!C&I*;H&92AL9KliWh;c$u-G*HUG>f^VhVSH|D?TH&4t5^UgGz7vLqaDf0mA zO~$FfI@4vIm~QjNJORVZC-Bp>dhDjzG?+H<&*KN@YJ-lN2aFlKgJ$T3Cg_1y=zvzo zk-S&NF{Z-zeg4bDZ|Zv$`Ta7)iHIE$3-VqW$CZdDX)G;#H-mjL#F>(DCE`e~o7^iy zU$k@ViMW!#o59`~$DMfZhk8%xyBX|_As>5!xDxrqmHf`nU~#47{taR!jx7;uBKARy zW3caL5RV{kL`;PE3T@*U4>1wNSG;$|F_Gkb@@-E2W(Mv3o{M8Mv}MnX+fv7I9pWGC zhbfFN(KdNcW0GT2`FrQ%O3>yQ5`7a#BF@DA8TSKC#<#)7K|SbaPYnGLi-G=ROpSK7 z{gN>*+L{;ajmgKS6kk(6;9ktnIKIXA%-+`@Q%c5@97`gu#CI}y_lLbP#y{do#FhNs z53wn}ok3g*Uh)kM-T{K2-g^|sl?wLFpv%9@y)yClGu~x+})JWkVLj5HRS7pBi+^q5SO$7-5PqiF$4S=&7(j~%I1%btRB0^>M?rErlm&h;FoD4S=8*#0JWh|_ z^qCIR?r{~yn24JY3pIVF%XFJA(`|Z9pT}$(Olw2npJ_DhrpY{DO>R|PWJha5zb)tS zn?BQR`b@9sORmXP63dEZPo45El)uIJV zGY{~m@U6@T(`{av=A`dryTdjN{w47z^TYfC_q^WQ&cLTKU(7G_(|ogUWxkq!_Mz~N z9tm@TuT;nv{3P?tw41m1O87^XFY_4Rh3EG8P3Rc@jOEC@!Y49cvWnZ_dznA@L*|`% zY`+PA2|uZjPU1|SBYZQ@LF`W{PE^RxLcSI92mgw=622BRm^OLe z&cjP^3_Jvb!BW-;umHZK4Gx&bb*jS{ObfUS zwmz)zyd5ki#o7#hgNxv^`DY9?|IB0a94rL;9DfJ%z%|nd&Q*)o%zI6k z3-i&u1)sq@^UidePV>k70u#+&aMFA+o#vl;VLq9D^U6H(IKWZU?J+0g_of*<^_+ZB zb6yyS0>i;k@UxI+^Ur&jz(_E#kXG};beeY4imz!Nn_q=7CDU!bfQzQtJTfoLEAyyU zbA`TvkKEIASPsBE^UZuQ?~?W}bb*zoo4JG*#te;MBNzrP&`KPM*isxjQp~~eCgMqs zHL+hQ`CgXeMe3(N9>h0d{EZpnO2nCnEfHsO{r=dIVobCh?7K3_J{?~ok2n%>Ccl$K ze2G{|f0<%U{;mvpXWF+!Y=wO@-oHf5gS|>%9I+1KAYdf#V>wPk8^=fTdv5aIB;^}2 z$vBf^J#NQdCHjx!IqI9Xaa<|HQHZgySBXAo%RSuI?Z_h*LQLdjOego@;cysOVHui5_^^$ zUmEZ}mUNB%OMF{~y-s{z=IV>C7H_VOpJ&D2n7QbRmem*O9Rlgk*}j)mecgvDK2Up8 z#VY;I*Ijp1eEjbFDyo;<^ogqJ6(72J!7UXvA6hWusu{I+HQc}Yj*8_ER?K~%x#8}W z4J~)hytlcbC8yt-nb~;vs`p3H5B19`{7$L=F4YOY3z!Q(+2Y>~yqO;?)ZaZiC~sX7 zU&g=F!nOatpp&@#qI}Mc;kqK1zmAsq7jEvj`@XA|>Bn!D>Bn#QNih95P?dhO?Y@>f z^kZFvR?<&^y>lgcy7KC4-nplDtQ3!F&Xw=n(-kKx@dHNjZv^T0fv(E`-cS6aKNauv z`#@J*JL~Ez-}(1}&iK1PO^JE9KUV)Y zm+0?IzYC-vYP-8-^~oO^D*T-x_cJ#Pyu8}KAv8E8@ANxEx2SzqO~0?SQ)%*dhM1!jpd>G#&XfBl9{=#5p(Lg zRtkq!R+q-lYcJ7n6a8GjOEmJqA1;dHXNvjWb-eziyY)TnpI4vLQk}Z<%a0Xz-}>0l z=)9Gw(rM?b-lO5VR%Oj?#qn5^ zT{l`~H9E)6zDvLH@mTfnmYlA!&Bv&$R_E9fV|Bhf)O)e{pBC4LI_1i5&^b2Z1v+mG z^ee}9KN!jngtDHHpOKwHKRb2JnA5uE{_U0DSsdw{w!NWj zN~l{A@>5D_Gg&EZY%@&?`L?rce^rNkY$og@trIQSPS|AArbkPQ#^<_5-%`_c{>{~0 zW9w_Xo{vWC{Yg}|_nGvFz2A!N{PJq0FQ?1){wVsZFW-^A^UIIx{7vOOlK!hN|Ans0 zGi7_3_vdxZJU={M@0B1kn(K-%|6d(HDV8J3$&aGcM&#uuYERn*T0@6r^6e>qe*EN? z>y(Eq!B5N4^~$4n6Ov<=5)FQEeEmpocU&cHitfcF!4Pzf7J8p;w_=9a>CS>69<2>_;}B& zWea~)bj}YB{-SK9?zc14U$2z@vLAk6S+~yNL*;~vTY5t|GO#t&shcprr6<%uKIZrK zsjqo0yOhT`kc-{@b>H7&xkNS&ggT#|P}zbES*DR8=AL=4tS)Xj7}_IOmTzdcJ|JtB zYvj$cj;vURkPpi^V@Af2U1Zj}gPbDs$f)(ka%w%Xtk!AF)*-5e+{7>@`?N*o5*itXoI{lkH}w6dB^~=SEF<0)v{L~%8*xN z3fZ*0A-~H*ePpgR)V18L3uVaOdYvP4$RhKzC6u)(g+Ao3Q|F9>dn22hLmA`j4rO!2 zd*)_mDC-IN$kA4vbB|q0^E6!6Vwu|=%6gS@zXSbs=Jv~JO0x z%{hHC=awVOD70HHkqyff@`)@W1IQ4*YSH+e+wcXOH2=n5^ag!-M0omYO5bi98hx-- zzDeE>jbcBvSl1;wUQI_!+1tSW1L{3BBwzm;eRmWYr2ntP@-wvseBmDdp#HOJ`|r93 zGW2JXA7lj?LhfI_=;E1s54=)Fd)m^+!{evMBPzj zSGT-;;7A$wsGD$2tP9D0lH+(>vURebpO$g&uL|Q|E-F_azYwpkZlQ1bp+9`3pXz!1 z&-k`Q_Y!uTbFHBb_FIk4 z(M#;NhENBatybsg?eb9G7Rnk!e$r0uR378RzS|t?tq=9qDW!jGyq%$JYbe_i%4~CX z>zaPB=XyikU7^lyrHrR1)Hx9HZId1h<;E7{hVjDqfgNZ289R|@(#8toh;apb%$Q=l zz_vAB6ygdtEw}-ufF-Pd;0ddElD0864RqT}PMoykXmiZf@IFBAe`>bQc}?u=-}b z`iT0j7Vp4H4!@8EV!C329^Bzz;?gc&}Z>(u;p&w+fCd?0*1$MDsum)`o zbz8O_pD#&eq$)ZW?@~#W?&ty5B0!s*2(pu9_wgpDBGzt#(rS~Yh!1~ zXD!7hTdr$l5<9Ltl-WMRu3Q(&SyOv;PG8t9J)ti6vnAAlF3Xx_4;)W>FBtP&4yxXce@C%s%^Mk2Xmjv{xKb!5@HfGjT5{Vk8kJoitowaDE{*&oQUWf8gN z-slJNi)^C<;Br!ikzZsMIY(~k`$pMgmRsa8Cwkxu@?5QR<_K9vUMfS?ZTJl`{t9$?{mMJjM<#AphtYa)^APH^>-rg$;+EbV>)1XXF@r4*9fAhYg4A zrna#ihwa9*1nf8Vm14tTzhTEwCuzfByU;)O7czz1c1o|XySN{+#y!D6Y$t3a?v4G1 zUL@Oh3a@Ezn++R|w)Eq+*ln~sX%Af!V|=n7+IM23>3;Or--m3rF9=_;>9E}xi~C_r z^ot!A+it;*8_b5=EBmcWc3g#YBd7h9NgHm#s9e`iqLK~RZRiiWfqjS#hi&(8RJq~# zsCWYyRu^QQF?=vFL_@b)Vf1PlRVzzxO&mM~th2^w2N`MQwb7V>T9uh%v0u=BASvGcL}wkY3w zA2;iqHLp`Cvawa^v{}(oWQ7uw1cT&OKT`^3}x^GyjdyR zrZbempEjK{hph47@K=Ht@jnnwcI%q)Jv{!BnOj5IzYE*2 zQCR1DLOFch9m?tF;hwzB%DT^-u-0P_FxOi9%i!-8)n^Q>@jG?S7?A_(2H3VM)Ik<{ zLmljc9}7#7i8|Q>2SOd>Bqf=mAF%YG@}Z@2!X^E&5@cmksDlld(K&UJF}#%%E^WbP zMfQ-lwCXTUWUe~2MTWp=@EY1DhdRg*_zhMghf_lT)-T%Bgu1n%tU+l~#~4>*C|e%t zqBCuw9yY|fkZ&2^tZU0T{y*_VWPH8yp$~pLW(X#4p)bjzahkP+I_Lp0gRLsJ>?7}% zf7Tl6S^h8UJFzq;KF2bGoT_i+9-dT(`9d#h!W<$0$T;%W5XzBnbi#6t9-tq{D)NlH zBGbrkt=i=0^!+W!CvusLAubR1K?dt}&bZpbeUL$97rAW>WymD*w>i{7UXk6r&vFU= zQ(0%Ii>$5JIrm?u6q!IqyF>ZbP{#ai3FXKs^13^e?F#ujl``kZ!@*E?Ae8lnGUTvF z=g^P|^T^z%m^Hioi>&~AAs`&h6=)`#*|rS!ipl(#8myema(r_Q(P*rH>z4%?{2@Qm}0FJh+> zW5iB%oDrK8TNN7>+Y~#M*dsQoWbT8GH70G;WSo(EV5@>1#0nkTvrl9@6WPN?MP~}* zjI_lzwVg_z?#ppTY&ypni8(sX=y<2cfelJO+}C4r%#j!){b93WuM&5pU-}|Oi0%?w z#74ztWv>RY$9EfVjAM-Px{;4DVyoIV1>cY_Vu{GAu?-nVCLC)7Gq6>OHU2jCXv10B zqu3Pr*y5rtY)kA?+alPf*rwQ};88NBh~1hCI%Vtw&#+^Ycvxtk)`vFK1;em+TSH!r zQgjRZwOZ%Mx^2>0U87I7-{l-wwHtM=i4_mlX=janQaa*X5{kuN2!QR~x z>L+dG&7m$>yfxIte(lyd{b3vL40W(!cj+8Dc89vyl0Bg=wsLQ%dmz+180tmRWBN-g zrF}*zG*^WD$svDA$WJMSM>Qe8HsntV`O8CoW5}-#`Ph~@opUej%k`n07-mDL!R|6~)%iLdjH@lwX$|GrsatfuSx5YQU8z1|)E}oLZiI{!DQ=mJNg@OA6u%VPj(8Aj z9QVfF@;XdC)>>>O>LXw1J$<6<_@>k$#zQ&r$`aX=)q&5fqpXF*Dv9k7>tS7N2<6CV zPUr9=j#CPgSf|@UIq{wPP);lpOhX^A9gTO4rABq&k7e6y?&i=>Yv=>}dwHnKy35*G zt83<(HGG}Rw0^Q)V~_4s9&_EPlyS0#vW_=~cC6Fgp^WvMwVXA#C*)Diy4|a5`eFTE zAKJ2Rr!;5eM@s3RwSBA0<7doM``5vI4C<2p7>#Ag_GESFE4hAKmRO5-hkkb{g=g7vC{<`z~?MGsno0U)O zl6kBRbsP)IkFl}^xkQ%n9f)~aADHjP(1v&dGES_7_!07qZXo09Lmgt7$U5V}UPN9k z>&P|zVGkkm)Ik@Fspx=Zp7nupbcZ%u)jv9Lqijj!9Jx=%HIe_Ec**=?H#)}IpgiUt z*{%=e$h_@HWW6oaK|Yax+p*l&a*mF{8*sff^n>hTlOpq$b>;@%qJ!|LR&|*_`#aEt z3?uv2sX}?T{?NvlW2#-jO-{o}SPincfx3 zSi_O$NPLH^U7z^#OGl`SB58Imbh3!dS$vA1U zFYHWWowh%{PZ&GY&$@|`5-TN6O3X7K`y8^Jm??Ng+!UM9<01x{jGYoMMMoKzpMe+J zrN++F#YmZNWZ<{4NqO$=qwUtSiw_>l>C?9=G?o+gFTB|bj6}xkJ zs5jVN#l}z%J9J&BXZv@vuDLI^=K4?%TXIXN$JmW=TSIx$hTRqFbt{Dz#+coqZcoTJ z#vBa!2b4lrN;=N{v2Qavhn|ace`BBR?X=3MKT&0qLK|#l_G2XAMwkPP2ymz zg{+a@YiSuIF2H?+X&QgycM~${3iEUdVeK#9d|9a7#-W^508J(%*i1iS!xLN!R{$KrypdeUgwM*+vVXN_6S_kg3Q%~ zw#a2`sDnLI8`@&KEDv?slzQxqp*+SEozwU2vR^ibI>`2WWGf)^*f8sq&)AXiouN(~ zbOjw*AIhvNouLgnvNe>U z59mjCC_~qFyG*)(ZonJl`e4Z4rIfk1%*XO89XSy4xgYXv{X@2qYi#Xa)j{TvS!B9L z*YGPP-jknJO5c%E@{#Y1&f(9bP$&6JVoE4O#;Zd)<3jgpLs>(}&ncx(bf7Vm5r?~2 zvV=^p4|$W7=IIlr>6~%ZE2V8sDBB$JxmRl_TOP`GhO*9(&po#492(YzI^Cgcf$qH} z=&Ec@n2%U*xkf=vAIiw{jItDp!X+u ze<^wKH?B^zzZ4yJ+!x!|@mj}wkz3>ySxv@$3*)ukUrO8*sIvzj@1^% zk7>tvY=eU{w2j-z?(QF(V!p(FiTh%|(;xPB9ODgpONj$}zk==VGwm@Yj_bV%Uv(Ue;)AhGt=J&;_h5Sz zu(y9#`xL+w?^VDq&IKGOw4ZGYR|nj1EVxG3=xB1kLPMyNw1Jn0df3p7I!6bwp<8v1 zKHG*}7wTc(t`GG(L!CCIV8GUp-yQNe=y|tDCNGrA^(8V zB;IAD-;6P(G>L~5x~AQvkUu5V%Z2>OO6jLIp zh@%mgV_r*SBNIDg{U)B43-eaE=M|q3+n2G{hdRl(&rMq>` zJYgRk2<7l-eW-(-V0p%Fz$Vxl%CHkG(>?wDToUhPfHx`4E3$$u9qF9=(D&}peo`n0 zFDpVh_VkZ+&x5{)?1)?_OWM`i6Ilj7u_v%G>O-C9Wph-Ae$z^kX>5m9m&*phzL*@! zSZ_N+*%YPl7Ywfn<#n^YIRPZu}p_L z#6s7FI;;&e$c;8 z=k(nf%8>c>I;S7Ye0M0@8uF2S_C553eC*-fp$vIMrjg}?t}h+fqI2%ESt<99ZDz^w zu8@!1?+j(w&j&(2GTj^UGhwcf`?SvKFH#CWkn5Dr^K@O@^1NhyN~n(xObTTcp+2%& z8_Fjur7z^WI@HUBdP#j~2xYWIAC`x9=s=^+;aPoXhitD4L9P1Lme=0SEz%0C;dn;aA&B8>~@Ft=-FA%bunW`o-pT zU)a>K4K176ac#%5ZBrMrVxcZ8UimPYozltkoQE<)d+4=IT=Y-E- z)R)}Vyu9(g2k%*P_Y9rQXk6Z?FMiCtJ5TpNz4g;y56`nJ<{96Rh`(o1kuQhuXZoH+ zHhgr#-?Q-bZ~8rpZ)NiLr9XcQBhDETwdPCm|MNYIRrfSBu32_}%O5qj+`eqtq6NwF zJ)xgm$h>)I6p{5grJ>(bx*za8i=pGzUN{H#5=p zWjVb&p}52aQS0~mGUspqkIbm;Z)MWkkLoy-zM!L3$Fx-LSgDQ`sgk`VQFN?wXzo~+ zBUQXtb9Jm&{T#@Q+1{C+|8jY4^kQG;!tHBoqm6TPOq?Gb*>n8F(#O?LdrkD>vdjgC z8-_(oU(aN>e!T~9xHtD)RuLW9rQfd`uJIIShVR>u9^O%!8s71$(mxrU zt7_5loz#fBn?^@fl|!Q=4JS@4oj4^rvQT^M9!+QW&2Nj298_GUINiFWGF85B+R#sJ zD$SI1M9mMp-MXUc?PZgqBdwA8pAv11n(tEH^tX>@O1IBXl^pI?esS{yRgbQyswy9* zvDZdN+SGrKc+#uGG=3&M>Ttd4wx+x1)$4oJ$JbsbUM~>OYsLE-%|Uh7+jl=7zoYu5 z=w^KDkDZ8VdNe&Y9^({Ud%U}ko>*F(`P8OYGGn(N7GGY~y?(0iNar5Oz1^UrVtmES z)<>eZcWCS}y_w>}^=dOb)w<-roj5VJrYw5;#QM~Wr2ZSF4Ztnez|l)PF@L&!@4PXYRFIb0wM4Jx2HU z-=zKzU6$)Yrn+>_J(|OPnsu*A$=(aPS5vs(GrAx5|4>(Z|EW=j zk*C4rMf0~Y|4#Esoj)r4nm7m?kk8+@mFiPZ1K^@UWh&y+IB|Nl(&W0x=b%^@jc;HR z>zMnc`{cS8Ez2*&%kr?lOsfw|L1DHQpE#TKCb8;7k-n$&uGXEaue|nj>rUgUGpsv; z)o2fcuh5}C)}1P@PxIF!=JD4T>iF90PJsWj{*Kb)WheUs$M@)qEm{|up;i+AEn9Y1 z^O`&EYq;wQeQ7{{h2K%?4EQ%6QoFohUy z|KI7>v6-r&rqMlWhs@B3v|ZQax63X%sx-N-A%y-$6T>*=M!G(mzlje;T?>aqAFNz+ z(T6H~qw^|@CyXpEj;_+!=S(~|-IXbij-fk!T0e@T+?;8}xlQ|ojmuLd`zEH+hnEYh zqo{Qxb(W2Y?yZ$RH@*G9OWBHOPSe}>yp+9|wCSbnRMPsFveTnE8t15qTHB7VeXi@c zaHT2ReQS1j^z76JFBq8}6;)~6kE_om$Jg$RaXx)s^z@n5-#0Y2*Mz&T3wN^`V>UJJ z%B;peIu~sm+g{VvD|`ZH+efmtMjOS`V|#wR@TG~zGDrF}e&O$&?4*y>ZA(XU7V5s0 z!nIi%V|z_*PG4r~G_9?3+ON;edEwXfFLh<~`$&r2=nZQ(qv z^Ju|=mZ-dKaWu7|tZj1jHz!r4%2;PKp=GU;Q{QaARrhQ7NL~A_>i1(huh#j;biO=4 zj`rmmhj?6>X3nf$w^-*(Lc1l=oIM(Um&U(gMRQeMYE0dR z6_r(Aygu4^O#O{eU*oj)U#L3k#^sK&MwmBQ#;+*Kn z)c-iKlzIB0@)*Zvt$F{fHiKciZGjWJQ!l=KcS`m_T6RK4_QDX^4YJSH7IhsL{{Kqr zGjj5#?{n5tk@!FTNsodW*>wa4MJGftQ^rP=h6b~O2|0<+cS26$GbC7;|v^JxA z(^Tg<@p+wWzpEvm^`fUwb9+d1V)xw0x~%baq)O{9%df}r*z&ezp637PU*8ja&{}>- z^Q5uW?a^BPjOGIyslMjD9jyJS)VLeb)x2GBvK_kHBfF%bsCypsUSHHY?*Z}f_}c3= zC)a6i7HE!YHCHvV<*K_hck%k%m#|az$Uf9uZSvxCvP)i&jYj?E zY1Oga)KrqMkKNQ%79E2J%&X_LaEwjxQ*oIl&B?;IKX6Ucd&Bj6r9=Or>ubXGH7e)& z%5Z(9%HPuU%y2zZq}M6_2h6pIhymlWcfFh*RMwdq@$+?laIWdMcbPtC$C6O(B&5-Cnb_K&Wj~$$P9L0Qr3P``Kgth z7s^O;Nvu12J^z-M=CY7Kh%6M!QnCDnGs#C&fqe88$VXFweDoE_M^k}(^cBcQQ-OT^ zqvYdsI$!@=bkQ<(TGVIn>Ym^eQ zsxRoMWerJ>**7ux#?`7Zmud~m z%Aa~6UD~l-$KiD8zTq0z3?2Ayi=@9R!#Y-9GdE!V_yL&DxCX=gPo5R#Gwv~3r=r+D zkH@Ud4NG=FERPbEIAKJTW!oNR3i#(d_Ys zFIB$1@THO}>Q#0Wr%F1CtD-qm-@f^!rYL%5zUuClT~VoeC9`vLrlzLm>&&LkE&X-2 zYK@KS%u3XmMVluZ-&Gc{31Ht|&1$gWfSR;Y7vzK*c0 z1N*sB_H?tx41L5lN-9)7X<@0>x>D?H=>2W<{Tl^q3iFxN@xHXzl;2Lr+az=76^gT+NmmEcC1XNbaWe3>SayqS*z-zOHdXDDZK{}D z-FDfgrA_(slBTIueVO8E)Io>#XpBjH{eMeG7#HJvO1QE@$4$bJy-J@;mmJ=8<)XI^ zzejd+#Q9Bcy%L`fKfFcfTO}(U$A(?ILdQUSh!h7Kh!Jf;_Z$;r?S|HF*;`rZUa=11 zVz2++-^;d6DgGI4#4oHoUh`6A@n<$w7Rv{SinWhDTKbySmOia5DfwYNx)-9+w?}pSBr{+)OTAunB@}r0H*#qJ^UkTMOR?ETS zL9#>RzptI9`~d54_sdQ7uc#+~|Dx`Yc80Vyr1c@qg|s51O5*nE^taRBO{db`O4IuPTY(cl zR(UeM_I<8Z)~P}A_o|NM^$)`J*FyOxxz+&9=kIYX!n#BGBf2IYXE`9A$F=A6nQ-lS z;Bgk^mWwZjYtQqdaIGZ%6MN(Omcu*4wdbu~*XpkSkMrbpv~1NKs~Ycl@MJ(R4%01L zeaD*SPZVYj2p;C^I(XP0YRqRhw=^rxxcrlM+;?|jM{64HjFvU7x$m0U%NlOKy|A>Q zVL(>6^RmXqRoBcetRL2b{tj`?2Vi&wcg@E&`|_uQ{$C&T{fl9eeC@bq5ZkkkYrY*cmi}maRC*ZSVnAH; z%yGzkBjHdO^%vET#5}6dz)1Dyp~V;P6o;%*JK~NsD%Y`4*Uu`EhFlgdAznLj_eS8?p6eVGfUy|AL` z=ms6~Z}&dBV(L-Fu8z*1sB-m{ofK^xtlZC2meuN6mF)JD&%E;e?@=7%Q5}l2>}}_{ zjE+5ueLSio&Qttjn~q!c{I9>S@a#{|7MF}Gj-I(gc9PCVHY%N3lIOvrqJMAj%b|aR z_;5BnSTDb)aEycTpiVrHeRLE)490_GdH=ZIfd`f1L6_)<59UFfC;HpZz=QY7p1fGJ zACk>+tDd_aIC5g?Tbft-L{AsevPXP@H{xwwyLhrq#~jJUt;3=tlVtBG{-sWIgYz^9=XxeqX)ydw+1E_NAs3YpZT3jYb}t7(FZ7 zYsoap!wr*O7#}uylKsl_b4MSQOjWK| zdS7(3U2(sciA_oGneTV%M>1G<=pFj$J13|3ZS=WHjh{pOKb#V73>K>qAN))bQ>y>( z7Xr`0o;#Ay-%%Zd*{OX2O&bLwAR6jg*& zNqjvd^KiC3`&f2JW>4|Ai@#fZzw(oI+1*?-#(42MxqrvwX1T;}@;KSO!L|SDbdtD? zf<5cv=%h^%FXzju20kgx7Ywk0^4V9MtiNp8>NO3GE0;Aktz7o;hGzY$PBQ1t`y1}N z-R6mZwdUR1BUj9+iue0e475kq+;;|hMAPuD_V=^~ezPBkKVP#}b9gO2+uy61o9NGN z={I_p_DC-DlZzY6UJmw1R)Y%tp3?p4>=7zqf0U~oytzf`LZyS*AJnDJZ}NAh=Zi;$ zL9YpiUzaWNrm*-}!v6T5vQ0h{Y>)=o0POFPYccAi4I+Hz8JDo*R@ooTvHkJB74JL6 z{>VS$!ait>*WR&;GqNW}u|~yW`ogmc#Yg8H(sK%8KYe;maY)Z7;&VNtIHczj@wuK) z9MZFi_*~B>4(Yi>e6HsbhxAM$KG!peLwX(&pHJ5LMdAD+osSFW<8(eIoR87@$Z$SV z=Vjr%Oy?!xyhP_k;k-!aU@zlT3@~Zm6xud}*)>_k8hA$egx1I&tyBNM;ziwB*$Hc7 z+hbeZ`>NIkyQ5lm$J*FlIQ@R7cZ%`-cw*FbHZuD58D#ViPb;J2>a)7es-|JP!Ph8y>p11Y=A0pG= zQVeXo*u*q6y2yD)_fd*CR-a+rXSsYgaR|r19Eb3=bn!P@_d69I zvzWcE;S0!T<)3jUrwPfG(7bGEnak_PXrizI_L^96rQ9>i;nEg@Y z-=qCdw`jfxvjeyfVbxfel)jt4)5Rf{Er^aR*ZNMp`ZD1i`+bQ;u-}(B_fh#}Z^e!>>*<;?O7 zA~kkjyPh@Hsm_hf%~iw0zKv2ni_>$5ziyOXma7kAj`z)`6dUN#GfDh9(ffF-{GurH zvezh+Jq%90nJyo|k3Q|uiFuHEa;{`&)NAaujh{UX&Wm^BmnLOllKN)N zMFu?gS8MJ+5{=%+9&qG>Il^XqOY(Aw)`(X5r{$S39Vbp`?U3hB_x;2lJ)h{|Q*gfkd&%%s; zerOX|ychZw&Fe?wdA%UsbMQuj58qdO=2pqGd9hi0x|x6TVxi_fRV~>TpYpVim5ngw zjI^^i?VV_UO}55hH00vvj?!1fW=`*W z$;(iW>i6of5791r{7@!0=M|-~KO(yv+q_*i`=MdVR~qNbcJI^CF1!9vsq&S^`Lgf( zbhOL%KXi`rmB#t<0c6|E(ca2Aht5~N(l}p!LZ6Oy`4ET3Dqm@wFJD6Om^tn8GY(y- ze5G-|{Ea>x?eawqO;o=I-imGiJ?ALDERVNZ> zLha9FPsggno(`=eVIQCN364Eo%xYj9&oMkO>O?KE%Z%cCLloy5s(4?K;(m%-uFWcL zpWZk?M-pqm|BUfCEuBbh|FG7}ZmlcZ(hvR3C$uK^#y<3r?ONkU<^4YG$I<=v>l!@u zyCOUT08fue*C;&#Fc>D3|~aUJPYT&GlZbi{S$sg87Pk&d{I^ee7&j_T-$>)fO|(ziuA z;yTi`xX$^iqa&_!o9amS7U_uVNbll0WAo*QrGJZbP&R#4uBt=&NBJu%zv04Y&Z|1& zemb#|zZ^mdVsxQ=u-u5+2{=!on5o$5%37wL%WNPpuxm*>k5OOF@npltegM3?lK z@>f)T!&Rb7N8Hc>RCu zV-7b+=Z{I3Wy_B`8Sfb{gH6P^;t9XYwVa9SN=ceUjirP^Y+_P*bu)T zu<{LI<%8)l@v{Z?aptiS`{DeU4(!WI)fRumdmG^;b)l1Tc$t&k^^EMTBrmbUqiC$~ zGTI1Fll-Jz-mbVn_ZoW!ewO#&C(lpD_PgPyus;5qo07jjNVu1L{=TVWu=1m!oaZQm zmHT-``Dyykh5&PgoZ7+KPsIV(AI~`ki-Vkt!>T{oeS?xX_J>L}o*A>0s*4$G^q=C;cioduZ(F2PMKj7n{-}^YTq*5(G%lUan5~p{ zv-0U}!_VsZ6bhv&@DgDd}`O`!Gx#42-=pWgPkQs|fO8~0Nl%14EAo~wujGrpxcq25xZT=ytdQBikDJ44zU()y6*LRt}0 zC2_kUna78Gambg349R?b=r@OU4;_+utmtz^j~5NeJXQ3yqNkNUJ?!hlzBz12<`=_W zA9hsfSF+o(PwDyF>m!biczcAN!tob!`4`K- zRIYaAua_TH`lE4u<6a$yJSF34bzF;GJEeXS}d>vNvG97Ikv$bjlSD`T61RQzk^UwQ5YY+^BvzmMK_}g9s1+_ zQ*`rmf7$%!0ir6}=+D=Jqc}b)c!~ec`njlHu;!2c=rT7xisq6r@VV&fHTN~Q+)0`K z3g17S8~T}+FOJqgNa8OHw?BvXPg_>6Nn9_z?iN5O{56ICTElgx`V-`x_V1nEXYC99 zRfK_5h>!GFp^cBSU->&_h*v6uxNJUC2pPW1FjINNX}77}7ehJqa$3|XNGC;6kLFKU z+P{wsjNlMHM+}4Wcl(#{JD*kicrS+5m(L0B^p5z2_tm5xeIgf4eED}(Z-M%2Re#C- z(7Y>qK=vB%)L>g_=h*HNmYL`SiXtd3ziigXOsF+@jZN7S0q5$U{jp4PtYt!0nQ z%?>H=f5sH)xmdgQie*Q1|7*MUvoy`jpEu2nj%f})R}<;I!Z<#~zHI1^Ha2e=)3y9> zqGJh~dEeohe0{Z#>*tO&edA=E<&(#B)vwcUuPNT-{o3&D=(2ChUr5PsNXysPKE2(M z_9^9Qo%qe@*u;l2UCU-^AC-KJJsRf=CAnvtOQL6+G}emSqjT!ZqQ6@z8?-sLZHbMY zzx}ySKiu`Ecou&zL+{I|-JIrhb-Z_{DV>_LN3p5qqHtZLYsI9ROTu-Dt`&=FE(_OX zx>gLTd1SaAscXfan#Y9eF}haFsd-$u9;a)?nwl>P*B9wpF{b9p;d-*J6N5;t9R?I92=6{#<*}c)yc9j>&iJ-VE<&7PfEy<)>ak zUYair@5Egyxhc3u)8gE-Jg2N5ng5=|D81wGnNJVtYAU&W7Oo}S4z=~?FS zwY8Fg8p%Sne8+Fad)l(&bI01F=;^82hsb{a_&uC*#g|g)zkKD|C&y)#U#j<8=ch^! zXXT&1^6O#OzVZ8ir+)Mv!CJ}FddaNbH!psu`q{1_(d=D{4QKW3=4qpHRi!sH$M0j5 z+)!EdVLhY1OyirTJrvD4md%UqZIut1-^)2V-pfhePRU^L*K>N8Ig&2wJ%mE{&tqwiYA1Wk%b)#-gO z-lvu18y-smK-Wl7LF4=cOD(a|Ar8ZJ`T2#_;x_5c`2FK~fz5SP;+H^Qm zvOUtfV3Wf89Tkapt9Xwj5mcxs(HO&l-|cf&OY8c?=zoHJ&T-;k>B2=y#*Ia z2KSXk_qB>A9~~V%-6Yv>t|`)cZ5M3cA$fmQ@2i#Gu(E2UzEjhoJvEoza7~r=@tyb4 zq0x&^YRn|k*2XF3`*PILsnIH!0a`#PFR z^SaWm=jhGhJ=HzJ!FKI$Xb$hE?$Mss@>=#!&N{ML@0xM%$JO7u^sEW}~Mc2(Z*%2F4DJTo>YED`H!VX$LCu`TU~1OKI+%% zoNpIZu6}6Kv~zNsUQQR6u1XCr{nJ$sZR%X{v$?62Ka0OJ(7NKk&W&!^G50aWFXpF) zA0~b_U*Gj<(EN_p{DXa_3!2bx>I(3(5eym@o#>6^BnRV*HgidiU zbn1tC*AJb#pkJph7@$+^U;klx){)(sTV&4j6360$+#mf++os=zd`r*%dZ%>kW$D%r ze|`Cpc8ziOMGyTlH^{w_i{HgPwRXSw!|)xYPZXb>?)-3__5tdfQF<@-M#=5Utj>|k z!+QS!U3pCF!eiA%FFx5OoseFkAL!3AU87SQq&u90Q~mm;>w`gmUT9gnY46C~ra76Q zKh0}5{Z+cGqi1Mt$B5L3j?SUcjuDx%jx8f{J97GdLxaA-`X?$U|FO2bPJyXBb2@vS z;=SYxVx4+0=uxS3Yo%nZL%NmMsS8fgsRv`7`px&lok^#*jnOyF#zfZ=6MbE472gIS z#`;Ik%MMPgRZo`=T&pe&dNp2nw=(F}>*pues!;>hs(tZVmEZ5T^t5Z$s8iOe4Z@?f zL9cu-^y^ zIdafF>B`1ubUZGdc~UyV_rU&>bmrKw=vb%Z=?T3@pMR%-@0s!ZI@$lYQuqH2#hD+M zEmU|P_A;Pr|3Y~xdgi7x;PXP29TOdI$<|q;b*O1q?pWbkL|^R%YtfU^C-me{X4H+J zkv{cFFJhe6I;?NxbljLaf8R>2NuR0Cf3NRw=E7-rp=Z*m4f@UzYfqzS-HTr7Jfrhh z;dRe0Umn+bg`JRJhoE=( z_HW1Q(EH+b2>Xe3=qc$9`ZD-Bl-C!pL;qKSzHqPKL|+PJ)Vkoks%O$8bOoI`lfD%8 zZyj*|@1#euu1Lnv7sXvqYtNud=n6U`!FpHvaxkGU?ZI~YnPh%%YIKM7#k3(xt~zBUqa@KB+v`o2T@R3eMN-Ts}w6zhxDq77P$`t?O?(dAlu z&a@WYr1HYG=yWjF@p^NkbSb~yyn7uw-5xjg`QQig?Z@oJwO!>$KK0VIIZ|v6dTgA2>pT9f0HzgZsn{1y>`5T*KKT`Nxqx5l>{r*Nj{NHH6`#}nudkGK|LYd@e`A#GXs(R9GS$&}$$qKZ zS<*dkvwW}kdt4)1=Sha1{*2a>g&G5Wde6mR@2zRPqww_xD~tW(0$)DKla$7o)&b4j zkLTgbuWWx}v+l|B)>HlMXjEZbz`Rw+@N)_sZj7p0m(=Xd?{#9GZ!L4+(LS(~aW=;pSNz48t|rCX9DmfiU~?)JZ_C#|x!?$r`zXHOS6PwkDz3%sLgyXvd0AJN&iClNxZ<2H z=q;YBcSuI$HcdS@+fgzp*Hxpw)Zbp|0b2KR2}!%q5dw5 zN;~eFL7m}y6>Hclym)bbvG(7}{#i&YO-J_PsDGRuQ=P`lzOQNOZ`!$v*Hq@Z7U_J| zd3!%!^59)Z>(0AzknxV_AMZ^XGwa^(dfZbq?i)1b6*`KiMqM@fCdUoOA9$%z`wbfO z-5K~jbLQpxclSMaw5(oz*Nm%XUNiH`%kv+mzI@f)x8Je)^6-eJQA&L3Uxl8A@RzH~ zr}aE8)L-j8`Ly${eA>M*pZ53(MsNPQ;&?vI{YyTr|A&0qx-p-2{z*RV?#ib<&*W2m zXET2y)j0Jpr`eM*Hneq7XllX_+HH(qzvGo=CL4~2&?dsI)S1IibK z_v3C+;h@j?v-$pSK27(u=0P?O2J=92F%YdLIKZ_^*5mW+X~e1w=JIxC|@%sU$EyiAa_vN|^8Z-|W2!cvRPwE_$jYP%#)Y2s4;K zfhU0}TM_~!2enHBHo}EaB-tjurlnF+Jz4{_PJ({iA1gH7l09MZ@Rok+CZ z7k9|Lrmx+R9d|cL-1m9vzW(~l?Fj57^3eC%@g&mFdjG$NQ|Fv20nSao?|t8UM>@66 zUVB=5T6^!c*WUZMgj)vzzXbD93AYXaVo57@Si-IQ0U-d5?UQh81`zoXxL?BRU4S4y zke0Bz7Z6z%h)G!eA@ULHV!n3(NymtU)h`30TzxzbAM*m=-GEry^F57nyAqJ+v5-#4 zUkJBW0+P-O3AdI4lFpS9ZuJ6^PL?;|)|r5$bGn4p=*I+|g%VbiNc;!RA%6j@y8!7v zEMav!AmhJV!mX`<44>_a;rjuZ?sXDYlQ9VTB;2|ZknT$)+=@I9@gZA8e2~Qn`k~uF zxD|OL+yjX4893;gJR<3wJgne=f*A$d74$3URnSmy1mWRx^00yf3T6~+SJ1DZS3v;b zugG0I-{YP>v#`J@^c1<*`91E6%EE$@m8C`QaF@q@cY9$$Q|lIw`>=b!UF6>9-jCl$ z-2M1H=gPP};;0*s`-J;Bd_V0z4*bYINc5&XV${pj^Y?y;5Un6rlQCK6@U_aFnMS+_g#H=1=j`*UU1 z?TY#t)DO|?)rVow|Bc~W?EfRp7W;mhQD}NS`FfbCAENo<282iRVGlm=Jge+A z--7O-u-AMN<5XeReD5t~ulZP;GBaI#Fs>5rHJ`#5TbMOpLfsYScHsH^PrQOYv@<^6 z#Y?m9CsNAH`pTytFYWb1eKCvC_&taDB{;O&Z*thb=CHrlVc+I3_c+Wj+QQG#caeQ} zTRgJUR47p>`%yv)>D)%I(5B9c+D50)@+hGMh7E1Nv~~9M#nNpR9XwyiMAD7IB_lmf z+s>|Fs!JkcZ8t!L!laU#Fg?A_gNjtd+YoB1%XF)-;`kyvg~>=P5==!*mmwIFZQGKO zEJ}H{o^I3=j6uW3XxrShzOkhx&=ySggo3?oO@<|zJ1V6~q)!`Ua$w?VN2|ndxf!>L zNGtKky@&d6CS|GBa3L7P7AAR4*8k{=^WxIRP;1TR=GxiunTyLBLyP{hF}4`(`cNNZ$ zdujF?aRa#K#mnMX!2DY674fpgYvOYe|J{0RttF1XU4(nDRa}3k;`^?O^KW3sc#rxgiManv#gDsp&&lbOh$VDz35s9 zx}FDJO?3<72kI6nx^4np>jYg_g06*vuHPWP&VjDqAivHDx~>In|6X)`33UAsbRDnz zQv9R3CCIC4&~$TrG3fbH%m{FdQ48(8XzA%IJ=ze>A4;rqIa9>WVfp|k1B%0ldS zydkt9-Bv=tkq**CT3*7Q*jnJ|9`rnGz-RbNF@&AH0_w6%hXZ&hWRs6`AvyFd^w7q&}Y{uU%s*JyN zW~}kMXMWlE!jjVX_>#)_KQFm9e(T$x<8I=$@jKuCyfO0jFJ`>3a+iwe6f^UC_GOCW(F1lIJwRF+%3EFh|Xd214 zNGHpPv|9O>m2Q@klXhKRIt}D;IvuRHIxVb&GCioTI7gM~U>dA6Tj?dOA;a~o7w4uw zi27FtJvJ}o=9+fWT#xb~%{m`g23Fd2S&;5;tNhpWlFlP2i@!ee%NeBe@4)9+2Bh=9 zgV&M1KRfda(N1(4NWWj@aV_!~^un*qU(&kXiibXn;k9gP3miWZ$m zM?lYCpZUcMwn3IJ+uoD7gU=c_=H8-y*y2asW&F;#CyH0cM_wiBk&Ney^D3l4@GHfu z{&()m^P`jJyh=a(q`6cLT5h5ljYE$^I9ua9;#J`IP{)?$c4dYPz&6h?Fg|S4qsz96 zU0-Y@s!!Vd;^$hdDX*Mh{Fn$`?0n5HqPP9wOy+{rvnJGL4*&S-vEQYR8v|;{ruDW< zFu%Kw0q2YxFMMxMlL|+XXY`|>G%XAcG8)?hJ?jhVfw!yhv>x~&7QE$A#cyIRrnkLc zg{SAUydQ~U&vpn@l&H`aWX`zOp||}U{8hp~J#m~%xdG?Q$01J}M*Xyob9LEZ{X^7W z6(3BO{^Zju=6!n9&CqMj+&_q@<@(PRndW7)QBv=ly4=v~&QP!0{fsd) zQ;i&X22+mx2JZ>VJj}BxgwFN=*7;mm6Z_E|nWlE=bGI)xPNX}Gp`HKa8tTLSChcc% zrwLxYF4YB{W$H0c{gS6;#RK1%(+wTx<@k<1@aUX-?s8Q{@4$OzxT<}z|NQa?ismfu zSui{JSlzjMpc~yWyZ-rZxZU``-Z`~LJvZLd?5YaY`d>DliKG<)x*e{3uEf)K0U|(yoUkZEZOq=0<3HH#b zHsfCad+1!7_H$tmoov&77VM$3ZQ5T3d+2m)`;8A2wM?4=H_-dmZZ;zSrcZ)9=!R=| z(_Gk7jP)L-pLsE*+Fv!b%3pOo(tR8AVYg8=ZMDB@Bh2@pjHdP(Ra0HVRR;8M83)63 z&GMg{UgocIAMiiVvM|HmZa_sVf0?)!$TDGh7*mY%4U<5_1B!+RK*Mee4JScEpM{1W zfQA~-fU{h(G}N4%zMVAG*lBncG%T2ahUFF-W+@t8P&B*%8ctehI13tnV4>kt(C`pw zm}RA*_T2PmNkgrjhL1qQ@(F0Dve2+V(QsbTa2_dsC7h&0sMX()456;w??LxY8erHY1XS5-gSbk`Nw_W+oWpIG;d==;mOh5l!jd2pXt zzuW`jeWd1@W&3KMf#moZ;}O?0-bd+t z{^>Y$$i&(`bWs^U&(6R)L^;o99l<%YBbR5YN5_Giv~c$5ILZ|3@Ey>j9{G`R;K}b8 zuW_AxV9)+>?)Q758~!4dwjk&Hkz>xU23x=vGgiTlakr)`M{m*KM~| z`>SHtoLbn8GjhAX=C0a=w)z(^KLay#S60OCbyo$@UjGQVeF8UQMQn$=%8xc$gEniR zeb%aWTBq7(0Bu*gh5w|xs_-&*;~zZNenV}2#}XfP zQ0Cz*WzR7WbO)9e8ncGRFJB|}grMB~I0w&TpdVOq>k#i4?Yaqi4TbVv(dh3PXET#u z#5q)%>i2H+4{d-BKoo99uQP_s@>O%RRVE>Zi0XL-{M(8Ze*6UW#82KyRq) z+FOV2`HQ-tI}z3{gtfDyXlVRFV~A&djEJy!Mo#uTr4oEknVG@e6*!CKI^Kgi?Q0Fk!vV zkRDO*8)UuTXsP#&_Ie*%vvFu2^k<%dzDaD&)Qh%*_G^c$#aY~#*R$=gT?|ZqXdU)b zV~^1M_aBAM#y_Gxc%gSE@?iRp*99N`k=XxWVDF%ATNpE&Z412m^+$1r+Ix7#*+l9b zwV&hM9iA7$HU#}OOB;e78tNi>Gwzx)+mL9ZD^wd@fxG?IT)cf;to-#}A@U_>`SYAn zmhCC>nF-2&7<$^Fr)q}smp%2L$rG|=&vIw^WB&bHmA(HWWj`umt0Q4)j&1lj4rp z@dDRt&i$jVO#L%nq}i2ud7aJ!+$nU{#zl3zlo$v7kL@`M6UG2mQHQW6o=+2O z^4Wi)dA zDL$DX{5LO?-VXxg3m^O3#B*o@dq&D9fHzS0g)qf$VKYJ6TmxC>DK0kHZVgik%6 zCP1hx`Sybz$YFd>PZx>xtyAzY(n0)j3=okCzI6&h-`jww#^(WKxP=l{Z$ZA%J@0X$ z`wf89E8;mV)W`8kxRr~VjDHa2MEp?+w`Kr|4+BCZwc)vxX!uU?hjlax{BOyPJL@CPF|TdIPK|ag#`mM zj?NgI0rj2P{j-bQhZhe(G3hT6xmDi#pAjDQVA@fRe4eH~>Y$b%vc6l*pTZ6O>-zj% z+FSe&(2Ro8^1ZLYO!=^GA1}ba&_hx2RVcG=e|wc#*Y~tGtM)NVg{SNLQ_B7*AfEtU z5xy|tJPT#k?e{w6U$=+bV8*}s{Jz6{z+omCR`+i@%*bM!{Y?)41rGDu4)@&-d&b4r ze4O`d^$3*@XnG`r*-N*Qk$hOmGI2mh?`|9*4N<&OIZ=44s*OU~Rc#c~scNIpPE{L) z7OFN56&YnkotAhXRAm$$T64yFhKoF31|HgCi9~l_Z=1OOBF||vDolrhjlv2A8?6*0 zqP?(cjnuQT($Oid+0c}#VDqTnSoLT4tyeI3S6CSin)t%!&s0D`Mm)~*XA&2@Ck##S z3*E~xs4AJ(f6->JSN4}euFg7msp}Xz973>@?31&Oap8NybU0oW0?*09ztAIAB-?_Y zXq|wL=HsnY{<{FlquH%C;pIa&d>Jm|_-&qv_uEW5_E)%j<6al<1>@Zu_IttF)SVnp zV(iH~p|EaKybxp1TLDMS`@!xt@8)R0nGzeZ=WL1VrhD$fKIaVl>AS(6#9r5`8q7l> zAK_jVIhT-kceUYeFqAFMkXUHD8;tjYwc%c{QwYbi)P64*?eu+EJa>R{0cW_UAnSS* zFYYh;$sqQfoWi`}QM|&8J^S3NZ-#+A`ySAU^fmvVxF;4v2JDlZa_mva0dvCLcrWgs zxVIAFY#iKp6Yp-Cg+1TmyvTbma9@=!JJug`HEa$!53DAWUt9Y_))Dr1y56xaSo;%` zS;^*So~~tW>x}4&w)53%w0fMgou{HZE^-ck7b~rov5K*g@fL}m;K5yM;_0U!Jld?= zIfg~zxzu*P!6V%>JO+6j6Ru3PXdzbl@~g<>M<3brf;DdkL&Q9@M7zqgDSj?Dl48}$n=h(F(3>1s1lNf ziTK(LuqI7gP|5v(^u#)R2<9@tK@3{`2-wQ!I91?F9Nkhk@{2wf;&bF}pQ=6T`mB5; zQ?7%0GR;rTmh-`Oa~)Kk&xtckunsyG>!8KQeyP?%!Hg^9T4?@r@O8L!vrMf;8e%;( zzx(mJLYxCV4QIzr$2mZk;k=v~I5+2VoaZwW=Rgvv7?2{-6_nw*4~W#Ao2! zpJV-$>En4Zyx&f*pK@Ot&oA{~UOR@oJlKx)3<0rbK?s_f!Q;<9_;2o^xsd&w#U1ZB zn-cs^-p`JC_c6HJkN3dnk04V;8t8BSgZ{@&Jm%(7CMfS47%B2UGqUFo)}7w-^>w3j za0lJZ##yda(4Vj?Dtt!ZTMR)1>cLsehfZYkjAuw={~qbZy3ar%_9XIqp>fua@6(_| zgjHZv_;Du8cW{;q`x4TI<}K($rLE9u<@sL&kPBqPhg&6&8$mgq`3_|Z?2qP{ayqXl zUny%qlfXK&|2)=_&wG(y>=%j=Pdj93q~pQaCKaRE3pJ+Vy_!*GHFdmjiyLq3a+#gE(F!uMJuEVcwPHs zthLl(t!;rZd$bPgBrWQ@#i-heGWi7eOTHu0HxD`(axZTI;5DF);rLk}Q%pba>&oh2 z(5@Z&7Z2WKoRsObuc7Gm6Q)tG6XZ+F=PE6FAFwV%T{b8K+!cxYHn6u?o_R4x(4p@V zVSO6DXH2dYBJWS53@CFP!P+6qj=#8n8(L-zy?0~H5ajPa>B89V-K$(fIq{zxuaI?# zX(%@1fiBo~)+b{@({DbRcVwZE`y+o@PtM<$KVMl#28$-HBOfDQDO2TH4r1@Rsv|}r z)?Xou9=%G{gR4*{R;lk*M%6sD-H+#>P87&8&sQhBs9R@5-pV`NWPc=ea{Q{z@azzM zZkni%D5nAUi|efAGkRUk5XP&=FwO>lm;8=yWxL3qZe5>#c(Hm{=|9PO*M@bbCoxtR zys1#ONhwQ}^-|k2U%cR5ctw5H@%X_Pth~;{{6T%Byq2^&d2PGu$H-rW99Pw)cC3YS zy`Fxo{9E%k9q-MB#&)i~dnWbY#Wt<+<9N_t7#dzw?yH8wAtMy+?TRFg?#OPVZc|Mi z!nn}$94zzA1BmD2#lQ*m)j7;G-cqBmG~9sB9Q%M8q>jQKpE>pw3iBrHF~-iZ_ox9k z&pXa%zeR1t@J?XAivxE&$a_ADT4~^KM%jBMD#w1{BKE_|z8C)UrN2}~Jb!}l=ffU- zaiCbj>Y0EmASdN{+=QPX{ObTm0ha;(43P5LQb6Gj5Kes`ARmwh->ZO_v-v6k>D~)? zEuaT*IpA~1PmGCu{eU#ztsw6ST?+GCC;^7^JRrkK12X*ifD8}gCjnmtWVk%Po8b%q z(m&+~C4gRKo)1WWJhvNiXWu!u&^z?K33wySyx*-9^5_8xx9$hL4tUO&mI2j6p6NJTGDOall2u9|pW0Farn~wyzfuSr&*%SRDrR;eQJtvMSIjVRZoTOTe!LWV)^f zTn5N}yG+l|P%oJNw$HFM!|Lk{R(;&1Q7m<+@%#o?ta%kS7E_huAjL^AWi?k{UNruzUh7o zzt0y87eIzyI8f+zzghSe&OslTbac|-B)9wE%tJGgW)zlHj_^MaF6H8S9y*8iC>uS` zEpeC^(2VzCR7O5imHAO+{#W>={U0gwl}I$@?0Q~0m1ew}pKzbOklQQw*zaqj=TnAf z@&CVQMuF>j>Hh_@klVu_pLg)mtoZ@fYJ^$y$3InO&95F+X3hVC@Js)iU;VQ(YyR_n z<^DN9KD+Q*J`*&3gIS6y=9l|c-&D;arRMT9u zNlLepeW7$)B9ul-l(K(*Cw=K{m8J`8Jj?^JmSRPAYNU=Gt2D{THd%zsy}sUXFpYi7 zv{%J^yF%rx$2^n+(mnaP&(6cm9p5kwbj?O)?^VnU8?)cTBt9uKihLLd9O$1(}42j z2Yu{XcVSY(GQgv9R2s?wFiuiPI>P7@kCyii0M)DP>24;*AhQ8Wp`5|9QW#wmUOr3% zUzQE?2jjml{9No_Euj+%`3mAOb*?ElJ>v2I`t(Ahm3w16#_`Acan{?rj|Xw~_LTRp z0-kq~Qr1N|vENHsMFHm5a?UNoG7gNpv0mi*Kc1KZUE;3E#%uG>*S&Ei^a>YDGY;H@ zdF{Vm=NdwqiYe|Ix6yr$y@ZD$ehfg=T1zK_CfU0ZPF-tW)2a&H&b!6v3*o}gjeUHH-4IP*%%N4$^7805>N5~+?HKi)dVydX2Ztfk5^^`u&QaIVHeIfR&}+t; z1@eM!z_cnTBjQ?xFoQ2p4miajlYdgsnX6k!8CyR01E`w}kNZ5%CESqT7eJ0*2s!d3 z$dM;Qj*R;}f8;vA`+jZoUoQDj5d7wI@*!8|vC;AW^lK|G+Ot6NBE6;~?qFDEyw>%I ze+;q-$h_Q0PnI{mG0!-G_3PKW{;d{wRkZ9~aQ4ABMzKC}CC=pqYcKA?ddcWC_(NSd zjo0KmsIy&vxMb`u;7~VTYb%)Zz8ids`#(G`w1bl)i7dCw?#kh4A4h&7`*<{qEV?p%-d zS&w#Fhjq5vA={oGta**KxzKj)>t42Y%YJrG@GnI>{X;os=zz@IKz(0}HukYti#3k* zFES2X@zDd1{e!#kr$MZ-l|au1W2@p*6?>aYetIGancm6%b6eg(A6(UcuIUYoO8_^# zF?yv@_0AHbiuW7`(FX6p_(PthT7dBg^|q;_Qz&@YDBCmAJuKEhC0~M^YOmZNVj!OZLF;Z>y~oeP4L7C*VLE} zt}W-`iC9C}gZ(}noAvJtK2}m>{DAA(JFq785Xw^0Sa58>z<3G!kXXkaMIMmXYnlH% z@O;#R;+^1?a$Sh=70WZ*$*bMQ`v|8MdZQ=gTGZTQ4`a+mn!N?aYK~bjTot+jwAXfi zx3PM3p1k9Sy8kbMo+$2xS-uoH`WQQIfcXsWmeqbg#kvKKr`yYLQQla`n0stc?4!1= zzvR6KUgqsY>oUf{@9O8PU;Qq^7tfohVENVyi04B&7C!ZKNZ|Ox`y=_hJc0ivGypym ztp^Msv-#YOgd^{A!so_2teg9&KZ7Yk>=g;O4g;cJ@(luF4&XZs2+x5-5?03)z8w&x z1@4xxx=G$M0YHYw^#kI$egL=?`g3T z%!gt?WMyEcgw=(BOefaPMfe{|xRvVx41Yl34=X(7l=PpLu$pr+re`G}=_`?NYX%VR zCbui-SJ0~9GtpXJW^cbJ~a0*uHJlQ?yGa( zoXaSUNg&E9x4s5A%8m7W8rH&I*IUjtXcP^$kI%MzaUD+0(Pm+I*aLavI+5sio2+5+_|Dgksj zUX29*V$fbdMXD|MiR3o{4mG4q>d|MxTpu z#O#T5H+Z%P=U3Fxko#keV_xV^jX-C`GadW;vBz4B0npDI*bg_3{h-4O{r7%8`_L2P z7;|vnBy~;3pr0~$?TdpOEPJo}u}}74jB`gY_TadL{@-6!GbHy%Ps9G`>2iPcwGR#A z?!k}Rajwcs}}&SIwsj z{9>=*h}sj|?mn_^qWs(Ouj8vnm-tUEaY1i}Iy%oDdE(vcYlg0XKF${C<_LWq*A?bo z@O*K~{K&fb@0hPMolhZena+2S#;Lex;m9eQCCrHlD6ksWF3cF)`U0qFW8*Sx*Q@ckg}_j{`Rw%@#a-I0Yya7W)$<(q!< zp7@^jeh0q4^Xu`}M}J+k_8z>W?gt)Yn%={B?|sM|KEOE8ukH;D;?6)X-hE4DxiNiS z`1N4S`UvDljQf4~jUnD1=&`(qd+PrJ@ISey?tRd8`TH-G1q2O0#CHO?m&!H^I(~>d z+B)$4olil>r=SC`reiAR0Pll_!1f1l$6HL?Ul_b+rJ!RY^y<4o3-g$?41XeN`4(u= zt(5#C-?)zUXx9_!t7|^Pwr}k(O%^ZN?e9!qy{uxbI?mO(-XJ6D?2w%Of0wU6XW_%l z18x3o`T9Xic;uDl^9A|(Ar+2S1wejIl>fKn>l>8+U4ZOrf9HJtM?7Q0jrn*1=G=vl zmqF+9KFG}WxDJrFcgT75?8h)4(|lZ?WktQPFT}^O@8o^(Ee!FCH%|KL;~SwzxEJsH z*Sm&R*WoM`yyV5p!IQ=?S3JwP8gvnxX(-ISu^gv4xWGH0zCg= z@ce?0$6Mb8zyC=N&o90x&(A2H|A!8q|3??$`G1^;=Z8MSy(FI%tzCilLOlPW33z@6 zeFpoVCoMdmEQEXs^FpYnhiiu74iF z2tEvtK|VJV>&?u(9R7dd{YsRl@PSxDJcmG+>Jo(6S&$douXIX<=a<1511g=$C}`E+ zgl%omsR(8<&h=|Ozvi5Q5A)4RpTuT=FSZ`8^WB^EVhfL1XniiW9`0oahi6!o>zJai z3CrBnEyJU1q+z0Y(G9Rh5ej9)5)eU8Vx9!0Moz@Kyf~{Ag<=zPiV*BCu0HT)ro6wXIF4w?MqK$4JDd=B#{=OH*edAVr>p5_favKL8#93(Y zf3O{L)d9>&@SPK$4jX9`XD^~0_lFQClC}R4K>DZ56S6zpM~ic3gbX~>j4D;EXgS+I zKK=u`L%;L-gNTbf9P^BiMvIOt1f3s^f==|;`;mvZ7ua&98paLh5-!N_^N$^P52@bc zkdJn2UKB3y-#d)6mYH_aNqYR)4+1^W{q2yiXY}40>{IgNyqeD-|3@+I|7L;zl z-48iF{q)1U#PD>#2bn$3*hG2npO3OY)!Ba+!jXB4@C!Kqnt!Zzn%eV$y-zr_>e#}7 zF~s;ztG!pq`wFbrB7FZzjLW-k!#bn1mwTgbM}9(DCc+)X`UfV#Cm=UGyMgz;dvG5% z@|kyS6Ouk%wz|By7W&Y1wKfXge;TjLHIQ_pEa;wlz_=&sDdmP?F%0+@;kK*1;@ZT; z?ra{u9P>S_tvJ_J^m%=VFQ}C6S>aMk(LhRp|ig0ii4&0r!x@pIqj>3M*1ok|mi2gkj*z-Ik z+GBr6-tcj!p0G!q%4?7E7xt4Tu*aS^VUO`)UjHm_#*cj>dF|1Dg+1z1UVF^Ng+2C+ z&po82z-41FzX2Dg`0yJ z_=jBmm~Q{=$PeNlaq{&FtYtvMsGrZO(aiTh{HI zW3>xayMtS&JJQDZhtH2!SpB%aB>kWang^5{ndkQV4fC}#y=M^N=Cm_sexFwPov$pd zd5O(275!*?AFH;9)r*$)N7(HmUP9Xvx=%C0~he&&gNpCtH@yS9`j1_wtSZ z$awAieQwMjv5pCTaC(|+NYkbBQuDvJ6^~&4!=IW1_)jj!IxW`nx`W7vWsmrW{Kk@h z)O+fjdjqvzia1{j@#(sSd_Jh-ae=Sat&nK|O=3Um_~pjQPp>pi%DguYybD@JuX7I# zBR_KJ3`t%#0v(OhmuF7uepc(XV9opFl1avPoEg(P7wwYzN5<~HG1hPDl>GquK%?;Y zL&$cnhm42e=s2FbUeaZigXz759^`}0ix-g>B|M9=FmrMR?oVD(h(2%k@-gNM+?_Qh z;Yt2qIR{WTPReu1jrr4sxINrs2O8;y>*`3)LFz<7UI|?Bv3}5cv&+-{_n_9tMUFMjG5@KME(6aK(O?2lf=e()mpPhZ6TxUz>10G}NCs2AbK zI(``NWIh z6B6IA%!CYwdKK5fT?`OG2Uvc9)nPy{@EZV;*GCEIzh0RM>HliLrEs?ha2?=$K-8@O z&)oy8ras2+0Y4oO{43y*u-X7bRXa+^aH+3BGa@mg{^b#`MqsmOka1R4wK6R9k_J@?2koJ!N)*+k|Yz`qIzd0XHW39C;5VjvrMS;FdJK*mqV_)h?$+yciXtUe65 z9O3K-WW4(%tnLR~1N7m#!;lCT>3#3CF*hEuG} zgbe2$@G-~+eItNK`cXoJ^{#jcpQ-RkdW>N09g+YDLf(Z2bGzS z@$~~j=Hkl$GJS+}cfT?d(p?wewQv^(Bwd7b*RITjbXTeH70O%+cs2a31Vp0@lt@^8 zH6X(w1V0LRm6;Ic>JKnUVm^!l(j6h=8v$fKya~vBcvZscQ-IK2@x2VlbP&@0(|~k8 z07&JPybO5pDuK&EFz!s=6i^#8Ji)x&^S z!yWfUGvA++u=)fb<0E9gQ{ReaLgqX5t*(K;w89fI+$KP*Z}>IOb}%jY>|CS>_=UpdPsrtpM}uU(l58U7YP*82^BKKxezLJr_7 z0fg){aJ7WhUO?8PMG{ue2fQBcK0#!pgOK5k0WGTt`<@gF#apK90-1Ja(5 z_8jl60Db@v{cr5Bgj){**1&vF!maxONyk13tM3QIe_$7W*zVHG%>C=ccS%@Hy-CJL z$oROQ{U*3?Qg}k*xv!n>2w|?~{#&*`KOoadNO$X$nUL;QDtw7Db3Z)G%?pUE3M`Va zdOje-A;f>6SeXg&U;P#aB@F*f39C;4E=4#`1F}95(tc2x2^s%Bz$&=w2Sk@0ctpbL z3?SkQ+%IAEF2Ev~(-I23MX=I93}!%afA(sG6NVYAB+xEl_1%DlFmI8tIsmu~?&<*% z{!v2GN!8Gs|;CubCFSJ1DZ zS3yI;5jdv%VFd>i%qZBdpkG0+f`)=4GTzC<3JxfkQLtS>zk*%`0T{$&w|kMd$UPIP zm!9cGZht*a<8}4pY=QeT_(|_7a>sg$-0k5a_m;ce?m^enILdbr_iE#)0dfEKLH8lt zvwgT=pupokSa1kO5bP`1kKdz(gN5=qf+F|uq?acZxu2W#JPspxYtql~`|^}iQ-GQB zJbtMkiaWZeyfX#I1xolV7Bo?R4VKG z=HDX!ta_sNDfd79z`SI^QkiHdC7Ft584laiSW5f znf1Jb{E+tMJcIrb$0_9=JW7~9RpyhV2Y!Z?`EMNN$5nWGUUHwJ$B#zH=j+O>=Y`}~ zj9{r4Hah2Cdq#;ex_zelqr|NfX}G<+`?%J5tXGxdlL z0`ehWqq(0A5zjlyOeVsoK)KiR-lu@0`$M3U&*ONldP$Jq3G*l|@zjA<+82TbJ||#? z(R?=G%WD25!nK;A$7M7BXNUbO4)fnT+{Zw_H9US>&08Jz?GF12M|jiV+3Np3hyCjg z`*jZb7CP+z$>G1wK~Kg(Pt;*P?l8AH!dvbL53+b0{eupA4mr$69N}T#hs{5QPVizr zQHT3m9O2D$*zb1ucivZT>bcp^!_FhIis7JzZGG`jTiXqJY_xSm_HT5`jI@B%i zpkLqIEI+iibzp-uZ%-wXxHsN{j>c0FfzskKd6xkOK;pjy7S!F%~#myp4&Dgl(v8aVWyuY>6>LL_YTQ*v*h4#`|J8*@CA$ zq}pO#;v5GAf*7(cLASWUJMbo6y1!*%v1Ble92$d_a!os34TyA2T2 zj$o|Mvj2eD7l}o9)CUVxw6c^sn!`$8qSt<2hqbNcImknMMesITFLNWPA=5rJnvcKKVgJ;7#>6Fy25RI$c|zneXKG_ z*YMJnq^_?zse)QO1N#FC? zG2`j|YnfhY%Kgm^&wf71OinEE^uH(l_Typ;7Rl%}ZsV7nOgWy5>5CoW;1v(&Wqf9$ zTvZWEgyZ*O`eM3X=8lI#+8|cOK#f~fb{1~V3DN*#zf5y%ECm&mpKqf8HB9V}= zI?hii`3tugo6?>%4j*?Ll#z2Fdg>m#zS!HS)O;b&Ha-Qs5%7yX)^$s+54K~y&yO{G zms*3R8F^yrkX?!yG#upGst!+^t!tYetPd`kWt^O{)PM3A*2kB-rmmQ>)DUNg(r(Hu ztUY6$c?#SNbB#HR+fLj7);Kj?%cR~#&KfM&HyO9ok&wD$PCv+6oX2b&D0!f*A7|A~ zTk*iO{y!fdUroP^cNjW5OM2&ty9toRSQj=9Oqql|Fy5hWc|hYR#H6DI#tPyv#oE6S z_Qvv|Z_zLJELqPH?tkkPvFHmI@gu){e7(Uwu?1dxsN!zwx4-DAI*_PW*`&|&8dL+NlZj3=Q__966)ExL*a{g_%ASP$1a zi8*#+Jz452=DYihXkUP z+;Xjvx(f$IxuQ(8-rq!VJL~f(^ioC(TthltV1fG|L4Dy~x`+QN)4T_HG)d)CJ9W&U zPhqWd9<&n!Z78SyT&zt{j}38oprZjfFm%!+-(ngEpu<*zIMF6g3i?ofbjvm)%S5yr z>a(3KM%?g=CX|~uFK(3OBl0G<&YSzjbe%6oobBM142wDx&NSuCJLm$9;0&n$x8>i4 z-$DL8dF$^w|9G}eA@qGGVXx3+>=i1)ULg(=RS0XHicPHW> zMcc$$?e-eb)pc%s?E=KjduQG)C|ObYz>*f8;e@mlSG~RajnONHD>YvGIrW?IwXOyJ z$NmXzU(@XU&3MHjEb~H^U0j9y!1#IXU%8CcCF8r_=t6qGsq~o1&xXgwPslSx7Krrv z$HpsoW*O6bFV0Pub~u|KIOd1{^YIEN9V57__UGW^{{itVuXBBbJH%T53GI)5T~nn$ z>?^6*Fj?w+-+To6+=ZFPJP#dtVgb(Q@&NDolm3Mme-+aW@7j5Td*c->KbqT-S98I~K1I3ee4(56cgIi6 zMPIra@cVG{u$c#Qg+JC?`ls$)1Imwe(pvZHi@tb|B?uR7b z%j)PW-cSBoJl6I++K3Bn1-hB{72rH9?6s@&yvA^>ZFX?aqOs4fl4n!7{W3oG-|u5@ z7-?kQdJ2uNjBhNd9Jy+^>a?N>le~&g;g9u~`i=vt?;F5aZqV(oT5{6Z?uYK92X*L& zs8<7vhbvtei!cq^O$qAmXUv-~8FRGVF#6e3i~W^d2nTaD@`Km0j$M2TVS1Fl|mfL9MSk;xc~lCf@Jkr8~T~F<;FV znKy&TBM-)Vu3r?)VqeJqlJy22PB3oz9Y7vo9RX%J9`PcN^M$$et1?W6^P+vck)s3s z0}GP%Q#k;ccK8duskY7JW8{#1F&64E^JsvyU1W^4ba^)4PA|=wSLD#kcF=AcW7*Tgvp|2-S%`jk z5_rvI@EV-EcOS+G1#a8@NgNk&T#v)UH;?Qwp1~axCr=|irzRV#WqPp}81unL(JrSv zFtz^}+WwIp^S1vKa|oubeU9XR#WRhQ7+4oC>6^FxecT_;vn2Xaw{pr3dEzX)_5$#1 z%pFjE6Z&zEp@-2{g&*W=Kk_$UJWfAe(8IFNH-^C)rAQCMWV%@YGr0dfR2zX zBf;l!Zt5`h!gO8XKiP%+8YTUg;kBfheqK_3sO#>>-k2_wnbVCsEW>4+@M3>V7v`u= zH?`Ug#>fWx_lwPyo%I#{`hG9=Q!#C!4En@=E7>3VLC1XL zZJFW~@Mq(RFDiNrwsFj7AF|AY!Q-1p5dK{F0q+t#ep$CpBj+BNS86lPgSDB#N9|_G zN7<+6E4Lu_4WGX+_Z&^se=+8qkN)N}w97RpmlDu*3Tb`AOsgE<`oV{o*3Uu9TDaT5 zIs$heo9=MOJMvAt>w-P%+{wpHd&&E?{Vs&TdNdbp$uq~#y$0PiQ+QUJyc28*`m@gp z{$$}T>^~547o6KWT8Fv)?ww;nMHkck8S6Ljp3CO$b-CJXcH>ixkKV@k)Ue4FX=D%uk0H@cSjPY$_oCyi^$)UIW?lSbLK&xX7y&s<~xW5pTp z$FeYrGeTY_zQK>!XSonQ=&_CEU>5r&&}Oh7kvu}uYqovZ>u-!f#CRCv)cqmM?{%NV zFeKl{o)(k`>l()>B`*73P0s}QcE!tSkGYwcV>$i)%c}p{gYy}B-o47*^T}q68}Gxt zTm>%NV=rVmuSdZ*z+c4vmsdDvK)G=*%!?SKdofO$g>)~OVr(DASZT>+#&#F+nD=vR zUNRSZE}n_KLHAe}Z(R;v2ASmcr|>-$ZRp!@JV zbAM-{v3Wnt@!S8Tx$*WNBxe;Fn`cipHh&+u4=`7H^RmLme<_%H>6M-P9m@gBUl;f=j`BHr`ji5s5& z>b}N(lh!5n{>iiP0C1ZuxNiWr5;&g)_b71FfxFCt>j&=et%LFLTZiKReCx6J3%CAx zeDHhT8-I-Vh3|P2?*aZZ;9kISz{7ZrMeE`}SbTGQ>7wi7pD+Hs_&+XQ5ud-LI)2xZ zxhG=8{QY`!(8r>j%iQsoTHy7|TSL&%?;e5c05g(RUj6x~Beg zrEB`$P@%E82YJ5lro-Q9ob}St`0SUC-td*X z4m6fcUY98S=AXrXRewDG;ZZN#Fn!m7#?pB0Bj0W8o@G4i!am-7G>&{Q-U>PRUYy_b z({99j8{(ageU2L^O`W#sfj|G&Gv~u^JTo-?${TS0)88-sdvs-&{bb{1#w-uce{x}N zb0>HJ$CgtKxo^vly+D4{N7m0NsK+JX_id=_(3xqSit!x3dFBt>33-4E&?R|6ahqy0 zZEQ23cRAV&<=tMF=Qf773~gsB#;Sf}YPSn#S9#HPTzJ6~M4QQg7r7AUL*z-oVGJ^x z{=8`G6596yc`y#*UNZxJJQi7c$@0N(F&u_rx&fVZQ}V#zx5#gnL*~9T+BIf%GZpr1 zlijde?mPA^H|SlV==G~Sc^G|)0h*U8x;aiFZEo<;63B(xu$TKq)R){jlnZ;Iz<#F``FuD)4GQtZ_r}{x*2fyKSBE^-H$#Y{Nr5F ze(*BWKfZ1L$-naWW4}6r_;TkdGA&F~t{q}j4|oyvvc)K)NC*v)`Yv4s)9e3j` zzR!hi))>yF;moEWJ&))wLL#>dTFu za5>;=z|}@`U4@Yh;Y|hAbt2J3oI&`M%R8g#E*Ntxh4);`rrP!N>8oGgV)S-I=m5r= zco+y@U2UBq9jvxHSZ#5zWp!z(5soIYUoMf{?S=Z!j%X;7@|JA50XEAG*jE{KjRx*I z?@7cPd8bJo41Mu*a$1uvWvubL}H0v8%{bxLf7Z9 z3`aX7skAKwaomh0gjGhk>$b@5n$Bb-(i4fN4d&?jx>_R~N%jlMVdp~lo>fr z`%p(ny02d^-G?LEjBpu1II_xUs9#?r3Mm?n1ce`oL7)eezP*;=5M2ALyeK@3W`dnzH{r9NNoLj5s{+Tny6J)i&dr#qoHd? zBM2u#5KasWugZw@1f#KDLH#LA@ms?~F7BQ>mSaWY`w6jtyEJxFaVLu7iqObXzop zT3VBaZcs;GI+8LPBk5EqhalFHU!;vMCsoy*C)~6uqy9f=Jd~HassZBJmU( zbv(uTB~oI#B*rUHW(KP)Lxu3^TC~1?Ju*0Jfec3WX&*Y1>4Vv-@T){2>$)XuP`YI- z>M~u{(v+vP!GBm4!l@uF`B@KCA{Hhp%Zmht9EBnKSh3brXtqNXTAQw&O|`ex-%>7u z5sp<@D)=%HlFUkb4l#3O4#iWoP~*Ej8Ovrg5nf{AspiNIa2*zm%|#Zi+|>oMD4WZ= z8gJId3>3SA!H2AIHb(@`46Z2=i-vaFoFFKPRgPLxu@^&y}|;? zM+GBmF`a0H%$b(R_Pz+!!?O04nr7Of0&LOkahGU|(XbD`Qhj0xhwufl|~IV#F93QnNNw6F~mWhQ7w??V4_s{i&9g!55pm_In*^vf{%y2lH(xqGcqCzk1OM-Od>Hf^Vt}suUs%rozL)X=Y&Rc zL(}?A^<`_2`O)4;Pncg!ejdCIq`6KeGZ~VJq*->{t5wGhdn85JBXP86(r9MF?g}*2 z8u!Mc9bSyZdf9(6`*f$KTc)nPq9a0Qmu-|r(`^k~&>j1_ds!ynL#(bwYoNt@XQV^3 zCgR8~By%-Fu_#P7hjjwwbvjIhBQ3IzHtO*0)dtbwV=S1)2$KY__i+T^wP4cd(_7NP zo?i6t20M7KY3c!w3`ZJpv)!g>D49qlwxu!j4o7!H!+pURTDc`6=@u;1;#M%!WC-;y z$1TzgaxHFKlYObQH-K7i(%zG5xwX#XM6vH%!3o3Oy5#QObi(LKt-l2WeUm)ZUBbaF z(HN4lI|coC^jHkZWaRk*f&y|nh^D1Wu%2cw+Zt1h@_OwEyC3fZWc6s#piBoM6{ zn$6KL7!<}D5u?F0asm@ETDE|MhI*qVolL|#Ia)~u;}PU(y_hM8u9{2*hpjt0c3^6w zY0h6P0|3Ex)Vza!(c&sfoz7OFgK`A6%7^OOik1_LaQLDpDkA#wT<7H%a89N-F|~52 zY@wKJ(Ls!&SUT;F?5+)Vim_^COII?{hb9DCiDOqGU@}I4Ee6mm7hl0`5%f14xMIxG zX>5bKc|07G^C2-gLI}v=UFdr)or;md+|p_m_85DB+?I0u;sVMtqpK$v(xWCe-tB2$ zs5fP(0moO+3Pi{5t!rvg)_w5=nr|f6$?a(M-bQK3Y+F-d_7(VKU(vFuVG{=ZH3+Na zMt*zig1y0xC}wx;{FslNZA#BN8|8$PI9-n9t4=rM##T3?taFQ6R|mAJUFqh?c5B1Z zLu*ucbXKV}c^{p?r5tmc7NUa-$IaYf&R}GZ-(Wb~g*U{vC2B&L?4}GdGtsT1t!+yr zd&J1nt1LIywKSoFkpqzwIvub6q>bit{5Ba!L(66(ngVl(aNObRNQ8GAz=ld)@}0MENW(%_+2fFOO+H8m+ArY^z~q1W*S22 z>~}C|`HppF4Izt%RPT0+MLL=_AY5MvJAKTsiD2g05DAPXY>1vzr*Fq9I}TGVpXe>b z^vzdUc|q%{wfU`O8<^0yvbOpTrF{@|L@@Hmh6r2`rO&CE4cXh*5sRj}*g$Rg)|OV* z5j(Cv7pJDOId1FksB2LbI44eNm+HmfHDb361~uin@|&3qEAS#AmkIGgM7zkrzqTjv6~H#5<{g{^KNT2n2ZE_6{i!^HmjvhZ+5O>wFMWuLu|RR zBGHU7tH8uPEeN;NBv7uxYmRJ-B*iSq=2Kj`47S?D>w2v=DLDqQ@>QEPn~3V7>Bb(X zITC42bVuU0a9L#$wyabQmO2hnX@@acPc+TxTu#m?uklDSpysUkLWVV^5jj=~jK`8F z4|_#4W0mp}Bnncup57eamV7`?+EYuqvUA|P)*)n(D7RdnNpl81fdh>3IhYe;xg5F} zFa|Spke~2iGSr1>Oa2g8$bxm`$e;?DWN zruquZa4YDrw>!E^cVF8DPl}3P;6?TXWv3PD5ycC?^b;0rI~WpRI|TAThGe(L@XCCV zUA++5MANFHkjQ9H9;E5AYLzCZ%xAikNYM)>dj!*wJ)$6npWTq+BGub4>{oF)v6diY zTcv~TY79rAO;S^t$0F-FsHK*|2T7%KGB44VNJKgjN{Gy-O(K*M`NwZI5bXoIV#`Y* z{_lt;dbmk4Bs!~FZ4zT4V|xfK7*iOIZjE3Foh4=$Qc{rKt*0S1L@G%VuyB^fUeidL zGrC}qT}CniQA4Vuv)32xr9ie81LJOqK=+%7CwdZnDNL3iCy-c-y&)d5h$OfxPmNxq zz3B1Q$HQuJ)zE~6886Iwwk7Oa`{Hr*hSE|QgayaJ3N1d_>l!*=P)|a^CS)Kw2{KRS z6>#J@>~4b5Bzca=LZHzx<-uZdj!p|Q?Uvm=JvFk@ig4jpULUVV1;qBjWt_}VMFpXF zUvID2q`bMIUdIGcnkh4}3;{@*%|;F$R8ZZL;-+9S*u#;sOp6^WY6gMMKG})uD=$UD{GZ;;iJu57R&z+DkY{H0;5=2CmjC9teF`tp2I>`!4TeFwd zI1a>+7izMb4T7AZiQ_RTm2d_H+Zx$jY!)&lk!LzgNS;}an15NrQ!Rue0ThabL|x*<9FcI-<|Z>@%zK@cP(jV2)|gDawXW5JLU*C}#YyHKm6o43_r+I%mj zrd_i8qHoi#Ig(;&%h=I-iAjj6`z%2<#Sk`Pj%u=8&_OKLyprhQJDvDWFiug$=m=a_ zBoF9nH3F(oQi9ufm~A;JUXMphM0kyi-UAoL3{!|FE3H z><{}=QtUtpt8^@p81i5O+#5uF!OCVT-JD3I4Jla^pI{i2Gj#QEfji4LAk8Z^ty1~c z<9%L>{pRLdxpr>UZ>~4OnC>^!G}ai=U_6-hY1HdAeWRzdCv9wkZKqtx#xMsWd3NX+ zpRKnV)GCjm7IY}%67xy}{j2;)#d~^plp8ILo0qt% zM62o*3xVhvoeNNMiU@IR)J4TZhkY9X`Kx`25!4^IL~6+^g_~dxYPGVM_xm5VRvuce&7E zYyb{pauX>f{tlO5qj_8ktixp;bS9)AGf&8{Q&LVRDa{d{t)1&d;W;ibda2tHiW$Ap z7}%fqHQTJ1vfELzPm=B=tEh`%C@K-RvOmL!q-Hf1Ezoq8V=VYZ8am^NWTe4iBf?f3 zM|@*3nky#gNT{|1mJ{kD^FuSna6y~E>?z_--cnatUXHm*Fosbx95=Qo-Xu9!b0mf# zL0AQ^CH-|$9|}q;m{vwKv$WE%*`oa<)5SGKG4)ID7SgYnQa-vJ{a+utBaGoV;{pFd z*@rhbYb_S8o*Bt)A&^P-+mYCXMIXo`w*_}3$fG0m$fa(PIJM^5+lA?%2vcTjR|2y0 z9?>5p&GgG*gwPStS<))kYE^dKL4_M+qqdbIbJHj~N!oW|F4+oBjacImMFIK|td#^I zP7u;8O*aZTy(tmq0!CQOB&>*9Od}zspfZoWwy*+~uQhtMDBC#1slr)mbB+26@n|FU zjf#}O0w4-a6=W76I1%Y>LXHGYtt34Vl4a5Q0-sOTh85I%C@suaq3b`1f!*3gwQ#5&QY4K0So z__}bo6X;B3F<1a$>q6(#71`zMMa#mHtPk=EJy#^U2bWSuX=hqsTpdXYF_B1?sGXSl z_k|Pj-D0GVW02(7B;sAqQ3F;rq5RRBoe4qa5WyIi0|=;%31O*MjwXnQq#KhSt!d^J z13Xr8>5JnJ;azt1G9=6#=p_WGbjY0EIuLu9jya;PX%r)B(9EAAQCUYdq3w0SWSCv#rWDs@ zneo{aTO5k4K`vNRVLD7@9U=~7RUWe@RXDJQA`r}9hbM)y`Ew8eL1@_S(L|Wu1jZJh zz&Ikb;_O}>Q8sb@i#RRWs!*0ps12q=T{YpJXx#47ino!(GH8&sB%2GHA~oA{vCWar zTQJB*Nn~B-(xfm>C$>nDkcRknTmG%**@0P4O%3%Bu#(}Slc`;=>uZBL$X|*G> z(&i#`{?du6wAxX&hUUST{%n=jNrNm{?cG{M^Wth%qIA90j!d(TRUnY(HV5{|gcF6b zd1D>2_|%ou49Y~9z62)6k0UxurCo3LX^+ra?a<0}v{tkwDzk!FoSM~1`^_TEh()`w zgaa7_Mb1K582v)FRyizeHMzE~!KxjnJfU-eNGvY2h78fMp{Eja(?lo4vn)b7>4~zq z(Ir8k8H}gBQcVw|7jKYwAV7BS+e}2$t#^JkWK}%TE=5bTj8sj$NUx0+*(llVYe#afgZiCSXn_^y zB|g>!x)TN!JA^p9IZg0(V(hpxxZCTbNI14dBQS^taX|Znx~w^#L^fmM-P#3>R7MGn zl(3W-m;{J0ed{;f;lR|EHgSe;Vr5Lex;r*GQLUovE#&yX|4c`>s#@3yiM|?PMI1Fz zrmY;44~Tb^yw@vgl{Xu7Yq=1-V2h2Ez_9-2I!bgm)YW0cVgPs(NpG4<>s}6F#0suS z73y<+WQU{^!lsBf91+qtn@gVgU@QvIe|#2$xG7;Au#;cc#2--K*ZGNzXG ztwuxZ?Y>qcn(p(Zjg6Zd8e4tP{P9WbJyewSK{E(zO0l+j?d^I9j6 z7+9xTdN5E9fy_XH>%3VJi)jJ5C2e|Aw>LFf?1dH>DpDM)0AL3;X$+(sWmYjtnJGuf z+DHM2v{8}^=|_n!lpn}*;HT0WTBS8KWg|nAHYzk}qe82cxlX#cw*jJ;GL5O!80kju znvf2;!6xfk+et6lt`a+yFmXc57eG(2d&Oi>NL(;q>FtFWgHl8C2ukoE9EHhCqn-d* z1$)wqFBr$HKHk~KF*q2rH>M5BJ{rfwDw?jrX~7Nh6Y^bbYzX#Hl@J6$N{aPXEe8bJ zCQvj(2}gPP6Py;WZzl%+$df!$Pp(6x zj6|HP4=E$vD`BsKq4M5%N7T@lno1yYF+*XxYKj~Is={6x9RAfI_ z;}cPomsajnAxK%O@Fr!c=BEmQSQP?4bqH(AMFR}`en z%2r97_!8lz%QSuBOX1e6lA)wg9NGuIlx>xX!0n%HIHGtDxtGGok>aLcFE#Z|<|Hk>CK{|Q+5y()3nYazLy$imG;@*9%Q2*=0!xIx+f38?jCU#U3f$ zp=0Py`#ig-tdd2#vg}&3jyR;vZ4FpN=;i>nW&QekQQJ}xbeODV0>fG^Fs$7I!_*24 zQz_kO4C~bfY&sAdxP5|-f>+K-MOBA?g{RZhE zhz-%vZRpK?8_;aA_+WP?)R=mEIb>=Lg0+Mo`o}mdDs+~`R!!4{K&75Lbr;k|D7AFL z5dbDssZcc9in$2KBABP&LOQSp$ois{H)%v&uozkJ!f08<&%GpJNs;anzfZ(Vn+|~(-a-EY_R!mJD=@m6q(xS;T=-WxRA~84MQU*eFWtAka zyt1rftq&%N^o20Y<|lTrVP7S4Lc0*vy*IhdN9&}@z??KTHH*44=NLdF;({Z-pAEP#J8&+{jsy zW(-ajX7KsEo0g_`UyX0V5VDSHFU3*ar8ug;6i1tJ0zlGNhQCXoO*<~V6vxdCb$LRS zwE#^mU!Iwk+3d*8vpkM+^DK{}+&s(UC^ygYINE|$f}9-4@9vT)LwFMr$CiA7tP<82 z&n$+DBe|8YBNt`2YW7Rh;5b_~2S-i!-B?0>wx908=P!u_A?{V}cAAW6YT` zXU1T{d}Gd>jk&uEbNBt8?_6?spVEH9_xt}o{vUW=a>*;XT<$KHWd_AaGYfh_E6uY-^Tq1Qj?c@|a>WiY3 zi@sBq_mFxK2V@MyTnb((H@yxy<*KG()62-@P)cPASSlu_GB`{-$y{H#p3YcQ>PU2e z_&U28#^Sj7S8S+cSV`Fs#*9?V zTERLAjCR!%Jscm^8@Ra2=ndIlZszY}r=NEsX_-xzr7w9iic1*&Qq53_>FxO**Odw9Ej1KZ)wKjOH6xQnG|;a`F+NEN?CoH)RBlsp2|AXS~{Xpd`=N`{&Ik zW%Qn&-zAgC{T2DDKFnlS%gE>sL>X>QKRe%hN*G=0yQ0+3)I<({2V<#>=%Z(mxrutw z9B1(cXKE?KZ%DfDvUu5GMxHXfRA!b}NmJ=OX9XVaKN-|Me)5FEtWgD{0{L=xmq>+2 ze4JYJ@cc1uzwS(?r+Pm5KA(~}AE{e2@Iy_U)3t9m8fxOcXxMY3!S0Jj*Vuj0NUhyO zBX%zu*)!3I-HS%{+|;<^2PaN&Pl;h9UQe}gmy~FC6}5I(QR7Y)n0BbYo#DFar2BOy z9n$4epobPycsT2=NGFML^ey2qX85oi#`DflOZpVi%R9cPNWMZaj%GaHILz5hnONkW z&2qYt#a#|(+{G^LGS%O0@yRM8(w@kYR-cK92Bf12L8(ZctiIuo|u8+Vqkt zS~>cGT5*ln%IMvqEcw79r&v}wuDGm%Rk8v8kg1KtlE9R4w4jrKy=;fs|vMNhvG2EN{s!k#O zxK<7Qx;71Iw`xd#O`4JgyftX!Taq0wOOW;|!kSMYUYOu4;)PXDMY24LlOvbui*U|G z?N|5saD%%KrT<13_v#)YS6}5JGJ4Fo$H?f#y=wd=i>LCAEa4qCwX%cYtYQIQDd$%sq#sK>d{X&B%X_q%I2{k9aYy#OJfrHca~QW;$r2|rLSb|u zZcl1dW@$mcN72MMos6rjy5yi=o*$>y!*%06eU9U!uqoaan1Sfzyz7qLxJwQjcd?7R z*Xc+%lf05l(XR?jc`wB&xh(laT#33#vO5sn5QutG%6mcn05=jZK zXJ${*HxkeW4vR~2`}ulyxK3{8j@Y$AYD3P99o71hKx#6mZVu(-PURp~dvJ1cosKcQ zqVmauiMLDUGJ?QqLJ@|7q^2-<#f35HaMr9eU1A3wH-`?os>fA-D^+)*9e7lK2y;{w z!W>c_Z0X?BhpygPb$RLDtejk_X4G_MzHTmk=q@^gy1Ka?f5<9vC&;yG;?}3+#jS4y zbqQ5PM=nQ}>a3HjQ%RTFP*g?c^dYJ|)v0t7SzTaBTeX38GTgunyO1%}CNqoO1x62W zQD-mdlh&zDpH(F3Fd_y#(*Trl1ja?Omp4^aXOj{7K*Vuyq6(QDoI&KI|(w~G|`Fqx&5kSQQ_FJfpNnpjAh1M;b;b1JCoFk zxQr8}8(%E)9Z7bg3uc&g9rft58fE&!lB9OPK=tKQTjj%%aiwT2Uvk3y6=f{MQLa8I z`F7vTQ|(J(_>5Lx_qiI|i#*M{~L%_@$=TCu!cEBM+^ z^ERJZ>b+=dFP$xe|D%)h#z*y}Ku0op;&?|x$GT6WJ3-XkLJmi&ie~X~%UK^UP*gM` zs;xdxnN!NsFP_>eGqfkDwGIMBSfko5&KzzzpPBr=+R3jPr+P6|SjXxM>hm)p9Vc#a zX3aBNo28^=(6*COHT0BOz+($1>a?q6{rPa_y)coM1&0#!F0L@BDF zG`5vPskF6mkcjyxrracQ?8cd5*mcG(&XOkOCaDq!HQiOYsJ|sYWOUxBg52p+f={1Y zTwdl_9oI^EuR5;E%JuVo1y%D}@)xiMvZ_N%0p|Kj{PAmGE{up%}Dx6*l*zr;zl~XqbQZIE=AU^JK#K%1jJ6;Od z@lqgR+!RO{NO`KJ8lYO$4!CqF)2_!CIzzNra*Sw6sRyJ1uBe5fgX9m z&1fzIC&cY&^2Zs#sr)42uAhog4f_;76{YK^<77alFHXj4`rQ zSiGvzd2#ugf|GIs1w);Jq+qC&B>quUY%B7pdWiS#&t)0g%dSTzMcX)v!oa zam2N^Q92gK#ZlpcMY+gld&2e35{q(?2VS{|1(#6;WW2bPmx)EWNO0vM79L>Vhkxg2 zs!pn6k>nnrAe2v0O&pRMPa%6%!^$`bEwO zRy~-?(JC_My!;1rvN>K>O}ct#RZW@W!a;qbHQek~Zth46H+=_4NzVaNCyiC5lBTLs zozALKNoiH7&PS&wm^XU~^`NCWQ~Nq&INWse-ji{`Zh{l)NvNlHQk_UIsde=_>524` zWLGacULh|Z5f+)Dee{cX1&-?@<&E)?0!DT9OBmU4eWUmw1k zKC&Y|GiFfv$jzoyQnudN{c{}~14;WiwthK%`Z%@$3@zf5NlAVlUr+MmMvBW@UwRW( zi2nq~pSenW(s8D_Mm<5%m_E*cu6cdb+eG%|MN-MWyhCJP4d!BB-Ve%O3UVcoGF-bD z2eVJnB2mnkPSHXf@OA?OZ{} zF2k+3px$H%b9uSAz2eKz#8U1x?pQ*}#XL~TGpU;JQsIhk9oN(#i)%u=&B1D$mK;%f zU%I;A#SgA&nSXFi%Y2o?vAn<%Dy`+SDGC=aQLVqg(4vX4=y1+R4=LhP^+3;CUEt~@ zQSJcgU80}gM5QV+)oQ5%RMn~xZ`F#+X(=gRDe~na4CMg58Cjm=baQxtlw;PwzA6ch zq6W`CIeq%FdWrHCy9_DIjnco%n($HDJFH-%A`!po2k55Ho@qo&ifL^vEz5SIQub&z znW}6|5RuGuTyu=8{4EOCHP^WI_Ph2ru6_KjeT-{gziVIP+RyLW&$#yYyY@G(OjPmG zFu=GD^t%oW%q}Zq$tE_`kt&xlZK|N4fVLv1L$SehK$cuuu!w0T(a8%I(Sn;9RSRVB zC{u};=j;1X-At;OC_dA#C z&YRb`6E4fRi(TBE#;>e|Zkoh$bjP*GbFCCt`c$Ovp|Vo-KJYwb$xBMiWfWh|PLZRK z?ujV_`}LN+<(STXpIm3Zk9@C`dyRoOMe`O{#3l|KU>56;{irxF-$5_FqIApWRj6ex z15=E}2~S(3Xu_lbs3wWyI5w}4HT&nz3%C}F@QSH9eS7x{D4VKjD4VKjD4VKjD4VKj zD4VKjIQ<(rTnwj&0~?hKy}p^MfoQwwaUv1r6wkN*)!crj$()` zWZ@3Jp=qSob~KGKy-J~y(Z#0!MuBQWX{9?-NlQ!SjT%m+r_7r=H^yC-O!dt%HB~S8 z;j0Oe8d)c^Si-5UY+0?6smb}pGF*aH_4vaET7yE?0w`k{9&weP(?Zs6m(_&a&QP@o zj_NG+b)Lp+MzQdIwX&%A#6>rXg@bF7QVaASc~pMy8l|*hH1fZ@K;BwEdRQcSC%-@pA@$MEbh)Cv5e){1H`KAqmaY9DVjj1B~PSI zpL8y`Yc$Dqmqq%VCFmrSn$f=^pu%XobM7-j~LQ6J1`>c=cU^N0slPYN_3p|} z808tjDxDaNvNJA=^qN9y$eC6xVyRuM462i!ZN6YKsh`RF=BbGDV*N_xe0zFi~EEMkZ^~RF;Pj7shr4C zJ}T!`hd)CtD2-%VHa$4r(tzqjbxLIYA+fozo1P`gXH!nl^CKs#J>||& zanlXT-}D-4)&=tvGPY7LLeAmmRZQxwgXc{wl5SF&bGw}H2n<$qw$&$0-9Bn{_etvV z>*M3>99e2~>Vo3ok2y;o1eM%)SDIexrp~Kmlwy^WIv~m3>=Jn$Qgvj~e*BEuamtNO zFz*jE8r_`Iau$=2=ev{!!4kDvlUmJ^CrVlf$|c&xi9vm7b)S}rd82)Utaza>%8}1A zy?u`K5*+AA{ljxyuz2q5zz}YpxwGT`>d^@dya^m_ZizTAc@|}yn>?E`#%*3@*8Ih# z{87T`bGV!Qe@JNT#Gyq|7Ba<$`>hB+qm>tCmmpc>^TFCxUunsk=hkcF^3xo>o;GtClj-%%(Uoel$c0-AaI^3palG>yiaf#$w= zQOWpL88If0@PUCR;2YHg%AB`!T!)1(fb@`-kPHUVR-K>D94{6#ag!JqgI~_T(=u63 zLk%_cd+0M^Sg+%+mL-Ur@h+>+#wF97y|WChGa^n`Go-*$ll6w`zca>)t|qUHSJdYx zgMIbN;##H_NzhI#E9c7vEhtj&IH^UrJvRP4XRSe5T$r^wCD+wcE|=XT!u9p#lze$~ zg z2XvxU>$mz_FTjcl3zn%mh;ut|c9fg4sEcm#dcI)C!9 znj2e|?quSCv;pGoYW;XSe-+pFk}`*Jo@~cE>hrIlNaXXYtl7WVNuRtc5~Ew2qd|u3R!dYew;W)_Rv^XabXGXBEZ9a%RjqXP7>J+>K>+ zqj~%lizt6mjlVft9_=zLZ*14V;*y!pg3r7n^O>K@-%oTqY4D>1qoP;}GP9nhxViUP zO(DJelQk>|AlG00g$MI8u5u*x=k-M3$lWn)HOFtRn2w+3ljN;xEz}rjyjDe(jPgyA zMqbsFC@BlgtI>UtI-&TRgf)fYmW_^IvWUqn<_N_#YW+uW3q+N}`Y#UGbPzpjBsxs3 z{p_U4nUumjnwkRXp8FN*yk*H2%9Wb56CH1rLrf~>(X2_yr4({P%m(KPb!OCJIlLzvkd9KU?L{lxH($&y4YxXyQUS&P()%i`az1 zs^NI5`1>1iVH~F_@tY?hPH7ygXc;ua%AxU*I&S7Kx>gAgm&*8X@m^KJ`Cj>P>GHYj z5Q{73`SU+8ar_u*in>?JWQ*vW91(%Cc`=yNmB7ZXeW{G9zF%i$SE)u6nciT}$&1Nr zYGG3?MTygM6{~Xgf|&Rws-?))2^c56Jh^)g)2DkenTRG18Imae>C;VQCVuqBscQTc z^9oCyzhWk-E*u(lc6@1#tLcd-zE)_IB{R*_5$~@u!<1X`UM6S-LmHhdcdJ7@*K#D2 z?>=`E$U94)r{qkcKqWI}^-o#nh!ra1PmIUg^Q-Y3J&9`g%AM*tIe$l6Cy?R)OJ_4T z%;bu%q~zqJFwp|9REd)$I#2ogeiB6uryHHr+uT2D47RLySTT#X#QYN4HqOzV38~tH zC1M;OlXmkqQU#GNapX@}n3It@6-AUOi}V8&%`u0qs6GPz$fmgys*fPo5wS&~y!TM9<`E*gK0p_KepfAm3B=lp&; zfJuT|nfGgqr&s&%wO7hi-f+yk!nlJH6ZKEk*P>fQe72HzxIgA9N5|Xm>mIj;U^EjK z7aLKvDOZZ9kt9xkTx?ZRQYD@m(nIAzudZp1SZ$&_*+Hhv3t-}{k~~k~#aLY$OUmdB zoLjb(vEW|uP#It`d*$XUGn|@_PtTi7b^7|$o|9Zgv`hK>I4t0466w1Gcr~lq^CU;% zrP8ONgmgqYwt2HD2BcSuXHx!b*j)985zRei#AA#~o_#Ho>uhuf5vzaTMZ#$P!m9CB zIrkwfyt<^q#CE`GJKk||R7f9^y!Pb9>eT6_DAn(5{MX+6MxJeVD)(U;#HvS zvibLM#7W$93=*9u5 zmDY#)doE5(K$Q$N=xP5{Z6DE4a$4~^pPl-2P2p#kEuIl@2Xq(AXN}7;Dupr#zPPen zD)6+<4l1V7dBo%{(L^e^vH7sB7JdDn##K==o4>f6U&vof{vYH8bGgeU1?AO-V(@v^ zQcg{l8Zyt8znGNQ0Ixdb?>$*QMU)Op)e15#lq@Ru>P0P$5nq3mbJy_ko(?o;=>Sia z?>I@lQ|?1V=F0e@()sNZ6%NfB!lZ;UhID8%s+vG168wEB_0_6{#pjV1~*Xa4|sm7BK8MXFiuC2SHSU%X(RdvsDx&zu7y7{;F+RDY!*AhxKo9w1_z z)j2Ht+x@w;CR|Epir>;bqH@;wOKza_jwEWpba#N({odBN+&&}cM%Ep;2S)1Z^d0XAt5yI}4?qkoGP8U%n0>$NRv*rdu-L>vxR10$l29dqKRc_qVp418@;^ zL8i;BxJXpn+r1N1Q~V%;=~jhzSnY5SL8%W&uZ4R^Xa67q`p?WOa=eKA{s&y_gqfhG z0ja-C=%&hbN|3OFDMzb4t{c#wWM6^mcRrZoI~^!qfo!{q?(y}t@IqQIh8NU%6n#N` zk7DApcKBsi@C5W#|>vB}w z^R1rQYBQlQFRp>e?!g9RLHNReA4JWcOeLnobI@(DWX3-+3gsKygi3UywkRcC61UL2MJs_~ct=iU(g98jj)_7rQpXHGVQhqbS=<4vS8DT@g*crepe zY@Tz!zQ!4w=RBalamI#o<=j~+7UqWJ%AzWK2N^v=#m1;*?NW_w#sM-lwl_Yufw@&< z6PE*G8<<-)HgTycW2{q^*py2(vMRA5s~TH**#W0Is=#rIkIxatMd%2ti?Pb-itxbm zl^Cm>up_J{#;T``u$prwMs*femj56QYyHnhmYm5gAjL0h*k>%bxS(6JVj*xk5 z;zcg_1NQT#yj2Z|SAu{8`qy|wys8Tre+O|tx)E@a2i$a(ZXDukQe8EU842TWQ5!8?-|D~!SCV!f0jtL*{f>jrj z5_tKPFedM^)euwFG@1D#OmOs;8_X)8v!uAXB?svRXC9}_F=75l4Pj)4sDJ4}Hw-DS zA&mG`ABLMGE{rH^N}c%Cl)kudRZ{2=CwBjN`NN6bpGtqYs_EqUtTCP9S5rFU!c|G9 zKU~#x`omRCrwPZMEENrzrQ<$MXw}Lg=C2l2r;$0uGQ&sBV8&jZhGV!Iv7>Po!eG*E z+>TUo0<6M1cPgWQh1~g!|K+=h*cm1n2n5Q5fxs51fa8+_fvIq2I1sof6bKxR{W@3+ zyU;!s2?XY$%Y@muEr!Q&OU1k${|1EH!+tr;h5OjQ2kwS@VF|h?aNi3r!t?L~JPXgk zK3GdUOVM2g%it`y0G7kma6X(3=fD;?7tVtKVgKV8mtfz3eLbv#HLx1i!a6t&Hp1z! z3C@7ca3-7uXTv#gEb&|p$3Z>fJ(+V}fPEgEhW%6yc?7z_a3O9}U>)u=F;`(OhMj0u zu)htmh~r4;1^b~0CO~({ffI@6O1KKHhR<;O98SXiDdx-Y3cLw#K@Z4<*Wh*N3fa&Z zV$cO9!X&to<39|Kz@zX6ya{i?sl@*dns=cabj9sf(tb1C0=r;6ZWqA`+!GgLo=2Fk z(RRYGGjxFyaK8o?<98S5eK(wpeXE3l4KNq~GjabN{Vwdc!R>G>+zhwCsra1&b+KQC zxdHv@umje^6pmX9zuK^o{nLo|G|Y{db#N&SUkV!_70oHQ z9gY4d_Ai4;Py`bp1}DP}a0=WAt6&GLhV5_+Y=(_+I-Ch-z$UncxUYrPr0XR1uZIGT zd7Ou2ke2n;R(149*2A3 zDYyrogx&BA+y_s?1Mn=|4}0Mu*ar{7b8rX8|CYR2OX9Y&e;@ln2!SMa4emp6KOHj( zw`7Pw7~X+2_@40J!9Cc|BG{Q|hZANDjDR^X7RJE@m<&h2Aut#Q!9X|^4u`{FJRAu# zU=b{YN~nOpIo2AEvl1YePdoiSTNBZxv9wDmBLCR{tr z1~3`>Oqc?jAgln+hO#J6yzaIM*%ohlEC+5qTufbaE+wt2( z_%mT6``59*2J<1f0sAe)u>8ggpyRXa7d_*I_;kJF(wN z_;ax@$KDP5H0TZk;1I}yu22F!pcfQFHVlMAAs2c=Dda#Om=1km5F7^mp*NI4Klp^> zeG0!o7xtS&Q)mG#ArqQG6KDmCNaHbFljGo6I3A+7?}D~)8(fU$64(lt!ewwdTmebs z$Ca2@!PT%0l5x8R^IAy3ejVnwq~}=7+sUsx;9j^7cEU|?Gu#4q!fv=99)w$A7u*JS z!QF5VJOB^DLgM_Gxc?xXf5LaTJ&M~en7_kc@EH4h;79C_VE&8wJv@Q^SIj@)Z+MFR zC*ddTk7NFa`2#$I{Wr`%;U9RG{k`xr_NOreu$wf@#X2A6!2-Alu0@jsm1zEgKcOG) z7oy(;EATrRw>r25vFBp;g&~|vKGem2F)T*Y2|B{hgxdq(!ELY}R^r|U-CE*kjd?ca zIgp7x3f%0YMROh;fjtY#VJ2~n$Gjc$HfV+YCd`}R7Pu95!40q-ZiF4M z6KbJ7f%GiHej?n={!q^2A>3YvSKtl!6&`_C;WaoBHo#*b_1JtE0t;anv?H$eFp;=o zFbO8Z1So>8glmfbm6**jTR=-_1fP`Iy6?0EWUQ+|Gc_P@DbPFb8JA zk;Hcc*Cqw~SU4I+!gv@5MKA$IKp`9nQ{X6=3}YY$lVBo@hT$*@UgKOof((xP9_Fj? z61)O0Ll^Slear}E2h58I^Ednj5qJ`}o|xU>bL>w;f9zjiehIy>_ke!T2YSN*$b!D` z8Jee{JN6vNh5Do=8*>%s-3+rKG=^62G1^bz6KKGGOUQsm&;pu3Q)mvUa15luG$@8+ zVJaL4w-A2{@g!jnK^>?Eb)i07K%UpaoC#qV2>a201&3lk0uG16U@#m4U*k6ja|qd<37uC-64B25-PC@G5)<@5A97 z{{zeq;bHg*eudxQ7x)2wgrDIN_#GaEm*8c10iK8FpgnOl#xwt<^+RNB4L;oiGZ^6IV zzrp`oxD&qxnCsws{JuuN9{U4mcEkN}0h%Pto%r7bzhVC!eu0bGzXX29eg)Us_08@$UPRzUEE_ffFf_ve9xCfqu2jD)!wuIf#2pU6kXaP;388m?lp%-){?Z*@U zaj=E7?tod?XTt@=cQIT7Tj5f;3@(Q&U@4k^F>i;~@H9LM(~0*wi5ogYC+Gq^3V~uc zk8sN|PkmUj}DmpNHGSn9oB7Zpm;e>0816h4`HfA7S5$dwa|`IG1*q zuVZ$=d=CFB@H1SIDC~j9;Bj~Yo`k31X?O8F zL2oF6iO>i7LJUU2DCh*8p$m+LF)$XoLO19R`O4OBh2;iK70;ez?bj=dj{7FUoe3N9zmENfFmJ%Tg|Is? zFJQlF-@{F~pFx0?p*BMFsH%)AN>toI8JkD3N4@|RPAFphI~8@ zj)mi47n<833T>e-Zr^b}kCOIZFn@=?;4$|1z>nA;!TcBVdw2r-ub6+p-|!UsPr^^w zAIJO;^9Oha`)``!9`plX}_WZdfDwHdA=Pyb?H+UyIkZ-6$quO)nI z%(F4iflTaC=njX%;m{UpYGaSb??mESj5!1r!Z65(uDBmTo(u+QPnO_Twe5Hkns&Ii zhYle1v#&{`)V&rH=47}V`#RFL9{hE!|4BVc>P}OLm;b6RM6{|NB=sMu>zqnDHp2PP zo#%NV?(?xrUFJ5p1HM7`3<0H{BXyf^NYA%m>M*AMV(KkYUpXJ7{xTG#P9yc0tDpd` zhEqW5MN-$8j{Q352nSm?kUD|9|D}#6^*gE4O@mn=bp5Hzw{vedYa`5*}Z(;vT zj`PHwSg%DN#_cHVm6-i7FT`&znit`DcmbY;=U^Xf!ha3AC$R5< za+nKiam$6ia52n;DX^G$J3&Xd5AK1x;a>Qexc0zza2u=#^BrI%{^b%6=IwABv||4z z%$wmBxD|H64X_<?_OWm@jD+zp4vJs`jDSKo5~jdWFd4=`3?{)u7!AW=6#P&75+{uo`UY!b08P$ zlkeG>tH|re@p}y9d+08>4Q_{K_&0>c&tO zFW>2RgM6QtZ}ak9UcSl8_xOhh_By-;@51-+CcFplz!&f(d<);eSMV`>4qwA(upd5x zPvH}I8(xDq;1zfkzJvGSaMJn#=7;bw`~<(kZ}1EJ06)Ud@Cf`455i0EGQ0rK!*kG{ zxEgZa?J!?te;+&xd*D9^kWc?$`~`o*zwiJ&29Lutuos?!r{PI>0{*Z1QumX#m89)N zxDu{{tKk#eKZDQVB=$eWdAVi(6;RE?~aje~()TzDM&l?hjz!4fn$ZgfD{Mu>TIfz{Th; zfuFHof%ymKukbEm-+{}}e}H)%e%He_Z~BMC@6$YFb1|0K1}!!QxZm|0!tW>G@f`0s*n)ir%)&k!vf%MS&-JWw?ivB{v|BKu0&>EhGM_~qjXJgL8l(8QVV}BmrChhM+GI5+r z*cG_(UyTd-2+LN98}kh`?J!@*?0|U%?#B?stDzFVg`^=2$#6291Si5Nuo~9DDoBDLgdhS_ zp#tW@GFSkMVJR$ud9V_e!wNV7Dq#`KhjN$+vtSO)h7u@-X)qniU@r7#Is(p&N9EanK*?LJp)u3Zy|Q z^nfg=1&yFK)PVso5Hg@KOn_WC9*%;e;aE5Zj)VWWFW!MZ+!s%9UwjWTCTb~eYq6h? zCWfCG8+9gb6WITbd+bN-Kfnpt=fJtx&3Lle#4!_OY*;o-h6!*8OadA2Rs<6v27_S` z41`0$KkjWP`@=!T&m9RPU@VM-QBVkZFa!!IS&W3Z~4)ik!znt*>F>{~-`-`|YCjJH3mten+ zxUYxz;dA%`zJw3pL-+_jhEL#A_zXG_wiJFN{N==ZB@}SXG~(^He#H9U>Nwk=V}wH5 zOmfU{M0*FdAQ;q&V9ienfEn??bc^)TT;C3w^L)lBB1OY-($# zq*}&OTbx^(;3j-9WL(0=5;2w(V@WlZ+Qw2xTS7^(%vfgKSZ2LgX8l-ZgIH$6SY}2n zvr#NF8p~|2vhBiHFceD-mqBSP(k&L@GImcpx6{V+e(X^i>=DasBPrv;CdDGPV-a=F z{CZN#kaS78Sma#x4TywAmg(4o-8+OsvI(18ChX=^{cvh5vm=L2N=k9IVQmDp8PcY4 zkLdkW%t&xe|4^{8Yipuy>D(BOZ+ck5i7q{C@+uOHWwwlEHjZUB>t2SR&h*;u%~{)| zGgv!lZh+eEU0yqAZh_iCa}U%`_X4MTq0_zK>0bDBFM@P8hO|aH8EK7;rHM&dS`+tv zY--$+%;TC=*U@wHt6U_f9n%e?@A+VoxrdWXvXjzv=7fSemS9@lSfpz#($k4V$Ca)3 z%&sxbwMpwn8u-6&fZCYjxM_7#7)-10T6B?vlM$uWcN1LSWO`bC6IEJ$lj&*oP3qI? z2fV-mFLb~Q9`M2kya)om7~F@qe!#ma-HS=`ym;MoM1IY3|4dFV0ABgeN!+>Fz+gb z8n_oM)X=kLcvknWtsipl+xnp~r;wmh4@uWbbIn`e-3tPzChk=os2D z$=OSG4E^LviAFJ)<{0v5vRBJ7YCA?iKY0QDIOt~Tpwv%X^n^>KsxxIukfUS=w_L4DkyK5kGSH>i&rGNriIhqa#fu?ip7 z>5Ay{jOgR>K2iP=eY}VcAJO3>I($SQFQShZG4bj1jOg=>=<|%|^Ni^8Owz|q(#K5- z8V7UcN#@j(%(*9-lTR{dpJdA5q>zp$Sx1v>_VxKB>+?y`{wdl&Mf;~1e|^3w`g~LL z`KIXeH8)L)K3{X&r0DZX(bq3UDo5N^DGjxmp-p**io3i)#cZn0W{#Pv)0bvUoz66! z&NQ9QG@Z_LtxMOsbgfI*x^%6prFFH9sr9wBKHHc&T(-F$+2(p=o9mHnu1B`H9@*x4 zWSiSD+uV=Y=7!7;>Kw}s){-iVKs~j4cgbk}3z8;Dhe`vccuD@Nn=}&KG-%Bfw}#Z* z*dlde!6g3o*QJ+9ra2ymQ#qYZ4S7T?vqLPie=JkIJ`W?rzQfcj2t!JqeTS(R$G*eD z+SRE@$-b0EVoFgYrj$csN+Beslz00M(bYls- zPT?fu7V-41Z^ZLWc6BMPO;Vw%wUN56t)6RZ;My9xwhY(S$h9?gZB2|V=$=F{Kwszw{b2wMgh6l! z914fQ;cx^D2J$5^1oB}h6u>YT4kMrtM#3l<4P#&|jDzuTBupS%$-^M|7bO3Js4=;;8FjdD>NjeuN~qMES5nqdPYs(2crbY;_l`6@8>wo5 zW25Pu7K`ZDuzu?XbuFZ^t}8aCf!dm|yoei{nrF~d=7XjxA2b#DU|n6}hD@OzGKG4` z6zbGQyRVMS>^`%*)N19u;=DO9T?gk?gNuHtsMZxP5!JL3)41!GjcQSeyMEaOoR>{l zHKfE{S|wsij)*CzAg1agz?2h^eQAb>DGgOIr2!(Qv_8a?riYl)?hvyPr$P;vO^R$< z$tF`aX|hR`O>5b-kxf)KZDo@#n|88kFPn&Ll4R3FHce#{lubxB^<>jbHqB+zLN+aB z6P8VV*))(%2ibI#O()rOCW9kE*@R_7jt3)2vf*Y3Mp9&xDw{Ofq|2t3Y--a56NqKD zjb--hwl?*QOGfej=hg38!=5z~zB(r<983#pv#~b2YSZ{P)B8QN8P;Y~ZFY}kro}Q_ z#WFLyt!;6}B}1Jp6$-USg~BnDwdqvY=)hC=WvbIGmJT0v7m7vSu@PO>%=Vf@L9cll zRGnHR($R;_ z!x0X3c|JKD=-+K!m>LP2G-V5`ZA5Jymvm*%P}@do+gNRzsBKfVovyYeYFjtx7y)Ip z)`sKQ#@TD5_tbGiZJcAaaSqxhNrh{Z>=-G^h&th-PJpNrAnF8&Isw``akh0NZ5>H_ zCtQ2Suf5~f-tp_;_;qmn8fn9kG;$=3)DhBxw1Fjqf=S95Q@e8&lsi{JnW}vt1zdwr zEK~O#rBc+q#k40Lv^bc#hf$0A)~kzTP#b}W(;i{!>4y}=)5#tS#CcM zRs02^Gl~K{D~{=w;i`Z<-02Gq@hquMQL%)icT_B4V~H3`lCdNkONz0i8cUk7q#H{u zW2tQ{b&SPy`p^Vgom7AQh$B>i7pxVa{0h<_ldTki!CDk`jzG%1U|l7ss|0nGpss2a z1z%ecQtkAJvUzUOUUJ-|@Q}OX(2y!Wv{kBB+G+}?WL-F=XfsWl>Dp|e&6e8C)MjgK z_S9xCZRTh*R~_oD;gMS0uY7Zmjouo=nDQK`PX~@+cIAf0*%;bcJqI|;V<3i(gfdL+ z%L9tDJkerkUwV^dUvC}9kh>d_rxRcP8H-kG!-+IRrsVrR} zn+i^xYD7@C9r81p&L9f>^=yeJPTdDWUe4Yhk;Ys6tgp2bk!s5J(up}8T z=dFZGig8IbmNa8YHmjus*lBJTCfikQ+%q zKhz*P@E3sQ^JC4|1POPt## zRd?K`>JGwG-O-tgy3b?gkf5@)q#FxKiVxoU$1EBAyl z5Xl}YF&vriGg(NV@7e}V^?dywGvsE$xapad@_gy4T`*VYhvcHv8JepucE_fj8asWm zYx*}%k7ag>Wp<8bc8z6ri)GT%$&O{_#4>YZnSElJ17n$o#WD|%WgZdB930Eci)9Xp zW#-2+hsH7sVwuBYnZsk5^vD**GDpTTM|nx;?c{H&y!ANnCmn+`S10jbj1Yt&0^*ho zsZa|VKtsp?CFZeIRtd!C1hrKG>Ff{}3Cz_}TZts3jv(rgh(qbJk(fiZWm88sb!Age zHuYsA#|+6qLvqwmQ`t0^O$*tyluau(9K}fr-6?9%NerDToQn9++rdUWQ^kwU4mOg? zRCR`u##BjSvPhCek}Q&Bl?Nh8776_+WP{p>u7T(pIva6pNau`f9Ty4TkbW34PplcD z$Pht>_-ClR%Lpn5m3J9*6N$To$WVEgq4F++E+cVCQ(MWijG$y%Mo@AsBPiLH5tMw( z2uj9f1SRJ(f|7L^L3P1`l6e`yMrzwww(3%3gw)a1#mES$qleVdLvqF$AvxuYkUDxu z9bH|q40Xve)HTac7cE0wwG4IHGSqd;P!}#kUAYW(=`up<=ppCmO;pTsH8VoZ)K)HP zhPtX5>au32>zWbDRPL?SwvF0G)wZqLwo}{oYTH3=JL)nzVp_=&(}ff<6`ybeQ!8m` zET&`+H!?2flR?;gG6ckw8g@iCc@Un(#BY##?sbU+8IlG zW9eWl=Dfn4j7w)@>0&JA6Gqs4!U&sB7~vj9lVvPD-2x%(eWMQhzEQV!1zrhXhi*st z-3c2Re|0{rV@%e1=+5{n83%qFZZiIQCFV7_*TTL5Q|3yYh?|T%uZ`OY*k#^J06!TA zCgXtp^Gi=+KOJo?I06R4wdiEbY#oA?f{c}|3-zEr$T-Lbm<>V3ua$$0{XG_rgDv>W z7-ktaEo0wg+?$MlllfXQrcB1Y%lPA&V8%Afm`NE^J{M$6vW(l6@oO@kZ6PdzN>~gs z7Q6(?;2+W{W7KZOz63uR^SlgXOq|TMlJS@;;Y5&e&@$#Zk8>OX`7jiM_{lg<8AmT; zr)7-iB$x~`A8#|H^|($luDSs<1R3vl z6k!@+%GkUn&=kHVoQxGc51O&x99lq2XazFlKKN9Y8dfm)>+n;gcB zKoTT_jQ#6@|BsyO$s9+<>#qVCD=uTCWo+xIupBl)2I-#$Q{gMZo=Lh>FlDT*jJcKZ zw=&k&jI)(-xiS`6#vaR_BFRC5l{#tVHAu8GhSK7D9c#tBSFR)n=#KZ>@ucW##YOi zYcuXx#vIGoV;OfW?B#;X3oJtA{1cYw@|=*YG21pD9{_!geQUB*1i zyp+Az@8Le#!hN$2WFE*Y_A{XkWI=0?c?9{GLx4|Tfhcr^!7vOeVF}0>)3Y#T&diIX z{Uvw$OB*?41z=8P~h8|nx`!Diw8p<41s(Y3I#9>hQkObgpn``MuW_sdllY*x8Xf_ zA7l>Q$CzKhmmp)}xwL9d^{u3L7c6FfA;^5F3*jQT5}KlK1{Z-l7Yp}W(8^rSRhSV> znFpE-DIjx7W!`8y$h^zO{xA0bhJn~a07G%!IYRomT7ET43FKXtBu4DfW=!)CFg#QmD^XXU#&;b*m zXC*+lN`O8UH4m;FQ`Vr^1CPPu@C0-te0Pv}-&xQTWFB}n~9JPn`0=kNu52?Nm#f_xYX1uzVT!w4vZkuVBI!x$I~<6t}-2@{|QCPEA*!DN^M zN5Ro>jF_aQD>s$Q372`|yWt)<7Qf?QDolf7m<}aS3S}?@&VrdR3ueO{F!OXTl6wiZ z!fj;p?NE;YTxh^?-{v?nk4)xK)@HvBoCD{A%u|)Qsdu5h8}5O7p)1;M&>ea}7W9N( zkPSINkC|F0x({Yw=m-6w1WKU{ra>`GhYR3BF!OG}*lhm+Xf zk2#k#$~@S**z1AJ2Tg%9NNXx)9-PYgUx?pXa6Oz2m*RFATn<;j3gSBfTA@#abhrVw z!;LT$3g9ZZ8X7|rXbR1sIkbRm$bnqw4Sk?5^aGjuGyrzO^>9C23Np|6JC41bbleC# z;40ETg>=^8-lz+;p&P8n{TTGm;dco3L*Xzu9FBm&@D*|Ghp!=z{UI<9=EDN0fQ7IK zDq%4!fu*nvE++0vU@Ke-m%-(51zZVN!PT%0u7PXeI=BIDf~$#R8(ag|LL=NxfmN^? zuEXtmxB<39W8BujS~wMM#BB%cgqxrVZtGw@Y=A2zf8c7^2E#bd;V=RUVI+)#(J%(8 zt|_q-x0|3HakYmD*o$By#9$IkhAD6q91X|7v2Yw54^v?m*W)(09qxcT;V!rv?ty#Z zKG+TS!vpXjJOmHJBk(Bffydx+cmke;r{HOL2KK_U@Eq)eo8cC?6=WW{%r7s5ksx!) zN5dG9`Q_t4=9ND~KJJBQ;W^j`&%+DwBD@4I!z=JAyauns8}KH)1#iPU@GfkC_uzf_ z06v6|;A8j%K84TVbNB+jgs(v60q)2A8oq&V;XC*qet;k0C-@nDfnVW1*bVo?1Mna` z1P{X_a2h-cd*Cs69G-wD;VF0;g5=dIuGy)u4rJYi2jL-j7#@K~VGq2GR^}330awD= za1NXc=fU}~1$MxC*Z`-&MmSyU+>;xj7V+%jShvC5+-LW|y>K6VhyVBR18idd4A=~- z(XN5DupS;GzQ^GScoLq1r{Njc3(vxHun(Sx7vM#B30{VV#MzE`+QUomGGyS^0rM4j z72bpQ;UkEU<}UCGVPA#U;B|NdWF3#U;B9yZ-i7zzefR)Agpc53_yj(M&){?T0=|T= zU_X2f-@v!<9egkQ9RFK590H`_2aF%#C-@nDfnVV_I7#3<-az*zyam7G_6Ph4f5G4I z5Bv-NL4f<<9ds99y$~*fi{TR33hiJwao!IPK$LW}g)m_@V4emW;dIypXTWAS6V3uN z-<4?oS3i=c-e0!B+%oDNmuwMo3hEtL$D$+YO4rz;BO8=1)1s4fr9nrFE=B8lT6C#e zC-2WhKRKo_IFSgybP!#kMOO=dxh4}Vy4v{5H7T;_{&8m0ENe_{+UD)1qsHzg**Ti%#xOxo(vfT@$T4(V}arb?Yp; zW?FZqMJIJYNuQK0iGET~6y24HMEJD?$(QXGT`T-0zFiibJh$=;-)GUa);f7NCi=C( zQ{sCpkqEyii0)}f^lO{Q)8{AUv^<;pd~VfQ+gImUja!Fm+^Tcxh@)H&c@HM~bxP#v z^Xu%hC$e@)qjk*Ck^2%kNXbugZC-_Np~M;;o<=Xn<05FMYi*AxBnwQi+FHx!*5ca=p~pmiH9 zx?%db=UQ~bb$l0EbR)FxN{g;g>$Y2TBem`}i*A(GN!v5gZ?x7)+cVK`jMho}JJD~f z)=3*Y(QlmANgF)TZ+s$8pWl(#r5^i*B|fPSOMOz>^ND^%c#2Ni`H6lL@f4l(0VMiK zy;*e9Kal7*2~W{U-$A0^WIRRpheap#aMAs3(H*6A|5yivibc0X$2ZlY zLv~QVWvG&&)DquvG*St43#PS?73ExJwUq}-4(Qi*j*nM89+J6rGIANc1}wPtnP@g+#ye z@D!blQ%LkXA5YPBvgo#GUA9Fh{rmEq53=Z_pH6fI7TrZ!Cu5Bg{VvwJV=TH$v~Gq) zw^i#FT6CA9ll$~Ui|#V5lW(bsewX7Z*W*l!?h37wF-(bmSK=x0$v5LfzpL<+^Vn(8 zU9EL@T6EjcNqPF9MR$$XJz>#Zt9APJ!lK)SPVN`^ z=9lPq8=j(*u`r2#x8o@~855J}cL$!L8)(tpnJ5yU-(A?H37Th#?`|}5J%(6x_n?vY zOo2srFB+*2$@q&zzx(i%^Br%|?bbROhmq)aKc4b@Ota`7KqL3_Y>Vzet&{PKiGB}h zos30F^m`ajIj(#|PV{>OPtl!Y(LJhlTP?ahT6e8Q_ZT{P58h(YJ+5^!PA$>z39WnF zqI**7Ua;t%(mENhmgx7i)_rEtJ)?C$Saf@}?r)3kS*=Tvha|!8Is7D_8(MVxv@X-4 zdtU2gyhftm3tA`hC=&f%)H)f5p6K_I))iWGFKeBQK~D60MeC+obgydN9EhuEV?(ePR7V5`n{=jGCn@h?=7vn%A$K)>ttMfqTf4OC*#f%{od6&8FQBC_ny|t zc(X*m_q9&O;3WEefT!H|A6s-EYTdUM-A7vYheh|X)>*TSOv zOzS#Ybf0Towng`a)*WKeeW`WBEV{3>?nsMnzt$aV(S5CTGcCGrv~H0__pR2QWYK-6 zb*EW$-)r4@7Tph8cezFPqtt40!e$%=SEV|#d zZoftMht~aS(fz4)L8-ha`2B^SJeRdCy1%uqsYUmX*0rXjPjN1^& z28%9T>&~?3YH8gTi>|iTU24(QK_}ODn?+Yw>vmXl^|bDGi>|)b?Y8I|Xx$!*PR6~+ zdF-|5GPLexi>{H@y=~Do*1C@^x+Yq;-=b@(bw62j&9v?>i>|rWg(Y(m{90&TEsIXZ z4T&VfqHCpfEiJlCt!r=5$^0*obhqf*XkBlME~<5hSafZ*F5jYSr*)$&y7pREWYNjE zE0G*y(RI|i5{s^r)|FdyowcsgqU)k{D=oUNTDR7s>!x*^EV}Mmcb-MpL+iF$bXi)r z&7$k6bvrD&URrm%MVGC0yDhpLt=nVK|lUy=>9-(Ym)Sy1rWXu|?NU>-Jl8 z{k85Vi*A6{{bkV&)Vi>A#wGX-(z;p}-67~il3~#us&%a_I+-UYl8zRg%%u}aPm4~* zO^T$yMK@UM23vG_T32Y%4bi#@7F|9%xn##!bVIeS#G)(Ex^jzdnATNVbi=i7rA0SF z>(*Lyg<7}Cq8q7o=UH^4v~H_KH(KkqS#)ExZihuTR_kuJ=*DT?Zi{Zb*6p$AWZbUY zFMBPz30n8EMOUPCZ(DQ|weDk!E~a(+ExJis_mf38S?m6?=wzI-$Y_Os%W5=w@l%N{eo`)~&VZ=4jm}i>_Sj&a>#|YTZ_g zZXP;$)V5i4^R;fLMYllf?zHGCwC+KRZlTsaY0)jxx)&_EO09d-qFbzWA6axuv~Ise zw^ZwXw&<2=-9HxHa&+vmi|zz;G8CzvMYj?i{{syyx)XJL4K2Ep z(8>4iMi$-4=;VBxT6CvqT}z8@mDaVf=vHf8dy8(3)^)b%)@ogMi|$md>t)fcLnqg_ zw?(%eojm6QEV>Qo?GuY2A8@?tF9y^V@<>?!S$e z_%1*vU3F(#bQfyf7K`p8t-I8syBM8Z-)$D%C0e(`qT8x5bw68l*J#~87TvX4mt31fCiq>a zb@eQ|>$R?#MR$YNwYBKBYh5>s?nbTaZPD$}xphi#x zMNq^Zd(aSjFvy_@T7n{uBKDw&Jt%@As3Rz152pxeRS^Q%SlFeKb?C&I>YE5PL4QAEHdsf|OqkB%>wnq27x}?#~ zRJXU$y`XNq(Y>hd2%~#RUC!v5>dr8_m(@)&x>wX)VRWymD;wQw>TWZ-*VRokx;NB4 zYIJX^YZzTi-77}-mbzI+_qMuEjqV+FU89?&?pLFGSKY9I*}tE^r*6RL-d7hiy0*F% zjP3(!>NYgGkJQDD?qhX37~Lo8#u(kF>h?9d&(vj%uA}Z~qx)RlM5Fsc-8n}0 zrMjZgeWmVdqx)LjRHOSw-CaiaA9XdO>#BRg=)P4q)9Aia_lD7ZudZ!$KdAe{=zdi9 zgVFt@?oXrpna=(B)W6W|KOXex+~?g37~L;)?mztt7~QYx7B{-z=-i+0M;hJl>Q*$m zKj_@+yPDDcscuc9zxtf_U0gR_itUJbKf_@bsHGnTD<@Xwl+Gyx`ffqr*6>b=2w?Ax&_pYF}mUEQbxC+y0J#*zMqDB zT+&9jkh<|k7f_cmx`owEFgo{rJly@u8r`Dmjy1Xw>T*W6n7WBZ=f2;EyMKA3TSDDg zMi*39Fgo}BL)^=qWOPfZD;nL>>LweV`+g+u<(7PZdr9@qjTTi#J$|9Mi)|7 zF}mf|-C=YqsH+;?it45r-6(Z6qgzScbfa5YUESzbQ8&Zr!s;4E=f01Odwa|@y4BP* zjc#>yuNj^DzBKOTwv28~b+e3aEp=_9TU*`7Mi)`nF*^5sbKL9kmC>!Mu4{Dbsr$j` z-1p&eFSloO8>su;=r&Y0^h40N-T(FEzORpaxx)hgtMK-yI=|6vtZul`x$hI?UT(nX zHdQym=tipx8eL4?NTb_KUC8J*S2xP&;_AXiw}rYjjBZPH5ul@wH>Y_%s zjk?iBx2?Lk(QT)0Yokl3OBmhu>IRK&2X#rK+fm&ZqjTRc%0130quWW{SfkrnUE1h& zQ8(V`lIk)>_YZXwjBZzTS)_H`*OLrZ^7vH zQa8!y_EuLkx_#75HoCFuN=7$M-4vtSS6$iY-1i}KkIPh}ORK9G-TvzCFuDWORgLaI zb<>Q_eg8A}den^WAa&D??qGFwqdP?145Q1aYZ%?3>Sh|9`#x^&^=%s6Vd`Epx(Vu9 zMt8WnSw?q+y0+0BsqSN=%hI{8Uv-S`D0N>Oo%{ZA?)JVjx?|M+Y;?z}``ze{Q#Z%L zyztpP9j|U4qdS4leZ6i0qsysV*yv7Fw}jE1q;46bJ6YX|MmLepUC*l;-6`tUG`dsO ztz&ejsoTKl^6EA=y3^IgjP49Ncl~W)bZ64J|6X8QqdSYv{r3Vp8{OG-{XCu1XLl|g zUuyO3X}sJ5o%`4x&w^v{66pB1$}mt`s^<3v%9Fz?&3bXVxQe5eRh}j*cDr2Nkw$j~o%{C&M;qOhbngA*M58OIJKgB6Qg@!wT}|g+-%E_{8r|Mx zqnkqK-hZbU-L>j&GP-}MyUXaVQ}=+;mDSaa?s|348r==*UNO2G)xBeMQ|a8tp^uI3 zCOY?a`^4yOrsE%9$LMa+?R{Z%6*_mFerMBN8r*nT^s~X+o>h3eT zC)7P;bWf^#%;;vQn_+ZMse9Jwo>upw(LJN?RikUDYZ=|M>fSZF=hS^@bkD2%%;;vS z`^xBEQ1`9Ty{PUdqkBo+Z${Tt=Ua3(AH;dq%j)Jfx>wZAZ*;G!Tgd2MQ#ZosURSrI z(Y>K=S)+SX-HJxnQWrM5x74j^bZ@I$*XZ6+w~^7!Qa9S@-c`4S(Y>c`Tcdkl-Ht}r zR+luo57g~$bRVkQ+vq-0x1Z5{tZux~eWLDAqx)3d5k~i!x?_y4qb_H3pQ}5?=)RzH zUoSbs=)RaH}pZ`Ivkbl=grKabyO zbl2eg0;2bI`f>w;zpePIWz_n@inqM%T~V)-`i;d+zJSfBye;d;Pv# z_wy*+<2P)??0?04>V_NL{OU#+-2&=H8r^Vpql|7rb!!;i0G<0hetn}`NL|e60(!aI z8r{O`b~ZZqb3fe2-93!X{hV>v?Qe7==-lf&!RQuKcbw5JuI^N$TY}Dgo$y?v3#z-w z=$52&*XiX(x0JeTjc#dmHyNG#`6}+^-f48psJqYTmR0wN(JiO$DWeOid%@_ISNFQn ztw86lmv@bBMRlJV-6%TuaqT}ww-TNEJpM3Fevw2!o z-2z6pn!1IJZgq7_7~LA`mNB|D)vaiBYti-dw6<<F zHM;fa+{c$KjBb5(38ULU-7ZGAp}IYcZX)Xly4 z>_1w%pIheMZo`f4A9U`|5sMn#uIiRHy4}>RXmn%Lt!{L?t6R_L_E5K}(d|js&r^!d z{dr?6|x01a;>d-QnskG`b_y6^-slb(a}kR^1gwca*xTjP7W4Q;hByb=Mi)vFdIx zy5rQ{WOT=?s~Fu0>TWl>oVvS=?nHI>7~M(grWxJI>K-sU_j51#$M=xYokHZk9`T6L zo$79^kEhe<-0uqwE0?nk3LTiu^VcaFMwmze#7 zc&@sD(G}?Wc{;Dp?)*Nx3+UYSvZQhUCaD``bQh{y+vqN$bN_y36QjGB&Ru_-8C_A` zc1Cvzo%?f1(&#Q#momD`==yn@+-G-rpWPLGc30B5$1iQX9wj>W=jTI>?ke40*66NQ zccRfF$_Ki#Ho9;3Tm-EgD3L){`qcPE{D ze+wGjUAn#HjqYxBs~BBX-I_*skGl1Y?q0fnp8nluH?7a^zCOGA`|KW|bN^la#>VSg zQ@54TJ*aLcqkBl*o<{dD-O#^3GP>#NCK%l#>P|4aN9p=`daTc`-e>nXo%{Xw4CDSi zq3(R6ds5w{MmIy<)kgP}x*Lq{X?3?5-81U$HM)knhm7u7bx#=GbLyTmy64rsVstar zy=`*c16?gMohqx+D~U8h;2`$+fic%%DRFZUFq`-IND|DJ7h zpQ^ja=sr_-rO|ch-1}SE=ss6>i_v{S=iV>xGP*By|L!-suXKBl8Qs@(?&I1sM)!@n znMU^?buSxTSKS*%_bpvNPv7;~ecxyIL!aG`eRew#y1AB`{na{`x&@4Gn7T!c zZfD;ipu3-{SA(r345pWTQ)yT$tK7VooLqR%eaXSZaZ-BNvaOZVB0?6X^@&#s?q z`Tt83;^n%}=vJcZ=V|3WyH)z^!hLqD(z!pM zPBdPR)zqDBbgQeo$mrHkccsy-sjh5vYpJ`{=+;(uuhB)+J#2LAsGDJQ>#BRf=+;yB zhS9CB?tP=%KwZb^HdObm(QTyeSEGy4_4BlGpWP;XcANIujqbCH_1SGk=RRJ|we;*? z>&@xhpCbm0F0O82quWB=2&3Cl-4aH(mAa*jZfkYR7~M8>?(?^h(QQlTJ`Sy9bla(0 z%jgp7HZr>H)y0i&2X)&U-Hz&ZHM&7{`xxC$>c$)0&gu>~x?R*AZ*)m@ry1Qp)D?_w zS9O;d-EQixHo7tDZZx{x)!kuqd#Jn5==N0isL`d=J!5oxscRbD-s;{mx_#7rXmn%M zeQ9*#)cs&|`>OlH==M`L&&b(-oJ^}*$msT07c{y9)Gcpx2dZ1m=*FvC&*%X! zjP87OyBggE>h?3bN$MsT-G%B-G`fq_onv$ttGmqTit5TncZs??jqXx9_gCp3GP=v? z+{dfwMmL$x{XX-!(Os_YS);px&V3wu+32oR_qNfM^m0Ekx~p`1UmD%j>V7b~Yv|m^ zmp_bditgXAWr=6=bgf?QaHIQ|Zf`N8yH2;ajM0_Vt!#AHt6SUXZcrCBx*O^Gd79d1 zcT=C;&3$&a^x0MV>~5uV??+o0kIQZ9wl})l>D>G8KaB1UI`{szhtb`sZa<^Di>{xi zyZh{_eRlWIx!=AdG&=Won`qqLeSO~E{e5;1^x4&P|IRY*--GHV z8QnwbCL7(u>ZTaobh>_?9_h1tw9oFbKD&CK-Q#_BPxRS6N$0Mssm9|sL){%l_msM6 zM)$P3=|=aAx*0~-P&d=)o>ljn(LG1!KCaC&y64q>V01I-+~-@L8r=)(zB0NO)qQ7l zFRAMpT~pnkM)$J1Vav__z3CM?_j$_vM)#_^#fct z|A-k~OWig`_m;YyjP7l9yBpm*>c$z}EOiGN-Mi`zH@f%e+}rm!qkCUn-sswTxfdAS z2kI^}x)1eouQ9rhbbB`&-N)+gGP+OH-EVZCs(aMvK2!I!(RI|lXmp>ed&B6ypmTp- zd(Y^;RQH+DeWk8zbYIiC>*^Py`$pZc5bP-r$0&+5{-@9!Nnx^L;+=e0{3 z-FI~S<6GM3z9(|O&n#zjKhU|~KSmkdkLp%4x}VfVjP7T38ya0t-Dsoxh0eXcTN>T3 zy1ng;?l(I3aeODE`(51_qx(bMK1TPax&w^vFLj3+oqJH+b)Pl5Iq2NyA152#oOJGS zIos&wq8m;($>@gZ{*{bwZn}P+=IOJWx6jVsXE$G;-TZX!_x&3~vwv+CpmT4J+l_8G zo%?utpV2L-?op!~Q1^_{Ekx(OPTe%RfVx+WZeewA7~LZ3-ZHvH)y*=x5$fJIy2aFe zXmpFK`^4y$P}ecKpt>)OZb^0D7~N9pzBRg~)%{>}Bh~$Ebjzsw)##R0_lMCfr_Q&$ zZ?;b%b#ocr^6KU>x)s#TXLKv78*X%?)GcImE2&$==vG#@n9;4GE@*UNI`{j>(nhx` zo%^`9veB(Z=RRJoWpu04_4Bj_o%=Ynk#T!#((zlSZxf?iOWkHhx3;=1jV_{YTccY? z-3~^#uDYF#ZasCo8r}Np_At5))a`9_8>-va=r&S!fYC+i_{Vp!(QQoR{v3Ol(QTsc zD5Kj{-3dlFTHPr|7gKkp(QT&gJfquO-Ni;1S9iJ5Z9&IBzH5wbOLb+V+e+O{Mz^)P z+l+1-b$1)xw(6!C-FE68G`fVkM~!ZKbx#`I4(b|4x1+ijjBZffD@M1Ix;Kq(XLYlT zZWnbQ7+q4`r$+Y=bzd6YuIjo*w;P@NJmp8D8>8-bquX8GTq|&+vw7M>-TX$kCmsLz z7B;$+y2XudFLg^B-QMa#Mz@c;m5gqzy48$soVvA*ZeMll8{K~DHa5Dny3LGke|1|K z-2v(nMt7jPos4e0x?PR#Aa#2h-NEX{8r>o4_BXnWx`U1GP<4kH-9Oc3jqWfy_xt&A zMmIs-$wqg$y3>vB2zBQg-I3}pG`cJu|M)I5x}(&UjP7W4*Bae1>TWQ)W9i)Ee2dW? zr|wRpJ6_$tjqU_>4;o!g-D5^~qPnMy?j&{38{Nt3UN*Xk>fSWEQ`Eg{bf>EO$mmW} z_qoyK)&0llPFMG%(Ve00H={dK-5e`&an0uGEOql5-P!6EG`e%tEoyY2-qq|();YN3bx?_y)N_8h1T}j<(Mt7CEvyJX*br%@jHR>)gx+&_eG`efm zU2AmzQg@@#U8n9=qbsYs+vu)Wcc0PSpzdL#yHVZaMmJU6Ge&olx)+S@W_7O`-7V_g zGP;Vo_l@pWb)OjBZR)->y4%%#Yjk(0``PI3RQHF`-9_iVJ~`K@+5D!(v+hDxPVsz8gZESS+soT=%?pL>?(LJDUjM3H9jWfCj)g5ef52-uS z=pI&=GrH;OPB*$o)SYj1kE*-O=pIuy#pvqlZZf*Z)!k)uPpEsq=$=$pH@X?>o;A9s z)V*SKPpf;!=$=vcvC%cueQk8ls{6_4o>TXi(LJxuztZeK4$V}zu+hDsZYiUCQQeA0 z_Yz${Pt88Nm;3Bq>9c#a&+fH8yVv{d-srP?v(K(Y=l=cM8Y|8I(SA$aMn?Cxx-E_F z9Xj{lAM9jwvvhlV{=d3++1=Aa)9;CR|L_0#zd4R`c>hZ7|M3jByC?nivN^re|NXy{ z^?&ta%l`KKik_ds|91OB|1lQN3whn&etn2v{l6vS`P20L z95+7Ke|i1a&@GPsA1~j1J_y~e!Ow}89m><{(OD@Z}+e5E_R+K^8Eky_>6UbX^*Gu|9Jgp4tURZ zUvyjOzuf*z{rph(-zM?&xBK5Rp8v6)|G!@Uuk`$B-1vWc{K~p;BfN5R%=`D(zp3xD zt?T%2_b(S5y5Ilj7yj+}6OHHRjpv_bJinmlkMi!u-(LP5#`Bwc{?`BF*Z-gIo7(32 z|LyHRo$pV#!hF6p&yw!@aIVUaJ(}Pd+ZvbU`F`2v<#C-2&hm`SMEC1wXs>IpXrH3J zq9&RZkb`c$Xu;yODy$42Ag+-?;4cr)mJZY;(k$ba%b=ziWT#=^*7 zB^-1=rxs%&1|>ml zu8sUN)#lsU-yPYI{!LN_ww>T2ruOET#*9Saf!_obEzh`V1x?eww zi_u-@RdmAGP$J6-oXFU0LV&sZ1T`{`H6 z?GJW5V;_4?b@EFG+d4Zr$K2=7JjQFfuXFNH47#t!V$A(}0e3wVkq>2qlRRSu#oZRE#zOOj%I)m=} zpJS|x?(uNnPab3L``)|9qmAzUw}tNgsgCaB$ux8yPbQ*!f6Ai!^%Fc}<8c}GB=Wwr z=4kBE2hsihJRDu`_l*6{XHq}&{5HD2jPB)~B`2V}-{X;Y#lf^^Y%IFlNqNS`pu69r z(Y?N5biXcy?$?di{4Bg}F^Nh{njpnYeCc5il2DtY(Z>%z%DgH@fK{1dBq4o=m13cBl}gzmbS>=`S1PIbELVv^2IcU=_FT^C7o z_j}MY7SVYPorj_O_3nkcU-vs7p4{8*2Xv1^*E7~e_i?v@?)i0e&!6rY%bfqL%u{gS4?{wX0bX^p= zga+65j789OPS>r0t_ve?(!o)lu@Jh>>AI1)7+pZS)9t)Z4Rub=vD_CvAGbY_!T0>W zfwW9&kK?=SQ5n`A#98bCdO;o#1OuOK70{-9iQ(7Y~f67;`3O==dgm$VgVbN$7e8&Ph$$7!UVee8O0f# zBlskSv;%ij^ec#)*i$uoCA0b`m}dH_W7>n+`+4`g+tdZmN?h( zN~~%x;}x7scsUld=WsITEMA6b?Mb|pa{@2HsP-@xIfw9K3~2Y^MVxyd@xA=8gYN#c za1!SxUVwG&RXm?_1<%8h_5v0-=kZ+3YER=ioKtuDh?#FH_vJ&PxC&ftld(w@K^=Qy5#5$z#7o^ue7 zL%;Uk2YjuZa~F@nHV$3?cr@n*9)&gS70hxjvC@3I#|+E~<{$F(@;a81l;PvIJzlejv@wMTF@&S6{?gWCNV=Ip~&u=|d8 zf7-Y*=N7Jn4ed1?#kq}ku&J}zXOWF&_*Qy5c_zY&Xr}1gdDSQeO+M_swa|EBnkoEvR z!P$?GWA9b({&cX;xs8uuQ+pjBWLMVa#jK;zOJ>_#mdVC$Ppjjt^i& zdkF969K`$3uf6vQfBxs(#eZWPhpvCTmvaN}!J768RymjPZY*lg<6WF{cqeAGr|=HW zNxU87+9P-y=P=%iLG6C5aQ5LX*nQc%KW)63a|>_6hV~jx5f!Sk@By?_PIc{~@h+S7Or=Mw%xF(xmU9x1#JKhd9>F<`hhtE?A1843 z;bGXF>D`|;{*!YH55y^MQvF5zBS(4NB-=Pd4tY3)hegL49R z$Efx&j^P}_-7uithr4p_J;&z>*ukOe9+RA#xC_>`S8->~72F9++6y?yIgdMHR(l$E z;GDwkF`+$*3C; zH^U6ZFoB~nj+kl#;Ougj|TGKSepvY#W>3hd_Asu* z9+Cm=J{-l~d&;weL)SH~$ljE7?NwZXy&_B63%ERcUS_qYF~pvd3GGo_jy)nn+5@;O zyI=NZc=xA+%dod)Q+pjpve#rqdkL3jFUq|3EH1^Kktyv7T#`L5Bich4WDiQe_TH0x z-o@UPZFG-Y6BlQ1$eQ*FF2-J#MeTVU!Jd;D?I~Q8Jt^bbBe)2A7#GH%c0UF<`*0!b zKH=S;HV$xZ$%ghCF34V$W$i^A&R)O;FsD6(^K(w)e3;Z8M?dE%&WmB~L7azkK>D|Oi<+cpioLjPn?{TimBEHMHATv0Nb6O_R-S0TQ!yd)AF|0j^Z*dM_3w_$V)A_uUa|hqR z77ks<_&Vo0^4}T^l<`$8;VYQKmobY?OyWzJz!x!!?smfX0_PCUL?1qny@&aH5li|J`vH86vmYPD-b3Er!ACf^ zaXL1&*YRP_HGBvw+DrH#=c3GO&ti=|BNO-l=eP{v{hWic_aL8Fa_-6|PUGB=75q2n zvdrVXoO3dR?)6IHJ?u%WVqAL!@8%rFyD+HTk9TtR;T_nmdAHNX+c~#nLwgNxW3S4x z_9EWOUXVHM8LY6UWm0<_Z()zhu=XI{%pQ&**DX%r+>~|gRlJ71f>&cn zdjYTFoW~MowWsk)&MCYC6WXJAIp+vY#*p>^UdGvvmtyZe@BVb~63%TbVpDq^FXmjs zi?E`-gcouy;v~##&*BA~Gk89xv?uU9&T%YYM0*I&{VITUc}?r3wSK%v}f=b&S^XvliK5W6z8Z6YY$?UJ%C4|PkZ-X zKJVq+!NakIL)Sk};9SSUu&TX`|Kwc4L$RPehZ)XUnbw}fL)a5Csy&Pcvxo2?3~2Y^ zc+S0h_!a2L)&*}I$1 zi#c~?8zb(z#+}$3IEXdv72J_?8F#><_B?LSIfn_%XiwpGoRhdM#YPKk8V0oca8=H|JNWz*JLv9D3s>RX#FeqGy^1SwuHYyvX)oZ4ob$K> zX0@krdCn;eVM2Qpm*X74Wig~ZfXi_9<4Ek??%kgbF3q`(OJP%c9hc->!ys0)mv9Nr zMO+;7+OxPA=M0X(l=cKJ$~lgUU_^Te7v>zq0Q$A}ZsYSa&Rrb9HV$3?xFF{S4#%4I z3NFC8EQ{LnI6r$1=fjNl6#6+QabApTkKjC&La+{X8@slATxajqeMCw8Esy@dR?zXL_&@7fOJwP%sPqdSm6{!Z^e0{J_@195y4 zL-+;;k-w8X(7TDxXRwR>o#%lj@^_>M8pz+N9;l&vyein_T$V-cd3=dICo|ep_#%5! z#J28cKU=;bDB?A%Udz=ge@K*F=1v}UC z`2x1_W^AH+yVUU}&NW%lUc#yDMVZ&0#T(f(cmt-iC-8dCaV%p*dkC-N9F%_Ty)u9P zXYb;**hY7MnmC1X1FylF_6lCjxr|p~QF|UsoO5_3X0)g93eHKq9OK#}IGJ-8FT}dKBDE5p@X-{C5JuV~KLwF>65RX8=_TDvop1`?_6R?d#*C!svxq<)0 zn)V7F%DF6y+VhxU&&iDT6duB!lyU75JeWN!gWCOg5W7!yulDXw8^^P^WJ7xm4`i>( zvi2e#z+S-pF{eF)Y0hcf50l#CxG(3Z3~LYKIQ9UJMW6QWReZj|xr2LS3*F<^z`Z!v zWmS6_Q|u+&6ARjNxCiGf?v82gNgTsDA*0&ExEp&2cg28qAO3@Luf*pc*g7I-W7a)!nuo^VjG99 zcieEk6-;W6TeU%VP`O%WYtYa~+q%s`fH2%ejQhU=BxO7MI2(E`r*RSXluT%k;==3^8PXoW0J~rIF7;k+2Nz;*%ck}^ z4zSl`MSBSsWG~9R_ACx(&&ZVa1TMfHml5qDoS!|2^PyjR?-D-0;oOyN9J+pSUiOBp zX|Lcs>}6Thp2xY_b26hng~QmBGOj&>bFqhIP`e-JWcSH#(YrrwoP)h38`^8=W3S4x z_9Ff@jO$wFv}f>7_OwiDk0U?pX&@@Y+Jnf?iW&$=pZ4y>e7?orku8k4>l*o4RReY8 zXIl+awU?2fi8WBdpD~9&VHWurT?0wvXL=1Jke>lI5JrAx*gy#R8Dj%J_c4R-VFKU9IL^Wdy4N>^ z{EWkap!93+P2%$}_Ac@>6$jer`X;tGH}FlYX|LcLoXfJPJ&&)m=kPVmXip(On{ptD z{4C3Xxb_J0GcX6jGN|2;O?Dr?gxw3g`_sl3Ik)fytRa6VbD)a+?9hQSy8B&3e&*;v zLFTk)ke^vPkd{g9apdoE4n$>Gdk~*t4@jT(?)iK^$KH`GbT7AoPqEi!ReKp{u$N>( zdk*=Tu>)C|)}BOu=IlU1Mzx3WarTf5X!l{Ay?35x2i^T?;bZJgS=V00N7*Z~q`iQT zu;*n~dm8yWtph2U&>qEy*&{NfJ%A6f`(>}--JcFV$ljJs?RDhu$_~_IMSBS!U@ywN z_AK7do{=f-3A~RzE+g7QIE_6h{n~ry^7$`&SGIBJy2pFj8?vUog7>hOWl?(`tL! zX_?d>NB&OoKvagc2k{p60N#u~?cKBa{GD?Lr(z3-u7A9da~*HMGG31*EMoy(m&5Bg zXYpT{)}F*`IVX_6`#ccU9>!}phwy3)X!qe&oO@^S`8alP=(@)%IXCeNtZT30<(w-x z8B5v=cp2xs%xX{LrR*u0&>qE0*dsEeJ%B}azwDjq-JcF#%-)tw?RC6}y(TN#OL!rB zQRcO0aT0q*rnD#U0`|C!Xb<7}>_O?*-aCV@3$S-(8;7oYEU-6ZO?w5;WiQL3_B@`$ zo|75vDLk7!DdXBBcoutD2DSU~Om?5_p6=bBHlD%Wk`3)OJe|EN%i4>WXD`T{_6(lJ zo|Z}NaXghhD#O}?cnW(!`m}fRe4T>5BU?Ch-Q&sZby?M3#*^4fvYx>cLo%SoC%wkr18js|h z!Xq$>hhs#B(7n6>PGI-rVc0v>+dKGA&TTvto7(G`;atN*u%f+$2XijsL73N`#qpdo zcp#>`58d9>KlX!!oGdk12Ma>`wIVPaF4SZ^?%C8t%bfm1XTk+?~B3bJ{aFhCMBl z+T*wzdsK$C2XR;Sfb?nap3K)X*gLX?L)Sef+3T{Zy^OoCmt;YE4tHkH%Cz<*?!=yu zQSD(IWDm)Jb|3D@-aE;&gG1Ln?!exZb?sH$p1pzzENL&`cAWDvt38d|vZrtxOlXhd z)|?}_6^672a7)g9+yZ+idiSS;an5br9GlwfxEbdf#;~HjgrhkZaZ}7|&*CPWGq^FP zv?nmiIgT4)JLkRJCT_^Nfg4~^dmh*4oWu1nqdkS|a!%qp7}p+gat`C#7}V~^wK)55 zP3)fFz1%jg!MTO2V?%olSL0m8Rk4U+EZ{1b!Id$MD`6Z*VH8)yAg+J`Tpqi}^Ystx z;Bwf&WwDOSU=`iLJ;;=)+hUc~_C3NC~t?FAg*oW}(*t38dwIj3*|jN<$l!TB(Ne)QwK z*gMvH`5l~xa~tQzruI4x<6OhJu%f+$b8;@?9GKUhMIYykOleQxUvu$xk`e78{F6N> z{n~rS@bv-qu56=woSOJMdqdW=SMWFXvMg%P}i?Q9>?$4qcW^Lh~KgYq)&VI zD86pN-jOYIk6Q!(!(NwF?PdIiy(A0TbNDrTR;INl@hkR(jA{?#m+T=K(C))8*n3&e z4!Zl(!q3^8vaY>~d{3c)iY#d_;AiZ4nbn@gPuWv4p*@P9ut#J_djLOX_siaq-u>y| zN9=9c)LzFA*=w?*y@VgI7iC_17TfF@nbMxX_u1nzqCJG~u?MAJd+!Lo9>d<1ZH&0< zA7`;QWKDYo-(fGyqV_z#&7PAP?J0bVJt^bbBgpq~8VJjvc0az!?vvfaz5CO~H`rUU zp}mH$vsYzVdl6q_FUXws48F>qmPze#e1$zK!`g%RGJ8P!w09@)bs+YRY@vJH8u$`> zT~@W1@kREMENIW+3+!2$)}F+f>(X{Lo%S_mc1$K+N;=L zugH@20zSi@ms#y;e40Ha6WXKr6njL5vD`|WKFQveP3?7jg1sgy+DrI2 zdr{`KXR*$nktyv7e2hIVBicjwD0@))wf7F?>q_ih*~X#kAE&c7WKDYoA7(GhqV_yK z#Gb>oC~DtFeh!VHHbQ z!7H(VS7075$23mH6kdi=yc8pN2?nr;e!Lhv2k~_gY~zJk$4OYj3$TReV-e58Ji5mv ziv`XZJQq{i6L=2iIG&9W?IApia}dwO-gv&=fL%Nto0!K2o`yAaFQmbDl0c=m$KY0uzs z>}i?Q9>-(Zqj(I4wFmKN&H+3MecHPR@bv=D9Xt|SICOpD5uEFII99cnaRTQO9)<<& zIs7N*tW0Z9;-Tyb8Py)f40}ihwEOT7_TK)U9d!4ng$J`YWnFs}4`Q##lJ)|QXV1&5 z_B0;Ip27n#p*@QGbB@T6_5h~Y{kR|Y(%${);J%#OvZ=j}J;*^4r-J&XIW zXJkry0{3Q*%ZT<6?!_LIe(k;e_&Nl8SGLhTZcW^iy&-GbE4T-HSr)bDad-Bd%xF*H z81|%$YmeY=>|q(y?#Er(eX_f+cYoUW5B8R9Xs=k z<2cA3m0|5c+>t$iJD^W{cN||=;M~Ckws7eB$L%=RWmS6_w`DKMg7zG4!=9CC?Md94 zJt3po!?+cDNCvd~a7*^ySkDd)UH`ZRdsEi6S250BktOW~+?+ixv)a?R8GA}5v_~<< z9+4sK0UXWlm%V+w`_sWq+1s+Iy^fo(*JMR|2{&dh%Dnb0M%gnmr9FWgvBzaZdk8mV z4@$rG-rjtjguN@#*vqo0J&)_M=VV5E3fEyz%DDE3lRYeh+WojT zyH9ra^6pO?*J5wUhV~k+$zGLZ?L}OJy&!YiGq^f?S|+u}aW(d+3~LYKs_X&j)80+- zbsYANY~j%LkE^iPWmS6_S7tBCg7zG)#GaLD?MWQPo{&-PVO)_tBm>%gxB`1`PtOhx zUH`Z|dsEi6S24t1ktOW~T#h|2v)a?REPF~Ov`29n_J|B=58z04zwGVd-JcFF&EA$x z?R8v=y(TN#OSmL^QRcO0G02{gDeVbdf;}!H+C#WFdr}pmskl#O{;bG2Z=Y;{bb0Hni7pLH4RF zYcJw(_JYi5&)@>=X_?d>$NAZ#GORs_^RWk{PkVPazW&DEku4m${&8ORx~yt1<2>vo zS?dsXVq3a*#U~kI0_A2_=E3%}$fPeA* zY4S3wJ&k{|r({BV6#rn4$dL8`{?6`~y?=Q3r-Q$-w`Eg%9e-u7$%^(8{=#0AdF@&3 zv1epTdjfxEkIRVm5dOp-lz#2KBwycS@5(m1$E}G!us85~tZA>{cbv(DjdZ zu{UH*dj;=gFUz9#Jl?^clNs$Pyq!HM&Wl zdjU(F^LQm@wWsk4&MCYc6WXIVnR5g$!;tm>Udq{zmtb#8@BVbK$hnOdV^ez_FXCLo z3$dcTgp)WI@dC_i&*J%C@iboUePbcVr8P zu7Aw3*JV|E8INQy$%6JA9>JcKY3)fooIQaPFpT?PNCwcoJRcs$-rJ0?mtqHpu6sO` za}zUI*Iva#I9KpsENL&`L7ek4t38e5*;6v1J&FgiNALg)X%FE3oc*#F^X^Xv)9h{B z51ZQSxG(3LtY|OcIQAlr#VoqlKO~8AapEhpKxrGUAXs_XRoU6DkmbDjg8_osX8gtq+xE1F#Ziz|laomD)6yq4y9>mQ# z2XHg=Y42{r*Yh}cWDDKn*1*y1by?M3#!cBvxCs`t=Wt`rS((!wtGEv5iaTRTdjZ$xoX52=t38cta!%nIn9v@@ z)j3CSH4JGF;HsSc7{*@IyFVRVg>xHM#-{c9qp+gAge!6`%Dnb0uE3s=DeVbd zo;@xj+Cvy(4@$rG-bQ>Ki@ht`ICTBvvg{36(_X=4*vqo0J&z;Vb26hng-f$1Wn6m% zmtqggpmskl$?lWg4ZZu*#vpr3mbDjg3HE}_Y0u!|>}i?Q9>>MlqcW^Lh$Gko(x<(< z0bj>r@5mMoUFWz6dtFwwmvLeCk}PP?VSqg=)7q1`5PL#KwTE$lJtPC#eYhZdZ+*`W z4qfLsoV_XQ+N-z#dqtMC7jS;|yv%A(<9zHXnb00ZKYK)mv!`g%R1A9RFw0C)szGv^q7P`l+!T)^6UYAwv zW&D=CB>ykE&IGRNDu4fk8?K?2dx}enn#RQq(iFEOO(iw6v_OSKb75S{vJA`A8XFz6 zV$vGQGAv6oOQw~w8l9}Pu{5WJY@@7(cAG5!&*Ag-d{4f9|L?qp=ktEfx!-&4z2AGD zPY9P4_zR_#@(a)${4D8zjD_$#De$}dC<@N=YJ$e(~_;-^U~xkbW#bUwT+N0Y6jvkvKzIE=|Etl71*|CjCH~fPb``zV9Wjl)fh| zm%8U|uk=6SU1%wOiS&^CVstfrq4Zt(3(0WUTnuVVseN%oKnvCB}`iA^O zG!DPAtG-_)zXCldb1*y&fac(5Nq5W7MAPt-rMu)O zp^5l$(tpZ7+Qqa&T6O(PUzNWXEyLd`eMNo=T7NoHG!s8f`jY$< zGzmXZ`l9><^k`>WPldEhemS}qzfAgq{8F?8zexJL{MBe7eu4Bk`T6Js{7mVy@-xsB z{3Pi!@|&Rv_(zlV{VMsDXt}iN`j`Gg{w}l>zeK9P+1Q{MU5#HT-64M=nvXw0`jq@E zGy^|H`lS41>2_%|`~>L};yARjldY#*x=sE;bQgZ9^l|xH(PI47(yj7WpbPQyrCa3Z zpjr4C(#Pbdp~?8oq>su^MC0%)JL>yb@+;7T(yHrU`iT58bSr+b^kMl$=nDLW(oOOU z&>Z|Mss83=gG@9HKUw;a{3J9HKTf(){?Ri{E2LG|zw|-*d(krdt#wPeGIL6Q#xS6VRg_Y&{jyzsoO2_u`jH@0DMQmf#mj?~%V6 zEyOR7u9u&WPQcHUu9KgErr;+@@0Q;TO~60eUf1Ix|0;hg zT8zJ1x?27UbRmAebd~%ZGz&jN`WN|WXfl2?>22~8(K!6dw)%dX{0j7-wCeho{#kw* zx)r}zdaL{*bOruG=`HdL&>Z|Mss2`LgG@9HKUun5eiE99A17TV|7enFg|zDWm)9$9L4G;9 z7r#upSbiy5f?p)PUjAyd5Whfro&0=s0)D1+k^Bra1wTo8t^8(a0{+p~`o5z4O0-;B zb^S{h%HM^S;+IITmS2pn#xIm!C4V8Bk3T`WKz!S>iM_8NZoyru;-S4!^RM zzMm++LOMfwP+E2UOQ(y=r1{dV_{Gv`;v(r4(iQj%rFr54X|6O&I#rq}ogz(>y7MMW zCySG$InqS@IBB-{XiI&6P+B3ay6&ZyiT9#q_*y8>1gQ${7mU6afWoHGzC9NdV#o^bcFP1bAA6%S}8qWS}v`+-ldu1UD9FFQv4F> zdE#Q}Q0Z#?Lg^6kLNp(Lf^@L_EHnc@MLI}+GTID3K{`-=99r4T)>AIckbe-}gJX-{#Iw1+eiKTet|KH5azuas6u ztFC*e;=R(drDgbArQO9P(r(fs{1wu(#D&tX(gOS(X&3PXX=iCBews8{oFeTcO~Ox< zb`&Q_&y*fL-PThf?I13fwwLb3FO#+tmrC18OYn=NN#fPgHqt`;0%>b;zVr;~1pG{C zD{+Rjr8EUUN!mi(Oxj$UfPeHfeZNp#DQzk(msVZ>(k9|v($l4-_$AWQ#KqFa($)Bd z(njKi(uUG}{0Y)TahCK{X$F3Zw1GHTT3^}>KS5eg9EVmmw)K=t>&icf?!qsX){(ze zT3cF-zgn6gULma|&5+iVrb%l^n@Oun6Q$Lpm5uamFKLDJ6zM@})%7fm6PHPkYsp*j zi>1Gdi=@9vbMUjI$HbY^U!`gI$ibjDgVLX*d!;{0%cO1{ zTctlpOQhdRi||)SzY`atInr;%6Qq^WH0gh(DbjDGiPEp73DU2mM-%P*71AT(a_N`S zz4&F)FT|y234W2ZLjG#B5WhhBx%_-|0)D3SGx-_PPo*jNNzzZm&7>bo6Y!6os_)~7 zE2SSv%cUvOz0z{&F0>TCMEarpV(ACc)%b}|0B(k9+IX=-<2jy4@#R! z-Tfp;4@l#r??@{fm|re^TYONuUs@{tw{)xYE$M3MKIsbSUTMDcO=*tw4QZCtoj*hR zx-?C?N1BY^O!}HQQTi{b{#P}>vcA6mA+C__k{*=0^X!uTQ(7i{Rk{_wSo(^%NcysL z1^zCw)$Qw4T1dAgz$P^&FHwBi$=~ zT3Uv`Rr(Kc3A#dBDlU}nkQPYY?Q^70Nhe63lxE_mNwJrAO=9 zc`Bq^#pTj1(!Ka)(#OQ5(nqBw_(jsq;?>eeq=one(uc+Q(oNC{_?glYafb9EX$pRl zbfdVL^g(F?{?R)6?`v_Tbc3{9>K^Z2>HX4OXeoY)^gj8;(qidq{6gv9#S5kPO7rn2 zNbeD6N!Lp=@KdDg#L3dTrOogYq<<5~NsFZAwe{bz(u2}FrKQq4q+6wHrK_d4OIJwO zNb{wCmF7rSOS7cz@nlF>NzCN(!&_w(==~DSeYnfI^-Fgm6Z<6js z%kZ~KZ2TfNm6%ziPGz(`WsyCqeB`Tt!aLR zbdk7RdablfdX2PHx=>mob+<2)UM*cMy-He$Um#r|&X>-YW=iKtGo*8+Nzy+__1XDx z1=6E6^xsF)O6hEAxzwG1uXL7lmvpAIM0%yPSUN*mD4i}{D9xAVOWo}zNT*4&q*q8& zqjDX&Jf|zgRk6ei6C? zf1&gu`2}bWewK8c{7f_rKUq3feiE99A156n|7g7aJ4sq0b?Z4O&64hwj+U0;ZM@S3sbELz?6Qt)$Gx5`;nc@`bFliEgqVzm*f^?|#=qa|I3h5AW zIl33WOgdP8sdSLE1iwf+P`p~2AuYr&kPZ;%OZ!VF;AcwD6=z8MNmKBXqW0{w3l=>exbCdc%ih1RM&phc_v6x#aYsr zGy`Av5qGvYS=wEiAnhiVxPMw{kfiHOORVXxH>c%#eVvw}#b_a#gJz&fXdGIu*P-h6 zXfaxd=Aap95*mk=>&8{LM~l%yGzZNgx}+ zj@D9Lt5RS0BcW!=?vYsD|EyFy>L*Dcl8in?FvYkA#I>c+<(t$R#gAE;MSuU7otdi(WtSG_&; zs#n`ve}Dah^{ZDaX|P%SrB>OfsFCiq(a}cLt1Uf!#px?guU>6))2&UnH`Tp0TiZ#ml2^mTQs zwXJl9Rx4Y@#}~JHKwo#Y+9T(OR!8;qt5%h*s#mKx z*4NUu&$f+^-`jS->Id4DwA1U-u2^69w%gyXdbJ1Im$cv9Ue8v?Pde)L>G)p9>eaS) zD(&=aCq0_vQe6j|leg;Y1IZ=&x<0vBUsoru)z=ltE0g2ni@I*_8Xv#5YjM|8;#YQE zt9oVE)vA|vU8#C$*A=Rdby=$VSeHW8KXf_PC0<{Tb~z>ft1dsN{;Er57d>0C^)anD z_Oiad7c1A-uTraiPD0n_vpIUR>cT#8Y_2C(c30|$U)<45;>O*+;10JRI#zF0bsSag z*zGIs(D&-x?`Ori?{m2$(XleQNI&f24t;OTeNJ;+qQ05nj@wkb+ke%#3f=EER^9$l zZeIuf2dwY8xX($7%Y4h`AK>ntxhzck8O(O|N42eG7NotFfx{H8s}H+EuapKAAi8vx`-H9ju=bt>Qv> zDZCVRzh7AO((rg*%K0Nd#&{y*ce`-aIo$Un-LY(tvHL!yJLaYtXTX=caM1iLcz6fn z9JsgCjTgYr>v?w1$4^h&`PRDo6BjaG=Nd?+RfMaukcj2 zK5=|YJO4}W`PBJ}zAzr`)~oRrjQ4fx6}N#q={%16!QB&$GvMc4^QiG5@WZaT6T9y> zyW>vREQv3GZ*)zHI18RV(0CktsS9t7Pl3;KAuFB%r?xk~0dB49#*HtB&pg$5J^ZAC z-Hn&P_qnE1{2Y9nYud!S;cHyeB>n)-%P{^JzR)!j8vh+W_blUTt*RbwT<3PiHR02B z-MRS<;Z}OzIBpDYc1^ap4eWkT-f>%ascRm^-C_58G>&8NB-d1lhr;gX?i>$;dv-OR z04KFIo(MP7`^wFq3peI^yb9jpntzR73$L4GTnI0BO{~WM4A09nUJqxxW>4ep-&5Q% z!Zlsu*Wo^0j6ZOU*(!! zaVL1nxyEP1qg*qn@jmc5os9>;9orZWgIk|&?EXE<9o6d^UjjdwYdi(M?^5F{;oGu| z=fl^yCS3P_J)GCico}@5Yfd%33O+a4_%66}YvaGeZMBcO`47Rh>KJc1LIH~w#UoNJoJ2VnQ}8IC`M&yqU+0q&q2bnO1!&>eMZ z8`p!MnPS`=erSSmNBH(p#@*o?h8XvTuRO`N_u1;D;|ZUIX7b(s%=W<6z?_;o0s#W^{kM;Y;0rWQae9&pXrD{X4Ha zQnl~6@dmmM-O;6?vHSO7cew9IxbZ&l12c>V!K-tOFM_WlPbS0e_buJ+XTjshlWSr3 zbJ%WtIeZrRaXajOPQ#7=9j;D(Y=-NSAOC>Yksr^)%d_qFJK=fc#~wJF{5TAcAV0o@ z`;Z?$!tKeA-{4c*+xbsTa?h4>lKr_&QWeIc=6?S`}5%$Z-j102WtYUp`%$5Hm@mhcDc&wb%l9gV zyWh)q=PQRNksqJH?)P=v_>XW;@}sWyId{09=X2v-;CkdoFSt7S;eM{o9bd9PkA&Av zw%d<|my;ja@I3NkI-EV&=FfvikRR8>eaMgHaC`FOukfkl$2zzc`SBq9bxk|}7I+Ey z@d`XE$Hw1)FCjk;!9&T9kKx!LoBtJj2Kn(bT$}u;rggf*JtObA6-1v03g8jJ- z>^>LK&F>87W*hf`-RG~karbkN?&wE;WWmV;ZQT8Qq&rR{KitnvRvqL=KKzy5r|x_O z@ImrpA^c$j8+Sj4>5e)1#w*~7%7_)YTTH~1a$BSF`#JFXxKYfk5srn`7r?QLVk>fn~)!q;dt_6HvA3y^L6l{ zBwODy_$~6I1b&_T*alC(!shRXFCsrafCrKvzrx+fk5ja7xT87w(FU$Tew+z^%l4|^5Y7)$9Xn?KHP@%y(?eE2i==S$!Z*q^7vFDKaiKfw#gkE`LyC}YIDLrS z{toy|^5bE+A^G8cU%(yied*TsHv9$qb2Zo`2jymek_JB z$hX_y1iQ~^bl1yY;11-+TG)M#iyOZiKF0p+evii;73|Ls!TY6d{&u*G{3wG<$&Wqo z6XeIc@aSoF`%mG%F26)UB#xKGB$&Yv7F674%xJjnXucqtD9r3KMDf|ulb65C~-iK~|gW*@n zk8JpP^5Z)Afx0&TF8Cty<8gQ(`SCj3jr{l&Za&Oz|2tfR{Aj5@${pXbKc~a*YoB%N z8wI=XGdR8yev$lG0Y6m7#_xyS=lHt$FTz8}j}Kw@d0uY(e{d`EqlxwrcevmGcjLX_ zAK0JA!R6$~9C#1;u@Zin{CE_8xVD||b$H@bBE|3H%oMaWDL@hBp5>cq{qwK0KNH_#GZeew?A}$Q|h; z?e_iQGY1=I!wt!gsqk;Q4&3^t!C!PRo(H>sr*h-hz^^A7-vB>Bek_NF&9L#mz&&z| z?||EoAM4<{7ufjy@Xzeeo8XVhkFD^VdLOy^z z;EpcjM^m^7`OyxJA7QsogTKizcHeh)$073L68Kf^OKyF0;ceu{pW%DSkNe;U8`%73 z;9lg%KjF6I$G_qF%Igf7K{eHhYj0-w*GXy7^DQW#q>T@a7~N z-vd8De!K(UTF=Hmg8PympTV8T50_K!XgtQ|ABT^#KR40yRzKfC{~bjKlG*KU1n z;aACz-tac^V<7zSX*T}?*!}#YyS@9I3U>@7Kdynhkso)#&9iL&cDM%lu^axD{rMBv z?OX2rzredY8Q0VM+8s}lAI;%M8{7C<@a^Qs5O~N`8y^FwkRQ2lEAr!7ID!0F1^>YQ zd>>q{ecr9_DR>Y0u^TQWKR$%FHnRCYz;}`#?(f8*c^wPxIXK)dl{H{5TJOi~Mk(SL2T7$&YK{r^t`h@Otv21a^O?!=3+0xK)nv zi?I7VU^jjc{(=4ZW4N6B_zvEq*U8PVq1W9VrR2xy@B{5_yd&&>@5s&X4&Oz7^oBc; zAMX2%?r2PYOoES(v)fOBj|?}S1s}*To(J#L`@-Gd4e%E7<92u*`SB>cyqV2^68;PM zu@i1he(ZzmkRPAIKe0c%_klYOlOMJ9zIDeN3U?qscEIlQ;obRPgpaX5zY15dKktM0lOG?zW#q>Zcr*F&JzPY7 z{0h6@M{@U9UHiN{t|C9`!=1>F)8NJvZGKDmIQw%Fe1!e^Eck%boj(oUNq!83w~!yh z;dSK4NceX0<1+Xf@*@}SLVjEcH@VdAuKbHB;0C(-Tnl zzr&^EM{T{2-0?t5n|~U-p8RM7-$;IRfqRf2=fG{qk3n!<^5Y`-=RtP<$?(VI$1M0w z^5Yu#8S>+1_@Ned`@h0}CqM3iZzexB!Oc(P2V5h^ZvP_u?M23~!|#(H@4~yuk5Azz z$&YX0`^b;q;M>~U`D$z5bjLO1$LVk(`Oy|mBtN>r$1bgGH&s~4r;SJCJIRmM@D}ppY2_y+RhQaF$NxDswM)#hId$Fsg0 z;cwWV?}87JAI0#i8~O1Bd~ZiP{|oS~&A)HTsdBeK>C&>@@dBg6wkNj8w-$s78pObRO&E&^z@Rj68G2Cjh zo&PD={oN6F|9jvcE-?N8F4yC5<6pvi$d5|ceU6zMkJt0;jt4pzH-%S|A4%{E@}o06 zyQajL*Vg;O9nTFnJ{{haVSE;R2l?Utoz5Lg$d4iLtadhk zEPM(1F&WMwKW4*~?9W%j?~xx%;a%j%-{9@!M+sa!!0zukcqRGqHtasf%sszf!?|sZ zkHeG5k4DYk6*@J8|@2CpGMhQjXO zLEZdI;2Gq{40sCpaUJY_AJ@(Q3;av2@%`|pT3?bf9@I3P4Jvh6)-To_h1o?3s9z%X4>UnX;;e4C#{@vak zZ;&5p@YCeSaCoDhC%3*!;58Y>GvLMK$4&5zvuu1FJf8e`3?4*&l)>kdAOC^hoo2VM zfL|d$j>3#o8C#dftauk{_-QbH_sR<2an##pXBEKH!e5B;yXS`+S_L z#|L+>XYBqikvl#lKeFN1$d5n4JIIe);0@Y`-TBtTtH_T>;YH-fKjCSeZT{QvSn}f& zcm(`}+J+D zB|iqh1?0zh@T6`we)~nSM=?D1EE_L@2aq2x!(GXbJ#cCRo4+4^iTrpEevJJ19KM_U_zqr1e*6Z{ zB|j20&mEVOAC2MRq$H$-I7+XJs8 zKi+{Ck{{)8ZV#LPC7eZm`~deOKYoXMk{=1Wj@;3L{AdKfMt-z{caR?)VYe^2^`*e8 z$d7a2MdZg2*!|p#n?DL3OMXm%-S45f@hNbh(~M`rXOJIP!Ea2p@k01%^5a%`qjJHW zZ!Nrr{J0lhOn#KWGh#M>8$6!;corT+e!L2w)7a+kg_FpSL-0QG;}iHf^5YwL6Zug? z`;0s8AU|5cOUREN@T?TOzv1vDdOUaKq+SlFTK3Ct}e{*;e`QiTFtUKKAJ-hLNa7IJpiEu~qV>)~w z$Hv{?wROi%sk{ARcnkS)GrW%cxD#GZemn%vBR|~V({+dYJrZ}m-S7zV!{wAa29qC0 z;Lha7G5DDocKiBz-rVs}j&W=FcFl9=KO4S*^=82C`Z5bgtw7zJK%fCx83lqdL7;U{|CN`eES-nLcSe`NAJ>0Rq zjrW2Zk#ED`=H%NY@Fw!@O85@)?Rt2L-Y0H-tKeDWTQPh|hK)ZC5AALI5*#Dn{tcf& zzI_7MZf5g;gx%-Wx%+c}*V-M$2lwk` zTnxL<{deOJ!l#jMkHPht+V~E*7Wq~NZy?`x!>h=*x8OzO+kfC`vYEw@~tI2i+t+_ zUqZeOfQOQA7s4^}Z7O^Q`8EeW{WQD3#qh7>$8GTDsW!eIF4F7Z*7pd!lze*zE+F6B ze}}qbQeT_@Hk?VmeF*m?-@bs8$hZ2sj@;osU)0@SPxyE8V?4Ztd|L#s)BDKHzZqUm zzTE-O8)D;|;OujZpM^(|Z?C|8$hQM<`&Ksp1Gpvm_6>Xr>-!PjM!r?k`_>)zY9Dj! zYXIL$zBPrf8f@d8;VJ3H=fI=Lw^8spXXMg@3UPXR% zRc^Rr5&1C=o<@HB2_8#++zAgLKc0cRk{{);`@I3Tz8X1Ir;n@F-nbk5U-svV;Gfu^ zuZNfA+x+$LT&>%kZzp^?`SB$@ocw60>%twqGi-iexLt4KJh%b*aW(wEwl=;J{*3+k zUifSF=O^Inr`h~h;puuE-TFR<-G7HTu7n4kZ=9g_l{?(eEx7TE6U$8%yz@OB!@ps|ED~x}JXX<_9?k{O-)!oOrzw7S!On6A9aTnPA{YN+68*W8@ zjDp?YiE-nX!auYzo(+G+{=5Qyi~P6;zKQ(U1iO9Ho$qOQBKffk9yZLz-+_CaYy2(T zhWt21`@TEscDC{Q@XxJ{JHh{Df6jp4CO4RG&% z#yjA43xmIz-N*l)8K}kY<-u10=50RNh3<6Gg6Y8pQe zFCahu1y9bg@%Q18chXWKR1WJXm9h+gx@AV(&6{W zkCE`q={A2dJVE=udwv$cL&%Snu=~64Zv3xstAWOM!tU=yy7BwqAK0HCfy>+3_zrjv z`LPrJH~H}CmH zzn|b&$&Z?P9o_LF`OyS+*S%X`NBDg5qc_}({5TJG|IX~@kB94%A6LM?us>e~f7;pR zFN61yAAf~+lOOBhE#!y$+%TBk+^8ZTvU*imAp;X4?A4kRQo#fAV7>+-0cE z9|bodKc>L(tgit6rlZZj1wO?7Tm-*Gew4zc2{!*#cslv<0elhp@g+Qv{P+p(Mt;Q4 zvd7b${Ad8zAU|5b-?Be?gPKw(AJX)KU2&25_l&0F$11Jek_8AjI{YHVfT0B z-RpBN?0yf#@mARV-ATtU!asB{ehV&dVf-8&RG5l(K<5loB@}n632l=rLK40%!x4xI*UgXCc za9i@@ZMgmjoBuxiONQ|g_|x9TKg0XZGOjbno{#6qkEZY@@}mR1wSmna0cU8RbnBY{ zpGAJ$05>B){sLDYZu8f}mF&-D@O$LP8}P2KHvc<#JNZ$&z}CB&{78i#s&Di2;K3*I z13sJlcoA+%e!LFXI^S;pHT*sMbDclg{e4J&bb(*%V)KW=JCcmY!&}IYeE5!fHhvp? z9{I5iP9;BHhFg;#|AFg}AMQim-SHFqb299HPt&~~m%?v!HogIVn*7)ZZzDfmgNy3g z{O{oN$&b48?EZR@A06Pf7ux)Ru=_bNcmI>%U)Z0ohd)iV@g?v+@?#nN9Qm;lev6qo>;VMQ~s8V;bCPw2fZ_Hzq%Bgpad7{~11#V)O5W50D@C!#l~3 zN8o1~+5GMBedNb;u>0?3_xRq0`;#As;Vz?W{21JX{HVFWo}YNucP9MJ**3oqe2DxQ z1iwmtjDw$VX!En-2gr{Z@I~auRq#OaV+Gu8q}_f!+2RexLk! z8{SQRdGC`B4U+GS2SrpYYf0&u_x-k{<`)S9;m} za`z|F{yrf~JKc7N^QO7`dO@O$J(I=ri= z%^wPHCqG8Q#Yr|k9xiHPoDDA~Kc>THlOOZpmgL6`aIG7iO@8!(H{v&V)^5ZC+NPg6~#-7h(?9Ywh3ijtV@P6{+ zEVzvPNQXC*ALqdjkRM~=Tgi_cxG(uJ3+^<*)_X17nEY4{A0KSvYvCj5#`nPo$d4`X zPV(b9cnkUQ8vGFX@h*HD`SCg2pZxd{?sBo+U$txP`D#LbG=$?>UmN(FG@IWIK16=> zg&WkqEaWKU%`I$d8Wj_w3JS!yl3#Y4B?qcK(6z zj^4(@VfQ&q?)exCuOdGt!Hb&NcpiKs`7s-AM1EWiyMHHg=PQKW&jC5U1%Bsz<2CS0 z^>*U-F_FmjQn^9Ufk5izl5(LKaRqulOOf2v*-5|*4G05n*F&O{4V)% zF8m7lkp(|ae&oRSkRJ=+Tas)&%i$&D$9i}g`SBRsjQrRMSD$3Je;cl3fBq7FkNh|W z?;<}MUvH0ZJNeNGF79mS>kqFaKgPgI$&cyq4D#c8xFz|q7OpkX&Q}6|&;I-x{2}>q z5Pq$n&Hoj4pX1|R&xFOc-VMpdUEx*aM;g4G{Fn&OB0uus*5tLy zhslri@Ed(?{wDZo^5ZFZBl)otUUP=c-wWSLe!LGC)VA?2;kHwae}?N{VqE8_b#UYD;O9={2fT^==ndb|%I5cjZzDg(!}Ahsd=lJ&{J0uUBtLF| zkFh^5hbso#?N`D3(~a+f%gB$v!<)&Ehv1@?Hh(L;n*8_&d=>feBHW4m*bO%(Ki-0m zUts6^4}4^h@yGB1^5Y1+ll=G&-a>xVD74pOT?@N?UHEqL<8=5M@}oIipZquj{w3RP ze zzszob9R4@?(eOrlJTH(Ro#96Y*!&*wUF64ku=`v_x1I~(Ic<$+!_&x*Yv3v5$L;X% z?9c1rFDKdUH^J|aAKT!U$d4D`$NJm+UGUxH$J_8S^5X+|Zj#ME0?!~net@&ck5g{4 z=i?OCR|o!@{kbXp?uB-~B={BbqZ|DAxi;P#zK8r64BtY2TmUaf)U|1j)62gJR8kHN*{$6N49^5ZbPu(i$q87?3{l9t-@ zHJ<$F1=q^8`J>_Q*`FuDACe!7;n&EIKf~^GW8C_-!5d=6FT<Jt>ArwZGH#%Ir8HycoX^26Tah2o1XzMAwMpF zuW4xG6X0y}BNtAbY~uy6`?*>7dR+&*-#c@>9Ns_3cnw@ee%u3ZCO=Bxq7F8H3%r#4 zcnZFb{CFOoQq$(Y2LHtVybnH1ejI?`AU{5Y-R}vy^?nX-9BBMscn$gSGrXAmsK4A^ zuNm!aej9i^`OzJ|jQr>Wf1PjhhrsWW9~Z!{kRKD_$H|Xe_?`^A{cQLa@?#;qfc&@- zp4`snuY^aEA9upz$d6+9lW8`86TFxFcmjTw{CFNNAwTxPYsrsKVfQ(H?)m*5o=JWr zt+3~B0{Jll<f9gh!AcOW@D1u=A~g|4n{82){snJOe+HY4cx#?;=0;!Z(p0pTTp; zkDuX*Np|~&x7d2ek{|8hbn>Gg{AHfa9|^xheoTX3B0m+pNz$3b`(`SA(7eW=a<4K5}>8vofI z?@IEcCA_ec&2JCqk{?~+N#sWlcu;Md-yi;-{W%N%ko=eezeaw{hj)-4H^UpqkGtSi zO|};1M-#{6+Y~>Bg_auaO@g!8^#0AK?unY<}Wj z?D4qI0dmhrS9lTm(HEZ9&Bn9fvF(lX-~r^vweWf5#}e56oR2&ITKFaM<8Sa|2TzD_}u?%)Ur|zE5 zBG~=jWYzTyugx@m6)q${4#P9akFVhgU2MMlBlPYVl4RTf?ni#~gxl4#@e%O9$&dN) z3*^V2;YTjC`CH+;$d4D`o5+uM;5p>SVR&L^yZuk_F!H0}nyTf-4In>;!DrUB`4ixG z$d7rj`@IbJd|eMemSwyOcAw+o#_xicksnXPb5m{n9r$wc<5ze%`BDFNTi+n^qZ6E5 z$8LWv{O(laN$@M=$9(wl(KfyozK8s{559%`cn)3=v-xkslgW>`wYHv-DXk*p` zcO^eY!|#zFbKza&#|n7+D7*be*nRGid;VU8SCSux;DsqR{$Dtk{HS?{tuKrGI2+Dv zWb=E#-N}y;@Q36_HvAg-F$>-?(r&*R-Z0qs9(Wb`@dCW)Y#V zx5(C)On!8M&py@02f#0oA7kK0$dBppUE^&2V)!QVV=X)ub}@<~N5sk{>DXQ{=}$_?t;6XTEm6pM_+g*`7sur(8K00 zfQOJDYv2^};}JOdbesPI+<^S}7=D5LsJY(O^T?$(zaxAX`7so}iTs!h&*^9L7r_%# zjn~1$$d6~?9^}V+aM#mp{%>$Y^5cwqY&|bcwekM2`@K!~d|e9PO@7<}FC#zJz;pZB z{0HI7$&aVu;pE3VaPKp0{{P_aB z#uMRHa6-$+r8; zffti+3*Z^#+uz{v18x2*@Sr}%Z^GTX8Gj15Xm9)@T(h}xod;}v^~tvuu=_m<_xzs? z-*UO}KzIT9HX5ExzRiJ0X4w3da60++AbjRoHvSCUu$}RK_&4(7OSn4uR`)?$?^^P$ zD_nS)-F^T(lYGm9Cy;N`;2{HS{&jE)`Sw@175TOSPH1cMABW>u-){KVdNzIlzKeYO z8NO+fjkn%t>z_lu4TdLX+W0(pSbyXD;U47M>u?+L?Ps`d66b%&&R>mu8w`Izeq0FO zooDkGz{@5YFN5cjZ}-5L53}({;Nj;QzYg~%-wwm=$hYrd_jjk=^;E0G)>o5!YYKl= z$Hvcw@5wbD2j6n3aX!3&e7gpoe4dT}4R)Us@9yt;IGubu0H2v`<3GX;TN@{Cvh~#_ z-%{ZJ*0%BCaPd^*>F`SO?RMCG&X>FYopA0@<8nBQe2ahB?yn#D)(TGUWb^yNr;%@y z;CkfSjqrB~Hh(?5VT$oHu=|_{x1M+4MdaI0@U$T|-tZAy&)9Q}WAFg-Z4}(Kqm389 zP06?0;8V%BE%1-EZ2o?D<7DIG@EY>1*=D={#pGLWc*bCxp9PO6-{!!B$hVbn_cLw& zV{i-dZ8zMAeER}ETGQrNf7I@ODu?H=Cad|IGe86#lrGjb8?T*}!-nd~Lq*U*Idqk4ND#+|GX)`7s7x;bl=jz++{two(@h0&6D~#L1IpjxA_<}Juo&l$2 z8jplKkRKPriR4Eve5|w0pAA>AKQDsI*`IHQU#)BN?}o1?KQ_beb3EMh@gh9>LgRnK zeTNxWz@5mC|G|yPk5iwp=i_*?&2I}IVSnxof6V@z3Gc3B^Dl$1B|qlCSCAh!!(*~+ zei7WC{CEuRLVmmmH%Ybm2jFpXW<&;#{u|T_U9krFB;kW#3yaNZzdS`h6~A$aqvv? z<63yaD4Smd4c@O-4dmH}@-c5eQ{lo5m@2NK4 z3eF)v(%=iok8yC?MK-?x?m&L5gcHe+68KneoBuLg!Twwh?CezT`-eg7ms zdcqgy+jtf{nEc3x&mL#v^Wm1{$4akVqZoFLktUHeB|Bmw+pT+!xoNp-e_rUK}XTIjSqZp3UIo$D<)Sa)$mK)cW+b1#p zD&yBNeirxFiu+gmRNcNr&w)Fh=KN<#-SH@##QfiM9(RA+Ip1}fHJglc*67bJZapu1>yLRllY30<`Gt=ZG+ufVcRFeQ*pnWQ;@}VGzv-m)aKRaoB-bsA!N$b&e z@`v+lJNpA~JL&xCC#^r}r1M{R()>qH8W;ZI{K+RhU$>pKzE@AWzb8-PJ5M_Qf|Kt5 z$VunF|D^l>%SpHY;3SUA9-TFG)Y!2XWY3#FcjnZBYvQs8kGUjk-019anPY|y9FjeA z&eSWjXXjlVmpyRos95&sLBod*9%shTF=MP4G|KeEsV>Nb2My1jGi65V{Dt$Q`_bU^ z+4J(|%9=B8-b^=2fwqHGN+0^l8&Is{5KbFMs+K zDytS$uwcHsMcz~yT3q(z+}sm9Gdnx`iUqT$W@mQ~-0VT;kItT!H-DbZpE@^h^87q* zA}@Pn-rQ+D6qY#(M)dOLGEjB7O`U&DL7pB(o;!(q+H`TI>UGnL<*$~|_D}8qF~>dQ z&aRrH=Xu)v{69R^diL`t&yyFujK)tq6<8G-t=qp{%{9#^XAW;o_EzB&D^}1dGnp62WMCJ$&U^9|9YoiF*i>)4d3eK z@FE!KJ!nO6S^Z%ed&k@bdUMR4suSuK?hSDDoVmGG;NFiO<}H{4gcsSg1(V(6sw+G1 zYIk)TxYx_WyxCRtNv|EQy)6IdjG5*}JCL5?lh5RLrxRmU=ZheEOSy-ZJLl@zy3QtR zl{{Co^gf$2wd&zcnVp)Or_wzbZ9OU3xs&HlHsmVE&RdvmTi@h@>DmXU&!0Yd=Ja{m znB4C7$Ek7IxvA5`*GLywYVIEm?N8bR3<*ZhD$ONl?bpB0DH!eIh$3W4$9gC}X`MJ1Ap4BReQ#Jt8|OW2uoHmU?-j z2Orc?nVJ&Sv7ipz^gjM1K^aSn?4XSGiR_?^^^WYIjP;7_pp5m5?4XSGi0q(@rABsG z>LQFDd{9SaYD!ecf;w>1d;60FWh^bSgEH19vV$_#JF z9h9-u$PPZnXjiRxHT2X1;#f0Ce#rA2m7#`;8dP{w*kc2LH8MRriedPa6o z#(G3{P{vXtJ1n(rMh`xyqcSxms$)SNxas;H6gz)V#?m4?C}VvhJ1AqlBReQ#y&^j( zV?84~C}TY$+m$Ev=G{|Mqw!c!houtZ#Dj^2b!4ZeM0G5v12;X@pCl+_X^|b2u|AO< zl(F8C9h9+NksXw=o{=4tu^y2fl&Pta9SiEPR7OTmL{LX%YD!ecf;w>1WBw#T8B2@o zpp5m2?4XSGj_ja}^@{AEjP;D{pp5m1?4V3djqF%Z|Dg<~s4Iw`6kn#M1a?^a8L{*f zUk7C@EwY0$)+e%qGS)k?gEH1DvV$_#GqQs+)+4fmGF6R@e`G-&mg;x>l(3HM)Rd@> z1$A`0^z^h7=Lkx*9^MX0g|fGUQgP+&pwve0?V!{a=k1`>d)wPVsjJ@GVHt~TT?2kf zQ0keA?4SI}UdlZnv_7)=T4z)kPvX9T4>LvIJAIzw*1d-xeasm{>bL8;Er+d-+$(Az<&&d}RI zsm{>bL8;Er+d-)&(A#0D{V{s*K^>K90;4HG9k}VKenwEL3G{YQstNRVP^t;^c2KGb z^mb6H3G{YQstNRVP^$6sc33I}q6Z(;QK`l+niAB3n;!Esf>Mp2w}VoRpSOcjji0xJ zQjMRtgHny3w}VoRpSOcjji0yG`1$$|Wn{;cd(o5POErGJj)isPrlNjRc2KGh^mb6H5A=3Wst@#bP^u5~c2KGh^mb6H z5A=3eYAMl!59+8?9~eyu>cCC!?Pmm~`ao|7rTRc`2c`NzZwICNKyL@7`ao|7rTRc` z2c`NzZ-=Fx@aVw@byTVkjHU#2;HLNTGlEimptplkeW164QhlJegHnB1d-xeasXox#L8(5_+d-*5(Az<&KG54i zsXox#L8(5_+d-*5(A#0DEh2jGK^>Lq1EVQH9k}VKenwEL5A=3Wst@#bP^u5~c2KGh z^mb6H5A=3Wst@#bQ0kk3-d0cO>#)?O7(Ed|9hK?{qbWfhxal!JBPi7qdOIl96M8!+ z)f0LIow|r~@}W&Cdu*^@QFIO7(=^4odZe-VRFjgx(HH^@QFIO7(=^4odZe-VRIk zF8-AY>&RA57)=T4z)kPtX9T5sLT?A98ZmDNrCJnk2c^Q>+d-*V^L9{b!}oSjYWwqc zSgJ#d9(+(orQR~pl%NjW^xl3(Q0lq#c2Mdby&aV53B4VZ>IuCalOD=@-u=`J)yUQQaz!!gHk=Aw}VnWp|^ulJ)yUQQaz!! zgHk=Ax5HA;Z1muRIx5u@MpJ@1aMOGG89}L@(Az<&p3vJtsh-f=L8+e5+d-+G(Az<& zp3vJtsh-f=VX5mUdhkIVmFfwjDM1~$={@|6pj1!j?Vwao=ItJMK^?g1seVRKswebzP^u^Nc2KG(^mb6HC-inu zswebzP^u^Nc2KG(^tO6JUx%gkh3JV0>Znvt7)=T4z)g?&89}L@(Az<&p3vJtsh-f= zL8+e5+d-+G(Az<&p3vJtsh-f=>Ir@QhcdF&6Z$DZsh%*h!#Z-)Q+yqi>IuCalIuCal#KZwIA%LT?A9dO~l9rJ9uJ z!3T9zswa%51a;u1_x3Y_Qaz!!gHk=Aw}VpsnYV*dor|}FQkm}Upj6sN>B%GdQU$iDAf~sJ1Er?dOIl96M8!+)f0Lho2FY>IuCalIuCal#KZwIA%LT?A9 zdO~jprFuedt0(kzSn912JrO}2mFfwjDM1~$=`lYeDAf~sJ1Er?dOIl96M8!+)f0L< zDAf~sJ1Er?dOIl96M9=cp|Af?Mz(rFKP4#D6GnDeM{c@4%!fuODAf~sJ1Er?dOIl9 z6M8!+)f0L#KZwIA%LT?A9dO~jprFued2c>#KZwIA%LT`tq63oAVVIA4( z38N`N9k}Uz{EVPfPw4HSR8Q#bpj1!j?Vwao=IuCalIuCamg+{L z2Orc?sh%*J64Zg4-pkJjO7(=^4odZe-VRFjgx(HHwQb%GN;Ndz4oXG6w}Vo_=k2gm z&lNrRppHsymeG`;4&3yfenwF0UF7Yc)V1dApwz42?V!~9yd9M43B4VZ>IuCal#KZwIA% zLT?A9dO~jprFued2c>#KZ>uNt^&iT}R!``s1f_by$PVksO;7Q4P^u^Nc2KG(^mb6H zC-inuswebzP^u^Nc2KG(^mb6HC-k;@LSKiaevd4=B7!<9)e}Zjf?B3}!X77jLKVIz z^mTf=FVz$JIw;i>dOIl96M8!+)f0L#KZwIA%LT?A9dO~jprFued2c>#KZ-=EeasL8_b!4k2 zjHU#2;HLNSGlEh*p|^ulJ)yUQQaz!!gHk=Aw}VnWp|^ulJ)yUQQaz!!!%|TdJ^25} z-rI*)b=`NqTQ7i&F~+uRT}UiB0Im z0f|lM#Q}*;=*0nvP3Xk|iB0Im0f|lM#Q}*;=*1z)4LQj-!z3x4lGuc)IG_V*+nwG= zKw=YmaX?}ddT~Hv6MAt#ViS6CKw=YmaX?}ddT~Hv6MAt-Vs@m359pM{CQQ8qbRcbO z^*#a;o6w5`5}VMA0}`9iivtpy(2D~SYtD-U65Ga$1CqPG7l$OqRa*FfPD$<*sh5Bb zq-{&RkAS2L@#28wLi6H)q}h3KKyq@tI3UTk7Y8IZp%(`vHlY`XB;M1)2Xsne6Q*7Q zI*_(4@je0)o6w5`5}VMA0}`9iivtpy(2D~So6w5`5}VMA0}`9ii?Ink9gMlnzL2LhmIYu?f96Ah8L( zI3TeJy*MDT3B5QVu?f96Bp0V*Y(noPAh8KkaX<&swq@Q&Kw=YmaX?}ddT~Hv6MAt# zViS6CKw=YmaX?}ddT~Hv6MAt-(vSHw71F5~n=thf(1En=Zto)?u?f96Ah8L(I3TeJ zy*MDT3B5QVu?f96Ah8L(I3TeJy*MQ4t<%B>bV_0qrd|R%khb0BeFP*np%(`vHlY^> zBsQTJ2P8J37Y8IZp%(`vHlY^>BsQTJha~r;wD19)lGuc)mw*nWZFhPf0f|lM#Q}*; z=*0nvP3Xk|iB0Im0f|lM#Q}*;=*0nvP3XlT$(=VXd_bopHeu=|paW@JtM?I**o0mj zkl2J?9FW+AUL26vgkBtw*o0mjkl2J?9FW+AUL2Cx7ir-GIwi3QQ!fD>NZXcr9|4I? z=*0nvP3Xk|iB0Im0f|lM#Q}*;=*0nvk>|w$iOJ)|A&C{07CxX;lG|kJC7=Uo+Y;|1 zAn8B7I3Vd|yf`4a{=7IKX_;Oekeo9w4oFJl#Q}*;=*8HCo(@UmX+;EdN@5eHUIIFh zwk`HP0ur0hivtpy(2D~So6w5`5}VMA0}`9iivtpy(2D~So6w7~2|ZmwrebVD?BsQTJ2P8J37Y8IZp%(`vHlY^>BsQTJV-tEhBw17_ zZ4m*TlGuc)mw-lyO}IF*2_d{q=;^jLPx7A7(*cQ1=*0nvP3Xk|iB0Im0f|lM#Q}*; z=*0nvP3XlTxi}SL6M8QJiA|V_13HklE%QDC5}VMA0}`9iivtpy(2D~So6w5`5}VMA z0}`9iivtpy(2GNo%h#X4kWR(egsGQ+4y0{&dmjObP3Xk|iB0Im0f|lM#Q}*;=*0nv zP3Xk|iB0Im0f|lM#UV*2l@>mrQxcmn^%Bs5wCyhMBOtK}y*MDT3B5QVu?f96Ah8L( zI3TeJy*MDT3B5QVu?f96Bbk-RXSBsQTJ2P8J37Y8IZp%;fFH=MNa0iBZAgsGQ+4y0|Z-bX-U6MAt#ViS6CKw=Ym zaX?}ddT~Hv6MAt#ViS6CKw=YmaY%AoO$#5;DTz&(dI{)2+P2jD2uN%~FAhj-LN5+T zY(g&%NNhqc4oGZ5FAhj-LN5+TY(g&%NsNcI@By8Y*o3KOT3SO#3uCOfW#*B z;(){^^x}ZTCiLQf#3uCOfW#*B;()~V^I~j2PlqHXQd$uKos!rKsh5Bbq-~46kAUPx z;>7_;ck9IgNk`1Wfz2Xsne6Q*7QI*_)tdLIFaP3Xk|iB0Im0f|lM#Q}*;=*0nv zP3Xk|iB0Im0f|lM#UaVvBrSYErzAFE>Ls89Y1>loBOtK}y*MDT3B5QVu?f96Ah8L( zI3TeJy*MDT3B5QVu?f96B)Mm%g%9YI#3oF=1au&6TjG5LBsQTJ2P8J37Y8IZp%(`v zHlY^>BsQTJ2P8J37Y8IZp%-HldO9Sr4AP1S=#<1JOuYnjAZ=UheFP*np%(`vHlY^> zBsQTJ2P8J37Y8IZp%(`vHlY^>BsQTJV-tG1f=tDjgx*U)VmPJZ3fk9TTZ{J*klbCp zI3T(2cyU0|BYSZ`(pPzLKynp(aX`|(y*MB_^IpuE_jE|I)U+>8NT*_ar(Q%yw=RC) zl4ZHnX<8f$b8+%=ISg17OIoC5uC(*STerI$kt@ya@7ogZrPK`7ti4d!mg$b|?4%V% zfA+@re>BIo^wQp5Y|jNj*}l-ZqgGyHU0xGfsQf)L(8Z=kJGXtRZ(Da~XK{6?*S>dh zId_bram!zU%vp6;q`)?)5nDG}I&3OAgN+YyY>ybteqfW{@qN?uAC%*ptn|0B%qjSm|qw>fO0_-ib?O-k{Z+!EK7Y~fqb^Zl1 zCH<^)8F}Dlv5nG_jTubcJ&Po4MuEOwvEk+a@sU0p=so7D3#mR z^#~D%&f3?cxY;&SbL8E`g zf3BTC@w$GrHDy5z?$i83evNn{DuZ%m{^CC;2KOj`@xSc2D0hqc&eO86qMS5695CIu zVZtZ<9H+>+x7yFO1o7!YA0`5~rRd~-?y~(-5)a#~IyXPbi18Jj2(oJZQm^H!VByt| zD9R?Z2nHE5BDk=HNsuc;Z?Q5%(CmS4_Iqr%4F$}hk9#ER$7Z}>yk|JF8^k2N(Gj;)Ov9xg>u z$5>s%LDw(ODO|XPKVcg0xZ{2Nwh#1dV;{EWrFYzQ$CCHO#=`sJK6FsnsS9aqr0w0b zjbq^EP#}Js)k-J1+@ctCN-Ny$=;=J0Cy;Wko6mx572kXc#2#rr2@&wVRtPp0b_vb}klWap3wWqBxlzmQEOL#e|%eetMC5zf5mC)I_Wl+~>;m-mB&bjB0)x^JwbXGn;(YfMz(tS339!cU?T;t9zC~xfj(WO?J)^I~j;aCGS z)jRz8C~6(8b@$1=h1#f<`WPOAA0xe2$&L%`fl{h39|82q?hki{m?zfVS)m?wE z{KloP{?(;Rs?xpuhxtFtiF5YFirMM?{ncB_8=ng9?-AuW;lh<)zVFRTcm4zPrMjAL zo!?MP{ZWVCh@Kta#D7+FfxXOIW!t=ZW!-H_8GRkzN_sQP8|$nN$Ed@9t9pwH7gXl7 z?p9HEE1xF~t1~^%Wo2>xlQdMOq#jjwNj)BT^HM8qX1Hv1ldFrIE|M)o`md62g)P^_ zbtu1kYolk&Gvm6XEnG;#j*`4gGyW{SK`s^3?yzI^>=o&crsLD+Z~VeLHpQ3h-lSfW_BMuH`o+eyPHGlb zwmI38uj1zq6F+bBn$opHf7PlouLVar{{@|IyJkkB_vhC6NP8<;dn=(=TGwG)w^C-h z!$#4K&`DlYH&5Rb*WH-;SAD+u#MFIGa(&&#b#@!qSyXeyz3Pi3pFN{+O!D`Fg_bzGp-iZjPdV`uka5c*hkr(Xr&+(05$_SaYxt-K_US-kBN1 z16b^IkCJPNA$gvN5_`hl=R_sbtMSP7QaHKi4A;hNw9AnDigWu7X?xC{Grny63x)?w ze$nt5lOH!cV)6##_ZhxoIBNPv6iD@aeqC zB$Q1gQuXuX-D;};5_s*;U%KspL z(UO0P|4#n$uk%;KU-SrA0Cmpx*TVCc{8zy*8vP$Y?ypY%1@J!_eWMD3Q`qF)i|Ct> z%a7=HKr2qsKL)KhMK6F>oT3++f93gB^Dp|{(6{k_FaIW^ZwEV!Rws3z(VIZMN0JjB z;9r3LZSZ;i%8%%S{FNWkzrkPm5q*fi@+0~`^HpkAojF`lrErjeY=>f1RUG zfbuW;XF&NE-3iLS=p*2#`0wTaWxZs=34hyY;a7|n9x+<@RilN!W3=#VMhlM`Ej(tl z@OOy46Ex(?)W zC6M1F{Sk{%{mE3}Bg>!l&y&)hZ+gr0B)#7M$#w9bD*gSYpXYo{F5jUl`lODhOaH8e zzdeqBQu*hr;o$6kG%5cV36GcJM2z|K-~!$s9RP0uM?mVWsB(b$-5}3U%};_&;1EcE z*E|4H#$tbr`CgDbHFtwN>J>{d<~M_!)8~Xrx5IcLe141)aGz~H4a%QT{!W3)&k0cZ zIUZyFFxbrRfZ+&8KAsaQ+RJr;= zm8&<#d^bqn-dqBCFI;>e#(W2;@Ir-eH(m&z*Y&UTgwn4D6@LL#{L5p^>;1FhZv}b3 zSZs+g-vlbWP~mgn9r#;da-rn&z;`3BH@Q&qi}Ytg-YdI!gz))u;7{QHEXb)T@?0d$ zp8*M49E&kO3hKP54}B-NA6x{g-=@tKpNTQQ2h@4n9b>)>-ip6&@Lizp1N@5ZG3JXP zjkUNo#{6?K$Y)ojQMd; zT<(g|0lH&RZj>b|jR)dBzLnuL1mV{MCa>Pbhz?MDarTo2ZH9=VQ#D0aXuUpz7gt zjQLZb>fx0b^LxQ};cquM8+kd#{FC4n@VjEnF9%g$O`z&42a?w*>IQPfMKs;$#An_yWv{Hg5fg57Q-gPoZ)=Kd4>&!fGel! zncvKUVa`xO$;a>~95oy#3x+vEz=fMtySy-~wsqO8+PyXV7+`s(X1J!d_E61X z=>4@Lwa9DtaV*#EuA5amQF{^kbln*AD|M&pYHQEeO>i8p-&;Sc_E7y{ju-38GiKGE zub+TEJL4SmnHl38hiC3(ROjT(S2!M@d4l6JvxaBQs@*+n56AIYXE~0|I>YgWhS7#u zwTByya2#(q%kgx>7{~orj9fw3D^74cJNw*h{Lena@s-)9IPSl4up=F#k_U5C47Rn-!kFE^fIt;}d)7)`U0x zLW^H^ker^8!t}2d&p*lU9PvSY%oHD#U!6r*-ZvCKc}w1tGcfAL&yIj{6a2&Z5M|># zR0f>x7t$y8=oRp$a(c#OEBK#B8S2+%{NJC^Ka$~>XZ-*B43Di+5&xGn;nn~1^X~UD z;kz>YM8?0uhT*@P(T`;KzKs8$%JARH_>Vd_w69seX;ZOt@ZnB3JZJ-c9cwqPS+SbA zBU??L3>)fg0ke5J2X_or1RmTj0m{z4ZGBLkAMV-lP*3+g{oA*6^)nqMNN2ETsB@^7 zxjz!~4kCErki446j4w{%qjTE#6+zf({bbX1FFK|f5v5GK;sH&Sj(T!~o2oCWfk`+6 z{XLxz?&#@xaObwIak-+-%39pHP4$?SeriYGP>-wOtcFQB-KGetZD8kMZ#rCSgR1G- z=+w)eih6#mtAA%tg=Ap+fXixyP<2TtjbrJ}0aB#4|f5&F9=YIMCTOxNZ7z z>G|{tQI0?ECjNW4W~X!W;%SAE>}@m5wIxel}7CFVIDAz8CqL(G8kII6? zO&<5HoX@G}Ah~voXt`1D2@;)J$T+)`R3560OP}IlQ0|qaoHBd@XJRj@Hcork!j~}W z<;Jg#^S2Kp_ug1k5vA_?W^+ODo=DPsLuPXxWr$Q z&UE?6p3mvZos=u7r?=Z~l5k1hC!NRX5>5gbCgn=RxrE4IQtoWD*?eU6nP}cJJ6-+$ zf1QtPeN2~+Y`K$yW#!rW7&ebdIi`z0@t4FmoxdcWY&uD}Bwty5BCm%3tM!rXkF)vM zlgYqzf`MeiD85JWSVLB>hTKzFZPP z1`~ZYy=?hgGU2lM$f#2`6Y*Ou|8(Wb_N%!xr3xxr{^`!&bmh;c(_RrfOr~5}wdXVb zTD;=&L}40rQm#b3HX$-NUAeN?VYZ&%>UmB4CFx9eUK4-Gb(pCRpX(%^tUd{sc+Bb( zc{R+o=jrmhVb!Mg&Q0s?S-+y=zKv@l$F5qlv18rpnBK5{&Biq!iD`&+>p!@`Gxx38 z)R8co+E;$8W6h?N-LQU>MYnOyruHPdjcY!-;odc?(`b~|rVbLfpqtjMzo$r&o7&T; z+>^e`*~%50)~!mFt2P#sh&Qd-_|bK%))Y6aig;tRt!rrKj-D0$4{hg_SMMXKDB9Yy zgHHl`y9RqxZQtPF&Ym6X`4(_3@+fBS?RngBgFQR?y874ed}K?{j%Y{EqpOI3__jUN z-?Opj(VabmLu+;o@pVj}zJYtJXNL&+lV-b%G~tSTjhN6un4v9$7E!c)V2IFN{hN{! z;C*m_hfJm@9d9a|n(c|1dD@b=jDtzAl?qYqWeZggMp zncs)DZ|^ozJ|6B#IQw+c)!@2r2bTU&Z{Og31KnLiJ<&Ek;x#g^qoAO1S-N|65PD$8 z_U@fqd%9PsM&cr-yN0@=tvmYf+tDxJj0jv&;xiWU+OCT_uedbk#9a2W zO6F}OI7y%M6VruXWT{N2Px`&-^cv5Un@*qfbJOWN;^5PUFICa^SJCgPqTgLbKU_t> zzl#1q75$Ma`q3)-6IJx5s_4&D(VwfLzgR`D@nyN`&c9x;T~42?qEF_LP8Yw%!!H+q zGVgS{@ET{oT=)m7=zFW^hpOnyRrH$QdAa=UtD=9dieB$#FBks{RrJTJ=wGR#AFHB2 zTSc#N!OP`e^I$Hg*Zi5w=@(SdC-ae~YhSHZ!WXLOi&gZStLVF{=m)CkHP7jC^`m)F zm(%a9q93WEKU773w2J?Om#g1ouJ&}{7gY)0 zQbn(Mcb7|F^YbpJ*Sx;V=}T4g{Z;h4s_4t;e~WonPlAk273Cky4}o7sK45aCBY7`) z7`f&p%D?g_`2*l@BHwIsl}qxX@u~;$tHIyGUjdw}`Cu{Tmw`&J)#R#o^!eLCrPpL~ zoiE9Apwe4l^7$s$d`87P$M^D7ap7aGNwzeu}NdJ~}JYKLI{9H{ipnq2Ky@-v{) z8#B4uz2vVLuj@qo2~g=B2WfLfU0+~+6jXXIm|WMTos||$saI&v+*6E(rX7b z&#@R|el4itoDEpwhd@eNX;%|C9gopwc^Ma@{v2*ZfZT(|uO_X;A5%0(sVU^E<)(NqD7q!sNQI zOa2n5^hQlCdqDD|pwc^Ha@i4*A242ahxidt>Foy@cQ5XX(ak4Sdc!7{or6BV2UL2y zOXCo4V>V}3KJ^g2x5Zt^0i^wyeuwaE*h(pzrw zWhQSi{&wS=K&7_`n4@tpBz zL8Uhi@-D0>`yR}XflBYR$@N?y`75B(J8AM0CO-};y_ZZrYVxDT>$yeY3G3231k$w> z55$;%4pe$0Cf9Qk`usjn>FqW7u*shRmEInc?>709#_uwI2vqq7K$?27KgN77sPwu` zUNZRupwioH@(z=?gG#Sx^0g)}7{A>3WuVe)1*!UCON{y3L8aGZ@*EA z5mb8fOg_it^~M8=Kfjhv<=5!K3m|!(n*+ZJ&Ij)YC%8yI3Z4S*14qFF;8BpW&D{qc z1c$**-~jkM*b8n1*Mc7bn?UMd?mX~!zy|PoaJ(UkejOYG$@AP%@GIa^kZ;T8?gIzG zVQ>RD0Imny!4HGWz$0J_NZrnz2mUO`IyIUfGMDeSU4F;F55bRukAX+Qb>KeGX=%gP5^WZ2*TbVlo{v@~u{7+yRd_PzMl^=c2(grRA zX;X9OgLi`w_@BWE8Uj;Z=IT2Zo$r(2o#0`x6&wbag1f*0Z~$a(&D?fS>FN8B#h||P zXaO6*_kriQ=oJ4rcn5eKJOqw{&EN<~Tb^46-wXDFPlF}!JzxR+Bq;mjHc)m(6F9-e z_ik_u)cH6Cz6(4GJ_H^H-w6(bzYXpI7lFN?&Tk346)b=Y!5nxCsQa1Xi@+Q>RuiAE zQy}yI=N<)_cRzO@$h`fzWl-_$0=eeqZU$9e_1}DlG*|txc=f|f`Ev8!)t+^+F-L6f z7}p)w=-g58Mv!ymu7?p&*Fzcnb#NEh2y#uj>w#;>T@Tc?<{{0U2VMgfxQ>W=X3j7& z9BYW>qlP1fWy6wT!7yhS8R~jbyt-b5BZg(el3~FxXBZjkdT`+lM-0n`CBuSY&M-0@ zqn*0&h9ib$!;)daFlQJUj?o@nc*7CHvSG=vV3;$E49949F1+E0VcD=`STM{PMuuaw zCl}su#IS5wGAtP83?sua0=w{rBZg(el3~FxXBZid(LNw&jv9^_mJLgW1;d;n;KI$S zjhNp*XWp#Z`3tlL->lk}*7#e3wZ&Pr9h+y>mbz!v_7BXe-Ss4M{A>2`J;89zUVT+i zGs5ve%^{9QYL0Rot$B%Kyuj0`n$yr{YQ{O9t2xi{VojNE4))YOet~Z6X@~kAU=JwwIpdenzUBS|o%Hj#UgX?!9sEAyKV^E|ujGEy z_zC0nys7YIu6McTjMsfv?k?kpjn|?q@;{&cN$$JGA2#jpFK+yT@7o#m&_!vCp-f0=SB{AuIAZT`P!{9fZP82@pLKly&*A=CfB;@@Qa z%&X({uQh(I@xN-}Pulr>m+3EA_-|SM-evxO$@n{r|7qiw8~+~TS$D;`J1qVK)*k-W z^m8o#7p%M=H~%`%Du0jht1NtrwV#6){w53mP0R16%>OSKzuWk4T6o!Ua@#F@lZ9Vr z{{OZ4Z!mtp@p|4?`_TPQ?x!sLT^9bo7=O_GKV$sYjQ?#*|G0&}%JeHO{6~!chWXDK z|FZEPw)C|QnA~ZrpG_A2AC3R6`Tqms|H1edtvnZv-)8xVNJs8(OuyCQD;qysh6C;c z#$RLnk1T%+jQ@S(-);QU#xF7cZp*)3g2?>`i*L}4(k#W5)ly`M=ZnUo`%_LZY|$^*&JUC5vD0@#J3T zFaLTkDEDcL|3J(}J1u_MsdD%7m;e2aV@|#KKV$qM^N+3V+|P29|5L^f|4%FLUgLiZe~Mqv6LJg8 z|0@>$i1~lc_`k)E{2w>|Rm+c_6XfnO|GmclXJqpKjPZYB{^wbGzi;^;GyN}{f4ygu z`+((Vmz|Hlv-sBd4#IJRsX$O|yCeyDry`Jaf{=xLSV>a4i@r@e4%k&qG|6}8qk%rta zT6`lG|3c#roBp>gz9Hj(&iJ#&cbk9NF>xYt zf1LIi#(#T;@1wp#z37nt*-U)*Wzzfm4F5|R|5s(wv-Mi}Fz}K1b4)kSikV)T+!aXD zd0K%`GqK#XuRs=07z+gHjIKcFCvpWcn_gBS@w3G$q?_6`yDSj-32cEZp2Zdj;(2I+ zz)c?u_;e0gAXF$#K&ueNwKLfBXy=eVO4S^?v@R;dRvi_xphha>X{A(%lX}Sr)2hiR ztad7-X$4h?t&S>XnpD?WAqpy{LhkFPLK-v`K9sDeAR?|5#TD5%bcg0{^>^w!UOxpf zo)(BKt4ynUvd-#zvLdMT$;!0mC+m{xpGuRSgQ>K3A||WSvoTp`r)081rKbKSE8=E6 zSst9V$x46frcxzmrE)RnsZY+N<}YuX?`&!7Tv5Dd!$x;X-9pUk)_1JAXH6_{=h&Yr zi=yHTnJhdpJ|#B`HEk=woYFY8Rjbx)+SIvv&8Afw*R^-7+pyk=U7pxegs;yNk;~Wm z`-;Uhmn+wGbZ+X{$Sl-UwqaGrn#t02EA9+D`aZz*OunkZGi|kb&l;xGt|+ei_?p!n z>pr~3C1bMA^(#!^GV3{iNx1Xx>%rQC@kukVWY(;|@57|iu|`eCyi~M^AR5=d`SS*m ze3O`E8ct2@{2HrxU z_vtG+@EFLvzqsB5Pl>?$NY6vyD-?R4{@er}1DW?{rz`N~C4nD*{wn+h(!g(gQY$x;Z6DF1>k$3!_Xo(0&98qqWdW*G6uSpBFU@Uy7bx=;Dd@ z+QCm_oMyWB&ZW=ReCv&eYS@3EmO7}TF4*hfi5cugRP*fXbu*~b`h!1Y-vd@HJE%HV zx?`5!8&>AgnbDC8qFtHa;qo#zBQA4OU0UYHwa1X^gFNQg-)NcJPw0BqaG&qOFlOB< zeb=>x3%52DE*yB*{m+lTJ7OuZ^2=v9Co{nRhTp%dyD_dK*6IIfeROvT|7ADrB96O2 zysugLbq-VqikEZKD!&nX3aPFV`8au3z3{H+PObs=DZ0tU@B9)@=i)Qu`OPQRP(Q1w zr&ZL~%IDvBh&>xV8}C1$@DtPQoABb5whlY{Grf3Kd85js{EXv2U5h+k(>+;tJUrLe z)fX=O+n_z)d}PL>uhvE#gVvT_b>~EFIX%ycpTAy@rTaI`OY`wmkPpgNu^-b^VP6cw z)?6-Zjy9=1^+w}0T11z0E@-R7+elj1W@XMl=fvTn7`0CZ=cD!J8PTIpvCq{Nw1?ZG z=t3ud)wTSN(>4?&=@RQ-Q{lh5jQP(JIJulug`h|~QPhAYojIPms8%mpaA3jKa#3%hz zO~l?4))$QY=+d22^+WVe*G?rLW&eSR&KGE>HMG}s{|#Nc4YZ|*_5E*V|FD`m*6(Le zuq~XQE7NLJ~JL{r{Kk4f9Ch9cqlj1s!`x@S-UsI-Dzc4FW{7E<2G&6d11=pPF<_W8>zPjkb?@&*YHGvbZF5g7iA#_g7+6U)~g=N_<=@U+7V2WU@2qG|iw8!l{uW}d*YxP49TYc6j8V^>$x?fapA z`Ze31#`V+eMWS*f_p>qf=op`+eN?Xh9QmUUWX~GA*Qq_+OZnuVe?`CXR8!h-yvQCU zN&j^N?f!?+#P2XqtMM`9KYVw2Bk%hg??V2UwG&^9)4K7S*|f%LChmG&{%?!p&8GLN z_3vZ!m#@~{a4<}7FZYe)y3l>q$`hm!-#-hr6L)=;G+uviyg$Z$&>w}Ks(eaA@;JTg zE7DV1$u&7bzNZTR;_YeuJViQTe#eM=x;-}{u5tA-m)p|-+~X90MQ%qyNTQ1P6K z3sZb0#{5Z8@tlY;e;iainjfQh%AmpzfC}FWDj(f3=1ZW$KM-SnGpO)IP~kOCNBL+1 z+ra&dhtZEVm%zoK#_#U{HIG^R0`Ps{F3z9)jgy%4r$OnDgVJl=daZ|D1bJp_K3*5= zkATwe29@t2Q2EyQHoszTjQMU*`7XuizKc@6*TUZlE&~-#^BDLQZ;vtG1S*`yXF>OU zlfr2pTn=mi-wjUG#_MUn0;(LN;H}_ca3RP&Q5RM5xft^!pyJ&hqx*hH@%F;s4wk@0 z;99U1Yyp>njbO8WAnn+F5A$B|B$3?-9tEY>__o6D2brJUya#+ISO%H%(A)|tzImYh zpXR!e{}&7ofC{%4RJam|o!Yz{Yyq1<{>}5j_ef8Eh-zlRFlVTINMEWK+YUB95E~#mJADqIYYpOW3J?k1I(e^KVyXBp_zx76B*B*9G`jC&y_qg zcYH20FXxVNeC6s>S2LUQ>XRH_ns=NTt}o0R<+%HrJ=ZXsb6)ux#l3;{7|y5Edcm4s zl)TsY325=JbA8IaPJ0or?;7N8;4l6bY`xVnC z_k(|L;m1s`jqzM~=L#A^+={@So1;U(M(@XY^X{ zJdE$DjDNL*P_OwZ}#WFoJ>UexL77py_dyJJ=Iv-|*m(FyINk(dC&o0}QeV4{#wFa`5 zzlmou_~o_3u~@etw-fjglGt~}0A=bcF^P$Kv5VV^qcvUFsCDPIWaM#WvT#p27?}*- z`Ef@#+{seilLs&{ufvF8TRM{!WIDS-oz}`>S9!NAPCS_AvJx-n9g5@CX=J#!c>iwD zHK`>n6&_pt6vcUqmkx^Gyr;`z+b+hg<|_t@-4?~^IBvX~v0`L7>#dIrSSf7?*$E~; zWn|kyQs3?oBwXQq8>`{OXFof<>{?0KGInko=-SHK;MErT&Xk^&c=Y7My5$u?lO?|^ zt4jHEOEB3~0E*W+q(z6~mP>VZ4({CY$)2q=MlDm6RJB_*iMb~{O$G9)#)xgfDqASL zqIm{Gu<;OHvYNQhW4bOldzUX^Rdt_%_*^gM9A!i;sVE%-joU@wH_kszDDa-FZxlWx zPCl=bA0(4HNt&PHVU4A(WDLp;BxO9==n#F*+g(3=$=z*t<(!*x{cu|O|DN^3o4B9K z@ebO#gvT7$bCGO$=icf#kL*1;#iuA`$GbQtkMm^qjdr7}F02j(qeiSV-$i8HdZIG% z-DJ8Ds;wVBX7SvjOyTAy1&djiS0f!%8#ijO@Hq=qAYaPgS}M(wvXo*EJcC?z+^C&! zGWirpHnKe@MZMU0y+jy}8}a<7XF!(@HvOc$BdY3>_w6HdcxN;4r5yy=Tjp^%=icGI z=-#g(8|MG4bQyWn6P2$+?%jhK{*xL0;SB%j4F5!ie<;I0nc;ggd|!s|&+w0A_@^`c zwhUj+@Y^%|K!)F$;UCNJ|02Wx%MAaS4F9PNzbnH(mErw~FhV!Sz6blZVv6Kg1+VYH z$8+(WvAgdfR>Bh#8L6H<@7P@mAXJ&v+S$ew3 zw5@;W&h?NMFU&aWw==z>d$-`;8|e9+Zm75@#{4`m$8)^i6Y&1ReYdRdlGRtyKfCXj z>Bro@Uiuzc^Xqwbb>A;v56*{g1RFp)61QL1wct4M@}NBT6i6C#kAu8FoqH7I6B+ki z^HtzJc;2zk-2>7$y6>82gT3%{neO}M25>DrUF+OsAYJs_CXiQ0bLWE;b}oL@ZxgjE zA5Zp+C!U`&$n(@T77&dsK4gqXbPXc1M?AVncJRTwv)e6<%}HSLqTa5Zylm;xC6}|4cMVN% zCm+`d&c&x(*SGqp>D(xtjoi5TNqG7eXD3^;d&~RmoTD?6Q+&F_4$uSrj0BVIleRITZ*uLMJJw_l_!?<}vZ!SFR$;YIdzUclEUjB%BZbG4KG4 z#u7riR!Qp5`)s|-*ZbnP?-)ZSP^0Fyye%xn`=2CsaTN1=v9JGWY}Oavk<3SlG;cuh zzg^5_;*a^s@i$uhZx=^0@yGn+_>=i3Zx_p%_+x%@{H55R#^ztYzm|Cyb&HP zo13Qb_)f;y8*0lN8^8QCCWFSd8xLZSZ=_xsqmPb_)=u0FzK2W0?OF7PH=Ax&bYYaa z2)q+NICeGj)3!#>))4MHg#Rqar4z?-b>YIdnTMb`Ptqw~F0V%BiENDLiL54HtC$zE z@_F*<_E3^eev}va*F1pFF%N+IiJKenVzb82%Nti)8nlZ?fAE)Ic*hv?2$Fn$>6WAn znu9cT8X5;bulZ5&`Dx6~k@*4hIo!NC+ON`N3>~v5+WQ)1F5QrkMH6?8@-L95>>Rn* zqKUhuqkgZQLZ@(dm!=4}hq)c)zZKU-dQGPD_u@K8`E0$Ow|RSNJBm~3jxaw6 zyXT1b67x=S@HWrF)%ghXL|%)Bi1(IeqNnYBu{O@rD042(C%W0ug@S8uaoNW-r;>9Q zx6Qb2R8RDQjg8DPOXiwrPQ~TxC(Ub_w1-Hq{BwngTn$Sr-7z_SZc&X+&)h7PY2?zS zR#!Io_}s*K8DqYW@)5UN&95@K%THQ|;k+@|CavBg@}e+Fdni*Eg(>ngUA&X)AWd_s z`C4ixYJ)0^YkSOnDcN~Q=8lzg{*ZUnM@ROc+moCd&RfZ3y`10AFN~i3OS^_urV?Qa zH^kR1b$nqAze>mTG0tXf1Us9sdwfJy&Ttp&9|{WC#|pRX&0;LqgK*KrE|lQu>XVpL-aZDEzOzX@%@gi zlqzs$CRE(Zr8aqjlk_~3IX7K+-Q(q^)90LadVNzBeM=SnvMTz5>2opiL{RBU#!i?2 z-YWWmD*9bj^yMo0JyrC>RrLF+=toSSi*Zu@jGBJB`Z-=jf3k}HR2BVL75#V>{kbao zi7NVtPE#)Dj?tw0p>K9>y83CVqHn39Po7bxi@#7M{Mst|_A2_#RrDp(Pgg(XD&hAe z;X$4|Ce^Rz#mG%pe$Ahe(|MjM{0Kt1Uj8I8DgNaBz)|#5g&(yL&rB1(XwOaDtEY^A z)bu*fJpN2df0XCKH9Tr*okyO5nh%4TC$$&67u*G|10Mi+XV<(M)chQ+_qYOV0+)bu zz+q_+Xo{^RZ7Y4C&KA#f=;Y`7a#`~%>f-~%AWL$lU-Tnn~q;3{yh$;+VP*ZNk9zZ+}=xo^AqMQcHos})qa7J;k5F;2!u zK+P-M1df6opyqM?B)ALYosFBvB`lf0cEfSnh5Wx_sP!&51#VsC4}cn9;#VAsF|YMG zipW=k9|HBBZZjxPKLws5Z~;6CA}XGUF|Tzq^2m3C{F?hYDBpVjruaHQ=7cmCK^|6` zwGM~MvmE>=sCicRfwzOo?;`Mia1N+=F4C?P&v{VsoCOun8Bp<@1{KdMpyD|JDxQ}> z#d8Q$Jo`b#vlmo6&wz?&H>h}?1QpK^sCfE8#nTNc9>ThKmV=6?6;wR8gNkPnsCX8D zil-4&Jaa(BQx7VhGVO+<%`6!f40DE&;TQqrPuHJt#8BnG|PY7fmmJX@M5`Z}FZ_@4VeQQzW|e)uB!*L&{dJ<~Dy z5BRT$r;d{MM(?BF(R{1qJ~|t};*|-xeW3X9n2kQj`4OMomv1%wnCbro@k@W)_VKtQX8a#Ri!T^|uklUB^StBqEyn*1DE~R*7g>H9jQ_mlXP)st zW#Q)=za%*y#$RLpll%HVS^6bV?n&blyP?VIC$SS|o4#QFKVkW4GX763e%a9Ilh}?$lrv&kXJhi`Q4fD^%?)_S402wl@;r}F)-mhokSJ*Io)cHuyBU=ZU zJLtxZy0&iZ85m+{$@XLmRz2$4v9-7Fv7XMYJBPME_+X&exud^x@Ug9|;1dhoRJdfd z7dKaM#pD%PV)>@^i#yYGR8m=X5?easkS*U>1SRF;wK!5fT}&bH#8gAKoR#LC@ovJ( zYSYRpg_V=L0^ckB3`QS7llvZ9s(D?3za*{hp8g)DWll~c zq6KLtT^LzSWj3?giu?siW$dHzbrL6%*5ts>!QN>mu5$X4QR;YRYkUTog!*Ys7!Bgs zK43FE<1@GNLu*!bm}J$)kF|GfNYsytD*^Veyr41&WYwFfb3j{$|6iByj zA9%cT+xBf+lUc9vH11H6%<|=mV;*em)qRT?3fxubrZ8z@xA&(LJ+x~mnADoIPUlM} z+ATlif?KnkLKB?mDYWT{u2kBIW|6Hp5#yaFm#UqPN4omCTi9gabV)86md@o8e z9$Z$GZc-a{jhDur>VnKq88*#+R;>)DJv!Y)5bG4#S-)=ewAo2@Q)egDPnjL3o}3+t zZ4H`uAsM$C4EJ>AF)XzSyl#5J;=7kEZEL-I@tuovxjS1p@wwcT z^L=}Vh6Ze97b3^~*&E;g5zo@jbkG5_D_%1;2Z6hZe_~@hLFUkFM#s2e!ehStv*t7C z{e+z2!^Da7-sLI@>Z7tCanJB z;5}-xd=*SMk9_fqj&iWLDxzG1PR~lQkeO#Q7^24A!C%i*#|furE$QV?@1yV)>3Jnb zTH$;KL=->viy5kUX>Z$2H;$?CyzlUxI}y4uF$(3z{z8_3dh*_lzE1W-3w5h5>w&hV8Zt>yi0TMS(5AFI_YV234fJ%3YxTU zrLX7Qq@0kB2b_DFqhyJD4@AiG4z+?mmf^ph;jhc^ywj@)|NRXA`3!IU^kC1nZqA}T z8_1kn+tH!LTR+mds$=sMj|}=c$qZh2P<5qAFolAk3!uy8ePyX~ZQ-1G)__8j0-_W{0 zTDL}hZjL_qG5(s@KqPK%Q9^6p16ga7Tz+5w(WS2@{jugSB(&}o@tPplbDz-K9_c(E z!Zu!7Rr{@p&Kb;Kn8`ebSIy-r?!XmdK~V}~19b4ULJpIxACIG*Fd zT3V&d9FH;PUPxckJPqb;IGXt#W#|LkUx@42cW#ZI{qA*|vvs4Nzf@*Dt?$e#94oD4 zEi&{9H^y9zQRZ&ESX=gCbidTvT29YB(}iK)Q4)sp)Vi0sFQwWV)-;Rf`b4aq#C^ck z7vYBa`*o(eX4yTqp1C@~dMHU9>b`m4vky$r1cq;;{Q7^Orr~=ln0F>WZ$7b>y1R!u z{2=QCtzoWOt(&W+{AJU6adw*4i+t1bx0+*yzwjRH=axl<3%Br>euUw;GWF8MUwoN+ zeYmDmneun>Ph|LMtQIHjt0GR9hQ%{w8q{YO|LN0+?FFqr6Z&~eb6?c+C9A;bV_UxV z)Z3}Vl_9vUGrdI=NiMgCeva#5lD@&N{to=$Ws?2@(|1p!A2t1=Y4l_0=V33L1hGKf zezUSW_QBKMnl;WL)VL)lx>?@^h;KDqWb%6O7Ubv2?I-f^Of` zYw&j%W+CIfhhqH12#8JIybt8w@4ov`d}VmWr*Q(sw+rM~9EveN04hF>v&ar=2W1y& zypxNjd4cf_-~#wF)Ccyov%Bag-F}|egU6A}emV+jy^KSk@^>J{Pdo|AZhHXyaj+fC zfd%jeuodK+Ikyf4^9P;%Mv^m2$b|*NoFU-k^>x~D?6CF|t1WB%jGe*i>kic&c6)%0 z*PTVCeZQ7c_|Se+er2yE_oa6lf3@9LZk7K)|KsA(d-eu2?BA1iBCB7^MHwU@+ z#A&ju_@v$Gdk*nQJG~p4pLfiUt>E?jMX2A0&yW`#@*m3ZuV?rb8D7^>82-;PdY!*e z|H~Qww^80uzb>PHBE$b(hToHk|6>{clNtWEGW=g>_^)T;Kak=3GQ1`U^GjX)4lViI zoR?5$qUsZ|q?5{imK^Fj{el7REnCOO+QSVP>_cn!9$s%P>~*U9_K&YmKHA>7+GuA? zn|B%4li#*ts;1wG^P&IFEqqFcy*$K+3EuQpZk$cKW5@O#q4z;PKJ4mWzw?nTJ;+_` z@dD;M`Q$!KyyAm=z9QV&vm^d4-+8L|NIx0Oh~ESAhRqR^bMC~QT2Fx0zqa;1+^Ns; zNHu)-;HEc*Z{>sgXfzHlTcwGc>|stq_`IQKfBp5$QQ%LNylpqm^8kUI{d@CG z(LZrN@A!MxN4@Qx$KUZhQ`lk~H+r_|@!pAubt1Li-^~rtKXISzXmHN}(X$PYm%J{C zD_-9;i2F8+`yVeK_vO~})!LAH7SemDR=$IwNethD-M)oyQb^Z*`|-UiqmEH~{$TFF zvy|`o#9v~+>l=~Zm>qQ-=Q*O6=c!Qtr68`)T@iJ>h@T|fbpGybAWhZ@P4aLh>yqBc za}DQjcs}2uNSCY$sda{Hu;CSFZB3l-g?x)5Uh4>dmuH!JlaH_l@ef&NHHrHY>#Y99 zo0mHNknbzPyeQ0Wdr!yp)%pta-=8MUIL`Qar)=M3sO;Y)f6PPQC|UBYh~7&k<(y9b zRq~R=qjr-cj<44?Jp4`aM0=(A>3f#R>wad}7@ltZ&v5Nen*H!!)JD&K=cm*2r~3Wc z?C6>w2C^j2ukl>>#hI&_^B=$4oXXErE8}m1cxUO_%ane2-ccNv^CNvyZ{c|eza5(B zWNl@>Q6kTcm%dT+t&7`hSR1yM=fOIj3+s74WR2=4X0rBo4bRr;+SGUPeOeM{(w;s? z`x;5wv|V#I&kwKFQFpC|*JA_M>U3@Y%9&BeW3wvTeUjFDXVB(JE2&5KJym^rO=<1s z7x9yPzmem4{~~RH9>}%-%UyGydq>oflr4<^n>R%rd#;SvH6EjFuC0&meCkTOMmSgB z-CEwbYTn2W<&kFyeT&2Sv*&%z`1(>0unA6oyHl+m{n^7LxZPDZX| ztO36z`cwJQ+Q!1M&ggm7)uizBzmmUd>m9pxMt@sl=UriWf#2FdU8|3tDvm3;E^2~v zQJxi#cWAxjg;o!W_nWl$TIwr|Lt`XKKRZf48|S4m+@Jj5QpdYFA5Y(yUX${tut|SQ zdu@ICR@PkpM%-`s`l0U1?@rIZ?g_5XMV6emiavK5xoZm+kJ_u+!}qMeRl6OlTX68F zXuHzA36g$=quwiA*1j<_$or8k5jwMBLQw@>E&dA6FxC8L^OM+}Nj%l^M;}<>%-r)b z%*QDm?`)jQ8MYV}4E0_@uH=sCVZg|;;c%*Q)I8&JhAoB(6pUz31cupggFClwWzCQW zclJk&`m+qnBRv{`*~ywPQQx+qo*mn|`rV2I(a?^^`&m6^ht@8U54SeS&TU;ghkCc~ zV9rN(^w9S0S|r7-ypk+EqGd-I)nMrvJn)>jiqY8}+gTN+C)&CqV7eZBu&=+*jpeO! zgD0$evU8wk$6!x40hL9k+wkB9gpNe$m$X@{HBff+JhJ_vRuTo`Eo%vDixdD5-{Xx zFv(J!*^M?2FxSBnF61cJlq>|3%n;1!sr9zmabBk?TNqI{OVX_CPD<9kV|(|`t*jQa zVki+M=?z+Ct>P5q(#$0_;#b7!U`@F+tQT)|D`SMki9>dnkuN@ru)|4yMDv{>u-zR`JO@LHdzB{-D-*;;o7dj-rS1*hiJn?y^knagzMbv z26vuw@=z(hmz9G8=_dC^BNxBYz-NVPjk#?1=msvNYMMr`_m*4eviE=?@U-L%bK&eAXg34BiXw1~-7aj4y%m*ACLxG%p7~ z4BigjLeQod^Nrvd3^<9+WZ2=YU?I7=ki~2qa%r}_)95({0rl{|u!2By94W*fT zxhwx+!~LMj{S0_5{`bU~-wpCeT`b3#*L?IJgSYjm^F#18@B=aCOQ5SiQ2AO5VzU)j z$CzIZD&I|}&w#RW0u=Y#sLW`Z-g8axN`d{{giWBvtjE%HO4zJq!aTn!F^+|-Nu z?h4FzgG&Da5F4_ny@|kl5nPFUIk*nI9lQrz0AegRW0$-5)Pi_5QN(5!=FftP?+nNT zToHRlnAiLmnr87tjQJy=>f>;X`9q-2*M4v{xDVuAcX4lw`4YGa`D#%0UWhTj9Q+9K z7H}2V1TxOx*4+m43*c2xb4*_kaxX0EB!l@0G9~>uxC$Htxvq+*W6Zw-s=P0mUi0!9 zzbGD!F|Y5(6z%}Xs~fjYH<;fK&p1qRUyON;$LM@Ffx501fV!^cfx50VJ|kY^GV-VE zTi4YIP}j{1;FU@@#=PD$%b&(!q%VWB!G2Kjlt65i;sY_}i=g~#yk!m80%F?~Z;vtG z1bz^Cqv;z!F4T+VTjOQv`x#{4O8CE<>Pigy&GX%=6IF<%C0BE=_T%y)xC zSuDkv?=YUSN}ex(oSNeD81sujs-~EWF;AXdc;a;aPZH?8oRZ^)qlT)dTah0&95GaV zNj_}2$FK~(5BV;`0mG8vX2W*FwT1=5Wri(=O<)`G%?Fo(4dC721o^%TR6X7as{ZKf z-TG!r!K3g?zysi7a39zL?g8%rcY)1dFL*n+8N3Z#3pRnvz;}btdY|dmH+v`808d@c z9RbP8%(7w0uwa-o1f0KFwe=0NYIBQb)h;j0s%`I>Ra@$wRr_R_fv^{9Mme6T8RxjW zc26zKqt_nhc)E6s$8t@+;inKSI(*} zU%8v(#O#Ym&dom0@$8l7kQ|tEXwIzK@i}KX9=huARcNm|&+)+ALvy2lK|>11>(uXQ z{O#wtc;(9cH9oi54FCTEEq>Ve`>0Iu$)vs!=?VWuE=IXuw)nnke98DfHU2i^&lvwd z2&?dK7{8i0l)vP@{(GixywXJ<{k8GGX8FC|;(ONk|77}KH~ul>f7f`eBd+wmWqhOY ze`oyntvnw!{ufODZcG1T#xFNs{jcKNV*D>z_+jJ!wdLJ}RxXAsG8qXe9;c*Z17oXU*^Pt7kr#h$p zS^NXWzsq=Iqkn=x`pkpFrn{NjvWc0lM~>pX`1XJA79 zQij)JGNB$Dtb&&=)c<*g=blob*LRqq|IHcxi41Q;yl#znR#@Gp*^IG_FH3lavu9wI zg-2(e{j#WuG~UojPiftW$c>jKQ~NEj$!xx7EaVfnPxY~e>m5T~Tl#zMn955$*qr@h z#Nw=2p*+l_(QYI+8E0mk*M_cxUA&!e<+=?Fhz});)4MU;c>Pv=D`NxP$+NizqK9^} zY`fR+^_(pm>4Z}iYLb^b;^67`Hg2tXR{>KbbjJ=Q+Bvi(`SdB1#XGiU^%YsV!xpJ@ z;ay>MJ|CoDY5KP0ytJROOgScixlqge$T0p-Pv{L2$$9+Lze` zb~XY@JbNNpG;^9=mpj|nd^paS=J>kt{3L{SVy@PV?)d-VF3oRyZ{~mIj?DkeeVAMQ z{>pD__vL@)p384-r{%XhU*fL2?z-IfIDuOwUBlz18*iwZE5~;-kxs3fMCbN-%l81pNrFETzMBc6RXLS4``e#Pic8s<(V5 zJ`{K8s?BfE{$+AwR?ZUfscZv0bn}y|h>~Za%g%2YC(wWenh$QC=bl5|e2xMSqA~;9 z`O77BsdRY9q36A~@8bPW8>0jnr_|g8p4X3bvDVxk_$JJ+lIQ|+8KAd_W}U~i&|96K znrC~VbBwVlEKeB@8<>M|b4|R?sN~tX+u8N+a(wGksx4gj;=e5XTMDw5XOGtNHeOb; zbqYsVe^9z!#?rX4Ul6TvBJs7iXpAWy&mSdU8jA|&Zz~UyDa>@=_Pp`X?=ePN!&qtM z8lM-~pY#p4KWRN{_SG@ZyOuqZ<9X*Q=N{XixO{CqZ(C_-9tP*^h~^-V*&d~%%sn_p z-nzC(7Vl-6Lsp{P3NvPVC6{WcbLwLk<+_ozL+@wa!ll{KqY-1x+N<;_=2HI-;S`33 zaDi5KL}QAY@1D%1C{cG`pBXJ4#jlH-IvgeKq<#r=Cyi6<#vG(FW#^Y;yNlWIepD+I6-1wZ0F<<thup=D?h8*xM|lU@xQV@zk6a(`JNoC8XUNuB z#9u|ZlezR`lw0+blv~%wRO=v?7iv%OIPEfR|EtmFyEUIg-?u3b^fB&ye|90`sekC! z4dq+7#)E%rZF-EygxoZ7PnV|Vnq=F$u1l_S|NR1e(uEq%gTA3C&%WQ!7gC-|v^%x) z@3?Oh;=NS$jh=M0uU6qG`PMfUuj1!vn?IzyYD|{*k;lGGyW}05o3|iL=1w%CPp;Q- z#<6(>toWYbRmSY&Z|PPuzoBy7Tcuk$pI>bv*+-rAF{x|$DUpxQ_&s^kZ}KiT&+0t= zfZF5*+M)JM*PN?lJpU5cBInN4NpgLEhq8a;+WVh>_11U{{BOC&XIdR`jkd<$blkvq zj~Y9_o_&|&KI}Z<=`Y!N)wq6qUgNecJ}Jla=T&QkPJLc4)zy4!(!ST3_Sz5?j`h-K zYM#a|%x_Se<`zAX1YMc4+DI=ESD zF5_>ix}be@Ur?uk={qu=gOxpc2zIOqQ7 zp_P`qf4`;gP-HRMcPPOs0r3-IynAsh)WqpIrcId{*DZ zq48MdYmdoo9QG4W!Yf}IkG%;jg52}nI+Xfe zN#m|crx8>-8gErP^)cors8^+<^(mFk5%8V(+Xr$Unl+BP2rPl`0k!_uyTOY@!nt(g zo+{rdc;!!XniZeMJr&<`pz^m5RQ~jSR{1M|%AdwNmA~bn^0y4+S8ROW%w}N{?-XS(W1M)oO#v!HGIHYhh z$at4q=aTU+w_fEE@D(ls`tjybknybMBjD}eb6^X&4^+ClLB_@0dXeu3ISp=oP^Hgr z=7?e0uw+;;%o#?8V}ysCIchj!ST-yf77TNSfD6X}R{dB#yZqLl(sAY~hO|!1JUO$z zZePRxh7pFRjx-!?;LETp4qtJEVXED8_ROiTJAdWGl^3t9uiJgqo~xd@s=n^{RVS`G z$q>}ptIoj324T>gmh_t0<1 zeU88MKV$qng@@l^{A}Zs@b%(pYsqu@v(S29p7dAh@5Cql8`qHIb&<&Fp+fqke`G$o z4o}7Gx~RA!hb*G|7S=)4F6vM~UFJ{7P{4&g+=#c+NCj4ue_`jN|uV2Z; z_l}JJhK&DDXZ-KU_}9FL|ChbD0k7&h?|k=>1Uh^e3y?uzVh$g+v5joNvJsAVEkGm? zPHYTHf)lHf4A{cRAV7AoP2yu)X_c6^a-&WdSDlE4XGTzZhqUq(raX-ttGSwnPH{?8 z+Hfa_kEBXXr=%vfu;u9f{%fs$&OTcb*wfxTy?wf$bM}9~>*HOYd+oK>yVkq-WiH8g z!}Q{a{g_C6FGs@L5wZWn2(5Fd!~CQ29-YgTV;{+{Ns;(fMED<$#8>jnFu&iA`2VK} zf4j47&FU2o8O0h1FWAY)`b;OHSi54~8ua*S2Omn7jJet2Hq4pEZik%Ib7=pYn3(=* zXm4Mp4{JC0MLM?8U5ydzta^`}2pRcOcH`nYy2-1yZnk2ljPwT|=43zPc-zjM4K=&8 z`4NRz;ggo_7Qd)|k#%d9Jyf+~oz*##*<5K@hcrfIH5;y7@#zOvuc%yg|HmG%evHWI z{!b;7Au{I#;;>&Q%rZvCV@R@;-L>iVTDsHy!ntX5cuAI%kulk`ZntslA^KFVde-y0 zH9BwAoc?S#EiSKGQB@Px)R)~hYBqpIBWVmx?hGBy3}3<~%5K18w^at^vU8+uq=vuS zoEka5+3x*x=Qo?`ym{-RXmtriN!2h%Qe`D&S;-X{?eqqQH)YyQq9(m&r>Z@k*>3oJ zLI+GzpQN=fyo=PhcDdKEY3pN6XweIa$gEmD_vSph3Av?CSU zpF?kaNO4~1rLd+Z8aWj{u~B0e-d1aMP2RrHl|#TI6hQXuW_?6Hto*2a;T83{J@x3* z|1$EU)HRA-Rv%A5GtAR?Sz{1$eNg$)aS2Yi0{Kxr{n4W`_>l6WfX@l}liXk7;Z5V74}D#Ep47@oE;E;=`CrYA#u8b%2Yu77e#~2bzTz+AvE9E}9MimK z>U-M%bJpzjwDX`XdAom8`;@!`74Oo2sM4IH+(}mPIP+B}z4+pen~)p1IbHGW=By$T z)5gD*e?}Hj$9%oa)6B_BE)klOH~cumXzi!q*%d1>JmpsN+sFo(yR-YT@MCy%m?5P( z_h`~e{3t#@GIP8o2WR2tEV2ddg*xx%=NTVvzXthDy0GGMSwY3(|AzcT`Jyl~c5eP( z^q=EaX^}i4=E9tcJZ@&8x1ITrswJ4oF4!YB9XmUhJl*i@9_8J&q|lo+M^p6S7yHD-DwAoOSu=4Gb=>MGg_j z)ly#3-NCb0FpnYp&@{is8CNn-OKyYCp`ea1<|>xoF#lSn4V0(%6~m|9c*AH^SewD!mdva@}YvT=!p>Z|-5#LtHOqQyhys@gA$ zjw{}~Ku$&;7?}j)6HQID?W69^M&|n~H+<%R*;B2$8>*+jkIXPCJ53O#WT?#FPm&C* z4c$yMSEk-bSJt-5G^k zrU02tJ~A3Bp9$VGy~`eR{lU9@7T)Ka%r)WmIVyiDc;8jezUI}M`VxzEm^yK{k=Iby zs3Vl;B)Ls-=Ai1u^W=|c@s7DY>L#3!x$G4ez2Cpa`&|~2U#5`x(hd*%9-g5t@;w;V zu5MJej?@t@aorKrS(R1xy;DApEHet+1@)J>=9Et?Zo^4A`FuLx({QqNnPf-AZy)c9 z(s!PEnJasotI&8Kr7`9i&<&59GRtn4jCTmHOj%gLvo_Hj<>aPEea7fTk; z9A?*;0`!hi*Kdtg9Ict?ZGR26V<_P{3{RU zj*#E`7H0E%7Vp7GZDK6sE{40HO!#&UEB}>jD2PYG#i7rA8>hym@-AClr#k!dXXe{7 z)wDBePu`?G(R=)jyu{+=`6Y|%dA|!tn{C&J4^L&qKc|fA7G=|>@8e%mmU{04xl;Jt zKE2~=XVu2Va1-d5Q{7H;hUjp9*mM5INc;R%KD4npa_4!-@n%t$$P3E!Jo7=?PULS( zFbnFd(mxI}$%}b^T503VKJhm6F$8XyXWa7l<~yNpxb0VHpSbBu9I3ec?LW!xJMN&~ zNS-Tsp#8p1&By}nx5wr?Yo*KP-JF&G&7V9}{&(g*tNVfW`g_C4-_Fp^+VA1eJ^I1^ z{Nen~%E`&MJ z?VyabcY6!{6xBE8#)}mXg|BeB-CCExt^Bi=zp8VRAK9d&HM-0BbXRnuB zcXFl-X}8Muv999n{3*AlvCH%oX#Z7*M(PXI-I9Gb)Q_Yu9kjgoH>eu6Sv#X6*w=xMO}5tR<5DV!E2%gXjmSD9tgp}e_-Jo(2X z^eL9!mW|tMwAp{-+Y(z%CL4EJ(oTn22WXZGIni+yk1>C+k*bruQVen!@-ds3d&yi^ zKYt#F*za;C9ZX6N=f4EGpDu-llOg^kPt?_gCExEM_QAe~k>to72;p?i=R-SO{CcT` z708i}fXFgR4}-)rdB~#Q3F0rg-=g0EN)Dy{D}1+0cY~74tpt}MMyRw{T@FgFIv-?= zP&xw?f9=x||00Y2cu@S~7X1QH{58;I=vjJ^kE8tcf%2z)L7<-oHy`bWC z7`zqi03}Ck0*xFF$gfUL(c~J7vG&l=91}dFLELOLJ z%D=rJgMrcpXJ7B^%N)JH(fxd&lrI-R<=Y8R;T!?yf%`$lrwycUoNTq|r<}QzLMi+; z7ORUuhUKLvsT|6u;~-NC$zF?o52$?Vw&+VL;@hJhtr`V!j z1d7jii+&swpML76+)G|A_mY=`ejh0J=Pmk-e~o*|(G{NdCC9)rhee>mmmHiajihJM z$iwdwe-dfxft`a$p10_yK~oPb`jWdTUME22BT75L+rV~E{98crNr652VOT^?kStOoKOqJ)q**1uEP_pz^=dqQ4(hxE&V# zc2MD}vklAAT971_QkI79wm7=OVaj2x!wQE9hk*Pct(P9x!n}^ye(tC8PqRt&ME*(c zse)!C`u+I>JRcu*f-R{%qk6fY8hsjHCq|#--V^Ud!hbB@%{@K#JX=gpjXlkMU~Gzw zrkBR{^PC#r%tq7mEqruVef>(ygd_Ix%Xas{93liUfYAr|3uNr zqEkhMd94%MCKlu$p42tz$fSb&zDXA*T?CIzJ~p{~GCZ#9yAH0`rMb6GX`8~<*C~6Z z6y*0z>78;M>d@4~Q`uHKwR7qm3L(61;0`iZ^n$o@!jz4nQ<&>g{n0vsV7|5iGtuwR zSm=64_V^FJ@Ao?QYiYc6{S$U_ztPd{6t3I{-{TXau@CmuF2j%Lk2v?iI)+;uJzep~ z{$5A(Z8Y>4M>Bpg^d}wtO~*gjw^{7$gY=9NOmp z{cnuW|2^XWcO$g+wTAuwQ^a2DEW-BEHxZ_za{c=w_IVNie;wgJJ3{|bB>smZ>HX^n zzrT&xAC35LkI;J}^reV@^yufL@5>SUi;?u{yM>p`rS>;WkBQhv_nFR*xc{w4`aTk& zzZ~KB2a)`X$iLhmBr3p-j8|&H1D256uyI%rI|5fLIChp9MZ1B9;jpq`>n5|s6gl++ zYgc4X2+2z8-5x_u+;V$Pvo0lAZQAi9dai6xc4HCMsd_}$68aL}ImmjWxW-Orbfco6#`k?CojyMnE zCzeMTlzmJbn9LRgm*ndYB&CM zJ!8SsJVW?$!DNiCwyvN;nZs4#KEk^gyeWR`8Qha(T{$clVZgkKGh~J)az0!q{u-UV z+?9|>#*yBxiG%@Tb*tC#*QGMmpDwEAYz$xELtWbA^Y&+A%z@@HZ=HYOee{QF-=*f7 zC9gpiaJiFtda?<50d{k;dXO`7#K;AIr=kGFq{k+ppO{TR`hQr3Wk9qL~^VQ6M zZ%-os;qAzg(*%2f}uUhqqv+b)=yh|po(0aEdKlMB)@+!t!n2bB>G3O5&nN$!TBa<4iGASC& zVvl%TNrt|S2H+QQ?f3*H;WUhHuT_f42o&5>i3>W@k$5DNT;leka73_A6V6XWkT_c6R+u6shvmxzkWa;`;x1}J|e7X37Y=BwMl z+rSifE4T}!E0=7t=xaWnE^D&EqF)bc9)2S@8%%(6!8kYvRJqGs^+R+gC^=jksCa2! zN%3m2=%+xuX3kMdK+nTnF-X=VwQmaa`34$3mnbjsxd4vFzR#kc2F2&JMZXsmpJSl- z9I@yh0_n?|{dVG`4?F$PJG`p!mwCjIgWX=u9Y zMsFrv_z8{B^r0uL0r6_|UY3I5!*8^1LirPRJM3_na#-uI!ePQ8VEh&4m6aFf&6{7C z_i!!q`LR}{38`2!_am`m-1}k|xSx)txwq!Ep%Akre-Dy{0egB}K|ivF3k4Us?;qWX zWMS{DNP~l((_cJDofha1T`bs^I=_CdS%XU=`l&gHxKr7_o~`C<8& zyi}LwzeP`RUb6%_^)#I7oEND>?M!Y^%Y02 zclq)AnBgUJZHv%fkI))RhTZ=FB22G{*#9I#>%9%Te>&n{mSOvEMQGls9Q(&3_7fxY zOA+_qiO_!)p%W4RzaOD_=X1jEB0q7GxxNvhqxV%5z?1 zYaZNB=tITT=iCIentlCg*3I=n=R;90WG?ZeiSdrmnfq1o9y%X-#reyC&k`4}0XoCs zOT5F^)#fkPIRC+XZ#feHO4~&`vz3-n4omucSDe2rqEnWDfjnvcasi$2Hn8y?p6P(` z%gkR&Hm|?J`7D2&eCX>(%#WOBPU{@=X=lyckmi`O=On?f_=C6^e9?R3{b!k@Th964 zj@KaT?(v_)kK+2C)?cGnihTlB|CZ*H@Neeg{;l%)AbI#f-27|HpAQn}58~$E)Afsa zFFr_Fd=NMP+R7_BPcQiZdp*8K`(yMGGOuCgvbCovSZ}ZWTGz3k;4S9d>zUt{8}0Ei zeptWG+yisnb}l-YpZ`UL6VBhiLyun{`^2K<^5bFJ*B`t1kJP6Ab9qJM5N+R~|9|4@3&CAP1XUH>s_nq4=MVC_eA{fBrnWzvdVjXkBs2bVdw zX~Gu$NI;u4B13fXy0s&@=HWPb=q+J??9}1*w!cN51ZSaJ9VliBqbhx|% z7lYDmb%98iN-^^gcD;+zEpuz1)fXJz*Dbqfp1d|an*8)$#-i4!t$2m#c`-)E^1tICyO%k@icFI$wzHM_#H73RF}2;;(fRx<;};d=>uvSFx{fIWiJ|t@pT6_^eMf*GTC* zaTR;5OVKq_`1fALzSh}~6n^Jb>@Qx0zt-MHiToc&1Y57rfoWUu|^x<(3LdfcyM zzsA{*#DDKq?9PdodO(pMk>Ki5e1^PK%k>#V>+_TG3Ed+9UK zRnLF8`jr@KtVayL@+$WA&VHo$NneAmk?i}O{Ydevl>m-wr2J{VioNt)=o%^fi&wEP zA8-ASRQ}CZu|MJLM~eTYtJs&YC{Nc&@vps#z4mA58YzE^SZtwBKV&8EU`@XB# zFJRG|t|Gou{D#!;iXv;@1MsR2u`ggToi5oASHF9&V!wyQdAdgOzlKGaSF#_#o{mUq z8YFVb(-!?x;2!jOoU~Yd9Hb0N4>{}r8=zak&0q`oIJg_+m)vF1Zvu&8veBYn4l2AE zpu#J$=%ZxPgjZy-Iu0tlK0FIgg9`6BsPK9~h1Uh*GP~p`&tO6BYC8+T31r^?WP~pw9=+6ZeUc#c^NB!D>yOZD};BgSEWUocP2c(K7 zyDj?1z&hM@fS&`~z#G97$eMuCdXP0|r5nL&Z~^!fH~^Dh1}`{FgW`MIqJI)pJi0-} z;|Pe?WS2$%Fvu@?$fDl~Djx0NlVA(@Rj?W4l}n~9`VHWA%pV463Xs`_cWH~&-Js%k z1mu_OvgjWMTX1*CVs#U!_%&GjWW7ayqqT3SwOBn56u)ASPgb(XqCXz|Rrtj%R;RHP zKk0*zyIzZa4=8ut7OVGzPvEY@+9%sB`g_5rao1+CIt41d(g(#axyz#81j=2b#p+5> zpan2@T;;|T>&co_ged8xkbOs+BYn)SX}_t;I40sjsIzI6Z8pC^-brJ zEB+{;(mSR6&^b+tR~Psjgm>6tbqlEQnyh`Y(W2jA?HlSX zRwqH_$4YCTthDHB9r739r*oaa>Up5@W3IJNCM^0htbK#@TgjdDS1EqdQ$^I1X^Z}8 z@YmsY%Az^%N%3oU?)Ex&=!i7#TAjNlQ1NTD_Q?i|em(dF_-(XUy#`eLlGZ-C(xP8! z?HejARwqEkuLLB@$zqFs5%_EH8*j1tocQ`YSy#vhSymWG_8cvQL95Pp#)xeD;F`o$RpaOTW!m2xqUwYVCVberex}+^x6h zS6TapH5RM24@UX5z}hG0TlD9F&%$r6#cJ(~QGRJ(jQD9^4CohF`vz4i+*habZTyad zBqiBv(eD9YQa)I$-U}*z&DK7dvgm95yxeJBJy`uPsQ9h7_U7Cw_?mO8cH>TZvB2tb zQ1L5s?zGQF?&e$j2JN?zyEv%)yTk~ZC?_vk^e=!f!>`X`bvLN^9kTYxPK*A2Yv0ge zvAP*l{FuWx{G=xfzP|S9q~OO|8DVuTsQ5{5mcm_c(XX=h4Qnh`F8~!k>Cqyp$r6ix zG1v;fB8$~p@2U8m1m*68MWY`}?s}oY>O-L7*Xi8tckY;%_nyO@^vZzMEuiApZ0(aN zi~eqF->}PK^?Fe8s|1NkvcjT&FZi4A)7n?CTH^%8Z@{ze`YrmGK)JhUvAP!&zb+6j z$-@@SJ|Ma4bna51_%&GjWW7ayBPe&Z7ON{krMChUzk4nE<>2$UE3;Ug0F~Yupxl*M z^ov2cE3#N!OQVGS=n97khia^3p5|p2c025Fm~vR_u)<-&q31BoOJw{z>~NTJSnIID zVZx#3Fij;l{vCEWOgXG|Sm7|?&~uokG8+F5I~=AQ);g?km~iMhOjG%ce}^3oQx0n# zRya&J^c<$CM8?0v4u>g+wGJyBCLDSW(|9)i9d zVXeaohY5#(@mH8vG9#W>R9u*MZ$;ef!K!bF=hbd3%sU+Gip8CFxBl1w&lh8t*nQQV z*OM2|JCb*dJy@yy=KOeGKfAElca`7Cb9;V=(*PIG>&-vT^WK8?f_PqQK^uFsP8FQy z`9#41flw@>Pr6whm$w09EmnRJ}z?nym7w@z-G z9M5Z+ya)YtM~aUX!?U=H@;hCe=J{mtDV|%d+jAZHa9uNc?M_^GlIPy*j`Q3Y zr(8m}UHjCIsqmk=7Y%p4Q;+l9J++7D){?do_?PS{Vb@*B1)kF-=Xvg$c4S&S@6fcv z(=eZQf#>wJ^E~gF-a0*=*F3#tI`Nr)jOWACyLe7r-+Vn~G<|^Q!!x?5Wt}q)%^(gl z26(W7m!N zy73VAy*IVrL}}jCb`!C>X@L91n=WxbeRKL|a`NU=H=|>baYcAv;2+U$NRM8y-(aHb zq35aL<|EqIf=IC}umpeM< z!VmIG<1_684E9&V;3vI+75ZRt{T9!ngZX6j=S2te*KN*yC46+fMOLV(9mpr%cKiZ)fyPgAAIQ(%cJU45 zS-;D7R`zpkaNd6*?S}ug)}Ypfm&Tv2yPW?t{&cC|EB6VPUiITd*ShpRjvLXcce;Mb z#V?o-{+x?nAb(ov(py42be-cb|Gh3hwBJ56G$@w) ze*U_C=+bk-<ZglZ4art$Zi+{PxuRC3S)e;X~Kc(L#|G|9tCtQ96^WWdW zjqC$?VK>jBce(uf9T#38PkY^^Kael~N0**J-us}lUui;TpR}V-IeLlh2Rh30{;vrA zJnQOj+jgQ0h{gi*0 z);vI%{?kbQf13IfwogU!PxEzQ`*$G1^ofZ7f1-Yc?f+*aKBk^OXwD4F2_IdC zQcSqw{^bu;u2>tW7Oi=7+YWb3YR=-EH9Iyx#nB0@yYXr=7E!~`@8I}IvzBMY@~B;A zna@xw>uspH@sew-?Z~+%icB_KmN|_W@Gy4P<1iK`=!m((ju_w3yH@+*&B?F1{wd$pYov{IQ`4p$sC|{KiH4X*EtQ(6S(e>!HilKy!quysaEH7e z(xHh)fSOHPH*DLOiCVVuRj%CSR_ZmduHuPHDEr%hx`%rs@GlC{Sz6OX{A;B=?jF zS+TVGZVi8`>_Qi`O-d%U?lldY+ILjS7B&uJYu~;ciy%uBLg3lHkQp*t${{y0G=4*7 z_6;1ypTbp=g8(v~qZY1V%W-IvJFNGxp#l%n*;p$OW%ID1hb>&~&T(i%54*}lK5XbJ z_%L1-y3x`yZ16cY3O~mnn}#9AChv1h6@?swtnW-5SeRVHqU3OmF?qg{X0{ zI$tsm3rEuFvT#K0E@-{ZRev3j3+U(T`mlOm?!0rP^RTu49rfl{(EB3UoR?6jR$sDY zXd_)EjN^1^yr3(f87@c^ByozlKB(Ro$+dKepIB->!0;&WQZf%N>1nx=9_$L|P;y6I zyFi9ep5*_tjY;keepl2Z)9CoT=uqRc@a2p%Mpx4#)9?HzoR0;>OYsYhBXd|T!cMY0 zYse&FL=Scg<1K#1UhY~UZUq-GAJ|R#Xv)2|eXAM9qCkHo0=tm>;V-dP3Lf1#=CnNMz z5&F3Zy)#0;7@n8Y-X5WMMCdO@=&cd@OA(qnlXE>%w=u!_C7bRpOKjYv0gxvX9(O$5*kqnL zEFsabd8@V9{8WO|Cm6rU)f07(ZQhVz?DWW{9mb%sZs*R=Z`-jkp$~yE;p~TJh@|&w_$T*{iYp>%{y_@(BPT#Ardq}cx>W~h(x2Ep-6C8gSTl{ zBU^=Jx^d@DnIs-**!D=sIOKSUl^NF#=V`~zx~y?M5hprL+qNYdwsAzoW(I{@cW&Ov zkr7P^Yv~cN!gXYV5zNj__E5`=mHh9l-?pR4dxBFvOpG^eNo;<~+q$iZ%;izroJ26{ zR8DW&XsE^=+cqSco^IR(mEg#Z9ZfdtF@L0C(-S)r^!#nMxSaMHpW2exSl3i%qHKed zQ8of93Z>68mO&bx+-fs(lgiq}?8&V=pKNR-${5)~@xn$fo|I*du?k_swkI05Z6$+t z=2&qG4O_ZQ)|wQBxhabBYAkZZ_0#SAXAGI>OrOiC#(nK;7X8B+JthDsm2NOK)MPONrE^t+B; z2n-C#nErWL;M#w`fnV)+|kDz{h*`2?&!}t`UOWn=IBk1e%jF;F1$UCmY#Hz zUPph-(UPy|n&#-gb##TJgZeR9G=FX<_!sL}NiPjJh-Pv?%kmZ~FTbJ|5y zRdmy^s8T_-anl{voqulGr5m`+fFlL;ZTTM;XiuF}lI(Vw2 z5!NMsYKjiiSpS*~hK{4IIPMAf{4e?CnonaNzFaexF}m8gCy+;XI3HS{ue6o$(NUgp z<*>ZkxJT= z8CEaG@Vo|>=f5$qtq|UE!WctXV+nH{=^Rfw^IyJ9I^Q9kI%lPybV^?X-wJm&kIszY zETI>t_YXc-aA0tz$JsKmgU^T0%bDSIDPGc}(eV-cd}dCJv+iRrpF8KheEu6cOMbdZ zbL~{Gtp5kG1N3uRpJl8`zo)ewq?}t>r((vHZ{MtQQl^lH*Bd|GdD6=v+U9RXhMr;V zjoywa`s`)&u+%y?Ic7y(S0`s3wGj7D&}HgGUtlj~DBT{xIWHZ=FGx%GdxNhYl{?OX z>HGQMt8Y`Lm(lrxewd?2XL~Qx7vr25;yOn*(17sh4kPMCN1B(LnuOu{3qv*hWyuP#;BppDL6 zSs&(o*L#=GO~wA&ilclZ%g(+oy)n}$+bPt+Da5_v@{e3tbm(5C(2CFCM)mb9WuMNw z@B4Bi_cTzieiQqd-jp{LpAOEdLGKH8(&>_$*R+sjga0(MJWaVNK56oY&vCKxiPzQO zJLtvv)(zg}Z!Pl3QqnrsyIe8ezCUl1f8r_gne)8u7j&)=yuxLt^eF$AY#2V@E8ZEr z>wd!8_lVMCc~y+D`O-NT1yMHoxmq|~7w=nJ;bBAQFI@m{j zR2}OSQa|g3H&8dnzRK}Tk%@l#

    QB98u?SZwAZ zwHtX(=Zy!dY~(l4VWamz^h}+TL>cH@r0}~TyH`hh69acTuV~!hVAXSZ#c$Sz&bcz@ zR*}Cj&*(0C#Od@g^_lkYg@88sT72+#9o_ljXZwTqL+{9avG|+&IL}OBzW;2Jc55~5 z*C%MlR?(iVJTS2B;|FNpjNakz7pJtOg?H~dla3#v+vwBR*?b`GIr$Tu;iNp-$3GU* zF?0-nN-LjLqqm1=mJnv22e$op!j2J#JmQj1ocLZmI|{wYv6lyz7rpUz{%GF0QM9E6 z2QTwp{miwg(kB!r9%=)EHgy?iv<2~{j&~_swY`B^eAmo%D_@`YQvAtl-*^rLyeII znWJqrMWTfb8cIY=B@V(Stb<1`!YX{cs zV?L$~9Lqe-0*k)(9a2Y=^DO#v!D+ZF2I+s4YMqnZ$1VEWmnip|^Z@+IX?+5Py_kg#9+J`s`To0D=)4oIctjP+CzV;o?!(96g6JP?o4b-|@(p7qj zd|+Ovv=>zTxhEW$hi(zPzt zK0)Q1_6I85e#%eb>iiYj;^YO3ejliCwLTW~)1boDe!>M{8>nzvEmqUsXuhg+m&1C8 z4};>f-lCrb=isgkyb+uSir-xDW^lYSFL34q)GYdor58cP_Y|o3o&Xi!;}-p1P~r4g z^t(aDw+j^i{oqaDE|C6c>3WcPx6(D>e6Sp3p3dwyR61rr3*!z4_<)MP#w5y*li;n` zcRTC??ehr!LFvBF}-67@>|EXjoZt0#@JrfG@d#>%h_Bi{KT8j3tGbvTn%>8gt7x&JhLnNPb zrznK*ylozd);w)6e{cXdqPJ2hb^S!{q5qSkzw78fb~ODCW3Nt-u5UZ~FC4AGg8ZLy zwB8%h=No_jt=6h_fzwX!F)w2&zdI;zDvKsv*_SE zq>hj1v}LEgn>q7}s)w=wu3=jHTf+4C2>mw^|6_0*c7I32 z{gw!QL&W{8h<$g2u87c2Mbfh;Vt+P5|0ojPcO&#?BkrGx(62_^YaX3n=6WC!pWli2 z|1S~usR+$Gox|_T5q@JM^qUd)e-@!vMCf-T;Z2Y5Q(E*7F53Pa`gbDkmqzIN2z@A$ z{(B?gzaF9Ajf7_xP%Y*3sOX~OOwZ7)^9?QB){3L7W3xin^kP|rn^~?qe782TFm!lF zW&%E9MVI)>esSPdo@sfcSq?mOfpC_oalm{jznn?@#!Z{H)HKxXY_jwCc4mJk3wDj1 z*sjRhxUI$sW+ewO%SA`(QjZwtOx{|S5i%Q3Gg4qokh>Pl#e=9Cv96-guxTqRRM)Jy zUyD?CZqWkc@Cwtg4W(p6-!(OOtlO}qW<&j!8i~hkYBw}&szcPFJb0pR$ChjsWU0n& zjWsNabp|W~TfS<|N*4cXW%K5zYKY5YP4zj^X?$`g29blzLXmQZk_9G;!`7WFcU8tp zMqOhBw>6udYBakFYPPbhdyzHMBD8Gy3yf9nn%RIW*>c4dvDs|5&cgZg*pqcTSP`3B z&?=qK0>q`CT5nw_A41X6m@nkaEC38Iom-$6%=*k!1XG!_o&s@5M)s4D^JHW?89@%> zn*R^ZA6vBW?u8?tKi07Mk$<6eXf1S3b*W#fE1>Cns{ff8V18iv$&KP-`H5vWoyt$^ zfyo{2nd@rn#wr~jeXn%wzS&}Mcg6vUd?&iDEmywtC(b|3xw+oHCF6D2hpWkBdL2J~ z&&@?Xig)9E_N*};0~=$l?+*QPXUNDtvJNd#LEghap5(4`xzRV}&7*^?F?CoT!+1ku z4vj0lPw;2l@S(4$p8P<6^f~6o(q=v_{~%1;zRvt(+aIK+zwpJ1uWF7cn8VlEK+!XQ zGzTX?M3?zD?`6itKh2M&USSS%dkgbPXYyO7i-+`=pLg?z9mo*mhkq;oj2tHB=2kV= zw$JH7mpgQ_-x|zS6?>^k!^I=8kH&BCb?=Q!4{-L{vv~*Jf6+ts6hjVUWlcex>DD4Q z@LqoI8E^Yoo6kH^0J${6OyX2rbk_Azfy z*%=+^sXVEw@!Ep$3D=(4wmkO6@G>wvfBAMOK5g)b!+UDXTYZMSXTC7QUuhP9&DD)# z4({zdZ*|+U#7o~A4V~vz{SofzceTEXPW#t*uAfp-uK3BH<^u!2w=ri(|Je9_XSDaz zeLo+p`XM|R15~Xf-&^v$r=zm7LFQk(^J~8ULF9Rob16-dXDCel(<93Brc$?%2QXLp zFDcJ^jd@yyt9tZd;><;lVJ>^00q=TnCY5B})- z`~&Z~dFV6a@(v)Ixjdb@Y+I+Y^U#BX$oA%VmuFBmlE(#Q#C!)buB?1ca=br`d5h2F z&p3E?rj394Hpxb29L!5Nnz?_`vmK3mwm3$ZXE8e$@)MZlJ9lUDD-X!coPgedoQpC& zHz)S;`TQ7j%hzY*sNE%A*}Hcj$00r$`PoFt2_<{A^{94iK-)725ENrSJx5O1&6I)s z&^6A=4zC^RPVeGyZa*l`?(su;YMy;Kp0(q=vXjHatAq6XH)kHmLYWvGlBSM`n{?bO z`~EQe5}4ckvvSqMPX~wOMe5?^f2LaE{5EB)M@3{*Y9S&{(lcvwLDYt zo1e~)ztnxZ_eMCMJN{wtuHI!eMnMH ze50E-{}T0A?j^t0IUDCDFV|Fu&Y&yn`!7omP?<0HA+ww(M6SrZZP#?3*NyYE6wTBl z@ynZI--pi~_ZN9j zDE@(2zKbjM?ry!;!S`qR71FS8V6e)5Ge1c?mZUvfO}q99+P786`BrkisFm{typ+cZ zF9=I<94;NT?+;e}PvkVLH@EF(eje>+9(?oRUqCpc2yZm)X5oSNUyr@~4(+C7c;WRQ z@AAFq=X-HE^1V2QEcrdmmS)aFv32a7x4Z+q-$!lRlKP(HuIG?*NiOyy;{9Xl)!$Lp z%3piVh+XTT{(;&{ne)%>cie2tYlQE`+V`LRIO+Hp=~+R#DoNjR@@*OCi{#mFJbjFy zf6<40@+W*3!e?6@BrSjUd)@)gBs{8oRh)mEKZbbP^Ay!*2>J_Gl!4|?dgC&A_zrpa zF5$dQIG5e=&Sc=rOknHApl2KonS zw;sgipY1rSO&yNr<>Jn!N)xO|O4Bp>IO09pjjp<^q>k{iK&Mdd>z^k+& z@^56nGrgmK4ZQ^U|ErTLj;bs zOVjrY`m*U4dCqg`bNQO)T?k~Xv`e>U-@D?2`FB~jo%uuM^>q_eHrE{-%%5~c*=vxd zAkAOvAAD7D9DF^tr1H6nubw4*vyP^);_^AyuS}CS%HN;;_1CAL;GORLjim>Ic+MtW z^~j68*nOH>HSdt>n%rL#_o^-%ezu;RQ5leC<)QkjTd>!&%+F%}WAaAz&B~{*J9s0! z3yGV_^FqD@@VYNQ{^s*q_Yle_#a(n(Zf?Ufa&yej!8`NqCOp;g4(k0m!aI+h>a@ON zdiNAocRuTQHU#E6TS?;+_Z{O~)pvdB=<|8;m(K3AZsaE+^P897a!)Ki?p^Y0MEUg{ zwhT>s5*o*-3{*#UIoUSve5l>WIC+tLF+q5b$f+7Erl zhif-R>YEQPpZG>joABcG{p&cx`mI9mDC=j|K9?7N^CiX)CjTStV%?H#I%1sb6yzOo z;Ct}7A?r!#_f$1fKlC2P2?IGR>-e;`FYjP_4(~zA@L2mg?_i%vW5GeyDYL$0F5)WF2a5vD$IFfsiSemNwerj1@7dpmUG6`=JXY&j*iJ!pCta0+%bhvoERbf zv*;_3-@Kc{uNOQ=*^0MGZ~x%kdgh<=Ejn{gD9@=o!8(YjyQROBb+?awWkK1f9a37w zJIHfAcaSfcHi`5PTYjt!kz2-l!;V?+^XwYM=YHMmzc0?(HQEHqdCAO}x4mH6C!UG% zO;FxM(;ti1{tl{YJ;w5ce8yhk49)@u?VTexfoPAN5O4oA-F+^tRnJ zG|Yd;s>5p97G9)iUagXs` zR@PM^W2U|hiR;QxnrL@k7$Hrukh`U%N$qNP%)6^oc?tiz5&9^x zRayQ^;r}@Pf;0u|uryv!x<{(ZBel0`Gp?iUtKr+H^lFanOnx5oSH-3s6i@a0r_x5n zpPjjG<|uD_$)A3G`hUc%gS?S_ZC?N4dHHvbjVF4i|Ky9YbzgaWbNR|x{MMGoZz*Ta z=H>5C@+QvApStCF=5C%O|A%|$uC(6ywbj}5p9!@c-Z1ZOz-Rcg3~m2YbAZt~AL^^= zXJ-5F_Iqu=!79PltjASfBG>P}cLsCwJt+6N-uBnt*7#d~ zrXGBUKKEJBl&?2+%bB0$`U{tR3_HcGI94+5o5btGzJuK#;vHN;niVJ2?O^<;x*a~7 zGkAaGj(^U3cxHX5+~M^>-a{8=@nF8@TSqglE@XTiXPiBT@%C8e4cJTZdfv-FqhI`W z`W`j>)dzWwe=lLojNSP7KFWXC_MJ!URphsxqW!eEb_LquAnNOU-9&qaTQDc{tI6t zy<@lZu}(e_Tlvfx>f!e%cn`*|wc``@j}^wuEq9l{>cyE0(>prl)@ig`n)isWe%s6k z9>*Ww@a^=?AAFnnha~IF$%9GXXZ<;AEQ@#YeffIcy*i6Ez+R+JkVuv$oCTtJ==QJA5}{JVE+iJR+Nm1Nr9A5I}()i?&x|chZENsS0v+5n87@{ z^6LF(SJTdXg7#(=?aoTtpN})I_c7-6?0jgJPj1>1%q!>}9VzWG(raW|LHr`=S3R$t zXy@dHy#LqRy7pH^@x{DZN2igdLB{Iu@m&t)i0QKzXWxmEg9`6l5LP5F7V>_||8Vv6 zaz5WZ>gw;&=G45Gzx_4pSp1#kW*pL2`1R??54E+M_Sri+KpkdI{%D+cNO`xkP-)EU z!}_UlPkd!}iTbGib1-)KR9?~D3C*40U;SPB=v8W;ye)5)YfeDrl3*-v>ib=GEJ^>d z%Ctqi3$M}7okTq3hjpyBjl#Smct@Nc4?6me#Cd1qyeDsw4|-2*J8{o0+EtUzx9D@w z@8SEb`Jrr_k>}|w@}nz@NiW~*U~VaKUH@W}jxpYLy(6>uM%U!WwjZB}{FHZW=BU_q zlNaQ<#_rRQ=>_h)Z^8}b*+)M0@ecJ-ro)ws%0y-J_*;WjpC-K?>DD`U?B|pverLEk zF|E*hS@lAFv9T(r5z1Ni;;FefmGiz(IS)|IDr4~s%J(c~9h9-kW+pQIpnR{?h9Re! zsQjJx-FwPsuD-K8$Yc5;CVzwXDX16S%&{nsSvQ)K$KKd%9@nuirDl+MY1-50MrZT( zJLGL~C~woeHy<=_ze0aZ>EfT;{%lFDoljm&y;*IT{hpdRRP&uyKikd^s@&7a{etwQ z^QONPw51irBg|zqX4|&cLSrt;R#dhFydTkb`t>I3NALS^@jbKsDm;nj?)L|?@uZG_ z+wm;xDO`MRx#oeVAFN~S9DJAiklU5Ski8Ao{AH)xH#H=mp2>#$d?+pBsh>w)pMIqL z+k;(-Z)&XFhp1=qjg6|f{JZO7Z@j~|K=PY&jE%KN$+%_yPj2G4Iq>=`M`E!tFP+_> z_}RX4YBctrOC6P+=HfaD=O?(IhkQ_NdmZ_xG~}yYAw0FQEM}UhIf=7huqypR4{ia%@K%fvSrr}g1CM!smg_B`Xb`+CdEQrlL}<@I3wJ;9a3?cx`PTP0#y6 zcG@c|Gx}9#EfMo3h31I<$;z?M&=&UP-+gOsUVL1zcIWNSyzcg}X>M;BeT1d-5vut2l43ME4KB+BOBxO1#mxngzcDl{tGlelr`eDB5ui`KJZK}#o% zR#UTTGDDdakH#{)t~SfiSPZwElA%gs%r#?m%LWHE-}tahOLZ+<@$psnCp_~!*20SW zD-&5~QZ#L-OuT|cw_41+B2WQ!Pr_Sz|3f(&=`y*KW16$oZt2>kpIlM3V(mI_xC8EU zkGt3M)0{nh;Z1;O%naKl&|CSb73-?JkeiIzaQg$TW<=c+a~3Dot@`-=>gPF`B{y#M)me))upX<4W3bYf+i`If|lKy2fF~erf%!T8YzSF{_&5$MP(0PmmpX^ zNS7%0lDV!Ff8Mnr_DvY-Vk}4#In=&_50S1kf5s$3{L@!67w@Sq=h_mw&vW)V|AW56 z5dZ6)$C3QkItvMchV{>aJzYr)L-_A^_R`Zcoc~q^W4cE2e>$)yWy7U^UXk@b7yiTL zUy_cxu8aJK^M9{ea;}l`Kh6hV*Ac=WF8a}=@H3dFocV5NUJvr^O>VU4*E;)$o&9?7Vfu6 zfKPx6@PFK*-wP_9Jr@0LQ2x8X8gM`O%V0Ywe|s(ZZJ_+MTJ-mT@>dH!0G2x}2JeI( zm~F8S`~>t7a1*!}d<@(LJ_3S9xxBO+oFFAH2DFlT=zTs4ri~48u3ek;3;Bj za1SW{%^-7P$&^LE415mri!-hJ4u=(>{LKU9@4^k{9Ocrz4x2y|U+_8X9Iz zFbyhyPJoKvaf^NrsPMZj`t6|nHG``6O`!bMg7WvUMSne*!n^{MyE13Lz}d&a)tGw@ z`)Anlz5t3(pGE&PsQ8_9_Px%&$Juv*HQ4V5e;I5C**}`xYte55#jn+(zXyC6cg>*Q z&n8gyY$GUlwHEz{LB+okl)G|gU*_zKLFMOoP~{)D=wG4e;=&uJqiFwjtCAb#)UXTT! zrEyU4xJY}ic=Uma$9ao>8Wg|N7X4G8;=x3k_c5>ul>b^#{?~(d;J(VDzXp_l9h?dJ zD?$0653U9ip!gJkYF92ywee;CL;7_~JHaZj9aR4Bwdn70=8XqJP?%cY|t=4mr95RC?Pj`mN4DUjdeD;DX!4#-w!JM4vT&}sPNlBh2H}52~IX!^yh-RF)s$cz$;N?vAO`7 z4rET(gnt55_`Tpv`1M%yyFrD2%%Xn;RQR2s+;@O--)_<03(9?)MZXo4`)2SyunJVX z)>y2b2i9Xg9()|UIDxbNz?0x3;Bl}P>;#_zt3c!5Vs#~`{3`<$pZTETGtZ(w7gT%_ z7X2BZ;xllK<OFO9a?gEwG2Jl(17L@yypz^TD+XQ^`E?dV2_RiM&a0V=)apwe4r(O&?H-+YVyJW%O9 zJ=T7QPlB>PVbN~~#itDvpH_?h9&4Y}d1AQtn?do>xq@ zbxx?l?T_2<#05}%y1`F?`@v6w9pD=9VUQv!l|BfCUtzJj415UlxuEzbEczD;tvlo& zrX16t+?@jD?xaP(*O}{lOxbrh`*vq9y+FG$-wi6HXfl({(4e0JRljyy^y@*@>x~wx=Yo3AJW%iR1sv;r zJ`d7FCDRuD(;&Yj>oQG!JPGQ3?gCeXo!~Rz9#HRd6R7uDdX4lx55zog9Vq=oG%d-r zMZepb9|371l3f=4cJNEMuXXn8L0m+7Ee?9ml=J$dra4x8DJMfJC=#;}+hZPPJ4n2oy9Ls&T!w!cjhqVqX93~uk4%39o zpto{XU3lzb((uy;a>D1?I~>K-dxziePDE|ups~Z=)Tbx(4CZypXV(2 zOYwg0Eo1heHA&~f!*9$HoeMwaIQP?I(%dhN>F2&@Y%5xny2c*ietK-0dum)W8kP2r zYv+Dw++psg$ECSjtx7r_z94`9gw6?vIQzYILL2wf6Vm8d>Yp$$A%%{m_G>%1pS8Ga?gX;&bPjULX zJ&(O(#{L-v`6p(aoN-Ec!^s;?arS!q%nnXkZ=1Q7d(X^X?#E_!&qS+KqAjsEL7vWP z(dp~64sq|8wV(TmStq%-&E7kkyqVq1{mATN+z-$0;(lp%KX-dJd*_@(oXUQD&I#^4 zb9%X7n$yqy!kmlT56wNyIqhw8_j2#Jalg)Kzp>z3w=eNu!2j{1`pPYY+drRq_Qu5~Z z^S2Yq9qo5uzTngX_$)ZV{rtkdg}7gs=H9pH!Xiw{`pPgVOLISR*Ri`WxvP)+p1WJ` zCWdz(=iXAjr<{@~Kf*m-exCc@CGATn%_VKzdzSQa?^|+#`{8@K?t$AqY3|)0?fEF- ze)I(Q)Y9gq_*&M!3}4IIxSv>dlKZ7){oF4syU4v``TpgExcoTx?&Uq)`KCm*iia4*@!+r0ncJ7_44y~dM zqY(`2`C`qk(W4dUxnS*vp+9${-dyx?(P$YxT#nYcxuSo|(M^s%;ONgd`VSn9?Ao~h zx}z65`i~v0{*Cw@cQk9s4gI%{zQ)mK9Q|vGFaJQEBf+fvf8!<_-(Pe5{>st+kE3gD zw)X0O$$i?{FL(4MM}Nf8dCt8)5^_J;(dR~6dZwel+R=v#t@}-me$mlS zJNoY&{f91m)@qvY{)eMaIR0OA^k-Ebq(6`+JzHSi|D(&F&%5&ag5w`2?u!4>Xx|Dj9IN|(MyXa5h*{!vH&{V41Hi;n&e1gr3W)zQ~E z`+Y7xTb%!cj=o7WaSr59yW}1^kTz>=r72gGzWTHehxqB zmD6`y*B0zV*HTWp>M$3*p3aS~+xd$Q%4e#HNM5&F(Zcu_rYw-Em@|B48`DZ)?Vps@Ru zOq4^fj<{bGasQbJogYcxnFu{S5zN7L}~jo`V^h+M3r~_4y)%b zyVfg|QWZwlBBNZ9AhsGUi;q0BX@}EM%mZ_Pw zVTKWh)@79~?rcQaqI5r+2h}y>pMt@V!}n^Q*lZn0E29!b+{He1M}u>kPb%s?%9~RxYH@4R zqo&n(V%t-whLo{g=VuDYK1MAWpcfu?jqMG+l;`^r~A+ zMIqEoWer2^R1OH^G`O~{Hyp!8`L=+qS0qE9fchRR<-(pG*Do@|+HfG0xmHPpqrYVL;RE(^P@x zdd>Ag^^_iW?!}L;l2-%+=FK(PoDu}r)%27Gd_L+tXkI;hMM$Hk^ohp04NWyqZvDKz z=rzg8u=}`6U&0yc90H|H^Z(8&hvg#dkk^!ThrwT6t!j-x#K}T5~t?@cCnY8;5In^cBa@v59`o z$GPL}MRfc)JvMJ5&wm~nex38snb|(hlcyJ2-7d!snPttI^q|vt)(ruR@St4crRyX9iI- ziOH0h+6VPUY3Ca4Pf*5HdqLdIz62O=h2~q)+>^jkLRB*~6`ovYF}}w6Z?qWKeg*Bn zYA(qBOcfx0tjMox9#Yh}hV@ET{oQ@0pf~t6>nFbb-skAIoQE$)+*6`yJHCBZLx*i(a zbULHinX58+&TuKe*70#}wNv9YwyU6%6WmZ#XmWAc8b@v+CHtI>^ur{G7k3^ucA%s#NpHI0vw-_zcr z0%?3KXLGv-T!FB_ItIh=_^2Y*Kl{o-1^-j|zgE+?OM1T0LCo0qW5&iF^ovM8pmcnp z6Yvsa;WCOCoq%2+-~x0qTK&OS)Cah0aNA{ly3T{5{SIYM}r3b%?V+XnbRd%<)n{(Zlu%o=Q?@a0GmM&&j zhA*oOhq$(&cQ`}B6~dMG8!qk6dFmXV(&5XrkeyG>gHO*`o6EQ{rCN2oI8wh{xCbY(mja&-dyQ2&*|U0 zCiKQ!T`@uEQhlW-+V(>mrTvUOC|yF`%&*ipCzg!dvYN71`Pg=l?RS&VGa`HSyI4pU zgV%RLTQ&XF^FgOh-8tftyVo~vbPBn)%^A|$l@{?FXZnymUv1Lp&RQ!hG9z7g@xP99 zr`FAmiE=|ug|SlcqEB?!$~^sp=MclT_Y!7xK3(2)JaZpme|qhtPc^KQR(hYLla{hH zWza!->2KzaR`p+B-_kKySm&(Qb(Mb)vDbxHsLY!}cTJun?pSDEOP>4HtM^{!>s9ik z_V~Y2zHHn7Uo&4CcmA`q!{`}peg9pgFKI5~`%*W3TjPQ`mrtL5)xBG--YGjK=-m)K zcU`EzEU3tiQ3d+T%TXR-oy@P026*PY`=HCN#!vWtpl@68D)cTb^bURZ@$B60z2b8< zX}%gi?^Sxx2DZ?$KO5kfYa~C2DY1}!I{QHTio8Gb+$9Gp(_i@R0o*SS;6B&I zsQVuIZpw>aa>FvrRkgm5=iaCVB20hobM@hQ1^1CmR<7jU#&L{{?RZ*_7RQwkHm7Y1f}g^ z@!{Y-$O)HPtWU$I8hz+JrG2RV+2!F>c)^~zRpX9W}uft+|pLK6;w^+X!r0%L#f>XdckRnUgT8t+_ zxnT<2olHejOI$`#|w~0u;Z^ zAYIX%n-ISXRF?Ri1;y_)D1N6b#!rIcr*jctT=HV#w;vS0c2N9u{z3f8LGddA#gFfH z!>`w3T<03Z?}Ekn8=&~Ptfe=vuvnh}E3uyn-VK(6?+10xU>Ydqd?Qy~EV1|Xo&je= z>pX$%Pk>XwqoC4x7^KRQhb)?N1h7c%hX&&vpwhV+jDwA!(zDWHeI=-LOP_>L_ooU| zpwh4P_9>v&>&bFb^7>%B5mY=YEyh=Xibrz%;$LC0UUFo&W3T-P<+l`6KF|qe`biq3 zsU#)W55^_ezmV{!E!H0g)t@BSPgN)PTa5GFV*2|&i}kIb%5Mia7n};t0L#D+fRg)1 z=FQ0cv#4Bk8v0i7ICuxx1yatw}7m8oC?oC0cZN99p%(VPQNdFUK~ z%DobtjK6X)0bUI3IZ?e|7C|2cr-Pj!Rgm0oG2RYRM9IAt<4of8GDz;R7*ByJ-zO~A z!^6~90#8axg+m1ro#r9zcG%%C<*?CV!eNEOz+u|*AKdM*!(qx{qr-&53WtDLux`IU z))_-yJJ!x~Pppkwjh{%xc0+U(9WAng`&?37+*OR%L7jt2i}nrb7=-xopftZv4>~ib zq_|`7{=uEFl5jpQgVTdciqDo>5&c6$4-X~e&`z#2)>Xz5z3&*le>mdG!}sy*z5X)S z7hkykBF|GdoJNS=USZrh>d+{Bj@r-j)acU)(w`W8l4r-5{bNdt+Q;lenEv>f6Z}3l zrkmdv#$4pL6|z5CcC3svmvtd(-&=N>-xta*@_XOdjaJnj-EA+C`Y( zCnEm86>ro`|A!*yEYej69d0D`QhY(gV-)@qC^WSly&BBmv zR@}*mc1fpK=-bi?-dHiXJSV?}*;Wkf`~`M8Y>)GAcaO4Y5OAzfY8&{Z3yg0 z?j>&zG%st~AGH!rVHuxnX7qj9(9f4}IQP17IyavtXhgt*Ue>Ahh}itpr_G($5R9N!rQ?lUiA_ zJT6gTGuuXUb8h{Zdz(>d*S}Pn@?g6JrIFWSXbo5BH4Pc(%w~Oo9%Ay0WS#Q;*-cy5 zG^}1_Gj5VSOBoHvkx52wRa!5;#%)5QKC%^^Qx;+F1&S)fxu9#dy+pVwI$yxH$!4hn z#TtqylgGTIg*=(W_>x-uNeYUQ$PF)dW<=bs@osBg5y7>}Ma-NruX;v>Od+{34b4_C z;{SQ)zyJGiH>7J^=k*+DP7ze_kGY9|eOvTrq+dlwatsC?&9{-hkM!+e%+<<`HHPFY zc+~`_SUmf&IIzGg@Ma*nG0$g-OV^T-KBPtQ4x54GBBYl@CgB3Mkx%8V^kyrsz|S0( ztdU$%ZmgYfGf0~PmGdusUrped$^53^G`+3mUj`8h^RFztpMSo$uGxIg?(LUdQO4oL zQRoXE%pQWh?@;%${G2@n-K(QLeZGftKb>>a&-{0VCt!`9irTRcknTEL#9Pq%n<6bD8(e6;MC=N~-FokmXgCmo<=TK>k zk$3jUUN-3~@14{4f#6c#ZMNJ#%bl^dPP6hbeMJ+uPC*`qF{kYhDev?Y-Brt-wX0*# zyiVDBebs61juTJmQ0}=SxYWy?$+nKP2X1v*GjM6?gL(_uA#)P7lWz9!4-e|Jk8}<` zflF`ddhS=_p57&35G0;^b&BfW-kt0B{FDZCAC%GWjr`6)>E;d`mT-c-pC`;K@H+=T zA0LZ(+UKS%+54H~Pi>FN$h4EMnKokgw->>~w<)!C`R8BDF&X)tbJu0}=w7%Xt7kk~ zXCE9E9Qg|M8BJ5gAe$!jkyj~y$--zqS8+9>6I^}T-ZQK_m8@Kj`mfg;j$F{~3M>Dt zn{}yf2F{2387%hiM5-{E3pRBDh_S;RdW3%N&Q0rzNpFC%y1_d)%5 z-~ZidgBaIK80)ilZ>cU_+3XFFMN@q*aAl!;e{DK-H@UqdGJKD`i_hr?w{64jE!U9V zMWlBj>0Lm2|0a`G_~o?U*wkztoTJ^va%D2uV=m0g=NW!wueF%1$1s?yc(Y&MNy};XVWI2k7L^Rmr}`c$fDUkTuf1 zm}=LRBTYFS>ABn7YtYp*i+79qBYo4~!QMmtvv<7ZXGPp~HW+uxcW4uLCV-_wp^;Pa z?IXRK@zRaI^dpVWv~9+G?9Kf&^cnviiQbzXnjhu%hpKFUcp)?UM z=>7C9DthVdPYh;k;J)(5OAowTT=b0QnQBA1_4&TuET630>`vkmPo-6Ial%ICWA^TW z@I8lPja%og`aBu7XSrv~j!{cU$9;@Z_Z}c!=FEbZoouDvTNw+7#uJy8f_e2mC0p##%zR9Blb_y6++X$XM|x+|d#4MOHS_RO2~`HOtNyv2C_HskrvBJza+eYcaoqrPkA zGmN#mBT%wPusz+LIm6vhT9~<__oXzG9vjOY`5^So7m7I}0yS@t??AOhz`Sp=E2+8jc-r(p?U>Zp)D>(&62z zZJXDwUjNYg)y6SD=dOJ==7jm>=k_K0E8lKcu>Fb8bR@sURv>!URv?11;sCEG0yk1;U|5y;x_{nzY$mTadL&l_zdvl*r#D;(qXaw7Z2A^ebj(7jby^2(NC-T(7rtwm%NtBUvgQ( z^Wcr(F;L~z397t0K$<{upT&4PsH9463yimcDzD98CAbC@zZ&rUpyauxft8@zspPdx ze4y%4dS_K$(zm2~+z*P+KJX5(4g54Hd9InD^md8f46@i%wGR9MDEY1#U=mdNmRO8S z-|R=QuLhMbFZVS8nx>PK{1+H60~JnsXTiAS!IZBOP~k3=*z)KB74E#ncp6kV>77+L z$%`qR6={v?gKvzwt;GwDez-pGdLe?1eMM@@Ii1sD1E{e;Bv48l>8XqS|&Zr z=S=;iL7HCjti|{lQ0X~sF@6eEdQO0f_ZX;jNX|@j2dH#NZ|pK~2dHwD+}Zu$3XpU( z*IBHu1!+Rbq{Vm*_(}Xt041+h0)7gVd>KWT)W-}M*SYfs?D?iNa$C|XOOr7AWMwaT zGx6n`1&DlURS8IxNp%J=ev$W^;yVi}{Aq9{cmiY%*65?vcySmStnUQne=j&4+zqOq zrNG<3W>D@+K>Ag4jm3J(%JjbqA|>jlHA?$Y8;V|W}(P6@2g~PyM+VUOT?XbgP z%3-6!gu@DlfLI_~I9dd@}`Jp|?rdc(y?bq!?GOg{py*y7`ck;TDVkw2~ zLLuzF>pPH5+k1UG&+ZY&Q3QK*#IX^jMJGp|LfPxtQRz|VM&Xk?yd9kdQ=kc*8kUl#$wtFnGjXgZJ3*0?Ua%d&R zdvCOgUr&uY4JB2u$4~>Cx@q@KZU$DiW4Z$bwOVfRkZ^*6>Gr4xqb z*l25prtcf`ExA*-{|7HQnKh1H%}ZA15l63Z^rs!Y(b0e9=wEa6qmEwU==agt#J|z; z{|!ffz`4Ig9CFva1v0GF8Tu*bzr*o+*3r*6`Uj5QNkdim!;XG*FfhE&*^JD4B7VYQL zUv>Qa{GBntxX<9_C9~T3*I+L5Y06vSyIlji2O2VCwo^7?T7!3(-bs96TJM=K{mlsd zvk3n$G5Cl5-xZ;MCqjQKLjPHW-;PLnmPF#88lg`|!p9=~=SBQ~FXDe&#Q&g(|EPYy z1rh&0iO?04e7HRRHd5aIZ-hUG(sTTujO1Uu!u<4J57Wyc;iXSD?5_Dkm}b8qhc1nj z$J7Y@T7-T+lAh}#@v)bi!+&bTeQAW>(ujLC?K+%Z>9Y;f{}SQ<-y-Q*8R7S>h`Tmg z!~Du4w7!?a?*9_ur+H@B{jP}n7bA36q`W6Y@?Suv$w<&;Yv_Wcgk(Xo01^ zY)Dg0OAVl2J+yzR zR26qrkC7K2&3DVuO}QE=QxxWqEG~~mE98cTtc+=>Z)W>Zcx^hA^GJ;s_HWAFDmFB= z@krCw4cW@bQWR7J#b7POIak_MMYnnTwsqN{Yu2vX{;=09`&ne3n^rZi4GFYzJ@)E# zX!*1%D7R%aQ|4)W%&Cd17mQVkwxM0M8Re4$YIbzW5Un6=ruAM?q&BB5C|SR-q^(uH zi#pnn;A?LEJFSp*^kv*#y=gOB1Dig(@nLo))*^Ph5o!0Z$gF2sP@cAMfrcVCQnz{e zE6B@7WLr>HT-mCO%#LGb%rT=?XuPq5TS#)fkdSUhPSy&`-#O2VwPxg7=XjgD{f}Q% z;?+elbH=sHy;jetM(7n&NbYsp`iD2ZH*&8l++@Yey?R=o5Bg_%V$9Xby`FIX#gD02 zkbr^tbYk<^IT;v8?$z_T-32-%ulVOv6BVYvjsr))X!eEKdwu0D$r|2>EQ|K}tvrt83x`R5?S{m2VOfM!QSe+f zG8g3A=-~1^C4cbBAiIAoxtOSolhMiF}E z%n}DrWa;!+Yf2Cz^$xYVofo2hUNZ`RPDOLbZK&@K$Ks+Pyaof|hs2rRNt#MoXMcrVbaa-}I|M2O4 z&Bn`@d7VEnXbX_1qx#HP4E_I0{XvTsFRNR6@6ts`hvbyWR7>U5iL9Kx$2|8Xj*CMT zd5)pbjOow)1g;u?yFkh|dDvq75Xku5+-b2s1^RJa{?@&mseXSrA3{wLwK_S+2QwvEcJfy{q9dAwDN7vk%KZ{=3nmvUmvR+EjO7b z`Ioyd?*|>dM2;BkN0@{d%F367=?_HQDZ?E9+avVvM`$ge85y?EB(^$z>3v9G;5m;;g{>XZ= zFP*FpeTkTtPS(o5OH82m?0qtCcJqd`mc<7N9`!)%JLg%F=D-%@kk3qIEXbl&* zvCTe4R@&cl6$ayJ|2|=uH0Em8jdoA5{>4u$m$1t5KNNr7_eb-3b~~DyH4(!!G}J9# zQD=Ya+3NUc-XYU{Yi51N&^}#;;4#qmOq=63&y~dq_=Szje#UB`^Vg@QTCWNEmQ3kw zHho7C`WtVpa##-ZJ=6L@^6bh?bI*|oGkq3J)sS~8Bm91vguVX9@{bIl;2l ztTG}}sbxAF^X}u%bLJ&@rj&1*p|Qlgd)^mpNpT+Ko|}R#G4#40;0)@QICngaH6zw8 zo*Oy{KRO$U+t8tj=a$Ou`oweV!KL`U{WDK3yM4(YZM`RU-G)7-LEZhLD=pnYyicur zYT0LQxAcPRgSvx+d1|Ocyb7F!nfE^{s=a$Ya2w>os*lv3o(!wcq| z-_S_aDo#ojx6wiiq&xd&xN^5LfHr%;>!kMygWz*ry;(l8e=O}ZP zMFaVa^^?y@H>Z|;kMpwOG9HfKa2cnHvt>;4Da(nI^H`?*U7QPu^Gn2eV6d&<(gndY zU!orAdzUIgWmhP_=SU0fwM^kvH_sApA%C%ueruhTa_gXb2P)5V;c&U-IXYaY*OKPg z`?7V^)K6MUCj_HPf4zA5(D}irX}?~weA>{V!=?=?9X4%LFzPz~8#sqIE%wy->mHl9 z{Qg*MR4Hzye`f8M#9GJmeYK?mRNo4pU6bzjQqH4wzBuuy)(`$*Oz@J*tMkQ%qZ28= zFOkP-v9FJx7z?(XpzLF@FOB!}FZ`i@KgKz=T)psNUCU|o0;J7Zui%+i$LP#@8E1&> z`5~pd`two9FR`Gv3dA*;!-a%eBkk<`EhYi~>=(=GW$Y;{!bwg~= z_#}DVLtgL4?S7ZnrziuZ^)sOQ`YW{OZS=jCTT{zMk>2I}KFv8==GtXSS1D&pP5WTI z`rXH~y4wBSJaS9)^&RV1X}A3wWXH}@oXH9KKzgT6=$;S zJskdA-#z8QmPXS1^_OE?o^^e#f-`lZ`7WsY`uJeWg6o1hWNFNry3*D-L}&WS4lW@- zqN8bh)}6Uj+L|g-%XUW241cJ^vg<{=VkX17H}@^ugw_T_hRg&-iBh% z%9UWpIl0FNA9$DZXQ~&Son+j}==JEiF}S4u(laD@?#zdyD#Y@$&!rA+`OI<@XPzO%ED6?0(w& z9sH|J-yeH={2jFU4Yc`bxJ{$Y%YGewa$<3?t6corAL{1Zwkaph6sphYjG@vzF}QJq&gXufaUi`&XN|`l=yvfA0t*Gz|ojuO^UdpPMaad=sRW>c;sf>Pl6XUVc zmgYXP4$i9Ux7wq|gh}@$j`}mW9n!Nx`ZpOBG#S@-xXTGHK z>FFCdcTKtKZVa!tp!@~h<{PgMddGcrWz3vR<%an!F38TAaEX_SMDkHBGfb@%2pMUr9 z`zYgkDeJ|Qc@1U12we~h5A<=CTJOOg`dT@C&6ZhtCJox(WRbS(gT>`fd%Z6{eL73Z znA`PfU2m+Ajc821S|?$WgrNY9PjcrS*-UKU^aM9*&|4g@jl?&D;Q z>7eT0)>~G$NGs)Afo=tjMb=Gv3~r`QZJBfw2h~5}KD&9b(x(g6dFn#n>_YYX+sx%u z_n&vT(_zZtlMdAmzQk|U@kQ>7`XawQKV!$(rm$DisibzVI~i0qzTJ;=?OuIB<<&{s z9&g&V^gN8u)RXB8xc@`ZcioiPfjNVI(44l%(3imr;n%~s4uBp z#MAdBh5z|%-DhO`QPlm@?#wi8IWpIJH&VIh}CN-v(F;^+OXJxR3{fRo)UUT}> z3;2<}`qQ(ybDd?G@43Z^qyKfv?=L$z?mK4vU=njT)*GJFdP9o2ioP>n0N4BV0Ne}3 z_3Wx_Ts!;u&J&Mm?z{IE(q4$qf;Cw_&-TNoP`IY1Y`C4wp=e7lTYtIh5n3}DI&HzU zr@-q*C7$C2`&`4?#1_86$ye6zQ>1lR@P%a!v0)pQlK-$J`hT7n#{26{;!FAX#vMGuw`qsFldWTT@0=dKQCQp?<;RoBn`~T0x6?5E z{(bDFSK*;K+$+3Gt&WhJ(GgLQxi)H~2Y)<}+{O?-FykafDG=|J^IMjyL=67GK$q z<@@{}Hrn{3dGY$0>>OciX1=8Ks9mTH`1kMKd>g0^^`4i#uV3R znK1`f|C+VeT%%AO1Q+c$PnOrsv<=%H%p93H#5agDJTKEepGns{ebs71KbVYupk03M zrtg#q^s^F^_HO17JyTN8JzG@zwD+U1Xj822>i25mDRpx&&7J(X84mZ0 z%*Ea-o>v^N7ma%9665tdjMr*Qmw5;1`{Ql*-5njTH8<8cthSXHWA8cDnnNk$^H5|` zD@V1CFAGW$XZ33wWd}dM%k_;he6x=Vy3}tKzMFCN&0WC(#Sz33@AA$5-RB4M-9|f< z`$X3MRPUvOTE}-z4(2`o+rbXS_57W|ydLgh?VN?(%fXK4KNQR>rLUHb!fqjUqhmXs ze=wN$7t8SXxzgpG9~X{X-uWqE`SNeC3ZCiw)nMM6q-QSQ`1X62cLqGrNoMk()2s65BR*J(=T-I>&*xE-JoySdwzJHyiH_X`8Nrh{x)k}_%rLD@P3W{ z{<e)gvrV>O;?TxMNo zwCw%(_(OXH*sWcSJ^1-OwyesEd*|41KCPc*_4;M=H}2r)f6MxPvZ!oBM?dq<*q5yz zjnOZJ=3+`mp)vIw_XKN=sc+Gh-)+&lQ{LWY+k6U#{Q%vB(pekMf7H)+xS#iV z{3x8S>ysA>?@u+gX7dx{-K4rwIK?l%iYHpe-+8O=$RERBbym>*V&4&s(c%*tU&{J+ zX)UdU^_)Sh>kMXnX9(*&=*W9~C_2uHp3xl4uc>G2#nzSjW24c7XK8)YzVa$_Akyb` z^QI@-HKd8DV9WKCyW;0RXTA`tV-GMEltuYBO82sB7g}fNd$RaI-;+fL`k0fQBc4}Y zq@R4lezTt21-)ADIJ>5hiMKS^`og53PT|ux`?M5onS@=M^;e}w>!gP&g1T`P#5X2u zHypc9ObV)5t6SFdxuWHz*MGw71Fb|h|Es(QA7hVm+=5`#a_+xoKd;QMo0+)WeDiJk z)|`os2kR8tcPeEKdLKGqKgqjw9{Z-^an~(D*RP@HvX{R8!B}vl8~vQVJc{nO?IAru zdL~VoUwV@9?1UTRN{fSei4soRj|q-VxG|VF@rK~Bo2CTw*0Eo~-u1l7Cr2(Xy+c^O zyz~RXyc_Sb<6G$*JHD0viXGo>T*NoRJ;6Mc`CB7{YL$&2bM>9-*F!YcnDVFWUwu(! zKGx2IC{N9oKJUiD8<*oo{aYQbwvBwcEU5n3Uspdp@19`P+$T%MWb4iHI5$PQ4B@*d z#Fsj;JnS5P-jg+7d8_Cqw+^SZBx`>}c8q~`eJNzeo!@zOW^BubRoi%$@O~WH!FZ;8 z+Wet!nl|nGp>Id*BhDN;HyBmQrge-^)YdG(U$LY2eJATIk@N`bUTdvk z<;=TwjqmkiNSb-tD}+&5G_oGAZwFtG{`&=eTV3zGsQ!1;?YNmSx(C|p2xea?Yd^)# zYs4eHt9$;rT`$Z}@A?Ax#rfL1>A5FRTQfX-8hQwm=|euulvI4d&8fHvvpgF{epTmD z|A}3{F@M3XRvX8|d;{YzoQA}ZL4RU+J{=h_3%;Zv6gxqWa?4tGljx>owlSYxaD7u92O3Ap2`Y+tq#n&N-p?W z)x2p{!#ZT6In-?IR&kLC!faWhX8D4KriYNR%Ja6YpbJcEKmLICynfayLrOl5VPynP;+mvt*N;s(6P~AjX84^EMKxD&+^cD*{LFKI!`Zaq&R?GU6YkK-8e(P-BF{Zdr<9RiF6Q`o z?q?+chMC`wyYwi^)LO_3zs|X9a)rrrKjz%0_T!#*?v?$xm)>9<)R_yFPx}Dwl_PC< zCx@7qKJKkBX0C-i_jc#L4wpjZC*^rE{e_?F+%=)W4)Q%$bzyQ4AVXYr3S0+vgRG+`k6Da&IQzZe`>=1b7~cbuhL0!AosHlPlDoi6coR9XTRHF z3n;!T!3|(7*a9vA8^F_4UJZB>j8Q%(EXG?w`FjFXxCD3)INjj{houhH2vjZ?sC<>n zDezap<6skb45X_hk6Mf$0>?pjT8!@p6@Q1t_&!ke(*`QuR#5q90hR7Gp!lu?#}aOZ z#dsw+9s3EO+WkoIqabrmqu=oYjZkzC_#k*1RJ%D2s@)s|%lLWJV!R7fx(-{69|D!G zeIWZgRc)a7wSwZ;?C3R)t^=>bz6?}*9ci(?1XR2i)%d|TK-Q>}Jr?8VLB*T47(WXt z-c#Tr@VImDcJ4>PIoR)a?(NQfuXEo6DxJGQlTPqs&}<$^ziQQda4k3;{5W`l&c-{Z z>O9C0o=jVep8>DOz8zG)c7UG&FVoo?!8bsL>|~F{_*w8H*q;Q|&bmS6>zKv(K2UsG zL6y&Li}f`igLTyea5#8@#v}R!D7wwzN{5vWPtd6NP^dZ#GGtaXpvtucRQWf9 zD*r}M^c}Ea8H0E__@PkyaiOa%@*U$pu)`uRUUIK)=vk;X96fbC>=0-Mp}#y z2gRq%l{y+QoiQ{yHqi*MVv`E5W}x@#GXW}{bHQQ!thN}R0V@9K7UPwm(%C!8hSU9X3YP{I?ySZ58BpO) zTa2Fq6>bNp_|}06*9a=yN{jIopu*KzjMst+mjD%R2B>hApu$bH7_R^oZi2;lIjC^G zG+u@4Q6mP^pu(NC7(WA=bXts`0u^o#sBlk!3fBTE+-8e$9gtPHbr$1mK!vNd?#ZOZ zxbD4^zZ#421So$OXpHI?=RvurEymA)bFe=Ks{c2F@>gfwleHG((t9a?(?R*`rIF48 zPdPjaYFuao)gRV4TKdUFU%cMxbv+Npp^t;}z@y-Yz%DQWc7XFi=^>vBHiN$cu5q~1 zq4bf zw16|gHK4++1Ql+D#dsa4aJ3fWNl@VupxR*tI0GyJH69^TXvVFxpu(N87?)mg<>QdW z`VLU(Z37i=E2y8lEyh!z!ard#z5`Ue>p=N$1od;J#rO(P{_8BprJr2>rN?wOhcS{ zaCM-<)mn@vL4{jlFOh67wHQx=a#~_BEg+jSdqID;x$6(*!o*9dADzJTDIF<@v^-3p~4q z9z}8Zp`nL)p1SU|QyD&_sCC#L6o#jU?dF*tcAn>%VP|IKZNTW*p^oTP&ci+%@!;qrOBT_e@2>gb_H*`Urx#6syBhQW`j*+K%wvO5}3htwJ zk18oXG3w-~Q&5LS9p>3H<_#2%OVK!K9={)j;O*o0@jP|Q>07X$czz;fQgNz+GO0Mh z^FqZ%o;?+B@H{&yJ&ANoI>U4SI;p7gUXD6q5o}PS0zo(?9@O#P`o?TOqP9@%{ zho_blpT70Xt!Hl~fA8;lKQZ67|29gxa&IMRt=v;tQhc=XSYUeg|o|ql4$^JI-LYduHp*Ju~q)vwLPy zQP0db_?^D%{9PzKpWQy2+M9ixXV2_6c&2BcpIuVicK6=9+wZ1E=Ny|u>gIIuJTvz! z+E6;@9hyf<=k4ctblx$ZCw}GRuMpG1GYcuBg{OG#scEYzDZacYRkOQ>SQmFMCRdC1 z@@!qahv(UvH1@}9PT=eCy*#LhzShy7b?#qv^hQT_IC`z4|IpEz zmni;&j$ZEQKXdf`j{c6LzwBsVzncGyDB+%N=l&snOP_&X|NRudMf>&SG0xqu&uaXa zyI;@!4nalx_4TilHqm~){Cm#budn}K&fTwNBi~kl;@AV%!|~u!u$P#U5-vO&y@M^F8mYJlgv{-eiwd@bNB1<#g4YV zgJ2ioV4pGfF}VrT-4XgPaSXd}i-dnS;{PM0C+vSc@rUVjgx@<6x`F(L{k!>QCcRNT z_7@`Y|7Ik8w?t^Y-^2WW6iM&DM$)q<;{RmC|35_he>dW;c~>|-&N1fDe-sJ7FB1Nr zBK~(p{Qo49zO@nm8zcUI5b+ZvpCY`cdn z(7JA1@MTb`Ge4B1jLUXuI&VR~#XZvan`Dh==3S5>ONP&ypP&xlsAQp{K>;D zQaMkTb*=uPwJocijoP^<-Q5CCC%sZ)n&sv#sGk>QnysOX+H-TeDq7YzqOpJb>XwF0 zt6QYCwq>i)S6|S}_Lhg{W_&2`Ssk}Zh#exWu6w8YFx1DrzS~d__f~o8@SRRvt8l%b z!un8gg!IzeQ6L+@4+B{nUxZuNW>w}prS=ax?e=1A%GLN$HmwJhVaBUE@@F?~MV(`~ zVjte#B&&jjw{{~g;%!DUDx+aN7W9Nw8)unjvbjk#8vU)BNLL0<6|lMq18umW=7}hU z8gY)Bq?NKUuiw_t6lUXw?~o7jHdBLO$jY>xTr1;?GKu<<)i0>VzU7h4clogVfSlz? zen8IjBtIZ$1kH-jR8&&YV1>6+HBwQOe0)#@cXr9c?*V+s@;9u@>UWx)Xlfj0x`5%YZX zT_|(ZrPETDxBo31NROEI8DtVJpPShqQQnT)eJnXCxf#Qr))n>HmyYCHA3q9I&VL)U z)-bfsD%mKq?PbKYPnP+|Ihe}-wVK|BW5_?|>La>{ys7Rv*SSn{ZV~xUGSy|}Dy{6j z&PgVA2fb|$7@MU|!LOi|hp+Y<*D{8|?7e@AMw@>5SpZG5FqUa!c zya;_a0rI)Q!7kEOM!FPE`E4xHc~Bd7;|L?`y7z7Pc8@6P?Vt?h@0=+Ms~0=fJ&e*Ae--yT$U3tU@Hp<|>M{UaCAPoQ+D{|K{f!uGFT z%A|v~B)5y4C15Nln7>I*?^I)f_V5wHNQcH)%I7=yV}FgpM*UE>pS4R6&`A4PPA7ogS9@){ayS{D40sO6_K1&Bt$NDF2o*p+Sxa5BaL#>!yRRqTl2^ z=M!#4u3CJ5?9TCI!v&X8sMhvpCnl2Kx2Urpa`t_=OM5ttI`^tLl(xjr`;Hu;FOH=z z{*e62p8uRSqceK4Z#3;ZBzNxmy^lBB-g9*{z4P!wThDj$e2{b|sYSACFfXvuEjaW=~}qZpY-W zU^`jBStOtLf%-vEV(PCu-VP?RtLIB4gx){kMI$X=>N8+ zht{rYde}P{yUlafG_^E&tL+;LSURh<8&}J#mNXpajBn=@v2WVmvQAMV7m_jB&tR&@ zOefdKUPk-8ywCF7wLdL$ivL3H!!;?x%)lSxN`83O&1BphD$l*qxvMc2;;(f-88;nt zsj+r?N=`y%q=h_p$ydlE_$P~b@i#m7HT{&&2?}kB_OHR4!FCW4Pa|i-&*UB+{KZ>& zz{1FzfJWYgcZ-oLQ8>wuDBKe3KUrfjo^avjTa3>I6^{O?GOH>9CBM~6I&THjpzKe9 zh-{jB@9zc=LrX4VKlpxd4>%dD1IK|0XRmetyP(S*UZ(t&KFO6Redj@(t|(Wc^qs=r z9iY~sr-3O@@kuU(x~Lin-U60_9{>YT@m!z=6pz-2u`>73gXTVZmET$HReonc#nTPm z2}%w`{8Hd_Q0uRXcLm76Z0?<}2B$(-=?}aKf@GZy2g zLB*r{UcmTCQ1KiC<-ZG*|HBsJl24KUPK)vVph*{~c8~(q4zw?#b|5(vl}{Zw8LR+R z59OfJRSGJe03^xD%PekxcAT|r>}2J0bAV=wG>*x@kc zu+d?{VTD7$ghNIk){Yd&o>&{tp4b~a)3NhBJBtq?`O#6lpXcS`6w)3Si+lNfcu?0M zTn8QEd1laAp7uidqeG5yW&GhGU6G69!*U+SN1Q;K6GqxI64d)(1~P9qWhaYuj4@!#m^Pr2|u zzBSP^MoKY7`*D9V{0!~<`~cpf=hNwB{)vCl{yp}) z{1)xs3vYP;#3S=nM>o3g>!9(TF>@fo^v4JnrvDV5VfxO9f60f1-FHW5^~bRL-4XY# z5&9F6^j#mJ*GBx0kI;J}{-;Ff_ecD{6rp!U(pwz~|GtR(BN6(+2>oKD{5D4D6%pFW zmtkv7DiZ&y2><)>hE>MA8_Ca85%+r|{1`iO!uLh^zZ&7kl?!&Z$Su3ty=vH|v!w1O zXC{_&8dkULu*>bu>sRr+U;wk-B}Q|!1(l&@H*8+Dc9z*FTK{Oq)=y1!KLZm;6RURV z6n-uX@3}UHhhZT<=Efp3v2}A$AJ8-P!F6Lq$Sr>=8(Ls?C6MpOm(9Wj_bs=3YnfY{ zO+r4hsBUpx!}7XiOCP+?x;s|O7u>s;Kv_FeE}5cp&dZsiXY3YytZs?yb1YpZvlHt4 zROfl|i8k2@hrE;h5Ei(X{J?uiw0G?bcO~ZRGCnoXp!j6PG~KEUb;abtHM; zN0x;)UVJ9a-b;Ri$?}@x0;$9)qFI!Brd{NHYvmV0o|l{^uz8OEO7qqk|K*?+T=p}T1MQFK{Dd(|6h`M!O!`Kdd9AE+SZdzHeAii$ zi9yVgF??H@Z)eHyQoqv(u22-4lQ zn%~f6#NW2i{f0JvWS`Lb9qUDg+t9}$V{e=(vDfrt((C17+KUnscj`ytGt}-3b_y)@NK>3R1 z*S`;<_WjZS(fs?1H(Czf-|xF0ZQjCRf9b*#D~Dvz)a%Jr2ozx+#R?Y zl|(^^+}iA@ZELoz4>@jXVX_}IwID9G%K6|USQ{ob@V0fiq}kfAPV$sv*w2)S4!=6X zZcKmf{{7dV`_uu#&v5Q_AVX!|FtvMt@V*`N7r)jqWcqXOw9fsycMag)J%Ibk0o>0F z;C_Ap_X`8KUmn0+>&7zum5;0C&Gn)*pW_v(=w_%>evs2XJ3GfO{kE%+Ztb z2gd6_J~7NWP%yp(nop3V(gDWjgWBg&y1{rg_yFtNGeD;MN#z%eSAzbWsO(ivvY!AZ z@n3G~q{>(JTE}M%t!lWlSG~wyokHPNkD_})#di^;vm{mjVEheG@%1=+wHw)|LB)60 z*{i+D{xqogPC5IN&i=TgyB&QDRD4H4-pxt%2QYpZRD6e=z50>t_k)VB!`bh1_U)kJ z+w1JxoPDdKcRM--D!wN`vYy;wG2RG1h6iy25Z5OfJ?whV5P%Sumbu5g{k!Rfb9E?IN`7pWdCqP8~9PM z6=WZ8#5(Xguo0w;M8CFy*k(VZvdB z!@yyhbntU?6AmjJ0wx^ifY<>W&MD*a2}6pea!xl{JEUmG6YOBcTG=gY zi|ysP&z!FAj2+^4SL`Uy?$~jj_Pq6(*jav`kM;1p5WC3pax7KEsoA1EJoj=EoBg(; z{X7p99p-to=oruAoX2L5&790WTa>0eWG2uL!uw@=$ei}K)`2o(cNcJAMF?*4u8m~%f&x@0cl zFPz@*Vkf%8@zcJt((l)+R?9#1w_JW|9sL)Mjyw7VNB@#P(R6B= zll;rS#w(dGIrrak{$ImR?(NR~QRlAn#4_K+P42zU{WI8^_{o>dZ#(}#a{ixm^iLe! z?C764`jd_x?9zw)l;PLo_}y35gzyYRamjjV!k?{xIvIev3N znKBpN&%d;vDt?!(v)%!Qu5kYEasD+9%6!%Nx0HEj8vj$B#s5uS#ZT`~nde=2wF8-< z&b`f&0kUnzzs7ADopV)q#(HB;IrlS;zQwukb2RdH#=oDBs^2+Q#z*vA;@c7TKZ(#2 z$zM494NjCWDDwsvJ@cKDVry)VNp)Mhg73+mVlUih)P#bIBevaqS06Lux6Jz@R=ptU-bSch2Gfn*B9X@2+b-e>SW7?knxrvbJUqpheH0@p`gz*9v}M z_@)VZ%&)?aPTmhPt!~iww5A{WXZSbfYWHiWx&Y#*pZe}J`-uhiYad~gyQN|K#?P+b zxTc{YS>vKIQ0e%jT)GaEP9?Pie(v4wlV<$S;;DDGwdBjm?T3ms?{XGJ_+AS(lc|wd z4&!$%|1$EUfALjXhw^`|#@`=#p7UVbS9CB)1kXG>CbjJI$kM}$dsV!g{|okR@X&ps z&%QZv?l*=6FEw!nXBGaZx-jAM5rz2gg#YB=^9A|$=fCJ0{V%)*|C6c*PLIl^PHSB1YNyy^w#;M?AZz*kIGKrE4Zhwl=~(pKE~M+ zROFWGOb2I3VzIM;V|W}(P6@2g+suE z)BHWWei0MRzaKvz#Gk%re7W7_XkSi8ag%!m|1zw389L$UWzOBV3$0(sf1^BO4)8C! zTLk7M=iX+?;1)+a(i{dd;jx!V^Do-hyX1{U&j4kv=eP4}=zodOT0aQ8e?H>=y@>nQ zBkl?t4!=G^ebOd~6gZ8-4i_*}tBm2?NuY;etaX5a435hO{$oGpmN-w53 zX@X2V5}%Vz|9&$r-Ya1cF?6g+4$^Sz(J;_##P4|DGQqX-b(z_;A4*R9^Vxux*DPRm0l z)KDw<$7o*X*Hnx}P5M z6Z?_;CkQteR3Q1=0nK|LI77ju$a{F+s5;TV;?es^bH{5nniur#D&{iujx~-J^yY%15JyxvgcKytqvF_!J^;?{=e$(B3^$v5-Gc&3+gzxIyMn>gbrD{0HJgm9Y zV*O?M9{saQ^A=$m)cox@sQK1mhnh$59aq&3(pRh6Kv*QTuLH(gLH?4O=kXU$@t_@; z^KA0J4qE=#Sd2G<{F!}tFusC^{MUk--&KI@%bD|T!V+hHhJ0$Cc@$K7IzjR80L5SH z$4XB-NDyJsZas=xWAmIjAI0Ot`QarVCy5C5% zN7K$1^%S90maQ)ijTN_X1Z{V5YjH_&YssDx4V%V12D9*d^0%dFkKO$H%0tE7@^hS!{P6bgm=d^%z22V8`rml57k8bT>eRds1HBM(_Ba$)hOZ8 zF`dl08bVlQUfE?>w~EUQ&#h2pkDsjFx^+`_rWuYcSC`d8P3u`p4e8m^bWw>Yppi^Y zoL0)XEVJij+}RX=5Ju{}Hg3}q5})AE5^3EhYZo(bHD@ANyWh?M415+)uH`1LN;nfe zvmlpI4rOO-*SZcjXXcg8O`yT=J<j4nNJGb}*Pa);TN(ny)d}(S2+t zkLBPJ29!DAQ5O3~GN>rJTK;8xS;~&FRPrg;Z2Df*Tx}@t;_G-P598fDoOd+yw8uxF z>!|n{fB(DmLh1f@-7VTVCh;6&c-u7QZ~8w_JifQDujl}Gu#W!8lO@xB!o2LCxVB{d zY~B6*#qrPc`}Wuu#`l3kgPqIf#eQS_#2ELu$6Cj~!hOhR`TsxpC-HmvZ{t6s3+fzt zjAY-)948inGmUs>w-PNy=_Ve;Pg?S(I8mo84>W?{tzl-oPdat7I3$p7XN*@}gmnJaB8&Cc44lYxg zQ=@{qeM18Do>>3r$KLSI@D{B+tBf?yduPLtY3JUwYn&$U%=`Sj(WLo?`&^pGP{uYb z72H!FE~gZE%}ML!zAo`kqqiiSws71EAC6mT(Y@4O=SgndWyEd24HCnHu4uj3;KzEi;VjVeueb?%HQrk=|wB_4KTa^FUhO6_R zM(^4Wjou{ba2l6gLoNxbU!jft0is#wXv;qR3EC_7z7U7ixfRfcgTb~9@8tVLb;5s6 z|BH=EEn}Q1E97>LZztI|(l?t%WcA(zR&UVWH1|9EGL%2HfiNw9oyGZg^ger?z7-y1 z9QrWhQIc`#0mi5M`Bqqp4kr7ppnBv}w(Lz%?a}LZyU6cq`stg*{T9E!jR=n7HhP3^ z4lbcD%H&^m>WgVpeq&Af$*xCsluueCXx?w|E_DQ>TWDpeG2S9V+x@7EYppQm4@`A$-t=V(uAGfofFvcaxQZTiL@T=I6` z>^~+QK7HSCzYCRT$6I}-ZVTyQdW-MvxB1@wnbT>eewWsM4{2AQOVGy7m@-lsm($N| zyG_xSY}=E)^io;fO5Nn|H2zb3KPTvC{+pc_TD9t_Kb=aH%cV5oy#J1W@0%?iO2^mb zMp*sM>gdYX(|3;Wem_KhwcnAzj^AZwU7|SlQdH-m*Jo8qS@%qdO*?m2c6>ASHYH2j zF=xRv+kZ6P**u5y)JK1_Yap?g-g!7i+byCE7t@wYc&83x{UgTr{$O-y4a&LWTRIn2 z-s2f>zUJC&Bl&Km{E->j(m9&G7W?XWjor*O>a=E{_guJ*yhc4({c3i+QeAe#i}^vB zZzraHDU(LZ*7uo4#)%5v4|+E!Zn*`N-;<`?Eic+T`%sI?M-BN|M7|c%C(((vYvBA| zVr|FXX+DU%%D`832xGO-Ou|uSVMCoBS(2<&|=#-B~x^|9hApFx|?8A^$HctnfU$?`$>f1?`mRttgv-p=1K-`%;XEmv z+|)OezfM!mYDcA}TsjJrLt~`O#UolKx%;2F<<1`L%k(o-|J}btxnJ$NRZI48)N1r2 zx2)x(dKQTe8|lMhj^~#dGETCWN%PNpJJ0zsRk z@i#j6PS_NRztny2^_RXCxZlRQ)_jnTR5cx}1TVsOD%b;#2Ty{?`&S(Xr59?iqj!K) zpjU!q)!f^t^+4UnC}du0_#X$wzY7%qJs?q4wSeN^2#S9#DE`wy#jkr8?*xZC_Y2fl z1@u`^_NTzf;6CsJ;BIg%I2EkouN)MAE#`^;8?=YpLG35p0k(sRF9Fhisw%;|z;ci} zsX9;lQaa9nH-U#7-2sa4UQm2@gW|Ks(Mjp+@PRVAqWRe)2;#{`S@WuV&SSrR<~lpZ;(jQ%*a3-*3YyVwgd zo>lDt3177tRQr%zzWnRFi~LuDYDYS+Apa$x_?{+HhCitAT1QuS-VerpA1FRrCl{Y) zP<*uh4T~h-gu=Mi!TC!{PJ%ykE=}dc_kan1k#T{sxGD{@K2ycq*yz*i0##4@LDkbf zP<-1h#`l8%AA9cuXJvKY`9JfAVFnNp2Slaeq9md+25^)y;r_h*Q`CtPBnh_InGw)I z{=;Cf+IUggokY?O3E9w;-3$rsZ(vEw{)%1Pvdx&#mTuWDQM*f9cQXhvla}scL>&xv ze(%pY-*fMCpShQTY+n1?*X#E?uX~@*^F9BcbIx;~bH3+$zDMzPcua2t74J+??WDou zqgkJBRkLBnFl87S_TZn}s&2zh!>nPmVa70J2)J;S6%8{p9Cuf?i|rK$AURv+TJzxqIRb@|!qb6k6>PgiruTupn;wwmhl!^66V zRhOR|);FxO;`QM=zE4R-Ln{mU?=O;R@z(<%F6dv|>Ago+;wFB5_>N67I()bOhDwZw z|IecN2R_`-NK-uT@ExNKI6CzEyz7n*->EMVzx;>q((jsk_|BW!Ga?b+-zUPaPdtzMnRxgM3IEFy@uw5< z&q;*;!-W6a6Yggd@xPLwpGwd_N`zNlDuy#D?t2io|-4#9^FX-*{xX5o|$<@)q}H z>Y+>%m2=50`8e60WhYd^rtjaT=9*Yc{Q7g(|*8KNDNGe>aH{TtSfmZkFNnn+Aitv^xf3Jr!n1@t<}HJMG)vJt#LLRgs)^;Oh%^^+ zY)#S{5vtqTq*roQaF|UHlS>F<6_d9L;ifBXH{n;FhOhf0 z)==axb)|TJp3jTl`fHweu7LCyYpxCVn4QQ?C{UPKl&((He%e=~>q90$-IgI%pTg`zy+kS14!gp@KDtO4cHVuqIK(+R9M) z*=5_+ABFW5oz?TM^+!LWKYE{czyHeUyz-#6hb;W(lS|d!)ff47@KaZ2&fmzIi{u>o zo{07?zd`QTa=O!!rPS!1Us9Xs*i~dG&>pqm#o7eeghG#@G8ra58j?0(H zZaeF0SP8#dV&{Xr604W+KIPZO?xjrbp={<+Msq2vIjo(|hM!-ald}wMI{scyw7fP` z?D0QGjT_xDgR5Jfer$Q_ z^BdN#c_MFVV%O>-dxKl!DG)3-BJs;g-{BqgLq}-L!Lc)l@B{P)@<#vF( z_Fb<}i-qUiR@`-?K=G9{Xb?Z{Ec{3D;ZB2CUGzK*@o&5E#~7fF z_UgiSSon4eztv+}d{VO7_^ijY_@xTJ3{-mJlPbN%9@Cs5<@_)3m~I5+e=ex}ihrv3 z8q8gM)ElrL4>EMAJ45-5244pm!qja8Y5#TNhw3@S|5Up3L4q{S^_b3pig%{RwD_V* zSA0*UYkbZ|@j3CAt_Bq!>!vQgv!LQT<1sBhsN!Rd*ZJ=O6(2G`F26@W@!vZ^<$JE- zB#?KgG37BWeuTn}1C@_zQ1MoJO!whg{?B<#8$Y4(47Bpu3o3jM$T!)Yw?Wn$HMRrO z2SK88=Wc-R+zpjaC-(drcX>?j1Qm}ylFG+cQ2EGuOfLq-A8iCxE;B*JQxEcMoa!+> z1ynfkU6nua;}q`*@7`GLFpZ4cf&3a(G4Up~XjnF5c2^qF->K%5%8J*M}A3f~DTzIM>9Ux13I4ZI#~1t)?TP<--E zka()HhRucye71TqOWKwERrP zS?&*19^}5OazEEYLk@E)hd-xd*N{%`vqQFWJvXF}>zN^Expr3Vf$_Vws-5eZp=Whw z$IxD`+p0TY{~oD6%Jpz{H`hbM4iDp`k6~|cJwEJpu3Lw<4@Y;=uq@a7=^lE5D01g? z@W8=5!oB#oVZOB(2hpFVbCLNP_oCa3-edG~qyH2?a{r>yl&Pcl82zu!e~4dtLc}NT zHup}_cYI%7Dw%Kb7ajV0wFA+if9BTFp+BEy?&13}$J_yD9w9x238oApPQRR>*C+hz zy^Qw3O)|_gm92CSOx20_; zN)3gZe6F~z5r$_2_>qZpIH1{%_;4q2CtSr`g&h7=GJ0-anaM-cy-C z|GfOR%@&X1b5YZe^8LMRep`q~>p(Ki^wDu++0I!F#&0`h`D(Thoy4ao50F2Lx**Ew zxbfZg&!7=<;@p9wgbVJ%9%#m^ZV;?*M4aEocv53ZmrgavIQFtlF&Rzq)81$PD!Dcy zbaU5k=B~}iHMQ70v>U$FK|7N;$ojSFjLRz|Cspla<`lLWyDS;Jp$y{SnV;b@vP=m8pkT!AyDBC_{19bdrWtM3b)5&x)W5m%^*BAH;&ajXbH6D zYx6-^((XJu+I(FKTJy{dNIX@dg@8ju2+9s1aVTv|9YbVXM$Wnv$=mATf24cPbBDHP0*(jw8}9a z{=X#XpC;%pBxr?=hyQMZE;yygXlhz(#P1br(1d1N@W@wg)ibO^+7`TAF5PiT)0z@zNcn@G82V@tuJD*A_jT5KR#*qi zt!+_6m%YAqd&BgG(%)NF(0)Pt-@5f7z=ZE@pnu-)ZPt2}@V)IKBKOU_%=N7h&$B*z zQLD{|j2zJM4EDWsA3OqgTLittr|)b#orOhR(3cJNy*)&@R>CWg`oa{Q&m^#!PHQuk z@$W5Gu0K^e`X=jtxkl?-#m;=sA`|`&-`#WYkEM^`JtwbU1#fxizBl2;YcCmT?a1g` z3Ge+R`)z*AI?`M4iY14yGs;i#ozlJ}s*dhCyU_9YZ;D>t`|VkK_o27oC*O|t{sS`Y zipR;qyLhrM^O$a}<=gfxq`!ytFz}mLX70^k3;#0Kal&_z?;&Si>lDz-~Hc@*c(vJ-cR-hP(S_s>GtZYiV;lN`+#pAHgL}nlI8$2e^+?XOEfeVSsysxtEH6s)Z;OUUJYfrQFxy zuJNYU2Q)4fzhC@a`Xk4$6`!9^isSQxMfv>VSD(Ni-;X-ULDPpd9`l$!3@ZLMP<&g- zIcvN-0=xl~yy1wA<*zMt2%5zC8XO?EuB6=KG@Wn>+tn{9^IlDPJewTuu7o zvx8~z*JXc!Oi@3LeIC8G^X;u0h8)pNRi$*i%G}?H--J z5b>wQFBiXB{Bf-ZEC#hcpm__A>dxr^-MJci-f`ILd0wY(RNmbn9g~|^kY#s%1?bMN zz^j{IfNp-F^6tdH%6lg$_Z=S7TS1k##x~>4AMRCI?_Skxm@!Nl0*VK&wO0<}wd`xI zQCYFGd>8ujy{`Pqid{oGhwOpVy{EDZo_Jryg&gIIa0>oc^Xz^j__4t{dvf+(lUjlZ|#%b4I# zPbOT0xyzsC$@=yz!0Q4cj?b4vS*l;sW8B35a?ORc|DHKT@qO*mBOtwf=Zs&?7;N8c z_^sN%|1hXM&x|ACE&F*~^N^^12J`3M^2}YmPCr0?Z#Vhc(OntcA-S+S;SayhnEsDS z%!4P!^xI90>4=G#C-EI)5BIoz#sglcc(0MH8TuU<=XAX91R=1y}YcGuN~p%&=Xpt^*tJlrG3zxSxG1k67e+uY+yX4>Pqp1 zG*jd)E;AZ*NnBX_=Uq;B2E2s}Ys=_o%Hd&Dz{{wFr-AN_XOQzm--P62&&6arwKf*Y zU+>b&QT|;T=AKD>7BAbGLcTotP7S+K`c?|xshlo#WIL-(mwMUAXwi7&arIv8HeKtq z6YqW%YiL(Qi>@!aFHmp=99| zmiOqOe=qZTjk;YO`{!`s&-cId0MCbBC*)@HdCC$mdY+tJ$j3kZtbfsj=JNG?XckRa zRlfe@`}zLCzx!TJ*y;Er51sw}U++f0Og-`c%lCYK(KnORL#6e%pl?a}YJRu>rJM14 z$Gg(4 z{GY^c@aOs`Xy1oK+aH_Y*9;GzMbDJQrS{KMs8(%__p4TPk{9~H6SLusA(w4D(M#mT zXv~vi#;j}EuyHvB9gO4_i}6WhFC!jyF?Y!=P0@T9WJplg0rGr}+dQVT;4Rp%0;|Er zU>(1ip!frlb4r0Dz)^An#jiNV&FeKEWE@gA8PxM=-?`{&@HS9#mZE6~&Ru*K(cPfj z_kiL<>@xQb!z?KN&N>jjUR^UNKFnf}B5jo17MRwUN9ES&F+CroAE=uGDxL8lL!`P| z@K&%IWT;ekhQKagpz?9V=!2mA?+4|-6O{k0=Kd_G=Uig+B2fGt$!|@DPcq-*qtzf| zF}Gh`?&9ajUHlyI(X*iJdq9fH?O*>GxF7nX;0};}xQ_9MtA{pF^&o!D^~BTc@zDil zKNp;Y`y^25jyGEC!n_Q1J+wu>5AIx2ilFfrG??x-`z}!Byc1M8>qEsOG;Z^lZU>2~ zajVC47F0R6f{J%Ocq5ns@keX)h$LZI2P?n+bVQwh$VT$=(`-2xC#JgmXyq}uGOt&i z5YMIRIM;1gbdZ7j$XuM?Qck4ehlKI@F{5kv0Lf(JANR3FyXV1Acn?2e?jbyiwj6&X zjL-iRzv5>E^C5A?$mrSx{WKoq?lll`x;a5VpP+TFK-|C1DTvb#CgLBKNdFHKv^vLl z_~gFlx`g}b1id~%|I0-BYM14LyPB3q?5Plqt8TQ;n;XxW9_ww6u5vWUe|bSJeHM?pph+aB#l2LpL<-o7Bo z(i@`1Vsf?Sc}xYujIK@-$JTjoiR^ky$BcS-(X2TSG(B{WKQtrnJF$y8_MlB`VuxPD z?RBJ~b9-p^{Y}VlOpkkf3eMW&PZw;dwwAGOhHdoERe#RG@3wYQD0a9W74(@!_rL~o zA|O7~e(N)`B4IByF9BPhorU}jl+7$Dmsx`EHEmk`4A1x~whwysrnXhT7{1qJKE^WQ zQ^^EcpDq3ACY-s{eb8?(NRm-}bUD!|1{E_E_vP}vES^7CWSAoi?&3yq$IW1TuPz2J zGFf}h4xU@jc9y~G2+iTu=g)Y|EE#bn_+ATA$aLB>%AW?Wp9V(VgsyhRu8etd z`=A-$YK-f6Uh;bv|I0Pi%rbIh)ra!{n(KW~-G9;Ugds7shp9S6xE&?^r-w0Ma9+J-9noXLs zm=Ay7=E>0y3iIH39WA88^X=$yGAz-)iio)rb1LJ3z3SYUKM5z)maTtIV6YR{4(DQX@~WH+4I-1Ft=xUmhHi9hJW!&s!$$Af!}oMM%v4%M0=TF&)#0XewNcw z>)VFfd*}Dde^3Tb3thDf-7}W;-T8Oy5q*;|Nw@3={WCsb5AOTOLCLSmF#6)`y}OA+ zwD#SKC)ESrvd7YNapETXEII@}V6U|70>4UO!hO?Fc&XP#i#Ebb_?7bLrEg4xrwY$a z>5TuU*?W6JC4r(7&p&%)!uvb z?6T+f6f$MYDAOOISNJXV9XF$|*~y8Ses1Q6p-l~JSL5^hieG{6+D3g`Puh!VWArbz zKO#N9&p)5mX_t=Y0cJ)-_1Ezp&%^J};KNe(E|1AD#q#%D6})J8)he4%PJAyMkF)HC z?7}CAv$-}W=k4UbRCZwxw)jI?`Y!cHe8&#f@IKuQk8KO>u9tC(EqjX)VHJUr;!(p*LUn&#hwhc1uw4%Pp4>|pS&qwH(RKi2K*I^H}M_Z(aBmy ztIC=_{!PoL^7amWOONG~^@Ejq#z3DW&(a^Svj{@@_gwSM>$+Zew2!e$?%apF%c}pe z$Hor!yanxa%gwPo(+`(XckqacKHscc^L}^7+8+HSvW^4OZGo5m;WPJ9_wyMK-HUFG zylw;XQjm|9TZ+dW%KXRHmin5ih^w$Y={&NaA3ffN3dRR7jPHA#@0H5nEy`{J`ns#5 zEepq$?L?-t%C%v&b6@{nhq}%SlYho&^{1$p(+?N6k7PZ{U#=c+^zF@s=bd_!^9N26 zM~E*)nN2KF&bx2Rm&GfTGnG-aKDK;3?@#qns@^6}&HFn!px%}YXfG%EcE;O%FUOj*6n=%d5XR?j4w4l#t&ma$#$1fr{%O0^j$xL4)zMIA9)?* z@7g-G#<~&jvEuz^RpgNV`+O(;d;hR#J+eWI?R>ivqbQVZEZ9q`Uyv+oAZL6P5`gs;}Pdq{M?o3$goXJgBvmyvZkD81PJ zS^W2RREc`oeS3Bx3D>r3+%$%|C;l+*(%P5KnNvCuYse>QCt<8{j&wtRt#s8_e~WfP zSogi^;d`WZ^WigdDXTe@*=*L{SR0{l)_h0#=U?z%P2^mQp(XP9%ANUkk=zrece+$M zgPk3C&h)!z+#b%RkuLd@!z0dnNQ~P#Td*IUILu)WzRQ@CMQ6&{e``a&wQeZ4MQ(l4 zuWg^ljy}=7!(+?7$~)}sy$riwd-vn8{95=|IWI)x(+s#o^6f*Tm-~lCt}VItMfv%0 zs@kj{>!{6YpMc61*?@&@tY`l+{}g}4|1SNr)=d5R3OZx(`h9b4+~mI*zODHBysn@= zFHqm9kx_k?F_hxZs!f1jeKOkHrF)I}Ux>DAFN5s$@8!I|@`+k|^JSDBt@85EsP7nM z*70N7^r=(ySIEq}yzxzZb0|8BOeR5T_ApL(a|V49{uFOFcGUT+jHh0`gXf%HqRs4{ znQt>1vxc^-uqq#|butcd@u+`mi|O}Lz0OYi@ES*V)@c5febtwBZT=l$EK!H7h3e-5 z^|O<{-=4pqZSTH2mX}z+rhMo)dAn0-R|2npZ<;U0%OI{uU*=@ujBc#?mPQav*t{boFJRn9$UHW@#$iL zx2z6Yh+gLng_lb9^v4Xx)x^5lfAQMvX>B>xBFUxOZYHQ!0M(i_areOecu5a>;mnv;jt8fOEkva3Z+NyEpFi znBEL3-d0fYHiL?HiO2L}Q1LGEn3jB{;?+5XtiRVy0%=lp)gW!BvC?Du0*mNVus;h* z4xoNT-sPr~_Ot*oGXBGG< z5dM^_$9nJHIMrji7L@#mD&bo243TEQ)8O5p^u((?w}Df@W#9v#&g*ETJQ_Scs&hM3 z9^*lkM=dxEFQYuBM}W$o^umMbN>KSbhbPxALHXBtANUp#1Lv)!uf1_k+)ZYIlo3J=aW7&ov2Deb<6|u2CKzJ%J~^SI0p; zUpJ`q4}pAh8+D!tm_7h1{rw)(U7*sJo_xiZ_4ugH8&N#VK*h5JR6L74rWb*VN9T}$ z=|)iTG=TCy6_kISPoi`ugYvI)O5{HU%Kv!q0Z`|bDE(@WkM1l#hd> zKz&F0s(iU?zxBtUd%#MfmOKlXJ^|{vUiX+j4(hp%g0n!Kv!Zz0L517u(aD)9+_TVN zdNZhSjIrD~7xTf}p{Ib1)tgbO)&VkldQeLvm|my;1UrV7d)dd93r8UIk9VpXA!)Uvh2ozrbT! z<2U)2d>fda3(9{zsQQz7D`g-u8f>1YZZ0 z-(%oC-~mwXU7+4;!nks6_VHC^3{!?mgkMz;{)F9zorYP%X2XnO$`Ekj(CX**D()!X z$&N)y#-U@6L(VJF=69|F?E~eFY2S-*` zbX~ds$^%!jM{?AKQKT~J+$auLAH8jK$7r;;j6T41&*(0$Cq}=)_4w%5M^{#4uikof z`_&v5bM+yv`>#H5b!A0I?T*@=wd7;Wkul_B%wev*W6p5x8FQLz$JiZX(E>Ae+t|vA zLt_t*?S?uq?%+7|6JERZTGAhPf%|RObzDcDuWRSpb=`iho!9NTj$B^9|M~;hEZhNM^13vIbqiXQkrmvYtMw!6DljZQ%6!qQ-n|L=el)b`$V2UmF0SPVmH@= z6Ay9in|Oii*@@@4cHXe(24cEl*A3Lb4d-s?0}tMK=*Gi0s>Y(|cX{dKa*3a%@+Ef| zV(u-94|=81H3XCYFz@&$^Zx~Nf18&{{%=i`2gUpn@yorHaih%R<{svK|DES`>G3g)VPjnhdv z%gv6ZH2I^l<7Up8pdG_s=ErUzu>fA>sbjguA{Q@%W!fJm2>c<#{v_ z-%AO1eedG&4N18FBoY3agu570@$el9`p$&^-3fQ*7zN?~F44ZGC!TL=!hcdO^_fKZ zuSxiSGU2{0K}%m&{CR$wpf&!8yX!tqe>LI0Cqe&l!hh7Xdim<5>o{L1#?^XaEs~p( zBSlOva_p<7`-0}Fg|i-<+w|DeZOhRFiBzgF$#NTp*#PV8#q%n%L)o1TG^_F6hvG^z z?=y8&UR%{{@$391=D7MQ#W#1>qFG+()d|D8Ly2JQEno8#;-Dtc*tR);RFEDaCkpGC zaXw;c!t#v4Jndu{LsnqZnXasd;u<}jwI2D7z)Q?~3_;0Isr}X_3aS!cz0PMD0nF(e z*W^mSfYGSpm*x&#ZPmx23TxB^$sb0?3Z=rVbyLsVT zo|HCGTojkG*Mm5%U~yT{Rm;~r(WXO=5Q$~8cJb}u=E$R&+EACBi)sw@8^4>{o?d4= z!4=r+O?m8TzZ*Q)0KLF$tl@c!La|)OsP%2Z1Z-o?(A$J(*sz>5t=Z=qrT5|8qDH0bOUYdf9Z@ISVy*8oC$X4K3ff zgeK0=tg)Fv;K?BCNk4?dQNEeph5T`T3hrs;REb>9mwTQ%#U3*O8U z1(WboDA?>Jp?%*+gj4OU_7=)^;cGtCq14FcNuzD_K_?#TwpK$YE7(e-k+`9;rZv zw&z;y{q%ZltC6=j%DTK?-@aaZoi*dw(R^K0-``)kxBte-t$oW*>*pE5>RvJ++3WM` z_-^m~Rna2pyL<1ovb|ad4tmwJ9v|8Mc&+JcZ~QB)0R~x7t;csFBl@3MgS>ksGQI5a zm7Dephy2J-?`UMm#vz9-nM3|3A1>SeCUOy{ZZF$@`bNogdKtC3*JnP+T!VhRCx+a7 z{?*xg-$y1PtPeZcjB54}lTXUNc9+}R@7Inw6LjVMZaw%qCmW#nwEo|})XT_f@9-A( z^f$9^AM$pJ^>*#omEY{uUKY){FU`yG_Iw=we?(rtN?yNBUSIHe?Y@dN`lZMyBlDr~ zUVh-(oE)NLBAStB+Dbmhv4;Mmicj7A))SeRQR2Y4UC1vXqletcXvsSM*yNa0)s z$PD~f_VO!FO5^j$(|n(`-`*8ZsC{+mxflzCY)c0-Y8WPR@Z zNzze0NJb^d0;*izdu`UV#tE_3$$ldrf-?=sO^2Vy@svz?rIk(~e zvwu++vNKmBx2=5Xo{gpFdyw@BvKF#$My^M467aVUp87sz_m0UsSf1o3gN$d8rFgT# z%MZ(5GRAM-jr;@QM8hB?Z$6*-{CT+>wpDa&L`EatZsX6DqP@U>s&(-sYcGN;2VW)%@5?AUueK_hX-sXXUzLA& zj?lgbdyZoHZ;9#cm{ln6QCy}SIjj$#`855^0{WYW=yx8Z|M?VqxEqlnt90x6p`1^c zoB?~ge^6SFfIlBfa((a7FS#~62lv9dc4ko z^FbzhH*%X5^l|E^UcjwX+l6mDFd3un~Q}%7Ay<<)xjt;3vHNH2>QP z>&iNmIqyrc{rZ=;SKp0Ga*`KJ|C|y;(#aXE2f*j$T4-c1bApD>Cv<@O5?+jJ;R`PU zwcgYK@-21y?zKKA`3KQj_u$>A)A|PeTwOOf9@Kt(+3x|x|8E2NWV>|_trIUW_xa|o zbq)C&XZ}WjTIW1V&J<5CD0i)EOarx^aWmKoPKW=#%%eM3p67A;5=Vj=>=_=obCf`L zjuHcpg7f96%epD}8w;ikweCUut44WzbcESgf|Tbfl^FOa?aHmAoB$aQ)Ex$u?m>`W z;{lK9{h-qA@|YH%LFu-G@}C9yHENxNUwSha`ET=>mRNC~R2FhFf=wNnpBRaf~$jdr@ch=<~ijK*hvipwF zs&CQ3{T|W$yUqPD{^R^-b?~v|qIrak)AJMVUrNwlPWb-X%>6yp~A+a|!o`1pRt~?nuzzOVD>D;(s>rJhch;riA;A3HMbA_f-k^YKL}VC(2pkKTbgj! zdmIm+TtDC&T;T3mM+1*%Z$OKF?tI0-@~{)Fi=MLX7)k}qNn@YR%d<2GvOMQa&$|wc z0k%Zc)UxUcaSank1vndHhlKBPoSouXNx>yNfU&^_Y8G%$mbZ@U4iK}&v<8T?CBC8< zq_OS(PGx{&=;c|Wap#L1zwVydoq^=DRuHeL5r9`Y=e`B==PfM3uZ$&ShpWeI@&~1h zUl`)a@eE5Gls?-kE$|*CHd@Gy3>6n+G!|68x6c)dMdWKGXaLAt2Gs$1uH*oQWf8ul zRey+%CUIHH1dhfVK%B2unvHh3{Ih9Or`D&ODW*?gUBj{x z=T218pXgg3rTAkQb4I=HuJ|QookzQ2pvC9WpYFq%OXZ*Sn198muKDGls3iL)RB+JyG#u3_QVDqbR>ip2Xkk@>4pOYc95T z$e#(}=Zq(rC%#$X_c_Gpf~T1?iI)`4VE!oco44TC{Mh&aCHKEnl(DC=j5#iP1)gEg z()T0e;dKrL`-5U>y&Ibw`n2-dzn`L zl-~gNqu66vw+Cb@Qnw4FUAS|BWZz)+jG>)<3Zx0SrXySl9Utd?Ry38?1IjSgb>p;< z4>jlbxGnkJMHW`^=gg7>9ln!AzKY2s>~ianxo>C)ykOydpKW>o{W+jcUAD+p#VK6{AgAqyb+y|}Sta#n-&J1KjRtc9p1U$T;Xq(xm2WvPCL zIh*EXQ6J&dwiRd`f5~eK4^&6dPM$s952>;1uXKj-XC8am=3@GGbq>pU_Qbr;UYb7k zG^$_Hc`V|wzXZ<;p7XRG&IA!}h=g~f=oe1H0}|g!JXNaZRoQ3RBP{%T&XL!Ccj=dX z6FzU)&;BFAyk+~;#MkOX$8Cz~;wMY^XYcCh0{`$(f6wh@6TjB$j#S)X?^|{Vx*m-0 zGucf;{l2PrK7wDD{)b-AD|znV&mKq9EfC`;hCPR)Exx4R-SAAQI;Ok>_er%>|4tkyti zUT#lm#2(Yf(6{08&R*237est3@_l??(-Eg1rr5KctjRyy$wECM=w}%iN8p`Dw3TA+ z{V(X86ZGKBiMIDY7wuJ=A3npr(HA23olzU3J*b`4UfMpZbq&i+y=K9zMx(X{X?U8- z(&=*b(FI2Gbnssiy+vNm?kv8k?*Zpf`gNWbB*Yd8{ zEyJGv!pY5w-_{6CzvJX(K_@RumK!tJgXx)|_*dgW`j9%46Kfn{?hz=y%^P?YziAt& z_&0-!e;tUIM$H$&bSucOQS!9>(#>2HzvO4-Z-K{jBgn6DzQ?rW>Ev%JsCXxX@;}LA zItB7`a<-t8vz7l55aJ`9qfErFI|GXU)dQ-0#CPFktJ`L%aRp^s*9`KGI(?DihlwVt zs*GXE5ODU$oR)VX6YHg9kC(sB{n7GcT+fuB<$9X4v5^(6?8wQ;c2^#uR)32~2DNYDSTh{<6q;GP78m#(SS3b!AaHL@#T}2oB|-m5f}WCy z&kvy_=CpjeJLGT0Q@L>#G9zvbmN@0vP5KM^fCPh}z|Hw~@w@1QELmZfF(86?f6`Q- z`7jrG>A{~ne8EdN#h46=<#Gj{f@(rL`EY=6(LmNpe(s%rLN6D!fYYlVU!emgOm?U6 z2xBiq!gVS&22Xn0$HRe$ZrC|(M#JrQ)z6rA$MoXoLEL%K^B^{&5bzfx2hyQ|6sFf2 zU7+b>f3ETAe8y)oichcLW;(6MWO13}(-6;Ag~d$Oz%FL&_0HK0HabTBF7vDRjaMc)F_m8y*#^lB1=*G6^630GM{`~SavTRa zkE52ko&5EnBTQlZc?iDjnU~hftr^)R?hkHZ{w#i;?DX$MX6Wk5=)B_3kU!b=y0os| z2Y-|IW8i$s!ghf9dFz<`oGi>+gKUVe|AFz;A}{k2Iw2Wb*M4TKpUb|^d~VD&{=9>~ z0mCyFOH;arWZ%p@SnV;S7vyJ3rTdv{vkT84TNAHe%}o`T%7H=R!EW^Lxwscb$m8YT zY2SAboNw>GzV!1a!(S}jp36=5mo7cs{)%$s9m|n7szC0j68WPce9t(Kqd-U#RV={5qxg()2s#%9OH2 z?&j@m#W#PsZ>?nTg1$k?0P4KqTF0OHvFUS58NWc`oz5c3Sz6h2QYQ=vYSCl!Dx-&5 z`QcyC9(P}~Ts%)Av@PFv-Ah^ALz&E@Z01r%bCAj6tXOopsLl&`1jzN7j@AM`!KLvA z-1ssl&l47omTp+y(zcvoKR0bb%}SvoOoN6MYaTD@$dTy{6hq$Fu&iM0C0DZ#IKZ7@ zn=_NRmKEVQs6&y-@Gs`xCPz%E^tJvjli^=1yyn?58UDrGFUS#7D*j3W$;{_pEWG#y zGNs&in7f{%Somryv1KLPR}JER+}!sNo^f&|P+%kvBvZ;=`?h7K@-LRZ`GdG?|E5fq zz{U7UeT=bX#GWb^|2i>*F{Rvl&0YJOi}AB2S;bBA(O7Ogp=$%~;;W$B%E?_x9|0}9 zPWlLL0;P}OW8iU+z>UW|rjLRo*?7cbx*H@7r?+4Vh`h3sE9(Gh!*$ERkAh3UTfxO( z9lyEY&0xLJ(qk|gT6zd>0=q$_e+X3i2R)__fJ%SA$8;B{^mPu7($9j^K*`-Hp84R% zzzj&0H_r5!mK>hqsrQ(k3M!s)pyH_p70>I`)5k&SA5eUU!H#4DZWlna(_!emmg5!GoZptF9Dct09}4Orl*1mFZn&?r?1lI=Nvc@x(7^wCqU}I zPP{A014@5^s|S#_Th|7{W2##W&H(2cJsFf91{Lm|U=M|({q4uW8^Ob%{C9!3fjbPB zfOkR91ZRR%z#Boy!708p_)2Y=t(H(U6-Exctfde`Xi-T4#CPxwy#veDtY`v;c4@ExtN@Zr1p zx8^^5CvUa%!*?t2b;Eb)-&pwY-TIQ{KYWLN!_o`i)zwCa@BD2RUS%Wm5u-)m3lXP9#Obdm=u^ZWcmMrFe8&CvzK)I^eNk9ol8#`->2s_|-B_5%eh@?GKh>T>An=JmMw1WXop@HOANJ?z? zPBxxmF-_GGQ#xWOzs=ndajD3nhlN{y-2#&n`BTXeSMfybK&PS)8Rn3KRcG**EGo*w zKZW0Bo=C&F7H&Xax?)}H@(p1Fy7_l+lVAObKf99%b?ZiI!QOpf)AjZVsZK}c*OOw+ zQ#J2)fe*~9tB%~>@#N7@18jzMGnc!LRewjr zMfNl2j(3Xw^9TR*&x|Qu7p)7!pUaZ7atkhm3F}ya9*Uj*e14p{R5>f@?UM=XSiNL! ziYzX39V^7+!V>(Dt+y#E89tK*X0UZEC*Y(I_A%=vK0Vv~k;QopjM*=`j@3>$Rj%?e zj{hNO$+XR9VAM_;@pUXdv6}8Uo(9Ds`Gw0i#rVmRr;_ZY&KDMc?rzCbv2O9X^1c~; zzc%6FF~g&)$cmH65g+VZL2d~C+xzUT?Y|*f|0e#2!E0muncF`p8K!Igxu5A-ahaNN z*fU41tsWZvp!&mEuOYLxz5n@W{bQ`f)ZlhCZZ$u7<}3ekcC>wX7TMF&(L-k{YWA(( z68&J#Z#?&%^6{MyerpRl)cD`OCEC8StZe(XEz#R${hR|_R`ZXHc@|9=^6NkCCU3*v z{`IdsdH%WAMpV|ksCerB>DRyV%9E=vWVd{C#Legee-8gGF5K{cY$1Khz4jLT&o7H! zRKEVQ>i!oeygi}e)-joe;UA3}?yrfqH+OT;MyvMJxzwfoae$J~d&J(}8 zvTQ@Mtuu*Vm|WkO{A}67TVOlXWG23N^V>}gd%4$n0OC87hpT93wSj)8qB^E~|LT3u z5A{6W47~bx*{|DMG3J)<-V?2V-aSk9)t|sSy+!3YB>KV4lr{SEw|}>)Y`yGN-l{v6 zPEjkGef7z!GC#cne))IGzVwYJ%dYsV+kPY3{+}uHo-LWi@A3cbA3gJxE2Ar4?5T;q zLwRriYs$T;Y{WmFWbgKOKN`KQ_#U9_Xv(##YKV*Vhy7*SzOkxo#9zILecg~@FMfyg zJGcCB#DnKEUx`|8yKp~s@XfMet`2U-ZCK?4FHTvpvY~NI)UcAWevUIZUZAY2qpMv# z#Lqx*yw^d_(hhB0`(MQ?md<*$^G^1*{*ZHghI4K^=Z`O>O)h+d|2Oz|&Te?|mGW^9 zXpbx}+Ky~Z-;7@5k*hyk@EZGK-)`4A@MY24^RND$>#ixgX85>h-0%q%V^=;vIlMnC z{?2e7J?9ZA4upgbDvb~Nw~p4{*PrnpMmgR0;r!Qn;gQ$SwthkyD~3jQDZZaoRCCV8 z*p>glnp@}h3iI<1_?tf~^Y)FT*UR(Ne0cwBlgq9fUj6IU54ToCceS(LF#n^~x1&?+ zuGXug?N44A-Ia`Y<%c@E`r3Uw$J6X_dWmj__t&qPs4r02+|N1M;r;&{dC%|<&yz*w z5&q57YX4uS{a+2O_OH4>@rCDJyQZM;xF*+kbmRYr^c%<*xwfZ%!1ojPz+;~Wk9{sY z_Brs_3(u~O_Z2@Z(pT*JIs1y#AbrK|i}V$$KlK$|^bs}Duov$xi|!guKfyb8SLi3^ zSU+)&^Tq!i>q;Ly@h3drz%x5$4T)xi^LuEY>t94)0(;##zl8HP`oH;=89ToF)5YBH zEg$>9-JI1moPE))v+sOySXt(-;X^WaJvMRJzWcBGrO{0-73*6lTb(DxTzFAUP3Ep! zwp4t&>8fbjQt0X{GIvcLviXmGa!dJ(Be%8XxaM=Kl4q-@D_*nv+cpD`0npcz1Xm2f2Q4 z_H{nLiZ{hs65pk*u4KJa@3G3PkMe4uy!1ZrEx*Q<*T12jTW8O>XnDPmD6fiGdDYzN z%PUKnhw_SY<>mW z7DrjH{pOQ*HZZ2CRlhx%{(3n5^~$pLZ%i&5{#UDhGur-T`s+^m>gV}?ivIe`H23G}txZmVAHpI=lK|keXG8oIbHF2fq))8&(Tm7HDxmrV1 zUBvTqiat^@%<=CK?zR8B)4R0wM2+*8lD)inmPX0AT*Ju%BYT-8AkRL)UHh114uHkh zZQ3<)z>Fd=jM@R=cN#-e<8hK0;C^Hf_p|1{j_}3u*KG5KQtroaXWU%39~=$t1d#!) z+Xf;ZR+j}C2RZ%TjIrxxnm_65mOts|mcLQvkFDHJe)t5a__{&9eRcbd-bx|U2h>Rq zHqYDG<}tkhoMJE_R`}l z`v$YudI|H3x}y{t<7%geS>dHmK>k*FOgEVO8(7L+>lboA<}uw$xhtOepxo)hd^#S} zJszvN4Lc39hRucd} z9&m1C9|ip!f#T}`d_x=`Kg|1{mOE`V(2_S6Uq8&_e#Wi%@WIUDUUYa5=qDT<+Vu#d z!+Y?Wg%9oWTSkX=c*^L|?*FaPp`CvUnkaLoAwhR1=#B*a5dz1EAkeb(C+DN3bZHcxbLQQo7zyt=WZzxZo{T%Vwg@$Iq~MzrkXJB zu82+NUV>M2xqPDO^^$~^8L)46<+SPSE5FEoym9&_r1)dRyJ(L$7-yTmEYQ1$X;2tU zpy>`BpNMYCnM>spssE8te2P-KJ!Z0$EEIVyWA4?(Z(pt=O%BKCFrLU^zsD#c!GW+L2pjbtqFQXf?k)PpG?pz z6ZEPCy*fd!NziK(^!fz7Awjn#=%*6&=M!|kB>mk|dY8vqmaa@a-m+rV@@3J|mNhrE zrL>TcqI=u4v~AOd<r zHmu!{VhyHk#hNElc$C}nWiApIWwc@qiXm1kORd?oYE`Ob!xNiUlUkvz|9GU=vd z2>)YbE69*|9R(S19_N{_)-5w)GptQ^CrnlqmsL#q2eXiy zIPDijSFLSX*5vihZfv3#;X@q8T-Y`t*SZl)8#~gGG`RpaDzk98!Jame`4E0F*CICe z+os(W?s7NN7$muo;%&K`X)}UV?q(Y5i@mSh&9pm$Rqke5eX!z&mATskIW2d`jbFa= zu}zyEyl{iVv_MYF-#G_VD)4~ zuiYv=&|y4h&5ZF@+j2C_=S))XaBv9EtN0Z5gdv?qHuw<^I$ko*DZ@j=qb9ERoS#g{ znj=b$m*h!()>#74e?=KA)Thz+4ba1)c$G#$#L$;wO7XwYxx$_fuj@C?0}FAgyhvBo zR$%mfATM?F^>Wl}D}PnDf${!Tov!-RQ10q)9)7 z2j|YaCu$0m-eTS{-|)HmlrFbDPrKu;+x-M(;QVApQ_IFR(@O8hyqx(-w+a9g<|ly; z?Ku?mrMBnSEkKx`^zqR?pahDv=ZnoxPFOq{RS0Gj8B$x@JTZ!%cQ%EW!R9C9MtT1? zSz}$mARum%ZFsQvEo0%cDk#im8lLjk{!u4qE31MiOTBMupUPV6O}-yeAiaObX{f&k zrf%m#8N}beg;?pY_wq~pHAne5Ob21yK8{Z2CDl>pd@ES_wb^@lj#{eA>34{~r`UHa zwfRaGzuMPA96OSGd3c77+1{UCN0$zm*bA29V>|c2_f~wJ@TY4pl<$Rib&z+@t;4&u z6!yn_&&~<<`>|^GwO<#VXH0T1^c7kg4Pku#vadd-IT-N<`@+3Y`TeIU*7D-dTRkpw zK7>(RJ*-U@iz}q9XH@#}=huE9>~m!h?&U95o>I41w9G>Kiu?Z$>xO&(pD3$%U7to? zCEixzZt?ayVM?_A7_tZxCP(XO%Zo&JLu+kq!c^{MSC4*c)&x_$?=7ac8GS9!h5>lL3XJ;Biy8I7MGY^c zOurdV4ZN1hN3aheriPo##N_i-Ut)MZD@Dzh6Sm3n3(havjTM9YRt2{>Ci9nyJI3xq zJjwLzvzqfcKX>=Pc5|ual*~^^HCaw2+ervum`c#4$Wrx_Eca6Frc`+*>!Z~3mC9Es z`%>i@+Icb^`mq9YspVG?2qO7BrSg#sm&{LaFI8?~{2Tn0D)-=isrbK|-()(a%JEX` zp;Ws|rZX5_>bbs{2w18fO651%A2cN5yHqmSZc5c>(qF0PN~T+?9K-t?{Fi$E;4iet zQuUh5Un)eLz*6Oz3|}fgiRcC;OO;cpd?eqm)SxL`nuk*PNQS=D=Pp$bA-=)J1HoUw zP#%FE3@K|VIW%&>Jzts4R?Gat7 zf2{|~T&jQZrQ;?QC;kt<_uQ*Nq^xFq9EPfALV2YPGn&wn`{2B}P7i|-3!OGyv$^l# zhd+a&be#$M@Vtfh&1y9Jc@KVeULz~~MlPH;=e`B;aPuDIbkK)5_w&I;vACNO!SJ>4 zkp;oW-23jG_i!L)En2kDWzK>-`muDzo>WH#uZPjiI&~QA)(7xtzE~G z;4){md|6Y=nq^IKYrn4L{Mwox_iNkO(-W~=wvkn~Xf>f$J+U#YAabMqYT8YuWR`De zLTSa?XvM~jo48l}8<%fb(XuM?Q7ddDt@nQSmszrc=p2NWg-vVnzIvAht z|8ohsAT4bzk+z^&JZm>Zy2B>q(w~!=U#?qC8LW6>Ig1yrRWzyW?wkFYMe`ocH(={$ zlAjZ;nK`q7E8ntYHy!wi+o_e_|3{ zEdJCW?o$SF5B%~{>CYV`{DMK;mki?GI*5DQAnw^g+_w$lzH<=wJ%hMQp7vt(BRv!s zb3ZzW`|E?a_YC5GW)SzjLENQR<6`+AHHiE8LEI+~;$A<9du9-Kowszc{4XBFec2%H z>jrUub`baWLELu?;@&xk`+jpT)&CzJB)sH~We)SFD;x0r+iEtGov(rJ`v-A9g8R2v z=hS&{-vAebyFkf5|0}Q>M0TUDn|vVG(y07`=|kYxu|EisFLzEG7|vyDRJmLMy%VHw zYg9Rc=??HKgxdxV$6nFsyEqh2EU4Zo7t&<>DsPv|o{baLG89mUze6ycx z_8Cy=%{2Q4v!8186r(4DN^cT~+(Ki@V|qNO^v0Qet=W$PmEH)muQvNiQ0YZxuW<@~iU{ZUZq9Wi^2%VaP4 z4X{z;IMD|{rMDlX={0Kn2d4LcO0U!GHExvsPEhIXF#8U(-v%nZcC+7V_Rku<+2}Tq zIjqw^&#lux52lxK*@1mCDElQI(~CgmZ?4&A%zh@g6ZhX5VG@_>KN0_S-SF7lWI@hrk8k zXTbU3gJ23=4UPjp1)imI_*JkMYy`W(C%{AC17HWp8pOzU@P2SHcpo?)Ut$I-wNUL+8;6 zo&ec@HS!SnZSVldy5`6Z(8UkB_(A25HAu;Yj?946`N#%vDmV^Q`lCRlf0mbDR3 zEGYk*!H|5lP{*MoqY-%gZ(J57F2sCi7K^cVahNvR6CY^w_&GY*09+yW0*3G40~u# zF1%rnPmVa70J7#XU4x$uUahH6)`Z#K*rrVJy)9_rbJ zH&nY3oi%JW%owH&Bf}m%yYPmchFQaA!;E3dFf#0+p17^*HtaOa8a5kd3{!@H3pcbp z;^dL~hN0z4nunIRt{Ph2Ubd|a9e!o|xt=TQTz6G;a_y?v&-Gx%A+FsON4WakfF~;6;Qn+)FW0jb=eS;|$dZTl z%57YCRPN;3S-FSn{>lSf4^S$k1T^Z8F^}vvWTn`WF=6ZCtyS&Fu6I=J;JT}- zlWSMiey#_r4sq?SI>Pl>)p4#Ts@~vwx~iA!*{X9~FSw(F+lOxBxZoW_cXI6g1Zr+vS!+4pfs9;9X{v@xd{!`{JzP~ar8@-csoeA#4J^2=SQ~uVC@bu@+ef|}m{tI*OGI|~P z(DNO}pN#aYDttAaj?5R${iwM=V|17=K5ulGAAU#WLHJNU8h48xW#vKN@96d`UG$N@ zZz{ha54qIJv+^qM{*=+d{UM8Qr^UC&-0!#Y?=bpv7XA^V(YxTx4Msm<^v@_)rN7ST z|7i3kqkqTfr;Ywg%1Y1EZS|?9A^MO#&+3rAz7-4M#t!e43Ow^;b!Hvc{5Uy9&W zUjM`BQ`4@jh=5ywMywQiSlYf2JWu7$uuTw@cE6o2M zqyGv!`PVp6<~{Sj#ORHbuiQ0nmkD}eHBOZIQ}drP`ezpZS;ELDtp1wE%lzNwf2YxZ zX8v1^K93*y-)8i1`cKgsSIX?L{AfHW^9U&ST}J=5#edr9KeYHYFPC|fzx3-13xBiauh!^4Fn8}eijcQ-;akn(^Pu8uGkTHH`z`*b zXFK?esWJC% zqrYSH8S}r@{4ep|qinuM27J8^io~wn^thT-Yo4qKrLY%yxh{MlzPF<%flnUuUk zUJHk7RiSxGH08cEQdgXpz-aQ)D}=pm)!L;ktK3#J?`-X-h)XEu;!e4;F5(<7@FLE! zQZM2ff6@WD9at|#VkoSfA|7%zRK(4ysfbH~l`H&N4?Yqr$->$T#h)wRV39A@m`$uS zgPQ5t_s^TN$VDGJ0y3wC`aa~F?nOE(U(bbw9^x)2>tGo#;)Jei-zbU|bI8}6Me`Ol zJ&aV(gZH}BT}eC?x7FUpSjK|{P$IAS*C+oBv5K*LJvi%A^AZ8)&CN%i56WH8bYlu+ z*b}{M6UuAy?};P*6UJ`wx4dO_D4UjLkF`B!3an=|>1Db{Y6=RXnU3C?e5`o|%nNiL zd|rEUuKS8xh3Ze(C=!l*X z*DxK%XZB8=<#o9!1$Lyn~jVqd#Vza@6L61uPq^eSEx6kKBqU~_S{`Um%`=lJHNdl92;D8-#G^tl-_rK zR1=95e++9WQA2!U;cWAlF2?OLz2+y-4DYpMqGbbTE_L7eD&`F`iceEDtvj+Vr^WNE zAeh1SiHCTeu>gyh-^7hg19Mh`?Gx{{e05uh z!c8@I`8xppQBV{769f`ldVy$6C`+Xyc9;BLu1V_m4Enfjkr_c+#8-1>2oc|flzJxo7&aL9{7jx_Xe)NNL4{_GRDPuAwUc|!LA@pCAHBM* z?p)jGyzoBCsirJ?Svrih$5-L96_M4?z_Uu_&cC1@%Bp=?rApSrz<8u@_C3PEYH_+} zcc4rBy%(*(q$r=3qVGjM{J?j;oVJ(K)8O*dAgEEayIeee#Ha6e=2S=@`|ZxJc7WKdTRA{S9N9z;ID$$^drPY?+Chq@ym zau4pjK)f^_@{y$vg5)bF4=VmKauIbqLF6Eu{#?b|3_S^K07Z`jk+Y~1e>4Ri0dD}s zpXHn5Hz$6i(p#+E!ELJ)mDz<5%ZLHW*%e{sUolih|hndD1Xt}px%5<11?NFs1 z?);gV6Q$GGGBdPA8!R^W`&%#P?6Y&CcINZnpL6zaueF}_thJu?zV?3BY6lhHHgE)} zb>Hj3BuM{gzEhh77GYL;&LZzoU?-^f90V1geIP+swOI`JfOx6eZ820uRD8CA^1lL< zyvjkwMrFuQ-?x;hPc8x5K>QC%IjnVd3ucg^D*~DG56uPN!m;gvp*Ki2BGt?GChS` zYK?awv6HOk(SPLjFwS4TE~$^-d_*=;53f^y#8OK9K(y={6;t`_uF0F$vZL~*hU{5v ztLq=!><&SjXAY1v3WvU%+}vEBU7|tjP|Aq?xVe7S?SX1_1G8z&-;L%=Xnsm}{+?YJ zjjTnPOpUHW`GRC=j1+Q8QpDb6cf_Xpc2*oC=FF0o+psXUNgHMU_nj}#E}uEGoL!{z z?IX>S;|3O*H^BD4eco6~4HQ?mtK{D7=Xf-|=6bjD<#VN$Ui_%~97z-ef2W7vbH42P z{MNDyPEK1$sIbS(S;m;>cH+YKCLNcsYjbh^&Pe9}%Y#Sm;=G=TD}qOo zoKrKgmOZEjgR6;eBB-7~{N#5$@h++eo@RW+P^j-5reb1tPT6&JYT3|!=(bJD(p7N& zl%M~zM{bE^%lx-maXL03s2=aao}jSzqUu1J6?X4{VE?taX`YrIFu|lx>li;L9p!|( zpZJyzNnX14%H*YQy(j2U8pLZVd|rDZ*gp!4`kTgHTQ_)rqpiPxnh<@qA+^J8OT^HwYdD_}hLHV2SwQB~Fhw?jB!rXO{)^^4mm^30Q*YtpEO?W!f z%RgU^Jj;J=VQ}gB!K_IT&sPRanAY_t;xmr@%xqpsw!=ng?=h`oSbiq{(7eJqU9wkM z6LRM8FDnM@el9&Mc}aN-kC$k!UYZi&wPQ?BE&hfdbX~8SJ>zznwWzCb!|qk=&Jm9S z{EAQ1{|m)Iwc`7m0m(~zYg1jvx(IdaMe$R-YT4V2Z_PTy$Ha-x&C7^?+R1*)6Uk>3 z)~`9MY#3*)U1RcQEO}$oBKZU>7Vekd#HgU-O(QRxZ&r@>+3tfn9)DIQomU4PayMbZ z|IQJ}^U2_8r6o=NDJ|z*x)uJNO6#cX{)G!iTX`$IRB_M|^{X(Ves^3MRHv>=UV7#F z2Fbn>UQE$*E=Zqj}wq zU7zK|?@{dYXV=d1#k=;+-fGeLcHXq7)D!Wj zpsf3PDH!!eFWW_rRbBU&tVi;aJhtnO@Hcr{8|%*p z5P$XOC&-H-PbCklKd+-dS2!1uS08%Hj-h8A*!2IbN7vCm7158BdOKwLefl2R@olgv zJDtDnr7sT-$gk`NvSw}C|3&l_H_?_{Z`;c5tH_fSYBWQZe!Pyjb*U{Fm6dxZYkRir z=B6tn57Hk`bMJQxe)Prz11alQAm2f(s~0@|I_ukheKB|J@tz*ZPJhX>jdkn4=IpZc z_~7XZ)){@@VdZPfs`@FvuC2DS3tC?XHFlAE8|}Dw$e+v!&Ze|HMjhz7(w5yFp7G@qSM2Y-NADXnb{s$+6>>gkcD-5W=_+jH zpYK~*D7)>@s~=6ddi1=;nv5+2`fiOi6B=`BoHsJ47X2v3UA_)!99Thry$SoT_apOd zH)q@Yw;ONn{Xmv3I^KMa@utGPc5iZj$q$nIKdG|&)q*}{w+lPvA>*QKIwuB~+Eh+) zQ`*y*JEz%l`mcq-FJBw`{Iw?vM;#~~%DDU=g8i>e434}pD!8P!%;nQA$)@dEwNG~J z@L|StZ_t1Lmaxn?Xnau3SaKQf1xq%WaiOJqf^p%`uT`19mj1w&bF~+G&o!F1Nav<1 z3_Cuv^)C2b?;LO6Li=1myCRz8TfK9>Jcj;eQNhz)Hx)1zEn&~tF$XkWll$u$PmJxE zr{^~&GEO5dza7tB&dANo2VPsae;l$a)VQJ_*}Z-}{NIiICiRscda!xx@3BSs^HgJS z_2om!Tg91wPJJkd_|rIr`EZFZb4706mebC=d7IjKjs2OQmS}wM%e2ZbG9fQY`t+;x zcQ3LxcK-M;$i}~JRBGA(g>Uaa4%jc*>OGsviN*|G&e1Z}@|)fcQ=T3u+}}gl`s!en zAv^9u7|k2Xv&YJ`3~i0DDyn|=^|ewC)0;od6_XlEps3G@P6|& zeLa1Rs}J&r1Y5fL}Ptux*1#g`Y-!o&fe4Q;9OA=JQ=;D$`FB z|E_ydM@EzO7Yj8%AAR7}<(3!nou+aty8$1zc9}T^GBR;@^+NLwnZ-Nb7=5p)gX0)? z-b4R;H~sKk^v6~7%Xc!jxMP3sfPwBigud-qS7ra>m%X=T(;YACO1n?9^5MIT2fX}} zjPoV;zT@T>au9Qf<^ z1()7n4Dvd%{|#kayjA`br(W8#fVyVOqn(#CE_|d>W8yzfGJLXo_A7s%yw8RiqfWuuTXGJvu&kg*!$bNcKz z1`IsV!zQoOqv+YO{&yn;DO7xNPM8@Xi0=kR=_9r&If2pyK+BouQ5@Y@c zC)j-WPswtC)>a4McQ8DP;57uELy_k&#=eC)YpdO~vz=y+n_X9JXWY|(%>0-)$(+Z` zePZjW|E~2@#<;aZK*qeOq2OxPQ)%PGV+?DPUt*o5)A`eQcM{{`pWxP#ZS!*KOIMvu zM}q!K<6YXPynWTN2eWhmk!MN4XQ3-GS_G zM}|v~o=kcf+oQADF^=;9qG>K*?M-P`zbU#RhrKL?e+9JNmc^I0%gx}BmlhN92+BFWG($9Et(ntGm zXX_fWJS685c=)vWvE-Aq87GJb-$`WN0d&zWjiJu)y+dDm)(i|ivhwc?x{#shwLVSV zFl+IWQ*fni|4i9|XZx7sk!~~Rw_}Sa?Zm5tOGbw9378|O?wYoMI_uYzBx}{1u2t0I z`|SKXF(D|IKZW(mSk@VFli$?HU=Hv4v+*H+qw%S5@hLLj9cANFMA_Ba{8Z@Yt|{$V zKEk$*;%UYxtcQ}{ml*pl8w&pvebg)CwZ3WRG#_CN)AzSEtY1!}&e$=dof{QRU~KWb zUNi43D(XM2wWC=hAgz83nr7`?YpFgSzo57ZwxombiT6cA6@ zw`nd&+l|@uC8-fXxtF64qq8_D_cHYF2HLRm&xuRDbDmO~89SP=#s^0d@L}Ga8Hatc z$%a>Zm3@!%RcQU3+qQwW|NAL*<`weF_D9z+ryFn1g%{u2*L&yCaJ23+eVF=!k^>7L zv3%w3+h~pX>YROod^_gah>s9Q(eck|PbwbnzpfmsxBO4Qqlk8<;61_B;&~gq-eB(7 z=G(!{e5&s{WpY69;$Je?Il&rUcVS|l;x{SfgEB^V~<=U6+*em{R;IA1MNG564YYHlCxV-BzeZKnE z0{8w+-$W9hT`BtM&d7T3#9-9gL}Y!<^DtwE-}S!u3^M5Wi0!vGB~r_tK?c=-_-@iS zDw95q!xb0*t?e5ReAk@2t8q`hF^|&I`$WP1(FyvCNF7)F^-mA8eTJUZH>Zo##@IF} zI!;g@?#CDBcz)`=w(XOw^`7lj-W3gU^;vDx`{=8lb>;LG=(`r#v5vw?4yIkuT!!+A zo0%iX-i)a<&X=1Tk9_TME1%wB0q<^X9rf*o=zl?bA05A3x7E^(A!(^#-19f>_{-ZC9(y7yLygsD_Cr^f%F<~Jp*~)5 z;h&Qy6;DR!sB;tgp*yxMLdUpH7u!+n*fYqdAM(D21y!E3|F5Ez^FyZR#_5 zn(%!!{Y4w)B4egpR8Zee49)ia^Ub=o>iW1$84&x}LR&%peh@mBav zDAWH$o%uNH&VF4v80y9%qikEFbnsrJT<&#|u}$YtKen-BDcU4c4)AaFDfImc^BJu( zH}FoTkae5a1}Bfy1Vh&DB@Y6|mR+mt_%KbFPF^|Xc+wZLY2C|v7T>ODjikRc?~TZ@ zE|FTcEizA0-)PouBJ;h!-etq^GV%G;{^TF_dFRr_d`x}nTaVvCdA*%-yM*$48+Duc z4D&&iYw`aHZK~*$rcTP!tCXE%v^9Ti-gAy(Y&H78Pu;f#ru|_2t8v6XG3U%DhrORq zEqkmVw*nXc1odwc<;Kg1w2u6q^W)n$I~LWu2|MmnnU-Cr8IRg_PT|Y0jWREpcz%h( zOdgrJK$q!@Y~HIM+CdsLMrJIZ)2FrlM&rlSvOjTg(Q{irY3X{}=0$wm_kBkn|Hdk( zJQn!!Xxji^9@}{TS|t4*|2-Au@$J5+$_>N4xAO0c)sHYoQ$KQobe8a~&n~lGWAj?$ zpDU4r^4_m?2ERvmqX@^zoTivIB~O}s+;K0V59OU~_FJ%M+(&WF<$s4)-?3p<7Iv+Z z`b#-hJndM;hL_PHDGn}Cwttx(tZ(FU^+o#SO`P8qZ_Wqpk9SaO+LV%fx>xE~{QGI! zZ}9$?vad8S&b_2EuV>W@m1(WX>pQGk#<~7GEV=7HF&MKJKh^pMYvO>hYrA;2`WxDK z(Ngwa5>0JEFvq_$f8&7)+KS_5tm=7sy7cdQX9gp`s(#`qIa2+j^{bk7Sj$Yu?V&Xs#Ns@y)}i5Imh*`;(s38_I9)6!=3dS|*n%}> zy^s4IN1osX8s)N&`%&z5X}_X;{>QO!rc3)#@y%}^|Cfhacj<-ZDoU-;FNta~{=^SSGMWnHWJ z!=exW^Ul4gANLgugmqQ%&*#7W9o#QE_Z9fhm;R+UiaYtoKcD+S=gv4)7fT|!SBG;i zC35-Xced2h_vb&2I~_t9Q2~Nz{q9T3opW{22C4AmKJPT3k636#ZmS^a+bACxD_a z0YyK;;>tAgehT|j;1|G7kbz&>E@!{p**81;`Jm!E8B}}+f=bU}%7yqG0>!5d6rb%N z3y)=uU?sR3yqe-sYcX5_k`-0UEr!+LLgsBlkP43C3~=OM5X zYzGz3eHOzuQ1p8&hPy$9zY~D0oufbxt8kD~kARSX#Dfkqa0F{p; zK;`4*>wG(oD9~131=<=XJEcO$?X4K z)(xs0pLTfMVFyTCQ+5#i64(Yl3+@KL3~mR%NPS9KTv-lE{s~a=9tVyfo+TE;5nuu4 z;TFRpa3OS;6PB*WVt5f0-35!`c~Ep`LGe8eitj0l;Ym>RCoG1?LD6@BqCW_VzTIND z4-|cy#c&TO`kkQYw}YZjSq!&=qTgaMYz9TY8WjBsQ1r_!hSi|xms$*~K+!J&DN<$Q zz|Vstz|VjI_-XJQ{nux~(_jmD6l?+yI$R2>-YfxCZ<3(GSzs|N2Nz?X02Qxs;8nPn zSPVyiq91NCECLm;?)RE~*~`v=;(r3XA3Ox!0=9$lx6fj@%ekk(58}SX+E+DO3|E5> zU|$8Q-C6)X4o(L@1P%vPo}^6sEO_xfK~Mvp16AJ6fa}21pxU!jpybd3Dt%i(rLPI( zeN&blflq+DK*^~YR5*>G!fCJ=t_BrOt;KK!sBo5A_o^z3;S%d! zRcSFyf})!aif;lG-w77Oan8L2{2=ZFL4^}o412CM`|OvU1(oloK;`>UQ01!w6#XHK zA>S7U4cNDWqrvUqAA?Px+Tj)8C%`K3DXIk!4<6UY#uY&j_U1>jV0GN|xJfWtv4TgyE?&eER%W!~vIKjGCjk6f?F`1zo2#W9Jv6gR-#qc61z85Tp=Rxs3 z1v2C++vhL^D!$V}mGe@ID<^;|-$kJKOSxU~zC6ZY*aM3HMT_ADQ2f)N=+A(nKW#BQ z1&aQp#qb0u`oo~;4}qdTXfbRDMZeEt*anJzC#d*VJFEm(U@iy03{C)*j&T-OUZC)( zJa&WPcg|vX23&>xL5JJH5c5{+UbV$yxEg#0`%3UZZ~@2^sA|5&upAtMd8Wm%6kG#c z0xZIQg2iwISdaZca5Z?5dD54_Ztz)f3pgKa02Pm=4wInby})8P9bAU{2rvm=9%bn- zfTBBZF+2<2j{6DlHgGqn{A>Xw?-V!)`mGkjEuj22TMU~($-5D(0GESm50`+FZ>7bR z3qa;NW#ypaUka*S8UfA$hl4kR7f0Ig)1WCIpu#_GF+2q-{F4^L6QIIBYTc_2TMRp_ zd(|O};XzPzTfi?8uV#xY8^ChxYaK3kxYXeiP;xGJSPClq$ri(LpwiWIwT*W-sCcJA z#rv$q@C+z_r!9u3K*i@ID7kflqCaXeJPeAy!(w;{6utI`7yTY^E?5OF0q28iAE$%z zS86dV0hO-6;EJzNHq! z$)LhbSPUnCif<7pe;2Q^{?3E)r+wnV@EjlnYB4+vioU~QcnB2z9#HwvwNR%g7 zTzQ^GTj87ouYfP_d4%CvP~n`h7@h_d&MB}0JPAGx9tFkku*H=v&b-~3w}3Z6*95Bk zHh_{xHK=f_K!v-+Vps_(+@!^D0jO}xLHSF7@~86&4~SlA!1ofTAmL<`LirF!Rpd)a&yUI`KaTDxXh-iof>J z16Q5^Z^Zs6D7ozfHJ(U;lJ8cF;TCWe_A9{mffGRS(RpCvGaOVrwV%20vN8+22#WtX za4~oqRKA}C3n4jSF+2_`yiSYZQBe7*bHqe<&|;{44n?=mV%P?XPUnm*2DgIZ-weuM zlf|$Rl)nax;c8I+szFnJLD4U<7*>L!Pg)EYfTEuaN=_xvlvtJG_!n_o`6HJ14f%Cyz!RcTM91gAri@>GeWrTG% zcmccz>;_dXPl76!C%~DY_OT+0Wo@A3q(S$GKk^dXang(DU364m&iAv#^G>b3ZZcB=^o?$A=9ZuzUEP;cde? zxoUXo%7Ft;U3vP-GvMKoM@M#!8)J5*QN_LlUvQ|ke_Y);2xp$TvFBv#s z`{{T5ec$Bv$pZ&moZK_{@?^r9a&!veOzGf$ddeB@C#Rg6GH}50 z8&2GC@&;0WL+VCkdP5J-=Wo2g^U>1IQqKRH);0~_(~fdKG_8Ys&$P?j&%LkveaLS5 zp6PAVk!{(bGD0kC=YG2E4EK{|r?_7(OT8biWj$pB2eiNc;QJ3@>X~tQ1}U3yk$cut%7s72}>%xHpQj4}PYFR{HRHiGDM&%jq+ZVSiMjDkV?uQn4aBp9Hko$#OFWyRe zZavR^-)-%;k>=alZW}nD=eEnYrIz6PwlmoEEV<0{g(Vlc@49{W?SyoDEBEvr=k6fh zcbvVWsIcwseRmfXw%)yq`{lb+_Y@VLzxx7>pRP|0V||Va=r7)7n|s-oK}OuiP>F_mbs~{*N8~?V`tSqBE<%5xsv8xmMxh{)}^9=*(Ys=9`?k z!N$pbmp5CK6XiGt|M78Kj6&ocjg9X9>{n{ z{QY~mJ6(Ldd=|(|1D|&Eli;s?>->Ar-!YDn*}u1Y#hLwkzF&941}ME%G24Qz?ISI6RiLyX_YWAuL$GrvGd ziH7&5G51Gf=`W9k_cyWh-5WErA94+pcfH+FOCT1QIGyg0W-x)FY z+hXC(iJ4!I$)h8do=?W|?+Y>hx5nf%Ek^%vjNfNt;lCI&7sc{(Z_NKEV)5NidqtEo zS1M-yV$8fV7T@79`F|pozWZb5DY5um6*GS&mfxde`SYcie6%lVH2#mpAbh7``^aow=)*MYhvl28mr&zMU}&Ebj%$c)g1T#jK#M)=KfqPezy|YXnfxr^Z(6Q z{I7_~t1cFwAIJRvGUmTC7N1YV{I87pFOB8jS7P$l`Ge8;|3OT?>to^Zy>|}%_*i-S zaZEn-vGg8`ng1~s{_$A+w#D4jG54IEJXhD(H`T1#(Daz!qf;NBMZa(Bv%hAXz-`c} z@9Eqpaecf*+-eqoXemB8=w?y%a-HGDUYQ%#@!?xNF)-V@vNP&THW+=-*ob=3?Ms(% zRFUX6*73QVaflq1#&Kxcb#!Ltth9)mu{Ys^pw)h{=3(LO z_t=NNTaX%eW1Zc*_MU}z)NFY0qqCd0uoulELOKKyuW&}Eu1-S*~r6SX3eUNjhk$iX`kSS8tWd$XrnC)yDcvJ=w@u~7o)c7 z^mUaV)zauTyLgq@>YB|4z48;u2UV?A%^MqQILoTPZHrYZS2fnxZOq-rxcRZB`kFPH zYBn@eWo#NAs##?!P_#a8BLC|e@7}!bK~Y62Xr}TuZQRiGh}%RtN5tl+ExX}!Mxw?p zk~>WsIH+q~{km1_{DED54_{+re4C@djM0{0U#2)x@u3a0iPWC;YgW(RwBC!}oKfV? zZ2-^`(4s)m~sGb?S^l+|roKdYvh&wcAQ>f|sHN&G%w`y6FOGr4|q zBLtRT_E{SZ*VM_ShRmy5wYFwe!`hmM>egVBZQU~MjSnIF@pImKV%jE`eWq=A@GfNu=7(%DOn0bQZd&tk_R5aL;?cUs&6(Y^MUkoOQR&C)x_8qD z>2K#2VWxO}Y$JPB_i4OVak`zXv!&_&CW=pvjmnp|jWy27wx-P+n>K91hfkT>k@d0= zQ)H-=X$0VQ{ElR;T-3zmkXj2x*%VG|jI|JWocZoH5I2!fIJQxJ@UiuEoX(N4wQZTV zHKB;umG~^JtJ)^qtgTJl%o=Osj^(q>sNEyni$t5MQx&YG1dtgcWv$#GA#35nv=%vM z{u$xWHsotiEqP2{)-pSy$OfV^Za8K8QKv|ex9xClIqlKIo9i}mexHd{%{rc3zN=mv zfyvGfUucA*$N!m=|6JPE(b8>L71Y!}+GNX%Z^Ny9BtHGqt`p_|K6YlMy@uOprzN?v}rx_J=Q6Q zNL8V+H=e5EhgPLS6)}Mlg|Vc zuXtRgN2%~hM<2JS&ZR$V%U}={Abim=fBvE15x!xme*UBI zC%hc~?41w<5&r0O=kPas{p9B#f^Kx%_ zzVt`Sf!|v#aBaiH)wB)h1*^W+IsM^4G9V5u#AVcIyJv4ymsj?I^4!x5=}VJOR@}xTZAMq!>a=$b)Tch!voBN;`sn)!gZ2C)>4CwEd=F7#++uCt-fOcmn?(7#5<0&R zKtB3O@5$2dE$F)!T0VVTpRRbkYE9g;GDy=VwR|mj`g!&_?HFh4%bD>1$24k z*)=IEAIa0#*S9Z&`NOZEzU-nbwXjb`i__Ik(QYPahkU!-NxPlG-ODINdy|O7Q)$hY zkJ~1{yLkF=;_=VNvu;Y3XII{`k*$Nhi?nA^-+gXgM^9a24DF-t_0)a))k(kbG4_)1 zb*YQG;LBFJ$e#Tfs4XWCJ&m5V*A4IKFLg5hQ2!yjTIv|OLzf<HJanHIP36bv{WwZDy||?aeLz>I>{%EjA9XDE{nI z@B8FV^~vm2FIt;6vj@dUACLIHI>^xNdzu>gUvZ1aKOlVd5BYczr;--r$ouJzq7PFZ z-QEw%8L*N3I^vh{iF+j^x@aaWz`uYA7Y%BLR#f7k7sz!=Bu zb?Nspi0)`-ELzaQ0;GI;=}W=Us||79SO6JI25r@ z53krtGWP5(I*D;;5$(}y#AoiBhMtU@i+9FMyth$SyP;Fxow3hD*G2k7H;(j4=GsGY zG=J@ZBl~Xhgn6tv|5xUA_CD&Nonc;wDwXzev;DsE_62xpUkus#GNSg}?{i_#I@!R~i`$)!mB9(`PzKF6D7ml*^4y;W!%ygTjvrFfV@ zp0=Ydauz^zO!Kb%F3h$&`NxadJf!}1XkSv6G%h`;XZ9>y!t*LUQ$`wiRvsHV+(aky zJI#G-X`3Zu-_M%z&Nw~g%NzARNgdQa#FDAniq9a^1Z{;MS0Sr8*HG@%zQo;X>DM)G zZP57;gcF}b=auQ5S-C`I>dOLkkv5_)uXtKB^APHqpQkbID1X+BlkB+J_II{Eo4A_s zkR6lw@DxY&?Uq?jOY1axEbL6gTcpBfXP}j?!Wjw?;E*+iJBl-1l z@qMrClpkg{N$`QpVt zrytz5tp7Efz4vDG2%T6PYUtv7_v_4vS<%S>4OW!UhT>3P&lb?wnrhKSPxu5isPMK9ETS#kz zTdyny)t_~;U$532C$6L&l5FZ|hwv*}vnGn{sY@>^eObHU5^{WzW#y6-bZwlU;`2pq zqM^f|#$TOo?wGY>-GIHH)xH)LZ2gO(BGwBMv|ok3&b>p~a{Ka1rdpHK_+N30m#ufT zua;gZ_-(b!yXoww3GS#~zc-eDTW1L}?;kfhcUkBYkTnmjS*2HqSu(zW2o^62D%m$n zduLgPoY(6dsGKF&TTSzklC#rWM*I3MLbS1-cXw;**YmPYZ}{O`w)DRH9Ko{1ys)Xc z{q9?NKc8VOHtyR68y2r^>v=<;d$rSulBaxSm3zrvS2O>7?h|M*bQOV+_VGX2*&Ko< zpZjU&KC>V9fqX}%>o}en*Y@Fmfg5f)r*tU>oP&OOC*zVM|-XD%G`x))jJS~%wm zUwV?dlKk`e?{V(Kam?p`pcI9;R`bv2zrndn4~n@~pY+c!Hr@kA)+hba=hfAp`%>q= z9GZOLw>x(yhCcicIrrLr{Er~gx*GZC<1hVZT^IQ0b8mDR%a}`7pYV4%_x|#KpK~~m z=X~Y2l?G7PVFJ(Ru6+P>?dG2^ere~vv>*4G^i;ae@z2MfiJG}eVV;kFDKF9%pjW1S z9{vCv0TN`@aEoCPh`*|V7DK&wliueE_|64)I-CyPj`=e25x?`G_?-hs;y-OMJPV57 z8H?d*Q2dUAqCX0X{;a-YY9|zGjfz)ZUFT)D33iEB?e6RwX3DPuF zO}7}1aQ4GNifmPp#qctL)j_X)8D@j$zz4yz;7y?RU#J1K|H3Lz`z(}$&EUOYBdBz) z0F};aQ1V@BG1UGGO6L-bVI`>eCqT(}pu;qglAN{g0 z&9@k8zXkE1X))Bk3*tWxRJ@8n`BS3h?=q1C!yZunwC@5KUI67!`zlC|+E+pP$=Xk0 z9=Hos{Irk4`@!Yl&0rO1(q}PT0M5r=`ze@sIs1zQD*A3v_U9~yXF$=Pa`q>keF{`~ zO%6wZcVX6k33q~Nho>AK2Oq*-`ybo|?s4|o??Ch^Q0~p(UEm65KLS)Zfy3_M)_lg{ zQHT2+&UBb?sC^0U$NyPS@;(Vl-p4^$R&`nokAh0K+m9gBegu+t8~7n`7q|#)1($#+ z@D@<}5imC>ll~U-)UwH-=+9HQRqjuL%CB}%;kJQ9t!j_Oa5t!McUcTuL514{D!#R# z{4EFNPx}mj;ZjikwBG<2E&=7Q2qX$+-9v0WOM_TdowXRYfQpy&{1q?06EOPC%fTe( zCE)E~DOdsWPB`FKHNj$7;_Qcm^odnP7DEw&K&5|z#c&*`^bZ8JpTT*E<^L=w|Jq+b z{!dv9PlED)!eV$Fl>dWZ6}SidBT#xJcYsac?O-J+zS18O-{~Mjtg2Fr;bc&J6Bfe> zp!o7$(d-L!0b=nv2z~^V9+bjsaJU3qjJXt4I3=LM(Y^u<1*?iIhT301;V5u0l)j(B z=>f&}94LQhL4H+dEQZ>5K>kiy47LA&{2c;s1KUBxZ#SrRWheNDU<$kwYyvC6)!wXH9yY%_*0k=B)CTG6_T#CK)SH*82sPsr*?*{NRSPFK69|pIBCY~UqRa-2E z%^<%jr_UcYVo*F6fJ)zVQ2r)^@|Um}Iz6+hahUmqtg{+_Mb^D)pv6#*{HiW9`U1lq zQ2e_=@lAu`d)8uj1{D2ii{U9y^v&QLa0RG*N;pg*H|Ph|I!roDI1C)72}E?A4%-~2 z9M(EaI!rhW9H#MX{5x!Om~vR_FzGPiFmRYAzB~@=$skAjQ3{a3A;Gg?qU76kg_jf&Bz{9&~vS&x0;<-#4V4-30awY2$uo z*je@qI5q4v_m<&1*)1S7d^`8{;)BI-E8fTb)K#aiLO1-Xlic@>Xdi*!5pCRCM($)E zfjuMJxSt)BW*>pmC1=<>;AF`u?t4bJu~)#Z(Yv{KjyE?rUkA-~C%Lyw-igNl!O4fXpO|uT z3Y@1L=YDQVH}|ts(%cW;aOei&c|$w*LpOGy@85poLGFjA9-WHK)DG_Hspq(#nR=G{ z&gre_`EQ@zGCc_19LzX~jPchw@>}}V{yRbG!^!;c7)$YC+CiDOJM)k6EAvKY*1jDw zKjX|7X|H77=gexiWd4>jrxiZt6VCi2Xa2r3|Ftv!gERk?_!Fj|56{G}{J-qnr@8pO z=FETU;`f#_PjcZGGq}`s#PPq;nICriW;pY`EXeEIk53BTf5W*V9-|BpHP6Y$lgWGQ^VzOmSu z{d&Vwj^81d9?k_Y^nShMRowBOxqbrQsCh8-QFC11S^Y-T{SRX1*JAwC-$v>Gg^;7> z<)k-i{zWW&&I!(OZ;6@LQa+>pzY;Sah?zeb3oovp`@2|td6$yI|4Xs>eIUl~G4eYa zAB_W}<||_KPsQkOi@E=K%zPv!zwgJ)s|YL_UU4jZwKY-qs+jx7V(xFmPUaAGNBy{kFyTRYz?W-)$5utW`$+)M|)S-FA;tNA0^PZ?sUYb!0s~tDBmm$CtIv zs;p*N)-1mJLyN1>hRKarUpw#M-FtwDGKdW&;ug`Z^e-^-l6yx-FZpI( zDmax6uV)B%uXYuGZPAByoWQYq z8V%Ew9qVXSA#GvGzL?qM6jxA>acXV#8#iu1annjN@?NJ;BqMHFDO*h}uOphx4)?C5 z4-;jTbBpMN_p3t+`K%hJKN_hbnd;-5Y+7|Ji(VhqIF)2PZ$@dI7r^A=xxlg)=M(0-K(ggcG*`)HKI6XG)o)kT&U(HULTsM3aVnPcXEA*yhBEp55+Yqpi@sZO~%`3jOHkKMpEE(Ec5A5 zMoPUew-K$a%}vxu)F@5Bi=$(KIEzgS?$L~b{_;4nXIMLp3GXvIaia>$VS#VI*XCkJ)-;Pi@deU zQ7N>7iMAtAwZKR=S?f%WM7Zbl2T|XKYp$N5b(5OX3e=eiEu4xXN^3gucxT%uW*L&XTALQzWRQDW51`@_safz;d6YW zVs%gKnQQuXJNkVSftI`*K0k#I@on9XF5Nrv>-}!Qk1lU0;JnB}&Vn1j`H=(pzWWNk zB^t!Jrv*>zyMKEIvyErMeNUtBef@XPmw4_)k8CeXtooLvoo^k-@r@(0HQ&?{?_F;i z`fCp8`M0^x`~ReHjMKR(;oDlBMLG7s6@07nZ+v(AGtT&wpSK>rm3S>CewD;?5%FEP z|MG?k&bZ8cYrpI_e9x6%CrG+P1?Wcx=nwE6W}*3Jv180XFWgTVGT#XEo$gBthj}yU z;#_IM*LS|>h|f>a2l_Yn{cZ~XR{w!-y-oh~)p?12hm`#e(DUXjZ^L^Od6asIbiU-z zXzt59`@N58h>4)TmheE_RV;HZ+3RABIj{R}<4U~-c`wz+e}ijBC_8FD`naEW?$x;S z*vEZ3nNE9AmH=tj%2dJhzDeI_$o@De`+cD7wO-A8wlb|lj{u86UOAR&-C6EhSLPLK z*-4PPSGEhJ{+V@UNUNGKgJAgG3@06L0@a@wp&}iMp=fllB%k1UGI}y9CgPktvGt1rQ%U@w9v%jw4 zIbsZcheOo7BWC_s%=}=?{DYWzLd?7;W}Y82E9_|aIs3Zgodw$wcxGJww$s}C?z;W1 z#SHH1R=Z(R{g$A{TAGb2YRnKlYiTGmc6P90_5o6#pA)rA_-M`fUcx?gE*O0vLDPWcB{-Xkym9 z`8VBMK5y2X*@?uQnX|B*JyR}o%gYVHtl9I*jYZyl0ybp_9^|90|L*vslkaA9`SFK0 z|5wK!`fkPZQfxZiX9;rYC5xbc0Si>EWHS<1QIY5Y-JV##Y=;a|eKyv83o zPmXp+R}RZ}8h@O?-ywL((>VTHrkMA#!MOLa$0}nG@l+eGi+0icHTKYWu!8^Zd*$mF zFPgLJ?YZW^p?{PPYkI&He2+iK^ttNilIUowpF8ICz7w2_E%RPyZbSEPtotrqI* zS$c8joL)l`-M;F=qIvJ67h}IacRKCp09xIeT)mjn!OXb|dlLQUb^H|$a@bWAe0JIM zg+(7t@Evb|eX{8IxAM>IFVHn0@@=ucLynxw-5(#>dtEZ|OkM7sLw}~y(T9Hp-$Tnj z0q;qpvfty1hwQVu1bxR4{pHuM8IS$O>0xR-Bfb7E%;J|GuDp?6?iiB~M)wbU%JGW=aF=FUFBK3wh@-DE@DTe zFkx*&&fahBRgNDrFC1aR=q!%d`8_3^oyvgsi;N7vz4Ghw&dOAIZp&gVGN#(LPC~E4 zm+6v$TPT-Sw#pO9LAn!nvY!I_XUnMSdCSK(zR?zKg7CT`-)rC95B(&U9?{D$@wWLy zp5@c;=AF;gK3@NdzS!TJ`jO3ZbjW_8I-{|C;Pn6$Z*?lBYtdMieeR-}$zop~1A2Vf0^vU1$&Y_vioAzVZ*tAzrFNXF*GYP!_@$ov# zO1Dq5^!noY@OJenK5z18ZeJwrzPvNWGh=(@tJTr7d740fSZS;?`X8y6e7mFhkJm$L zL#IZ2FfgXho8GP=*}R@aI-+e&3I4<@I@gn~fYQ!Cr_Gu)EW#(E3uAfMb|oLL$UGy@ z95OpU^819Cu$>-H7je_PEE+%DOA^F8YNt5ooBKq0rcIk+<)(V)btAI;vU8r^0fo#> z3z_Q;V9qy?x!)Dc0hyORK6w9I%=>z;3NEFXYhI+!vh8AU;J37gZ_*xKqHoKTY4l~b znX*6jKm~DD8S;5}-xa}&AL5JCIg7T3z{qb1J;dt`M>aVxG)oXOa zJiT9ExJ+61ZI}gM+t4imkS4sDM{DDs*E6FAOUX_0v_UT~UJmVLd zjQe}!ZtIF^_pS`8$K!X`;D&k3FIsu`%{qkIo$)3->DRw{m2E$}-29$FPqu)qT^p z_O0G(hR3As?Pb~K`Z2=`eYkHF_vQ5qcu7XS{nGkOiu}Jk;F<%~1^T4Tv^~32W|G*a ziDw1C z?hmd`MEWuDxVay{$F7f*HT?TNW2BLZji>3mZC>T}6H~0;H2Zo<{%Q7}VXo1-knyj= z-%A;ny-&ln#6#(z(C1A@-PCMcG!E&n&+eKQp^NOdB{?;_{4((wX2%r145eus7EZT* zH<>=duKOwPZTxNflBV6T<}nAp`Mdts`)JQ-)3xTOv2v}~C#D~$7;NVV;$h2y?K3mu zHu8NPG;%ldA5-?TZQBm?lgAEC%(Hs^s)x2+9LHFwU|4d$`d;~ML$}YGZ9a7l4LWR_ zYr|_B=I1z;w{-t^P`3J;OB{QDR<7z}R1X!7#wGd2esbfVQzq(WWO=Cn=`RoW&dkys zi-h%dz z4Y$CxSzcDcAL1|n{L0R){F;24F+>+*3;9u5=yd!0bh){2ioIGKWM|h zkFIEZ|A%P0((uba&#g6M=;%Dtk3rvUURTV`${;@8?61s})1S?mr+IZyQo{4-`IZOi z&nZV&XA2d;g$)hjQjA=qb1HzQNB& zCe|{>V{gN6nzkc%zGnNmF(#gVPFxFr<>}_ZW;;sebG9E_SYgww_Mp>@f9-rf(~r?U ze2(#rZ96oM)w>#(=fRk@=sQo0g^9rM6M=_kBO**o+sImx`O_L>hzap!_P%vYS|1WOUAD zR=Ck|0JOin_|09{`Z1uLfAn3`5Fh?I>8=a2>FJ`(MamL$i+9JP;Fc_p0@CaINrg9_ zbVt)b{WEFmlZJpa{NwZ2ezBi6W$)XB;p@B)hkB4V?wTKd9RBZ0|Jp9qdJSyz@e1qS zcJ-N$E$SM*7PLNViF|-#DeQMHfnj34H3{r71qt&_&j%7yHaYLSVxQ?gM)6i|gMJ-m zV41lMcLTSQZx2#fv#FWQt^J2rh}vFS)6DnYNcOsPZc;w?KrdHyK?g~n_e!*_=AwVp zm9y3=3+cb;TERb`{|4t?g*!p?;osrhCxiLki%FkM*L*_G7k~d9Z>pd4w~ny>`-}e` z=YF9d{tXQLnM)acPNB}>F4g-k@J3MQZ}T3lN_w7PSPl}ED(QQIq4Yg(fNlcF8nV&v zWS?7e9=G_gPG|T?k5hbf9=G_M0>$T~MROjv_#DJ6e|tcMzYCPVR*T_IQ2tshhTB2; zYXD9BLB(SMsCblujG@bP-gW|%e&>6^f#9{^MP33bob#Z$`U_+zE<41x^N=oqLmWuLZBi zz7m`SP6t`qH~OODGr`df2Se;HlJEC|XTdUlCmrqvNqSimSOGSGCjUXneJQB;E&(Z1 zRh1UQB&cwtX9|YWGgW+xK>3rtsF5Qmf87@Ip3^OVM{%df7(LRNU@KVpt1`UlLS2W`gop3d-MPi(vwkzX=w@ zaiEbODEa^tz4TZWP7f&hix$HRpy*G73P*aa@^=)JKb`X}e;uIw9kOW7`IbNFy(+!Z zdsTY3f=X|r!xf;?odiWU6Py7~cIF8nbG)(<;D*u6Z@SYeW^JQT2f4Rj_6B?zf5)}OcQ1tUH zhUK8>rI!na(?QXffC{Gw9E!X28o=-}!mGyqA}D_6LGjZ$<6tO#Uhzv?45im=@&l}b zUi!Q8cLEf`EQXDs{54n%SA+7G1eHJ2!CS#` zpz^KA;RO;S_cW+>?*uprlpe59dcSH%wmS1_Q0<8Hd=;Mbd_kkZvqSpc!7%l}x@ANdn zC74A&AG{Hq35s6&#G)?+Mep>9!vtp0mw=L6&meC6+Q8eu?cg*p1x^Q-I{TU6RLs+z zeG$kSP+2$QF|`lU4=x3z2Ye%V93%*H{y1pPA6GmMV-JQM;0@48KUn^@gYvf(l)o(& z!)8$aq%SOgjiCIk0Ga!gEd^Ds=YvZ?=D(&qry04;!h8n2gKbkzTU>b(RCtF$g(tmY zyi^^u7)rlb;q9|%^oteVF3h6e36k`x7K`C_OIMY$7;Xhc-vlz}Dys$OfK^};OoHzN zCxa>{BS4i$)=!Q345;{>02N**sQ4YV7#;={zYdF`^pzDJ-_jX>yFvMD1?6w2#jpjG zKj|||jww+7q_?bitOiwHmxGd<#@~`#mBp2nATM~!%0Z%BmT)M2NSS*IElR&qX6ZKz zrQa-Uceo40OWAgZ%??+Cw_(2&R5_~xRsI%$>bIl^$zpSv^yruymlc5zfITEe`on2Z z#N9jRJ9!(%#%z5Tu*npW|)oP1jEhu@grftSC(u_^>eXRTa%~3{-#wu6dAqZ32FGBgk1~4FmEdB`_%Y+5q~$*-;ZT9` z8RVSJ+)xRCsdGDKv?94sIQc>);md zM+bLu?-+cTd&`iWL(n81vYq?EA&0n2=eVfw^pG<=_YA!}6kTLluaQSJwe z520EbioPZpozez`b>=JCbi9-ezfTt@SF_sBiy9Jh|##l3Unaqc?Rob#qf zp6710kS~n6I0lvwVQy#6@%!`C0>-hKUf?&<5#ac`Zn z3(e-1DLc7m&p3zjhNIGQzM+G{r0Wxda=$bD4uw$P75eX%-h@WxBclv?&`jmhcZq%; z`zdGk^WH%+L;td)UkR`G3P-?tWffPyEeyku-j~ z)PBh9=jB&;cf!&2pU&N{JNyDWe$4-^G5(Wc?(y?v-Toe#_^LmT^1me({*Pn)zK49G^k0j`U;BDQ-PgwA z&pKL;`^~ZNe-QJ(Fc$vRF|!*#WYY7knEQYjzkiQ~|70w^+IJ)x|38b-YdjHk|F@X` zc`^4X zqvm@tM9sgBrT<@IW}O!wr5_tJ?~d_bA9Me0EIh{aIsBfB$?t!}=+DL6ACCFIEtcLV zWA6IyIvW2!jm6J@c8oq8M_WdY%5^KNebly`y;tw@dsW(HSEp69s-d348k;t*c@(X) z|KgFhMm;Hel&IA3^gXm)sm(P-7IOPUH{uqFvRL&Y^=r?LE=Rf8sMKwdp0m*rL^p0z zOrcokzZqp+`w4V&J;&2Vf_R%XWfvZd-^KB=HvO5iWpfvmqCpEbe>us}-N&713PmSCu!GGW_Kp z>}s+)@-m@Mtm6bOsS=Ub-L(h)an9vK^>6K56`vSEVGX zNNb;?9x}?ZMmm}ETWz@Zbxt2yTWcrb?BT7pth}ARZT0};J_nlSD%+akU>h#8MXxOk znR81c32+*;ioH8AG%N5(!SfRHMaXKzMrxVM9N&gm4OYuaWyqQp%DVdIh7GGDIM>=zYkO zR6H`e=I%7hyhloAbWk(eAHV-OkvGkA$3*7Q|5&wY9d zRh1b>9<<)3D`D=;=ZKeBpJCC`i93fS?*NQ`h_$?m#UI{=aj}*kjNqTfA1sW_#(`Sj zmD>r{%P+u?<>rhY3F}i@qcY*J24nmHzt{EF0TYUo-0weesw~vexeDbM?3}U^BrsVy@WTJ zp<6=7vv1y5AGjgvnhom{#!DW1g}G^SQ`3fx&GoAj4{g|(Xl_`uDZyFU3DZHEZ#WY4 zv3!7$$ZSIrSZlgbeVCDO!?88%>AKgfPU!UbMAL>f>zhfNw>0A+mkz@jNw@?CJi0+| z!fmdD&AK{HK^J#xWuij_H?LnU`b<({Q|@G%5#OQMmZx623}9@#SI3csU_*l(cxtZ%l(@M9Y{sGRk+vN>Tq zXR4#?-($U}c^6>b2b4ldcU3jnVyI3+@2{5A@!?i1{c6_hi#0x=A1^Kir-0)?{1ofG z!S$ft8(ar=gOk8BU;;b=@}9f+Fvxq-;&zblPKtMf6F`l1c)wk|1*C^9ZU7kr6)y+r zSBsZ`yca8;53;^rTndf`$AK(q78ijmofh{H?~!0Pcr|ziBrU}!Kzi@u!(cJLcJNAY zH%M1q+yc^97jFT1Wn0_;(v=r42aCWZAmggy`5;4x;!=<$nc{IELM?_y;|N$AIkMtE zStP;th*wmfUE?~f<0j?E^%c2C%(r8wby`2}`QLKK{CCjkYIWwOm@`*6^K;JpVQ2n?Gwc19uC(L#RcHRDGwXesu1`7h-#GJ! zo%vs!S?_-o{%g*Bg)^hKV6K1RF86C(N&PEl{(v)UU?caX&b-N)|InF#;`pVUdA~Dj zJxkYCXZ~|%zQ>t6o%uRv{+ToX7C#E_k~5!n<}qZxu5a*{`}>^vQ_hTDleyM7^J-^4 z>G(h4%+EXXmz;T{GwVIBuEoxL!kJax72ZEN^Dm*1`B%>T_s%@bjdTCRncwTojn2O> zUs|UwCT)IPtZ`{{ogQa1UIomxl)LOQm)WhXaRWOBpm7mheG>?UWkZ}uAr&B{Dw9%j$aIA)$Q4>!&8ja zV%Ka2?{;3S?{7RmRWW^MWE%N*oEKLwUS4he>Yj3ZYMqt7LvmHt+2lf>d8cz${MF~2 z!9V>}u!YWRH;6Ga&s0^{pJqXQSZ;mA{BEvWf{DMFxHZ^6accp3A*tum=yB1Xw$3U{ z9=S1*-2d9o{^&1W>+Sm0&w?SJo%;G8f3c`w$Y%#93isbq7;Gd;tvd^Xr;&N<&zOhO z&$fO8Gks(${q)m23qJkaHws#wt11unC(v1t-s;4}fFDQy3(s%;RT^ENfhEcPgA)t) z58_O&Aw!m+!p3=E&`z6vtbJiJ_|f)Y=nG#DhJ9=2*1=!>UNGRf&u#tNuO8Ss-q0V&-boK ze({bWckkGa-Pa2ye(QU|#OEI5?9zcH0dcYCD@NlRe^$H|=R2k+_wOtT{`?!k#Bco& z9{>9KAOC85u=BaE2cLV+#r?U-@Qlkq>G}UNE%ET;@!z>R`Nhwj{K(7y>(udQepsLU z;-Brg`{h$@fAb7^d*tAdD~DYjFT|@bvxQVice#p@2$*IH3E2b8Y zNFJ#fk^EJ9SWvC9P`PH3e=4g4AW{^)aHqkH}= zxW+wy8dSPxrh=z!-432!7!>?+=IqwzCQ~m5rrz5VbOt|S++326=H0}tX!f!8A#=am zzG_dy%U5*OIE#8Sf6=^u>L+0R`1USZx}{6Rs284zjyFQHcUlF*yq3G_K*8NJwvkl$^NHi z{CNM9GnDqz`?t+d`d{9kn(>>dPt8!A-kAF249Vd2soQ2q4i~4UW=Iylp4u`)@)$eq z$r+N#m}%Q)NG_wNrDjMrCDU4FNIs*ceQJheG!J*lX)f-P)g0U8Tm>CVkqZX%22m(@nT3P38Dinsz?*?P8_rL%1tV58y{> zx(_}|)BVsXAFA=EG=1Z#qs2(6sw9GUx%x9S$+~SmJqh)vL)SaQ0u}p_&49d>N!fbJh8Z4IQ z`@3FF&biMC;P#p4d9Kg7&+q{ym9By-v?W- zo4e$_FMY7&xyJ_H(($F=EcpPv^O*fH_)TyJ`Y)j0ik-i{fBrq+|I$aV{wwrFe-pDO zzWn{6&w^h>e}i}q{OB#>wVh}7m;ZX`4$K>Wd7)<5fbu0u|M}_QFJ7XpYq_F)$<3ti zHqzxD((peM-@ip~#LIu$JnH40&DXyC?dFj$XPPTs?ri=g`aj*2Y5x07-)??w)1Nf| zY}0p|k8ax8JPn?|+SJ+nF8c34zlYgb>@7q8)~7Pfw>`D9dB#(_nya7s)8?5^bvA#B z=iaBj)qFo@HR#`mei!Gkl+TZD+Ie&9ra!&;u}$B;xouPD&FeR1ZZ>(l=}&H+!TW8S zzH@Umc4lI(y!;e+FZS-oyax08FjJm=gZHm(+I91PfbM|b*Rk_oc>Z$Jw{HF}X8SRF z0sYs$|L&5WkIh@%`u$%m`Nb{sSHJiD_m-T#ZNch}@1I@rzvnJo{lfR(S)zP;jr_^Y zC!a^}p|3pZ0Q2$(y%*3^{=7!MeGyuD{7;To2m0@!KO*yktFBE4SA8&WQE#z+$=7G~ zPjA0;A+Ha*Siht3f%^Ja&i?*aw+y=dng3Rn_^NH=ZGUsQV}Q#Uo5{{nH+nY9lk=9{ z{phSIar?RKj(KSk8vCYR7Fib!*=1gjx2@EwxW$dYI z^@QOcfw}7-DMzPZE_FALG1q_mwUhLuL(ITbk-}O&@Anvtm_ipSf(a z`(jOVpO&>^HM8=ZnF6h-YpGr8XKl>g+=T1H%DqJ}ofSma?|iHO?~falR&kpomzrla zx_sE~($~|J5tS2_8KW+Dp4H>{h@Wvwxzzk7C^FBw*!MlpCvAMEJW!rB57K%OKPewH zLln%jBH#B~aKyaDI8vG30L>UU(7yN#m^<$hV?FYRI$$2)!ztvTs9nmJ;}h(uWDH#1 z6}(tk0UiQJgNMO!;48t4C7IG~c+`<$d;F8@f^%N3k9gU67xO3PUz3p~)%d4FcSr5K z|H$`{dlN(cO$l;vN|EtX#&|ro&EMlZ=7A-<5n!>uoU`{MV`F~&=={=c%Y%`p-k?wG zDjD;P&Mu#Ia?oa$Ry?C~zh3_h&S)!aI-e^!UM29jp6`|2C39cvC>i<88^{Z}Z%E>+ zwTa;EQpU-jI=%6$)~@6pjoQ;^choa4@U1h2-&Q7)<-6X*cOl_kK=|hqk9o-N`LE_% zXtA^HI(I&D19v>PB+j)HC!KA7?9s%zHuz2^TwnQo<*Y$h1l#6@!P|$4-^!BmXMTbF zk9o23AIBHjboSv>T##jC;-a`cR8oqpoe_I7#7!6@KcnZUNeeZLMyYI}^2($%oPN;4 zJ5|CJU71+5!QnBGwynT?sjp9%Qy&Y=Phw6PHF97vubK*tpJt!EunTv>6i7X6dcfj? z%R$OflllelLAATo0b@@r6VSrAL%`7GB@d*^OKO&X6FRpa_?l>9@9XUnXsti`@T<;= z_UW_Z;?u?Vg1DA#_#&Y0CJS{~2o65Jj%-(lQY zq{HazKU@z{`_LB})~#VHi+6RqIa1z7OI~U#Up#ZH+}FZaG&KBXniWkAbvJ>vkykon`mM8yug~%IvAK3d9eXDI+8jyoTgxlexI@b4x2GwCrr%IoEp@s5M%vXJ z@iVU!>M3GS*l*bNX_=vFYa{D(j?Xk}95hC1j5Btoa?g0`BKu4ZI0q?Lcrx%)+)_kT zeFiFz<)!+e1Gt;z9H~y6fu0BsqjGMAQ*J+`cRh-N#yxx&`_L-QT1ajmL^OWNdoBLtfRoc^Wo(dF)n^9==T2O2<)z6E<6>mC zS@Smfp7a1KS3O{T`DGg2HEKfR}bOnED6q${S|TI^T88~@NXghE};KIZr#&1 zJl=h^`Y0Cm)4Q6NB9)10}D{x)X0N zk0-@?srNrPf5FM^RN7v<=PBd@iC+cb`Z+Q=;=%aW5QZ1X@Z+ z6)!MvaU7jN0e_wQlj_fW!zIi&Ucy}G329Tzz5rg6HT>}lb*_+hrYZsQUEbWU%6I&# z3g}^AImjS$k%f8}UjZY!L7Urujxv@e%w`OhPi`hsW@ z-uJhkMvw7gS(gk^i+D7C^z};RP_$PX--&K?8nnks|EyB^&ZSR4Hn5{v%S$e0yr#XEp@@OG*}&@O#F1#T z<+73KOJ0&#y&QY%8rYZ7@Mz9-gEX&iXll?5B%56(P3=bfd_9}})+FDjB0KwYyv;Lp zd-bh%KECE0f_5&t-4J%0Lw3RJL$8-*Hz*YBPjCs;|9aVI>RJ%zLDAP__Z%3F$X^$o zkkl->L3x@!Nd1uSuP=Mv*_SA-Joai|mDE;~ zo;b3em!8CUgmjX*>}|av2p$H{+(h0mK+wENeYcd>ko7Pwk*oyCY535pJ2Hri(s3XlOb0>=Hx&2 z82*w=YUf$>ZPhQaeuaMwH|%~3Kkst-9Vxo#@_1r4oyBm?tK@goPTJWij|J1q^NUxOpzA!^XC-r)PUezg87YkAB-Mm=6z^zE`vWx4v)-QgJT<|Fp-&!WpNw+~Q{Ft+q$Ts#-^MQ=Zo*^c#ZlS! zS|^o1JBfcBzbJNQUyS6Qo`{qS#VMmZ09-low9xBG?&Cx!+q{BwOp_*(Em>mbsPmZ@ z&SPHq!%l@KDla}ong;gn0Tb3J-T%6<)&YB0TcWLf!=!T!(kxhJ#_L;iNng#b|yzJxy zr<@#7>369V-*o8d>zee&Vh|PWN4R`;9Uy}&1m%E;lyM|9=omWT8 z$>%}C`r6Sr{CxPuPrRdb(6?oTc`MKV**X(>jN6Lb_AYzB9A*=&c}JRfd;isTwUdvF z$s3iIxv}z7J=Z_~newkcKbF0>Z+DlrkIl7f)1j|@inbl5eIl*CX5{n6_ROVx-h|v; zwJC2<9+bv}u_Mi$87cDk9aB$ine8GBN;@k%*Y-ck57m`M>WcE)r=xiI{1+cDb69P* z$zK;&Q$NW6QG_XD?Adi7`7=INaSA_cBs*GW;`ut|<;PA&uMewTkLqiulxE6byDnC~ zCqIArCgjRau76tJI?Xy#7va0`!{8@p@1bveqJ%pXgX}k~fG{Zx)RXF8-5cyyynK9- zdB06&K1^{_9&MQ5XV&)mZwu9)$M&c#7Z0V$C&-i0@L(VNH6tl=FO-;d%L?S#e{$}? zU@iOiYi_+V_@u(%+at9pUx8Me@)Bv($h+D#jTO9|(UONxKJ~bIWMwNO1KFiX4{0zS z{-1z<2j$JjC$~+Mo{zVWbFsRI8U01y8fR{u>@O`C%+ikA`%F~MvT05`-bH-m-wElv zu}WSzaBJi~W6$gRZ--s3TzeVEO5;`R50xL+lFp1bDPGJ~AF zQTaQE-dNlP?0@rjV3e08UW`#jl-?R&r1^&T8Pa=h>DX1u52bB?>EXlc!{_N@_LZ)R zPk(0l?Mn&yAEPg~Yv3{3{}s2}wl}5vOuT$OQQD>lsPEKwR^4ZlyUyO%rsVVQOB)|% z(}v!W--cf5o>H|--=@!bf-+3rF8fR5?;j(cA2In1JvP{{wrbVbpk^WO_CC;(JtwaY zcBfoFm(j9p&N!AyRkbg_8SW>sb*17)#WO?P74LUIwN2u|c*pcfDifl!W7}Bp0(G#$ z^HTW!0-84K)m(dNc*O|+JaCkeHE-K8l}RsS`d$25UmCo?Ihl%g=o3fro_6Khl*z$C z&F@|v>{tKDdSZpf0p47F<>$H6LbPvBg9{hT*hO`JeC#8qHc`$V!yWEl)pu#{ui636 z$Fwh32Q}Yg+;SUtwNd_GRa?XT5zEGKr;q$qJCU`|y&0ds!uxB-IP%x~xf4HQlp}jb ztc~;dV9csY`0e;<``Fn(O^->1`*FRuDd=^ey4KU*?>CrBx3+y zN8;N#m1xs^L_AG$*AMX~#g{rF`B^-E)xTH1s^qrHBbvTW}dDCM5u zvOPW=^yhi?zKgo~Zf&qz{R;hv>9f@i5TE^Nm#!Jwk#@qS%qS1@lH!2F5(uAV4oKTL_8Yr|{j&|v@9c;0n!xQRP{bXUTg z-1DdKzfavg$6V*v%yqoK95}3QyfN`2G9#-m@Qv@ny%Ocj*m?weh&?~0XQdE*zaZ2z+h z7iP*m;|J4j@=?RIH-8WMZ*zIy`nuQy-rCoW(wFW({Hx_sy~0|A3z=gDK`_ z%9}2D+wXt&?t*U8-H%o1i_CcQqGP$S)-T1KZz85m_T@@-ZsMcXT=jqnP{sR<+pHfp z?^PcBe8BgE1>;5MhZ*Z$5&T5yCjXQ#ef3K9X)$?y2YG%wdB2DnDL+d zReq^_b@6`Kjlqu6W{J1<46Ss$=l*2i+ojwm(@6gPGv-00F8VO5K4`p=A7d?$78Cq3cvcZG~rKCKm3|eigw4RyB}-#yE`=2$6kFS*E4w3$)`;XCTgn=mZKKfz#0O8ei6 z#b0uxr5@lZ=Kd9DJ_N&J@jK=M_CP=8k{d3S;wi?z!=XSEqCV5;{x*s zE@7U!gn9iX%;_tP>Mwk(e;U=uf3fm&+?j92yjc3C^1qi9#IN3&_gB7~E@9s0%=-&} z`V!`wF(=$f*#pCk;B59UYyhcRN%0567H~THx+jIb{8dXq%B;B;MecPkirnk|lUeBN zo|6S&7x;1T0LUk-%;!0DK` zgR-{~l)ViW!v{cxW1%yj<;<&{`6Q=5+UZv~{azZnxwtzGE&~sMGr_%}_;*?iGhhSy zTfh{kdql3qyvbr%1AY$uBsd!V#TLzdA+lHP?8U)5uvZSw0CoR|;*|pD%RMOmy6J2CwMQo6;!y>j@Eq^$dil5H6h^}#T5)@zE`=Iip`yMKAKg(iR35u`odl28a#ZdP?B+(xR zJ_MG5ivK|x7L}I_sPdxw98_MmTMRdY^U!Ysl`cteF<1#IT;-tRU1l-VzEqR1pu)Kq zR5*8m!?BmK7;Xh;pkEJ)-*V9K2TeL!H1{fq&k$(wJxhNre~*JE|3T$v7pQm~02L3( zl~z3VSqyi8ibp#r`)#27KZB)u@CdjFl$;Ivs;VyV8r&bW7)m}eRWK>J9ALN)q{=1t zS`0fus!DQ~#V`XV;Ijj~3jOUC!w!%loZMR~mw92^JU2kQO>h3_b+eA9gkq9rdz`5?K-_k+4m zLHQ>+GYW4DsQgNSvZwnJlwXo#qxN<*D1Q}bvNCy|o)ZiYfGRJ{{f+%C;0ov_Q0bEb zmCg@X3^i_1IxPiNZnTe)q)slj7$!ia+Z>Q6CAHrI468w5=EdR3>!^7ac= zPICHjr#}u!??r1VYf|>0bLF=4$}@(4igUJ4gs-1o>Y9& zz>>s5?o^2NvRm^=$x&{b=q)+V|H0C(Qf^Zy?cx7;SvR{k50|~d|ADfD{O>C3#BpTP3dC$N#P?JNe&!RsG0v3Xd#?v}V_$2I5--<7>pqIbmk5pW)Hn*YNUudw5E@5p^4vGY5- zxZ^=LJ(QH}k00P(hr{t#_&*&#!++<5y%X4xI&nL9JnWx%fdAf!=lS0|Y2PGtZaBbQ z4tsCd$G>iIP>L{Sp^?blm-;gjN&7KWmpQ$8FGWYY(zj5L5^Uc>B?dON; zZ?(_X@9#S8%>Df5kPnYbpYIZH@%Qtee^vZ*^5xlWui2v_I;`84l z_Wv$o|35_RZ;ixvOC&vzvy&ITuSEE-kMPqtC^vpHBjyiAXurw1Ze43bcCU1v=GyfQ z>o^8l*Yt?HpTZvuH9MiTU;B}!H4oJ_dDkl&+(7oBqlB7A^a9!A^R^A!j3X!OnWKRoe(!CAjMmn47vxHk^FM&fOwfZ4SZ44V_WlBI!<|*|cCiRXrfpZOo zCN>iuZd%{km}A9%0;%OtK<%0qNd)G$YaNTQMKAv(gw@MG{9yH>=N)o&bB;Jfqfnb; zM%3@Tdnv~+7A>inS99k*OSplfq2b~6%`5x?32c}f1MaL@e0PCiHpn(8VpY3f-h#!8 zYHv^8ckg1)BfmoWQx^HUxyLN>O^TeeAW-(^hn%>XRPHM=Dzg44hAl1j2u5KhJ=}oI zXP0}_5*roL$Y~WeGPE5nwX0XITen8?I0K#9sO5YFm_lReb)wE|%Ow5Wl9;SHZB}v}}7sgx5z(<3a<(+29ZSQlu%4<`t zer_Bn?k@1;eI7qcc;8609HxbZqIr!g639@`%e~w-pmojahMS$+)`qA}+b7w4R&(Lo z$OuDg4GH0WNu|QB>q8KNZA8E3nV17Tg(mCj+gev-8{9A8-0zHEn?&arWP?Okds=(4ofUneOUPm({8)9KY2a=fEH)j`Xn&?-TVLY z8`claP)2_Yqk_?lU4l3dY7CFoj`~xY7fNXzOUly>54E1ABJpN2F6_W_Cagv+f9acgNn1(+N5M(kNjax z+VSM&Lny!hJw1f|G%erObhIPQezQ3HVEj2A^tSSBlUYQcHS+XF(9bIF`N*Rmj?j-p z=*9@mJs5fJxyK@p<{pbYx+y|)k42t&bA-+Y)V(ysnW= zTp3@{ShtP~V;Ji>?Z$=;b=)Dbl2%4C`w{r%405iga5`&NwB=jk(uRD8eRnp{-EgROhb=+KGE;sPuY|V+BtACW9d^H7s(dccRaCiGOqX_kV*wS_kqDfL5&90%s#wm=OOEzD{DD?=B%ypIjeMzjE|mNBi*VytLM_ ze0y;dwAOvR(rXT>Zwq;}6@Xq;o;qieHD>HroVqiY4EF3iXAu{UT|}CCR&sh)N_tif zdREeTR+f2GTDd=gYo&(!4m5I!mM5pW1o+VX-e58-i7_6t@yHxipnSQ ze0;e+nAiFh_6e8j&nlh!ZWqsC#9MKzoJ@H&A;|A$F4do9aHnr!ilh3o!xa2QdMD!> zsSmmR*$wFHQF^MKa!JJ7<*O5eIp>3{o%bJ!u~)O0yqy^G=ycAcuTLYY=BzDx9qB9W zdBg7x2!7IiUDvFbJs;bVVZZEq?9J^dNzCROcXiec=Po8z*}bURKbc`~>n!?C*2%WM z#@U`93=Yn9PG>LfnDN6qrw6l7TrW8{l3!=fUd1_&g`F2WOW6Ml-*fEWtt?H<9{*0T zb|?Gfj#Nn{T_T3_VIratc`I7 zs94+r;-Wpex$z0!zwiQkq+jLRY()TSzhqBYFjH~RSyK6}^wj=!pC;M|{KhmJu0B0$ z*VA%m_gm-78+!kdd081nvct2LXB*|m$a8AEZ@S9v6E5Z^=E4$n z^Ac`kU-3Jly|_jEi``P(zq%Z^FXOhHy{nUX%46(z<>9Q>s-B-cKQ`F;{AZMA7oIL< z|9CljhX+wE2eX&>O7;{FVgLA5oYgMnESfzlrZQAcyx=2V=Q^Jr+j|>)yGy!e*SWmT zP-b+_fHNKDdbcaslE^5YZa%U$Hpo$T#iOc^XSd%H=q zf_6aXj!zISQ_iU`@*~Ze+Bk77=1({2B0J~T{1yC*w@Vim4Eu>M1I6-ND+`oFg3n=fT=;&bo|$Ay}K{Eb{o5g0*#=qk4z4!kx5T<4?ra&KqIQV7~ee zdH)VPl=s~Ox@Idpr1>7b_wc!|yes%*`4>h64C9J;~keFQ?3)U{YX7LwZqKpk5#QBJ)gV{P?#U6!<9_;mCuX}~$jM;MrU4w#| z_w-}d&OY#-(()g-(3b?ZzjE@d$?Q$vb6sMV_n*O7 z&D?KZ{r2Pw7iw<9O|IEI^lqen^}u61Zm*@iRhseSmG=|wyaDIX^2+*7*Ot6n5}31L zC*bo2XGX*$OI9^747wdYy%cmjpA16YgSuPH=wqeinIbgl9f&soKkV&d&he zDf0ils}tu`u8Wo5dEraCXw~^j@L1 z>de0mq92@lB3R2LqXvOpn%Z_`hLCmx(z6GVH?I%9^HdV~`Q=xQdS=v1)IG|S?3l93 zyUJCk%Immb_@E7zR~_dmd>Kn~9xz(QR4>z{)i=oZ|K49aKRmr`oyrYieG~ZsN>|0{ z9p!@yC+S>WG<`AzczDjX|VR(wa<_J-G0i_ypc9M^ig@`H%3`vm{+v?&AX=14dY1aZen)l>o&fr z*KPYq`sCG@2_p*Ks_ec*yUrZ7sDCH=3FD@m@_q+pKxt{xASbQT**ZLH7T+~*RXtQW z@MAUAMfS3WHo z+sydGj7{y?QqLn*nhqPUGDR;o&tVbB$W{3V%3-lNhUOrhoJ;inYi=;Vx-TE&LxTOEA)hETTi+w@ zzso!GyRGcM-1a){teL|wE=j1(`M{15i~55*jq{3`{hWExVK;X=oHuu}V=l(QGud-* z&cgl(dz0x~Dr4n07PZUy|vYTKTai{E_zh#4O7j847v* z!%MF1)jaDsWqMGMcyaC(!P*~l=3V{zVDzstX`NnnQ=I;-F4#7N^0uUE$aB9ey=u?D zFfRS&gelLR*;IRA{NP~iOXS_3Gd}wz_I`j&j88EBV!g9sT9AIRHg?UazrpY4X0)X08-ea$Js z;XF{mR;u_kEUrtNR{v|TTei0jdqj(agYyOt}of{jn zO8I%qeYZXLWbCR{H_}Qy#7SpGnDykpvM_+yFJjz-zUaB*3!aaTvBsNh{oI%d!8XZp`1SuP`On|`<~RR!Bz67;+WW!e^NAJAQx*i<-n`y^8>0WbX7&os zQ7hj|%UAs&b5Ht#7Z+c+Q2iF`PfS4e_gu-E2H%&)UlF{0g0NHf&79{K@aQQWv}dyX zhW8(`o^gsf$>&D~vraLG(0uGI!c6)5>M!tv59&vKN>kd zEI+#OqZ3}NGgjpK{Sx{r&syW?!EgDiIQ0xnFMA7rEAjU&{Ouv!q|LS-=XVc&52g;^ ziT{$vFoF1K%%U=s=G=cYO%$$j$^>Cq8>9YSP8cf7K3o{`cru1kyjVx=i&su~D+iKJ zgryF-AA}9rBEj2(?rZ<~1K)Y}*}0R0w|_{w?4WX}(A~JZI$$^^K7amyA30qv<=IeXC^9Gqfqsau?k0FHkQ#KV-W4 zaCX0cp{A35Z31!(d^#siUwDDF;fillo;c$$TXlhQS@9d)TUf)JxB9KFYk!4xhWqS z|8_DjD31ltbTZc0oQ`&3e=qs{8J=IWZgZYKTH$ztJRl$5*0?lP+BMs+yCqnMZe(mW zcYLsJQ0X_vYR%-%(yxpi|Hata$wJoSW`k!)bJ=-|K8E^8dJH->nSM}uUGP-h=)wIT zVz!vHYFD@@=j~bpaPJDE+@epN4$l3EJXJj$3@v`kr+wqu4WxG(JCg0L`&v{F46oSe zXT;06kB$DZ+{^D2_46=smjCl8Yf1yzA9Il~P@cc~4sEj91@TynoAPU(e|9(S=)X)_ z4#%t#{an5ArK3(gMO+mI`KP{HeyMB-eSAHC$qBpI8pj*tpO>?6v2P51j$~!MB+hXs z^iSSn{o`8JKYD3L573T&n!d7YfL+^&(>@$#{o}2Y@*hwB;<4v`pfwQcap%M_&y8da zq|2>=AV+3fig~)+`T2bp{Zp}dq{^|@Jibof%BLl|}(t1!o&z?f}l zKkocIwwOCVf3ba1;d+t3f8a3l(#7xFc`4r*=)(%bw`pj4*)j6u!^mfFU;S1DX1|vC z1n4)~J|5iHysDWUMRD`dfAOMai>j)A?}pZ(?`=Yu>(1`v&F=Vov|(Kh5R<^bU3)i;kocWeif&bmk{7^ss?;=uC?z?D#`?HR5fBegsluA_)KGuW_;y0QG zN9r^WRtn6^w6ck6q{Ar||0X^VN}cH^{tqyDkaE#12!Eq9*LlBU`FEHOaw7XX4p|Jl zK!TDyXfZqh-ok#5&EPa}14xvTZ5G2ua4PyKP<$S+7%m6JhlX1iE(OIW0S-ogj>T{) zDEF11+)uI?#zDCsXE7WN%Kdrb6N0B59s_?5dY{8I3k}Tis*aOxvbP;v2zJx)&j&Yx zQ$X%h3?_gZz=V)|5M2+(@i%2L>?X4F&_4>2KglB&!$VGAatCNPjobk+l)Qnt*w28> z_mVp-h8<479UO=LW{crQr{4ndNj=$QF|2p`I={uvuVjtIQ0LFYKLL^?$vGCoYNtO1 zBq@@W7DHXS&7QHU#h}u2p~cW_?m=Jj2&Auau6)`~AyGbW0hLef7Q-~CeA)n##K|^` zVGAhtO%}sO@D}VPz-mx(1*jLvSr)@;@K*GvfFCj2r^R zL+8nquaZA76O_CG#^zNmPJbyl8@k%j6(E(as)vPOVHYU(k~bhsgA|eEMvGw^DF0h5 zhAHr7>`4xR^p`sQIiTE60u`S)sQ5@u0T_-3r=wp1#?T*TF+5I1t>SkS6hF0JV0Z{r zx*q^3qDjd$0K>hY%4Y^t`b*9MMK-zBVz>po1^sqVe086@__kRLhk&!tKTJC+lzfBR z!0n*owFQ*@c8g&XI0OAT;K#wKAVniN#bQ_q%KjvaVH}kI0jTnFo(;!tT z*<&$03Cex9#qc;N_xnMmX9iR{=o}%xEg8EruIGxo-mHf1|}P1m@=K&0tf^si;4+{TcQ0}WirN=Sh@(3lN}hv?RwKywo~C+>4=xAQ z?pA{e_f(7F6j1(FS_~(F@^=U*f6vnx2#nfOW$g!qmIl|JWbgoK@-{E@r{;bw;^Z~?S7OGv*GRQwOqC@H>&EIzm$RK06= z`kS488>n{w0Z{Ja&RlX5lupAy#itBZeAL*1=3ZXK=QM$)iY6Jq3&WEjzht+?@HnXW zbb)d&ISX>X50rc6*2euVi(v-jm)v17+z!h97Es}d^iApfzqISg`t9F+TG7Q>^U+#j(Rz5>d9C#e2U=R_%r$&AHt z2dMs{1H`N3R*T^lQ0;db6u*rY!xoStR>j=gwAWKXrQa}6{oh%}eiS8h@22$kLX-7X zTR`z?w-{~!)!sKb{YIx>1InHD0V`be5hh%OT^JH)(~nI7@iJLyG32dy#lpf_jQ??5!23yLu@^5db%9V7`Rd%SXtn|>7w1gMpp=?--cjKV81L9JvGoPxIbA@Z`X<(jDcQ@?GU+rJDz}585&aw}TE3dIhNn zomcHe)D9u=p43pSXt@GVLii6 zLmeG{3~30j3_rqu&+yay?--Fm8bbSsE&QiPZ07&ih~xYp8gZEagCn~5w{jECj5y2t zmWr*&P1riJ1Gx#k73X^1pY~K6G}C>g2!u+AY^2D`Cum zF}NMm!T;IOy`xFJF-LjdF*Y+6{jnYV9~pa;|MO$hAA$4Ov%DX;?%;LA3&dUfxe%cZUD76MB)+aA@LT@8$pa^ltu-PCv%~p&5r~U^=5~ zhR$RAJ>M!jrzy;${d`sD(?$FFlg>kHU-?l6)lx&KJTmw5SLE;-+RsUgiqKoJm}?%D2cZ5Y*E}7ue>P%%e}upK z;avA~BKCh8;rBlx_J0&^oEnw}(RPQ5PKyb+`4IkhHB~NtBgRyTGes@me=62$$3E3tHQ{<`s3V z4Mp$v)9K~)t2tAF?@H_yjhxNpR22vDSJmEg@4d;q3;*t1a%a(_<|cS6+8%FdfI-6w zF5>ftZ{cFkdn;4TN!Nyl)^mE=mMMRZQ>(RFzIAKF1yOSPwe#=1r?$1Zg~MWP4@Y?v zo}P9(Hn%)cZ*Qm09+b{zyjiODNvmb+f>2l+`60i^ap~M7;Mlo6gWOVI?5J{X>OZo+ zZe4w$=h?OHT6f0Y9rSglh%RzmX~W>+%QOxJTP=S&*pbsX z(Nz3sQ^A2??}EYhhd$qQ+tgWcqxwDHWLlStop0jXToA-Woik9{rr@5e*iUE}C! z<~W+?XwG2N<(_Za@A-goJC%Nyd6yOAc*XD)kP(CX^bOt#ALOT)gUJW}#U5A!q=cD;XCb>WBkcMiFG4qhF> zH_$iucB=1*Cpi02!uL9OcXVGJyqIB+(nIXcA!u7SYrpmk?Qb8kr-?=zDcgmUvNE$Nq~--kB>h9kge9CJe(KOOP4N$}uy0 z1o%E1um{t)b@s~H_d^G2_8mpz#@-8a$IpB)H$GkLak*4{y5;ZG#Oy})aLjV<~^m0Kt<@38v%W*}8yzR&6haf=1!N1VAErWTkVcjm{yV&R{JCiT&*H}IMq z!XLlzJoZ^%G3yP~g(@<@*h^SG$vGCoDWL3iS$aUmVcKEJVZveDAs~O4@6Smvr!Cp) zLauSL=0#qymTl;bPUD-doh)zDn`P!nIDb=@u)%=NVI=X@J~x&7QQ`VA@ZQ&FBprK*)iVL#`_aWX7C$Lsk#XpMtj zbvijJTEQ>XZ??E_b-Q>jCxVLGR2mF=MX5ZNm+Ch=ahG&vtAdq!@ii5 z?rEXVO^ven1+1UGiKX5yVNWVZT$?$lE>C3K+^Q^Y%$PceJi|C=K2a-;odDek4wdy05}mp=F#JSiU9{rz9(t~Tw3m3iMC zxrKXr{28#o=1+xif_s0H@y!G~W~sQ?o~d`)FW1XBNO#@VxiL=HKzl}k`_a~xvtMcu zXAvu7?ax*;Hue&B!fo@7f?a)rbn*Fb)7YBv{i6CY?qW-^$H~MK+VEp6^%b6v!!PQ# zo3iKaQ_P7^;ohW|+}WgV!gXQ-=Z|BVb(HxE&i?K1<}8Zdi@DobVaItrxM{~tjD5@E z!FcIaYhUH9Fpd4bDed8xy>sMUwyY&MV>8V1O;FAhf6mu$o5&u*Zpw-;SFEL+YyA8d z4zTZSTI1(Get>VcFaD4*mgl3roF$ysiW7E|M(jx(#NJt@`TEZ{_S&*#_xO$H9Ms+H zp;ww~@1Mft(?9<1g=*QAUM}yK*#jy)7luzN473qcQ(xb%-Q(?~Tz(y7|JNI4jBNKj zaIVMno8bIHgX@6uhXrWj ze^%|_jr=GW?@C{4G=}7Tf%$&)rTQE19(3k(BT{*Nk2DTn!u+T+pM^{6R)PORoDSWQ zQ~`gjYfByAp}Q(@f7I#p7ryRG@IP}2^T74T&RRkE$}V9}oi(aI_d_mWejbM`iC3Kk z@jR*Ug5haU+V?~|iJ`J?aHvUi?LPmmb#f#Lj#8T&diX|%=^Hw z9GbQ`S!OX*BS4W#o~P7-VJ|3tr$MqX*<&$036hk_Zj0ejkTFfwVQ?IH5F{$e0~W&$ zQ2CyA`Wu~o3s{MMqr(TliO@A*987`)DY@99xmQ5u>&RgCEH8vq?eDPCGEVQkEQwViJiu@J9d))?N{vJQ}xy> zI`}_w#Zmt4$Ln1KI+-+|9&m>L!vkO8gZ1fwXY?W42<`6}w4IOCX9k_6tQf`JnR)Z+ zUy%u#U;B1S`KI}_pLg8j%zZnq^#R%U?RK4`eLMD~qkX$2xmdFA+o`{Hv~QPIJN~{M ze_Axp?G!Glr+MUl9ED4Yaj5;S=*<5_@xi_i@AIO0{5-5-H_*kzT{IhVc$_qp^5h+O);2%U`ZdptsaK0+rV{(Uau z->HcCJrV!jkC=Zt!vE6|^E)FnXKnK0(-blP-H3Tfg#X7Q;c@FtaIxyfi2LYwMx~`5 zui7L0$3^&0kI;et3g^Edo*t*>iy61KD7<@}cogqIq3IkXq9ouj3% zKK{E{fe*PKItmRVpNVo7jq>eY>hoDnXxs-iucPl%YY7|?tl%dRE$`?V}9Z`!kv zP+luw8llQd5jD4HSmPPKamKAv`is7( z)0F(S>xq@Ff71G&l&2X}neS6HQ$}6xdZNa?QsPIG7z~5aOlf?`^+eC-Q*w*i@4{&* z%iF&TFSVXn>H1~g2oGbhsGuGwFFxm+j+w?_ii4T4MdaM};%=5Rm%XWUs1v{hlZ1UZ z0`Jp6EGw+*L&F7qioYpIU1n zo3_s9`=st{e%h|>6kVH9Ix9>{TcxAkDMx0FNb*wNh^)6L9Gl+5#mdpQ zueR%9#mrXNHO`8Qtc9(sYp%bAp3AlLZUs!bx<-VLR&Df&kK03@S>5I}%_|xRY_8J0 zmG;fIdRZgsOKs($X)Z8Nk_b}cEKrQ|RiiW4__-K=KR-IwkNIB5u?O>F{&%?kqd)(( zZX(s6xz<}~W6gbx1U0Gk7BJlF^fQ(==L4kQ2F-e0Rio3_`2gvsK-zF~AEV~sX9)K& z@FXa{-4?^6pw?$PK&_{=fHbUC4}i4uW}O69$)(U>m;~j1u|;!UU^w=)exh}jDWKMK zXba8yLm8;`hF%=SL9M4~-9+ih<&B|wWq%9Xc@~3=9a+j zD^9ZbaB@Ho3l4U-{DFZ72Y!dZYo6}aVO}&Z_u~!q<)UemjQUILik9qashxVyvHzTC z?E3M=dhBSP?(5ND%tiZheV;S;_2@KaGWX@0*SvZDA3JkjuVy>*gP@dzBgwt5S1Wnv zmsQ&$G@W^#`8^TyAK)_A{g8$9m@4@Q^fou5&qG2gLfkC zH%9FLQ^fqwBDC8rkZntS3mcv66j-pc+pP9_E|AGK&pBo*+|^5$GWY(vN%NXDO|^9^ z)~;X4ZCUw7#>WJ?(SS)X@A$o8NiSr(NH`_EEHp%>sQ4r<%D(t@;`S zueY(dfc;M`tz9;6$wK<3=7x0~)z98*!iH7E3Dhd~>++{nxmsq@*B6Yu>6az?Y?$pK zrladOYivK5llXFD628DBFI)OGbp{QOw$%D$FsTsKX0>c|?4>e&nsv?2USIf4mYLgQ z^0$EIW_W$QN#6!DSM_4(f4luDGj5w6w<@|1)5NI0p=Diz5wg(F{uDKPT6+)TJSf`m z>|K;bqo2Q7a+9O{e9~)Q?tId-i1I@}?ahSKdDM2(e4yyj-F!{7^yOZDtKVblmN!3> zz8)!$mb(0Zxy$WW{Ei~#|I^(@Sd$IYZksh@cJ*!3W|A#4r%pp}y4gQ;Yqg#BSI_8g z->k{6?43Eq=KZ4;*|-g}@~QnIk!e(hpfv7~^0dz<*WEF%Zfn@kX6@)dD!<>GsGpY- zKe5a(A2vJ+=lz#;Urx6R*9K5saTomf9#){3_q*jMYZMJ%-1XxVT!fbYmg@*Q2P_pg z{}e*PB`?)6PWXdV@Oy1iW#7;#MGP{l-UV7xu44yoX zpf5-H`*OOpwj8==1vp~-+e{$GgDtr42M z%CrAegnl|gQ+4y~|3QSVkI?@vLVqzre_RM(^%5g$jJ!#2%rDWy>z1q;+*E# zaGn<$*x{27Bq778ZB5(^92>Z)YQ?JHcJ8`VI>$}qxxKML$w-J7nGow*O8IV5&yOzS zCN=>Xu>RqPSFTuz0~4D#J%An9aIH*&iZI`#3v4+YF=Y~(iMg#q>O+Gd}~8f12=5dOQe-Tqo^s^a_=`7J0l-P zQ=lGes9P1ZAdgE|kgjZX%AGHSsgd!U}bB(VRcK}<9V81I9HzL`etr~mB_AOT?0wf+Ga~Vg`3;EC_kpi z=#EVC(dGdWf4EH+mAeugWsK@u7_2v2u<^^64C7CquDK!9 zdfunWm_F{3)P+d78#j0Va-goLMW6OLrphVD2igoAj0J{vf{bs5ZU=EYv>m(&)cEH{uo0XLE(a^Y#o))l zS>Q*(O7I47G&l(?2d@Wv87xc$d%y|cF)$7u23eOGdH`gdXJ{wLdd<-7;5blYN7jLc zZU9+-8rldlrX0E)WSlZ|G01w;&{-hsMnfyXk>F^s0xSnvFB;lQI?#X*?EzVb8hQ*I z1|9|(r4Ky-GSnH`30?(m2Zw;|AY-4Q8^FO}Bgjx|=yI?eTnsW48#)W*+se>NkfGhs z(IA;I6gwK1!P<$dJ z9L;#lnE#!lhq>^*?&yDT{Lec2TaF$?A(L9=Xk=>}Rqg1HJG#`-cR2buwiKS_j()+> zt&V2AWy~eNN9qwC+5eWK2e|Nk*U^9H_;)*cyQ6>O=sHJB4w2N2j=ss!Uv;!E&z}`d z-uQV9ZBE|$BgSUFAzo5Tc%+wAX3?nFy?$n4h?cj%d;PpQ{pDrf>o+5NQg(XwZCds% z`!XYY?cen5+qCRk_GL!)Qo!liw`tk8?8}Vo$=m7Kw<5=KXJk*~PS3s-IjUQoJ)t`z z`!+rMmUobsm7nY(-s|4KweXFyFeP?9frf1*!Jqlc%JqkP{`!+rMHm&c? zEpxbo!qrp#(c&4|x9QopX;UdQA9g)t+U)9E%>qfmJ&9&Lq-o_tcHyenddLClP7t>x zRqed`$o^DjqBS|@?6f;t)kcr2UYETd(ncpLC4OR=x&a<~DOeBD7A@Jds7~DvuT>qm%koaw#X~st~$_wIjG~~C{WP}pg z_tAMPYh@V9T=s^|W~~O?N}fr!A7hs6dJW?_vu4FODp<^u;Q6pB_Y4{1sjaQZu5T>i z9z@Owzl1F6M$VGq|Ne6BA;6FQL2T}8__38opMJIy-EF*gWZ17z4qeVY5cK)xJwSfA z%(^&>Y|Xg;3z_i274FOlW+~30$vX*?gmy9UmTKglEGuA}2g?vqshD=KsX+P57M~e!FMD@+6)WxjYqbrFn|I z1!?wvh>nwXj6=6p5*Eh1v(0-QEFo!BvH2QSX5 z?Frm|70RTBky|&LvTDzeX)nta;;*#EU6fxjy-1#2Zuw*XP+y+ed`_Gre@#9o*h}N< zL`5vITj5dsI;dm0?ouwVyL`EzPPKFH(3N@QyK_zxJHK-G%H@_fpFX+#a^vFVu*>g& zaFvh`FXO*>Xy1`{m*A|G($uGOH+FN=`FZYv`2;cr6gT$1FeL0tYwfA>eDJ5jzZa|9 zo_`l%5dYk`MBTo1{a>#>dryozJ4$wc@HF>bjLR&^jZZ@H8Im|x0{Zv_ztg$I=l5IJ z|F9_jg8M}VZTy&3?(%zpRr4xt0 z-Fv4ys(W8zg0P!@Vk9^a5?2jZP)+b%F#)fbMpFCm1&;5KKzb0?WhKt2Z3ox8Jj`4OLr~8*Yt< z6wYqfr~5H-iuOx>NiIXKUoS6m;iX-d-zB#@daR`MW2Xr-O)du+J7X**KO`o=n*htiO79(%w0#vIZs)+XpaF6Bp@ zG*Vh*h6dH^f1cQ#a^s|TP5$Uk%EI<_J#9Mo85@7JXSXEInD^yPW-Qn}DA@1&sxIzG z7H^)sK51v2P1i2!!6xnv_Ifd=+Wpm5mcdBVXN{DZ{A8S-ewF^{RrN(A_d^7k?1cswfkBrebUvzuEcRSvUx z0gp?KFMk`i(SF>QS?_;0^}@D?Ht&_!p4L8crH{s1f5uqNwgWaVY`bH}n7+Ti9KYg} z89yeFU!MN3ei5#`cG8a{(66}EoqF1jukx*P5sF`Ke%Se>E$cR4Tztm{`>V(GorzGI zoEm5DYhR{2##tXJDhGz|I~5KQy>t=1?jm~e@V@?RZUk?cYi4?)g}-yF14D4bB4On$fl`J51Y?=AO5p_X1^n%$}znvvL15 z@k+mU;e|gUZDig}-He*k2EFhH&b-TvfAiflXMKVF8peHwb%Ch+cv`m`Lk6N7V4<93tc zOx;rZY0{SVSZN|XUoR7bgZ;|?a^@7{V;?z{G4fli{2+~A(<8VCj5`lArv0$@xYNf~ zOJ89sac4TZxnEE8L`SDb&{h%d=WyHY$u|X>yhTL>EF=T(YAPV-@ZIX`!Xue-KeZP zwS8UZaYy-#x_gu|Ix^4Q$gDfH*TJuGM}3OALne5E3@;x}wW*17xT7vb-L+Al)CUxc zceFn_OIoY#E=X(I$jW}wI`-v@rFDM)b+LG7l+M(TX!zGtM=J8ti#x?#J7@Y5r89LW z>aLCYW81JHz+XmOy__jfFj0ACM=P`;B&+j*`1}IpNkg!{<{MJS$jZY6I1tu}=7c z!m9R8^~3hFcKnfGOXy$Xe=$Gu$3Z##X#;ILIpWkj#wp{6c=vttn)7SE#~Ha8XXQ#* zhc9KVu59-QrLk=nemLMKeoW-oG5KzAuJh@S^u94Sc=64T&{t4C6;7>#_uLY^nBXp6 zg}=NaVb;5I$IvBlwe2=8nGt>SHMzHA4!g!C+K#8J-LH+bb2;g&-1u}CP5ZJfP14d2YbF9>!hx!{qcOVVS-ODZgyf0Z|5$^y6Ya8_;bb!f8L}1h4Szo zV-NOK7&p20^Ty}6@%H6bZg$ePY{K0;dEv|VC*O_c6#iVKO%s)yT=(9b{x2`Qm*S(e zI~xhdiNCbpiWJ{`_r~vRx}5k`aeH}b@xwkl-A_F==fqP_&oMk{8x&UTc9?YiQi=8J z0FP(62pSu`yG4D?E z|IVjB+iS~I;@o7){oGjjsd=VN8L@}DvF(E=7E)gpP;cf_f97$g?tkr9##*eV&z}>_ z^SnRB{0O)kTye~=(|z+IjR_N^i(g+feTbtyUtgxxR^;0Abgn%=zsJwKb${sKuMYmj zRH0WbYnqzasS%jVLoaoJHT!9PMPPP$w6r#?uU}L9(Bo_wbUN!+K5FS&E)g)6jHxKQ zhtXt#KWlJNw2j?xiw`%&#TdS}YaB%<|90MK3UCH*yDkGD^ z?Ic}EJXY7O2o~QxZ$ZEbqgpJieAH~?H1{rOb0~W$O)%X?$W~9ct>m@b00e$0$(Q@5?`uY2$w!<7&1@SwpO)97~PqFe*KQ0J9!*-S$@E$M$ z-UYJ$WAvvu{n1Xp9Nd8U8Tht=-5_fZO~)-hcobZY{vq&w@F4gxj!hr1814tDa>;!b z!@b~r*xLw-&jyPRHi6>v04P2+p!h7c7$!mSS!^*}2#U`fQ1Ph-<$e+<_v1jhA8j$L z0Ofv|#c&8H_hsM;@EDt;SAhq?)!;txquAeTG29L|qrU~b0sVH1VGBrEuBrzop`WrC z)_}A@RY|A6*y&FN*PuTMydL{;i{UtMBJ^mB;Sf;n%bdP8Z(|D#R)BIp z%$g^MSPaX+2hi^wZRC%edz3#5eH{7;Q1>a=H ztDU|!Yke8>vqYXfz*R@V4PXXjB2%>;R6ciD3^#)JqTl4qQ_lPWXTB8tJmzyi@f!z< zUk`~Qe%+w>>Aq($d<7K0E~kIc>F)z&ztidOa{3*h?6*7p%}&1&T#o*7@P2S9$QHL` z(qgz6l)noth6zyRbqc8Pogs7NUk@mICoP6YLHT#s=^t|X2SC~1=k)hF{T-m}Z*}@x zoPHXV{S8jP&FR;JvcKHv*Es#fpzJ4{{v4-21(f}`(;w&b&(qE-{-;63|0Kvhq-3|n z@HnV=9kUo71@FUN7pVBRgX_RFC_YV~_|$_`>14`c_y8zA%PodAp!mc=xf=$`T{$Rs zWfsE#l)LjI42Hd+-1UHp&oNN(Jp`)!bUJ#A!!}UiOM&--OP&54Q1&N*DsSbW;&XO* z5PShV4vOzV@Ln+E=(MBj9lg-elN^>gJb8_EcNkRs4uLe`$u5iGUQqGv1Qp+17Q^kJ z;q$ z7)*mo_cpKrTnOF?CP1=2ImcqCdj-g%WVOX`Dk%OMhk#)P_!-;^>!SND@I2g^X^`+1m?w8>tJ;aO1WcgA9P8dN#x0@W{Oz*?{a{4BT`RJ+{< z5@mCbIT+SME4<6WPlJm=`JVvg|5Q-^>%In}nAE-IU>FDGzwR{$&AsOGU-y|m2$q40 z*DH)ml@15NyFuMQF1pdt%R%{{098&Z9gcQb?ywhTGVgJC%;8~&2SJ7BfW>ehsCaZb z%z&SO);;Fp^MJ#ppxh-bh6}+@U|tC(!O@`V^Dt2MhFA>CL9!-UW-(M`AHkmPHLn4? zLD|p=v9a`b&uo!Lyl}}s16!-v0R#i!U-bPUOek(stg5q}^6u)B@ z!=s@1={|79>lIM^B*(86+zZYCH-fi;Nl@{f0xG_vLB%%!72n>0Hoj*qhNnTr?-;1~ z9&q$7Q1NX66<@v=negde5?Cc`EQY#|Md3?Y40WzX;nTh0im%S)5Y?(4EGfSGLB)3m zsQBt$Z}HQ;-e9P6LHv@s*PCCsnLqJs0TthRQ1Pt<9|Gf`!Y%oR;@blud&fc9I|wTL zdqMfP3nWO%jKy#Vh|{F*2?xUt(D(<+{bG`U&F>f<4h_F$JVhW}k4@!usBeGuf^W|QQ3fe%VvlFWrNmwYeLLg-NE z>D0buK=BpIUOOoN(xB`MrN7b9Lb-1P)m}7#axav_aZvf`C@4CGve#nOLfP95iY}qdcUiSi=1rjJ+6juT?HSjCWzx(XrS} zV8*@0MvDoHl@{X`qZS>D%{VshEjC(ASgf=dw-~kPSZwy<*S*PNqs4^9N{exeQHy}Q zU>|Y@x2fyyxRTOPh+_fG8Fn@ELZMym?$(3$x4PThkUdualzWEnrqC`7M8j4(Z%GZkms*k8nJH;t^LTi(~^tka$DxlP>H{#Ku6 z?r5*?+raJYEBe;)-rIK{@9h`uId}*H4WOud;Opd zyjSGaaYw^x^N-~7o&Of^Ckh%1@VTIg_kn_gyiXRK;$1(qVJI{V z-O78{(A~U`3~k}Pci6sR=nUJA6;Jvf3iT7KD&3X@S9?oS5SFO9MTS}sM zMR8p*aVp-ITdyI;*VOY~ckL6`l494c<-PCP1H5-%yZ72|DW|SIb8X_fZYghF z*L>ZP>j?F_oxHbRw~b~G_Y%-f3+{8@Oa9NKBJuav-77VJe}CaZ8YQytkMsAIIc3h@ zFNl#b_s4n1W2Sw>{{BCePpO+ORp^fMFZ`wcjaB!eF(Lo`aq@{)eUi?kp2wg~=KeV4 z`{>F2yVkunUCG=Z2iJaQ(br(j>3bRbS6(LH7*kXHaX-?k??hNiJ;thI*8D^3Ugs9d ze}5c!pjG?hzW=50aes$(-(=O_vg*gJ`Z23+vFa06{f1Tl(W-xL)!iAq(Q})^!~bS$ z{%J z?r+uqY}Kw+@3HEiDE*-C7OO6lIdSsySFY57{Pc+p-_JjXr4HoJUr9|I^KAT|B>j4k zKK?w==r@h_vf9KTmSuet~10{_WgN_ftDVBo@0rPpFc0K*V6CL zGn}Q-F87TlG|H7V_vaa&vf=ylTJPKNcV6T<*l5-Myul~6Xm9MU7GRy#GQ{(h2wgOlQ0p5))dN%o&f3jbS4{y#_h1;e{L$^YCW^{Yw# zRg)ir?jK2_=b9w*yOY$nB&F9k$rwTZK27qkB}qLqDZV;yBk2A>lKtzG!aIcJp#2p| z{P<;(`HUq0e~@Hen8Y8ABLw|lo|N88ljzsDK+yhkN&X*73V&vjf43&_Z)j5Z7bp3D zSrUJAUP>_huP2%7exacGxTNsDndE=+xx86P@zr@PLH}+{itnl<|Mw<^@3fwn+O{Mk zaByqK^&0*`vVkQWfs8bufW5FX+lh4S#aqN^EZ_rukMHQS4QN8RQ|A1dk>Z&pe zHEyrEYu>U7t@@}i#@-5*cI#0Bgmz-;QQEp(CE0STLDEe#A+;OE&)skgS(1EeJaUjadJfU8C)>l66GGmsZWg1G}ij zEPa_h$1HwHPH|5&Xwm2dSl+?R%Xgl`Ky=%vH|uW*-djw>32=8U4V+{wo{>_^bUAdz zqN*iT^D(WMJcpyuW`B9!!dX@GP$y*yUn986DL|rUJ7{P#uwBjLGs0UQ706xoFqO7* znZ2{ul9@D%)9_fkWFs_ZS+Vb7>vEysLCvOo*=0n@KH21I&7GXyGyAT<{YtIZ_Hf@4 zg~{Bq_xpU@thbk|e&*G`OYpdrhtDm~_imn@JdZu7;+FSB|~hv~JRx7}%ezH8a-rS@X< zKnULHgDT}ZkkCqFt%5Vl-2%DONa9w53L`#i=P#Un7x`ae$==TtV7t{Z)FNXgMU730 z7^HHbVrxz`qMv1PXqjM4v{<0$X_<1-UaOTs3Yo-gbvYaHjkIbLPBIDD_KzQL)e4-_ z*+x&tb%Oy$c=ABuCNC~*jZa`HVrLH97Ahu}zzQv!tnhBNGJNxkrq%NjcG{G$OdL0U znpb-TEL$1JNu1s~K`(WJ`9(>Pd|!N(4W=MesrCJXxmwRiYdr<6lM~O1 zThBS;gHy;lKhF$0 zyF4ik%>$C}%4H9X<${#2!VC~MX1-7B1)8uc^*WF|SGWk&x`lC|%#~+lE;=A0GYS%z zIggfdVa}tK8f}rBneecCrNy|#s6{~bn8Vq?e2?S&9JR)${pYSE^#H5(`I)fl4WJ$~ zJ}&pxkF9)aeAbr>o1}(Nzg$0oTH}E}{|coJ*k^9h_lhqVm!zJZqz(iv>&~hqb6Z>a z%|Ww;!|SB08K^Fr>9N~BQd^aq)UXb;8(Z56{_)`*n+`Sr?YQth+nNR*A;DU>wIZe7 z>v+}Yh2Had&B&3q8tb%PQseC}S}*CI2|X<~{e87BOC`JYoNv8kgf;f%AKAj`M`4&N z4?5IKpMO7x?~k9iHE$Ap<>cVzneF=4lNrX%-B4)pKpWbZ3y zhb<0=64TPU>s-RR$KTG3pGf1pz+a76`FNl8?#7ow;SV-ERQLE5ZrTUo;+2nkdo`Wb zy{yfgWwW1svA^h+V0oIemhoKnqW0OudJ}W@Umf)pYx+;;dSr>*^4c;!eGt%=_~r_oPqGBEB>8!aU(kl_kr%t zX+JFE&)~5em5#H_QoqD+q?d;MboLQn@1}pye0AO9zP&v5F8b=T%iTBs_|+8lF0#+} zzSNDMj&;|B@k@3-!p&2hdFZ!=prznF?S=e8_(y#|9lJk`y~<(2$alkg-VUXGP^+^k zO`3Z9WqqEFzQW^G4f~{PIS;AjXYR(2{@vMlGR0}-Yl1xX6lY^lc2q5qFOvMY-19^B z1_btWdiiHO^p9ij<=BnH$Fxgo+4o&Q9NrG4fAHEvs~*>W%^45=kh6Qda}pJXm!ESt zg+Ducjrz%X@eiio4eGyO6$zwy|Nrmey9_UQ^ zcp_&~bQY(lE^docRkZ#23eZCvvVEB<_;mFC)gM2w|4HJsjPknLgdO>y=Iq%SHGShd zD3`7IT6;c!!FfjtSLM2qeWG`#$2Y3{YEQEC<)(@=5&U%0nLJ_qc={609W8P-eT;08 ze<7=H{QLCmi=ENNGe=iSd z&Z-=N8y-zh7Z{@@*0tIyT8CW zS8m#BwZ(P6u)^F;ehs^QR_`Wn>}Fqi*v(zNn=>3bi&tkfR(-)c->EaR0eNloSDi=t zyTmEj_V@W1hL6`f;SajXXNQKhg`+a&@AoDBkiBht|D`rE0v^)FGiNA>?l^g(#`31U z{f_1I!NRt%I*C)e@Q|^s@Vo)*xWr9Ers$`}W)Ubb*aY{*^1 z{7ZtE5|WMBkZ++EbYpbnQ{k89SKU*=Ahu`6)3VCI)x#!GwV2ylbuAD z&iJzeO+DpZnD4U`b>)AvHAjYY>VKGZ1$y@J?<{@?t@$!zt7H7Nj$Y3;{++pR!F&+? zZmriJ2<`*v0+jFdFt!`SUHL8#V@==y>|F}VT?Qz3-9Yj{xd!RL*cop}|6@P40hB$Bvkd_& zLD6|BsBpB-MB!w47|Q?^j@JFlz1Ahj{Z<^YG_9~6jDiVJ_O$*=_LhMx+VJ8NfdH_9F+TJ5Ub@{=LN=gfdkRs3Gyr7?qQ5G6iqz0dKlAKjofRU z{a~;OPgxRIxELw6@gLoq1EW~EsQCWVE1NT!X}H2784dLEygWI zEjkvPJ^#8lS!}eJuvlp^ZZT>RkQa=9MF;l?En3FPTz4Pqqw7NrA^*ltN! z)|&sTb^nxAKX1)x%$R4CHUG6$AG7A#SEc828=g;3KdJfq<0miUUgLkw6e2x8;4if= z&s8r;?aS}|*4&rZ<1v%@aXIGs4u7fr`u5w_{jH#$hpc_SzPZ(^{rVH7aqrj1|6tAi z`ce0S%YVN<3|X~b|8tI+G5721N!CAwt!J1u_v_sdCaldgX`4x4-GR~c z77(Py`UQ>F>ocUGE!D`8czhuI!s#(fjqtqM(5bUYV2PG5Y@wIxyWbUIFd*MeFu$eiCcRG)kgmBeR_3VxJ7 zkIHe2`Re>tiQLem_JAH=O&d||L{-b?Ip1;mO9TGNZ3_fxjGD$#Lf}8=8dr~6f8y4` z2KwDgMaxaiwI|Ivq^ zRqk&|={xCcC_MMQ-p&l!*Z5jHH#!qK+nMpll)eRW*AI8$v$zX|hq69>26z5t*D+SW z8FSN~3^_X&>wC5Fzd?Q(C!_>`^8Bc zztpbX%_ZIawDtKJ`q0LYvBR#ydzNvlc|t`yu!G4=L?dT%{X^(3`=91qaAndd-!{pIU?m*PMnDN<4GF-a`03B z);R6&rwW#$0~9pmii%mgNBVju@TdHBFjqf`@?QweGAx{Gv7g0e&r#t9i`rKvdzx<+ zT2Bji1LTTw#pxL+^vX2y{M=@5l_2( z3E0_Yix-z6`~G-c{PX~15BEn*qi>Qcd;A;t zw~kwDo<;hE(K>IG(3~9e3e?%1x*1^4QSRWT^?YS-EPOQX`$iMfPFFlR?ey8_muSw( zWgK4NiKhOE#I#EqIWM1i=eN7(o(RA2_~YCMaN?qufAsj<-JKIdsY{xxLu&?L_b}&w zzhloAK1JN+m;8w`&m#;w@f}xWJByz}R{Cb8pPelsZFBFDos?OZ%P;>P*>jp-F!F{+MsK^RsD3_wAg2FI!#^&)yrBf33q=vsI*z+7_fc zXU(?FPoAn6Lmtt2v%fTJvwrx=*^;J^PrEnI_hP7TMD%W^uI`LK{&~xy+kpo`{ya!~ z!jIRrn7wDuicg-iJG;C$=R-T2+ULp3PWkyQPJZ+A+6P_C=Z)^yId4Xjw?q?VDA(|t zd?2;fr7;sk_yllN-KY6d(0%|LyX374w&@Yf}A7 zI^5PF9S-?t{x0uLI<%jkRrvC=nR2M|Cbettfb;ntf_6V&ieEl&gYoJt+{!cFIl!IL zZ0FZIlrQ-9_oP>HTKV(&_+{cQKP4k56C>-$`#!J2-E`+o?gtNJ^3 z94WJ4m}AvTv(OT)Q=mpww)J7)NsOKRC&V9dTb%V^y& zv3$HUVanw3&hRC4nOmPH5E}FiXtK0_q_1Z)nUQ*+gZTuj(}JDO%#UK8Pdn%>iwD6x z)J;~s861Lo14y|mU+-b85tKcRv&(%AD0{O(s=)F}4`Zbuzw#0fV;W!2!rowzsWK!vMwb--8+sBmX{7^?&o?yVrQpit|JHNH*0GxHInJd9}#)*$pR1<9a= z86Zov%s4-!nsI(Gb`sAO-=mDlJfJy;NAzt+zYnPS1kEET-zgm^(mVq)4tN;TJc8)j1&XdF4`Vw)(Y4(}bAFBJT8~=p8$FDz1LeK}l>2%QV|Ae1ukbLI z0OfurH~^dqQqIi!+QDEPH6)w!XTTVGhObc%Z;ONIcb8fS80?l39n6s+I&h`YU9SlQ zw}JNxw~qG#_aN^kcNg#N?oQs#DMy%0*qgGC_pX%PDcw@eq$Ikn=+-S|TdFs?;7u#E zq#k8jLC3CeG)VU*CK`@*KhFC|_m=M6Qdab+>rvkWw>=W!6-+ZUhS&367k+~Gw(xe| z-t@!zG##5}o;M*n*uR;AuKG8AJ6ZWaYVEt%Q)boQu<9LFJ>ROezh3t5wQ4OYlX|69 zKV{YRR=v)ue_++Wuxda2$E^BsYp(Hk%@;IU^=Hte{?`N&U(Xl$mfC+5H>rI&sdxvB zotKi-HA(8{_=S#JjJVd{e$`<-ym~}M^{i?;6rMZ|E-`VBGFX&9&$-6Ib*`cw$t69$ zTH5*}%FJ`VqX`BYw6E2=)0qXUB%#JhL!`eq=Ys z8d4c+=+0PU57q;Rx%(%y<|FR#I%)6l`k3(r-KRwqTgM(+E^j5_L|DXB>Ss zZT(MJOL~U;_gcR2avtN-uhoXqUemhY=4#!ocYZc= zzv3J@J9B@=*{S=-Vs7}v7zVAO8E>aMClc}po|1WHsNeeueEJh^Ch`4V=;GCH_s5Jr zuW@&|bK*hh$h#~)GW;)#_P_5WrctNlYD}bw@p$Re*)!;wtzCiK>e%26<@=FV8@sIee{L(_2 zyib}a&uk*Ev|QxhQ`L5-&;Z6pKD}=OovV+?24-=xP|Fk-AMXTHzQK#h9hA& zE0Ph*oSqT8{OTHaSo#~IN9Vuqrbixgd!|n?=Di~6v7Xb@W0zh1yjzfdlbeygd$hAA z5{g9Ty1gO`-0aAnSY-O1*dP{h=WpLa zxSSQ=d)Ul*+gA}zx&40BjYJ}>yWZ>$Pp`+{H=tj*aCAIh_!#s*2L0vkRp}?(%=Dh2 zo{`P?RZsYjK>s7qzt_aASNh_@(fI|T^hg=z<-~6l^sj>cqtHKZ}&^_6HZ^19};A-)I0pah(-{%bN znUPF*|0w2rp?xp3-w1yj2>%1(DjF6L{vK%G1MSa|ZoMq;7sBH*%x@(8*P#71Xnz#i zr;u)nx59i5vtL8|uc18*?c#e1vSwZ^>*`JXGxD5`W*zt7_{N?wr*|)vH*h$ZcRXdy zM#|lt{5SKb-pDs=Rz8rQ70NDn-OZY`&kaq={F2jq z@x+|zLo+88WQVRwKTLeaI4Q&@G->B}+SB7Mv!k8*m`_gMTO=}-n%Qjb)mIg5w&S=oPR zUoTyHh9Z+bu<7y~bPq*67o3{w^e&pYX!|i}-D1;cveR?Y7R+?N>W0z13Tj7Z6@&+S zyb0Ee8jqk~X?rPcCeqhq*AsQ9S`XTO&ZS;^q=WfZ++)R@D@+q%-u6e1CU*h5C^kYj(N719?K+hFwAAFU6u)lbd)P&`?Pef+0|3#dQ+K-3& z2Qv5LJq)!MH9mNf`%^SQ$C~yXD@e>KFP=s_#q2rOq~k#>K^^aei1yQGT9@H()Hl;& z=i1j_T56YNL_2GT&Z(aD7ixz#8g8_;Lw)t1+YY@y;GZ&4DKGhTq3zIw-0(!rn>Hr? zkgpt#L)mnc_pQ&l+Myc93bsS*P>ZfpU?tdDJ5=E)%npSKy>mThQ`|RCPSL(S?wx$a zS)=*vcI`~sN{$o%)L9?BsyQVQYfe#HGPJ4MTPnX6vKa1TT=~lQ#+olU`D#PaWajSn zw)*uc=5G8uR0*%OJ`K{Q^dKG`qHquTD$g@PmCqR--Zl;-&V{2umEV5WT*Ron1M-hS zpxl0!c1xKt^H%9}U0xH$)JwDE@+$uNkIHLMeSYPYa`69?@>+a#m;0URH!ht!=ia}} ze7EGSo)*h2U+tGyd{imX0#`u}aH1_fR@e^^K zPl#_J3D4CJ-D=|*weHqIm%Q8!T9T~|&%(LNzt-JS{!HAIrw^i5m6yk>2n?2gj7))1 zII{ESJk&=cuXjR=)3XxOhHhQe{{bg!aX68fR$Elp{{iOu(q35E-;)Ql*HBNQFOfl8 z^ZKZ>_!askJ)O{=mmYLZRP%j(!dX0vvMzJVVeY)N`@R?N7T*GqTb{&DCGG5Zx6!EG zEl;}ciDvA^yNy8|!rVPkY1Cs;r(hm2_liG|`tAQp;OgzQ{@#$CJtI~h$w zSJ%^@DRXJt(6^rN#z&g=?Pc-rWz^0qo%gE&rE}SDMw{rw0NfQ^=44O$cFJ_|2{(J* zOG%rQpXT&F$~@r8A;0RMQFCW$zMHWst+uu_t)`�XMWbu5h|JZ>}CaboKn&J4-jR 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

    UlcovSgCW{Hvu8{(SgV=&@Y`-U1E> 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 j$&=!sRR`6iF+l{bq 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%0Ah5{ZOtWO?&0Dpd&G?WC2r60 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 z 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

    -ky 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℞bB8q_1b=~j!s2#|aZvo%460o$0hRt# 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_AES_H +#endif + +#include + +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1.h new file mode 100644 index 0000000..655bd20 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1.h @@ -0,0 +1,1125 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/asn1.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1_H +#define OPENSSL_ASN1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1_H +#endif + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#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 */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) +#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) +#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) +#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) +#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) +#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) +#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) +#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_freefunc_type(freefunc)) +#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) +#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) +#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) +#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) + +/* clang-format on */ + +#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; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) +#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) +#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) +#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) +#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) +#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) +#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) +#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) +#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) +#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) + +/* clang-format on */ + +/* size limits: this stuff is taken straight from RFC 5280 */ + +#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 is 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 **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); + +/*- + * 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; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) +#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) +#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) +#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) +#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) +#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) +#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_freefunc_type(freefunc)) +#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) +#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) +#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) +#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) +#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) +#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) +#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) +#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) +#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) +#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) +#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) +#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) +#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) +#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) +#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) +#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) +#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) +#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) +#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) +#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) +#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) +#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) +#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) +#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) +#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) +#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) +#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) +#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) +#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) +#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) +#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) +#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) +#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) +#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) +#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) +#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) +#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) +#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) +#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) +#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) +#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) +#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) +#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) +#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +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); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); + +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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1err.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1err.h new file mode 100644 index 0000000..9175614 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1err.h @@ -0,0 +1,140 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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 +#include +#include + +/* + * 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_GENERALIZEDTIME_IS_TOO_SHORT 232 +#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_UTCTIME_IS_TOO_SHORT 233 +#define ASN1_R_WRONG_INTEGER_TYPE 225 +#define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +#define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1t.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1t.h new file mode 100644 index 0000000..94fb772 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asn1t.h @@ -0,0 +1,935 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/asn1t.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1T_H +#define OPENSSL_ASN1T_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1T_H +#endif + +#include +#include +#include + +#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 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) +#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) +#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) +#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) +#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) +#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) +#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_freefunc_type(freefunc)) +#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) +#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) +#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) +#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +/* 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/async.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/async.h new file mode 100644 index 0000000..9044385 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/async.h @@ -0,0 +1,102 @@ +/* + * Copyright 2015-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 + */ + +#include + +#ifndef OPENSSL_ASYNC_H +#define OPENSSL_ASYNC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASYNC_H +#endif + +#if defined(_WIN32) +#if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include 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 + +#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); + +typedef void *(*ASYNC_stack_alloc_fn)(size_t *num); +typedef void (*ASYNC_stack_free_fn)(void *addr); + +int ASYNC_set_mem_functions(ASYNC_stack_alloc_fn alloc_fn, + ASYNC_stack_free_fn free_fn); +void ASYNC_get_mem_functions(ASYNC_stack_alloc_fn *alloc_fn, + ASYNC_stack_free_fn *free_fn); + +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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asyncerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asyncerr.h new file mode 100644 index 0000000..41bd4a0 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/asyncerr.h @@ -0,0 +1,27 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bio.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bio.h new file mode 100644 index 0000000..8c325a4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bio.h @@ -0,0 +1,1028 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/bio.h.in + * + * Copyright 1995-2025 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 + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_BIO_H +#define OPENSSL_BIO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BIO_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include + +#include +#include +#include + +#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_DGRAM_PAIR (26 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_DGRAM_MEM (27 | BIO_TYPE_SOURCE_SINK) + +/* Custom type starting index returned by BIO_get_new_index() */ +#define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF + +/* + * 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 + +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +#define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +#define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +#define BIO_CTRL_DGRAM_GET_CAPS 86 +#define BIO_CTRL_DGRAM_SET_CAPS 87 +#define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +#define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +#define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +#define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +#define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +#define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +#define BIO_DGRAM_CAP_NONE 0U +#define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +#define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +#define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +#define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + +#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 0x8000 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 +#define BIO_CB_RECVMMSG 0x07 +#define BIO_CB_SENDMMSG 0x08 + +/* + * 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 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) +#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) +#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) +#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) +#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) +#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) +#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) +#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) +#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk), ossl_check_BIO_freefunc_type(freefunc)) +#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) +#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) +#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) +#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) +#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) +#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) + +/* clang-format on */ + +/* 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 + +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + +/* + * #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_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +#define BIO_C_SET_SOCK_TYPE 157 +#define BIO_C_GET_SOCK_TYPE 158 +#define BIO_C_GET_DGRAM_BIO 159 + +#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) +#define BIO_set_tfo(b, n) BIO_ctrl(b, BIO_C_SET_TFO, (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_get_conn_mode(b) BIO_ctrl(b, BIO_C_GET_CONNECT, 4, NULL) +#define BIO_set_conn_mode(b, n) BIO_ctrl(b, BIO_C_SET_CONNECT_MODE, (n), NULL) +#define BIO_set_sock_type(b, t) BIO_ctrl(b, BIO_C_SET_SOCK_TYPE, (t), NULL) +#define BIO_get_sock_type(b) BIO_ctrl(b, BIO_C_GET_SOCK_TYPE, 0, NULL) +#define BIO_get0_dgram_bio(b, p) BIO_ctrl(b, BIO_C_GET_DGRAM_BIO, 0, (void *)(BIO **)(p)) + +/* 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) +#define BIO_set_tfo_accept(b, n) BIO_ctrl(b, BIO_C_SET_ACCEPT, 5, (n) ? (void *)"a" : 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_detect_peer_addr(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) +#define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +#define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +#define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +#define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +#define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +#define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +#define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +#define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +#define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +#define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +#define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +#define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) + +/* 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); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +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); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +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); +#ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +#endif +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_dgram_pair(void); +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_err_is_non_fatal(unsigned int errcode); +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_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); +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 +#define BIO_SOCK_TFO 0x20 + +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); +#ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +#endif + +/* + * 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_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_set_sendmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_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_set_recvmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts)(BIO *, const char *)); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*ossl_gets)(BIO *, char *, int)); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl)(BIO *, int, long, void *)); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create)(BIO *)); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *)); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl)(BIO *, int, + BIO_info_cb *)); +#ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom))(BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom))(BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom))(BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom))(BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom))(BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion))(BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom))(BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))(BIO *, int, + BIO_info_cb *); +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bioerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bioerr.h new file mode 100644 index 0000000..b4ee5c6 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bioerr.h @@ -0,0 +1,70 @@ +/* + * 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_BIOERR_H +#define OPENSSL_BIOERR_H +#pragma once + +#include +#include +#include + +/* + * 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_LOCAL_ADDR_NOT_AVAILABLE 111 +#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_NON_FATAL 112 +#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_TFO_DISABLED 106 +#define BIO_R_TFO_NO_KERNEL_SUPPORT 108 +#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_UNABLE_TO_TFO 109 +#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 +#define BIO_R_PORT_MISMATCH 150 +#define BIO_R_PEER_ADDR_NOT_AVAILABLE 151 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/blowfish.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/blowfish.h new file mode 100644 index 0000000..49c74e9 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/blowfish.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BLOWFISH_H +#endif + +#include + +#ifndef OPENSSL_NO_BF +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bn.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bn.h new file mode 100644 index 0000000..d210b8b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bn.h @@ -0,0 +1,588 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BN_H +#endif + +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include + +#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); +BIGNUM *BN_signed_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); +int BN_signed_bn2bin(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2lebin(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_native2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2native(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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bnerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bnerr.h new file mode 100644 index 0000000..dbbcd69 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/bnerr.h @@ -0,0 +1,45 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/buffer.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/buffer.h new file mode 100644 index 0000000..09b35e8 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/buffer.h @@ -0,0 +1,60 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BUFFER_H +#endif + +#include +#ifndef OPENSSL_CRYPTO_H +#include +#endif +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/buffererr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/buffererr.h new file mode 100644 index 0000000..4fa0da4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/buffererr.h @@ -0,0 +1,23 @@ +/* + * 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 +#include +#include + +/* + * BUF reason codes. + */ + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/byteorder.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/byteorder.h new file mode 100644 index 0000000..393f34b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/byteorder.h @@ -0,0 +1,339 @@ +/* + * Copyright 2025 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_BYTEORDER_H +#define OPENSSL_BYTEORDER_H +#pragma once + +#include +#include + +/* + * "Modern" compilers do a decent job of optimising these functions to just a + * couple of instruction ([swap +] store, or load [+ swap]) when either no + * swapping is required, or a suitable swap instruction is available. + */ + +#if defined(_MSC_VER) && _MSC_VER >= 1300 +#include +#pragma intrinsic(_byteswap_ushort) +#pragma intrinsic(_byteswap_ulong) +#pragma intrinsic(_byteswap_uint64) +#define OSSL_HTOBE16(x) _byteswap_ushort(x) +#define OSSL_HTOBE32(x) _byteswap_ulong(x) +#define OSSL_HTOBE64(x) _byteswap_uint64(x) +#define OSSL_BE16TOH(x) _byteswap_ushort(x) +#define OSSL_BE32TOH(x) _byteswap_ulong(x) +#define OSSL_BE64TOH(x) _byteswap_uint64(x) +#define OSSL_HTOLE16(x) (x) +#define OSSL_HTOLE32(x) (x) +#define OSSL_HTOLE64(x) (x) +#define OSSL_LE16TOH(x) (x) +#define OSSL_LE32TOH(x) (x) +#define OSSL_LE64TOH(x) (x) + +#elif defined(__GLIBC__) && defined(__GLIBC_PREREQ) +#if (__GLIBC_PREREQ(2, 19)) && defined(_DEFAULT_SOURCE) +#include +#define OSSL_HTOBE16(x) htobe16(x) +#define OSSL_HTOBE32(x) htobe32(x) +#define OSSL_HTOBE64(x) htobe64(x) +#define OSSL_BE16TOH(x) be16toh(x) +#define OSSL_BE32TOH(x) be32toh(x) +#define OSSL_BE64TOH(x) be64toh(x) +#define OSSL_HTOLE16(x) htole16(x) +#define OSSL_HTOLE32(x) htole32(x) +#define OSSL_HTOLE64(x) htole64(x) +#define OSSL_LE16TOH(x) le16toh(x) +#define OSSL_LE32TOH(x) le32toh(x) +#define OSSL_LE64TOH(x) le64toh(x) +#endif + +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__OpenBSD__) +#include +#else +#include +#endif +#define OSSL_HTOBE16(x) htobe16(x) +#define OSSL_HTOBE32(x) htobe32(x) +#define OSSL_HTOBE64(x) htobe64(x) +#define OSSL_BE16TOH(x) be16toh(x) +#define OSSL_BE32TOH(x) be32toh(x) +#define OSSL_BE64TOH(x) be64toh(x) +#define OSSL_HTOLE16(x) htole16(x) +#define OSSL_HTOLE32(x) htole32(x) +#define OSSL_HTOLE64(x) htole64(x) +#define OSSL_LE16TOH(x) le16toh(x) +#define OSSL_LE32TOH(x) le32toh(x) +#define OSSL_LE64TOH(x) le64toh(x) + +#elif defined(__APPLE__) +#include +#define OSSL_HTOBE16(x) OSSwapHostToBigInt16(x) +#define OSSL_HTOBE32(x) OSSwapHostToBigInt32(x) +#define OSSL_HTOBE64(x) OSSwapHostToBigInt64(x) +#define OSSL_BE16TOH(x) OSSwapBigToHostInt16(x) +#define OSSL_BE32TOH(x) OSSwapBigToHostInt32(x) +#define OSSL_BE64TOH(x) OSSwapBigToHostInt64(x) +#define OSSL_HTOLE16(x) OSSwapHostToLittleInt16(x) +#define OSSL_HTOLE32(x) OSSwapHostToLittleInt32(x) +#define OSSL_HTOLE64(x) OSSwapHostToLittleInt64(x) +#define OSSL_LE16TOH(x) OSSwapLittleToHostInt16(x) +#define OSSL_LE32TOH(x) OSSwapLittleToHostInt32(x) +#define OSSL_LE64TOH(x) OSSwapLittleToHostInt64(x) + +#endif + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u16_le(unsigned char *out, uint16_t val) +{ +#ifdef OSSL_HTOLE16 + uint16_t t = OSSL_HTOLE16(val); + + memcpy(out, (unsigned char *)&t, 2); + return out + 2; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u16_be(unsigned char *out, uint16_t val) +{ +#ifdef OSSL_HTOBE16 + uint16_t t = OSSL_HTOBE16(val); + + memcpy(out, (unsigned char *)&t, 2); + return out + 2; +#else + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u32_le(unsigned char *out, uint32_t val) +{ +#ifdef OSSL_HTOLE32 + uint32_t t = OSSL_HTOLE32(val); + + memcpy(out, (unsigned char *)&t, 4); + return out + 4; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 24) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u32_be(unsigned char *out, uint32_t val) +{ +#ifdef OSSL_HTOBE32 + uint32_t t = OSSL_HTOBE32(val); + + memcpy(out, (unsigned char *)&t, 4); + return out + 4; +#else + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u64_le(unsigned char *out, uint64_t val) +{ +#ifdef OSSL_HTOLE64 + uint64_t t = OSSL_HTOLE64(val); + + memcpy(out, (unsigned char *)&t, 8); + return out + 8; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 32) & 0xff; + *out++ = (val >> 40) & 0xff; + *out++ = (val >> 48) & 0xff; + *out++ = (val >> 56) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u64_be(unsigned char *out, uint64_t val) +{ +#ifdef OSSL_HTOLE64 + uint64_t t = OSSL_HTOBE64(val); + + memcpy(out, (unsigned char *)&t, 8); + return out + 8; +#else + *out++ = (val >> 56) & 0xff; + *out++ = (val >> 48) & 0xff; + *out++ = (val >> 40) & 0xff; + *out++ = (val >> 32) & 0xff; + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u16_le(uint16_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE16TOH + uint16_t t; + + memcpy((unsigned char *)&t, in, 2); + *val = OSSL_LE16TOH(t); + return in + 2; +#else + uint16_t b0 = *in++; + uint16_t b1 = *in++; + + *val = b0 | (b1 << 8); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u16_be(uint16_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE16TOH + uint16_t t; + + memcpy((unsigned char *)&t, in, 2); + *val = OSSL_BE16TOH(t); + return in + 2; +#else + uint16_t b1 = *in++; + uint16_t b0 = *in++; + + *val = b0 | (b1 << 8); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u32_le(uint32_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE32TOH + uint32_t t; + + memcpy((unsigned char *)&t, in, 4); + *val = OSSL_LE32TOH(t); + return in + 4; +#else + uint32_t b0 = *in++; + uint32_t b1 = *in++; + uint32_t b2 = *in++; + uint32_t b3 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u32_be(uint32_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE32TOH + uint32_t t; + + memcpy((unsigned char *)&t, in, 4); + *val = OSSL_BE32TOH(t); + return in + 4; +#else + uint32_t b3 = *in++; + uint32_t b2 = *in++; + uint32_t b1 = *in++; + uint32_t b0 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u64_le(uint64_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE64TOH + uint64_t t; + + memcpy((unsigned char *)&t, in, 8); + *val = OSSL_LE64TOH(t); + return in + 8; +#else + uint64_t b0 = *in++; + uint64_t b1 = *in++; + uint64_t b2 = *in++; + uint64_t b3 = *in++; + uint64_t b4 = *in++; + uint64_t b5 = *in++; + uint64_t b6 = *in++; + uint64_t b7 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) + | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u64_be(uint64_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE64TOH + uint64_t t; + + memcpy((unsigned char *)&t, in, 8); + *val = OSSL_BE64TOH(t); + return in + 8; +#else + uint64_t b7 = *in++; + uint64_t b6 = *in++; + uint64_t b5 = *in++; + uint64_t b4 = *in++; + uint64_t b3 = *in++; + uint64_t b2 = *in++; + uint64_t b1 = *in++; + uint64_t b0 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) + | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); + return in; +#endif +} + +#undef OSSL_HTOBE16 +#undef OSSL_HTOBE32 +#undef OSSL_HTOBE64 +#undef OSSL_BE16TOH +#undef OSSL_BE32TOH +#undef OSSL_BE64TOH +#undef OSSL_HTOLE16 +#undef OSSL_HTOLE32 +#undef OSSL_HTOLE64 +#undef OSSL_LE16TOH +#undef OSSL_LE32TOH +#undef OSSL_LE64TOH + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/camellia.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/camellia.h new file mode 100644 index 0000000..aec94e4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/camellia.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CAMELLIA_H +#endif + +#include + +#ifndef OPENSSL_NO_CAMELLIA +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cast.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cast.h new file mode 100644 index 0000000..af94312 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cast.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CAST_H +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmac.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmac.h new file mode 100644 index 0000000..c72da7e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmac.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMAC_H +#endif + +#ifndef OPENSSL_NO_CMAC + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmp.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmp.h new file mode 100644 index 0000000..301755b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmp.h @@ -0,0 +1,741 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/cmp.h.in + * + * Copyright 2007-2026 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMP_H +#define OPENSSL_CMP_H + +#include +#ifndef OPENSSL_NO_CMP + +#include +#include +#include +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_CMP_PVNO_2 2 +#define OSSL_CMP_PVNO_3 3 +#define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ + +/*- + * 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_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 +#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; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) +#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) +#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) +#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) +#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) +#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) +#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) +#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) +#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) +#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) +#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + +/* clang-format on */ + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +#define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +#define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +#define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +#define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +#define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +#define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + +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) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) +#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) +#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) +#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) +#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) +#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) +#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) +#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) +#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) +#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) +#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) + +/* clang-format on */ +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; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) +#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) + +/* clang-format on */ +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) **sk_p, + OSSL_CMP_ITAV *itav); +void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + +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); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const 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 +#define OSSL_CMP_OPT_USE_TLS 13 +/* 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 +#define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 +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); +#ifndef OPENSSL_NO_HTTP +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); +#endif +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); +#define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore +X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +#define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore +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); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_CTX_get0_geninfo_ITAVs(const 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_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); +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_validatedSrvCert(const OSSL_CMP_CTX *ctx); +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); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_HDR_get0_geninfo_ITAVs(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); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(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 */ +#ifndef OPENSSL_NO_HTTP +OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); +#endif + +/* 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); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); +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_GENM 21 +#define OSSL_CMP_ERROR 23 +#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); + +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CMP) */ +#endif /* !defined(OPENSSL_CMP_H) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmp_util.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmp_util.h new file mode 100644 index 0000000..a0ee20f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmp_util.h @@ -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 +#ifndef OPENSSL_NO_CMP + +#include +#include + +#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) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmperr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmperr.h new file mode 100644 index 0000000..b07ac6d --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmperr.h @@ -0,0 +1,132 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#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_EXPECTED_POLLREQ 104 +#define CMP_R_FAILED_BUILDING_OWN_CHAIN 164 +#define CMP_R_FAILED_EXTRACTING_CENTRAL_GEN_KEY 203 +#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_GENERATE_CERTREQTEMPLATE 197 +#define CMP_R_GENERATE_CRLSTATUS 198 +#define CMP_R_GETTING_GENP 192 +#define CMP_R_GET_ITAV 199 +#define CMP_R_INVALID_ARGS 100 +#define CMP_R_INVALID_GENP 193 +#define CMP_R_INVALID_KEYSPEC 202 +#define CMP_R_INVALID_OPTION 174 +#define CMP_R_INVALID_ROOTCAKEYUPDATE 195 +#define CMP_R_MISSING_CENTRAL_GEN_KEY 204 +#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_UNCLEAN_CTX 191 +#define CMP_R_UNEXPECTED_CENTRAL_GEN_KEY 205 +#define CMP_R_UNEXPECTED_CERTPROFILE 196 +#define CMP_R_UNEXPECTED_CRLSTATUSLIST 201 +#define CMP_R_UNEXPECTED_PKIBODY 133 +#define CMP_R_UNEXPECTED_PKISTATUS 185 +#define CMP_R_UNEXPECTED_POLLREQ 105 +#define CMP_R_UNEXPECTED_PVNO 153 +#define CMP_R_UNEXPECTED_SENDER 106 +#define CMP_R_UNKNOWN_ALGORITHM_ID 134 +#define CMP_R_UNKNOWN_CERT_TYPE 135 +#define CMP_R_UNKNOWN_CRL_ISSUER 200 +#define CMP_R_UNKNOWN_PKISTATUS 186 +#define CMP_R_UNSUPPORTED_ALGORITHM 136 +#define CMP_R_UNSUPPORTED_KEY_TYPE 137 +#define CMP_R_UNSUPPORTED_PKIBODY 101 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cms.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cms.h new file mode 100644 index 0000000..0dcc45f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cms.h @@ -0,0 +1,524 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/cms.h.in + * + * Copyright 2008-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMS_H +#define OPENSSL_CMS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMS_H +#endif + +#include + +#ifndef OPENSSL_NO_CMS +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; +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; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) +#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) +#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) +#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) +#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) +#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) +#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) +#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) +#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) +#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) +#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) +#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) +#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) +#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) +#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) +#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) +#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) +#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) +#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) +#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) +#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) +#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) +#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) +#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) +#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) +#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) +#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) +#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) +#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) +#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) +#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) +#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) +#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) +#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) +#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) +#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + +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 +#define CMS_RECIPINFO_KEM 5 + +/* 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 +#define CMS_NO_SIGNING_TIME 0x400000 + +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); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, 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 *libctx, + 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 *libctx, 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 *libctx, + 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 *libctx, + 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 *libctx, 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 *libctx, + 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 *libctx, + const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, 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); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +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 *libctx); + +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); + +int CMS_RecipientInfo_kemri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_kemri_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +EVP_CIPHER_CTX *CMS_RecipientInfo_kemri_get0_ctx(CMS_RecipientInfo *ri); +X509_ALGOR *CMS_RecipientInfo_kemri_get0_kdf_alg(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kemri_set_ukm(CMS_RecipientInfo *ri, + const unsigned char *ukm, + int ukmLength); + +/* 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmserr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmserr.h new file mode 100644 index 0000000..49c22c2 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cmserr.h @@ -0,0 +1,128 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#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_IN_ENVELOPED_DATA 200 +#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_ERROR_UNSUPPORTED_STATIC_KEY_AGREEMENT 196 +#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_KEM 197 +#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_OPERATION_UNSUPPORTED 182 +#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_UNKNOWN_KDF_ALGORITHM 198 +#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_KDF_ALGORITHM 199 +#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_SIGNATURE_ALGORITHM 195 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/comp.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/comp.h new file mode 100644 index 0000000..0363a33 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/comp.h @@ -0,0 +1,101 @@ +/* + * Copyright 2015-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_COMP_H +#define OPENSSL_COMP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_COMP_H +#endif + +#include + +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_COMP + +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); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define COMP_zlib_cleanup() \ + while (0) \ + continue +#endif + +#ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +#endif + +#endif + +typedef struct ssl_comp_st SSL_COMP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/comperr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/comperr.h new file mode 100644 index 0000000..90ec7c1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/comperr.h @@ -0,0 +1,36 @@ +/* + * 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 +#include +#include + +#ifndef OPENSSL_NO_COMP + +/* + * COMP reason codes. + */ +#define COMP_R_BROTLI_DECODE_ERROR 102 +#define COMP_R_BROTLI_ENCODE_ERROR 103 +#define COMP_R_BROTLI_NOT_SUPPORTED 104 +#define COMP_R_ZLIB_DEFLATE_ERROR 99 +#define COMP_R_ZLIB_INFLATE_ERROR 100 +#define COMP_R_ZLIB_NOT_SUPPORTED 101 +#define COMP_R_ZSTD_COMPRESS_ERROR 105 +#define COMP_R_ZSTD_DECODE_ERROR 106 +#define COMP_R_ZSTD_DECOMPRESS_ERROR 107 +#define COMP_R_ZSTD_NOT_SUPPORTED 108 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conf.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conf.h new file mode 100644 index 0000000..7719c51 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conf.h @@ -0,0 +1,219 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/conf.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CONF_H +#define OPENSSL_CONF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) +#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) +#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) +#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) +#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) +#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) +#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) +#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_freefunc_type(freefunc)) +#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) +#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) +#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) +#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) +DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) +#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) +#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conf_api.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conf_api.h new file mode 100644 index 0000000..f3f3c64 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conf_api.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_API_H +#endif + +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conferr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conferr.h new file mode 100644 index 0000000..0b984dd --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conferr.h @@ -0,0 +1,50 @@ +/* + * 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_CONFERR_H +#define OPENSSL_CONFERR_H +#pragma once + +#include +#include +#include + +/* + * 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_RECURSIVE_SECTION_REFERENCE 126 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/configuration.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/configuration.h new file mode 100644 index 0000000..4af6e1d --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/configuration.h @@ -0,0 +1,241 @@ +/* + * WARNING: do not edit! + * Generated by configdata.pm from ../../../ios/openssl-3.6.2/Configurations/common0.tmpl, ../../../ios/openssl-3.6.2/Configurations/unix-Makefile.tmpl + * via Makefile.in + * + * 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: + */ + +/* clang-format off */ +# ifndef OPENSSL_SYS_watchOS +# define OPENSSL_SYS_watchOS 1 +# endif +# define OPENSSL_CONFIGURED_API 30600 +# ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +# endif +# ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +# endif +# ifndef OPENSSL_NO_ACVP_TESTS +# define OPENSSL_NO_ACVP_TESTS +# endif +# ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +# endif +# ifndef OPENSSL_NO_ALLOCFAIL_TESTS +# define OPENSSL_NO_ALLOCFAIL_TESTS +# endif +# ifndef OPENSSL_NO_APPS +# define OPENSSL_NO_APPS +# endif +# ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +# endif +# ifndef OPENSSL_NO_ASM +# define OPENSSL_NO_ASM +# endif +# ifndef OPENSSL_NO_ASYNC +# define OPENSSL_NO_ASYNC +# endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif +# ifndef OPENSSL_NO_CAPIENG +# define OPENSSL_NO_CAPIENG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif +# ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +# endif +# ifndef OPENSSL_NO_DOCS +# define OPENSSL_NO_DOCS +# endif +# ifndef OPENSSL_NO_DSO +# define OPENSSL_NO_DSO +# endif +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +# endif +# ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +# endif +# ifndef OPENSSL_NO_ENGINE +# define OPENSSL_NO_ENGINE +# endif +# ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +# endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif +# ifndef OPENSSL_NO_FIPS_POST +# define OPENSSL_NO_FIPS_POST +# endif +# ifndef OPENSSL_NO_FIPS_SECURITYCHECKS +# define OPENSSL_NO_FIPS_SECURITYCHECKS +# endif +# ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +# endif +# ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +# endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif +# ifndef OPENSSL_NO_KTLS +# define OPENSSL_NO_KTLS +# endif +# ifndef OPENSSL_NO_LMS +# define OPENSSL_NO_LMS +# endif +# ifndef OPENSSL_NO_LOADERENG +# define OPENSSL_NO_LOADERENG +# endif +# ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +# endif +# ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +# endif +# ifndef OPENSSL_NO_PADLOCKENG +# define OPENSSL_NO_PADLOCKENG +# endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif +# ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +# endif +# ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +# endif +# ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +# endif +# ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +# endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TESTS +# define OPENSSL_NO_TESTS +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif +# ifndef OPENSSL_NO_TRACE +# define OPENSSL_NO_TRACE +# endif +# ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +# endif +# ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +# endif +# ifndef OPENSSL_NO_UPLINK +# define OPENSSL_NO_UPLINK +# endif +# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +# endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif +# ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +# endif + +/* clang-format on */ + +/* Generate 80386 code? */ +/* clang-format off */ +# undef I386_ONLY +/* clang-format on */ + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) + /* clang-format off */ +# undef BN_LLONG + /* clang-format on */ + /* Only one for the following should be defined */ + /* clang-format off */ +# define SIXTY_FOUR_BIT_LONG + /* clang-format on */ + /* clang-format off */ +# undef SIXTY_FOUR_BIT + /* clang-format on */ + /* clang-format off */ +# undef THIRTY_TWO_BIT +/* clang-format on */ +#endif + +/* clang-format off */ +# define RC4_INT unsigned int +/* clang-format on */ + +#if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +#define OPENSSL_NO_COMP_ALG +#else +#undef OPENSSL_NO_COMP_ALG +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_CONFIGURATION_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conftypes.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conftypes.h new file mode 100644 index 0000000..f2d2be1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/conftypes.h @@ -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 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core.h new file mode 100644 index 0000000..a883173 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core.h @@ -0,0 +1,235 @@ +/* + * 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_H +#define OPENSSL_CORE_H +#pragma once + +#include +#include + +#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); +}; + +#define OSSL_DISPATCH_END \ + { 0, NULL } + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_dispatch.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_dispatch.h new file mode 100644 index 0000000..d645916 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_dispatch.h @@ -0,0 +1,1061 @@ +/* + * Copyright 2019-2026 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 +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Generic function pointer for provider method arrays, or other contexts where + * functions of various signatures must occupy a common slot in an array of + * structures. + */ +typedef void (*OSSL_FUNC)(void); + +/*- + * 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)) + +/* New seeding functions prototypes with the 101-104 series */ +#define OSSL_FUNC_CLEANUP_USER_ENTROPY 96 +#define OSSL_FUNC_CLEANUP_USER_NONCE 97 +#define OSSL_FUNC_GET_USER_ENTROPY 98 +#define OSSL_FUNC_GET_USER_NONCE 99 + +#define OSSL_FUNC_INDICATOR_CB 95 +OSSL_CORE_MAKE_FUNC(void, indicator_cb, (OPENSSL_CORE_CTX *ctx, OSSL_INDICATOR_CALLBACK **cb)) +#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(size_t, get_user_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(void, cleanup_user_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(size_t, get_user_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)) +OSSL_CORE_MAKE_FUNC(void, cleanup_user_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)) + +/* Additional error functions provided by the core */ +#define OSSL_FUNC_CORE_COUNT_TO_MARK 120 +OSSL_CORE_MAKE_FUNC(int, core_count_to_mark, (const OSSL_CORE_HANDLE *prov)) + +/* 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)) +#define OSSL_FUNC_PROVIDER_RANDOM_BYTES 1032 +OSSL_CORE_MAKE_FUNC(int, provider_random_bytes, (void *provctx, int which, void *buf, size_t n, unsigned int strength)) + +/* Libssl related functions */ +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_SEND 2001 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_send, + (SSL *s, const unsigned char *buf, size_t buf_len, + size_t *consumed, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RECV_RCD 2002 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_recv_rcd, + (SSL *s, const unsigned char **buf, size_t *bytes_read, + void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RELEASE_RCD 2003 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_release_rcd, + (SSL *s, size_t bytes_read, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_YIELD_SECRET 2004 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_yield_secret, + (SSL *s, uint32_t prot_level, int direction, + const unsigned char *secret, size_t secret_len, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_GOT_TRANSPORT_PARAMS 2005 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_got_transport_params, + (SSL *s, const unsigned char *params, size_t params_len, + void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_ALERT 2006 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_alert, + (SSL *s, unsigned char alert_code, void *arg)) + +/* 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 +#define OSSL_OP_SKEYMGMT 15 +/* 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 +#define OSSL_FUNC_DIGEST_SQUEEZE 14 +#define OSSL_FUNC_DIGEST_COPYCTX 15 + +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_squeeze, + (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(void, digest_copyctx, (void *outctx, void *inctx)) + +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 +#define OSSL_FUNC_CIPHER_PIPELINE_ENCRYPT_INIT 15 +#define OSSL_FUNC_CIPHER_PIPELINE_DECRYPT_INIT 16 +#define OSSL_FUNC_CIPHER_PIPELINE_UPDATE 17 +#define OSSL_FUNC_CIPHER_PIPELINE_FINAL 18 +#define OSSL_FUNC_CIPHER_ENCRYPT_SKEY_INIT 19 +#define OSSL_FUNC_CIPHER_DECRYPT_SKEY_INIT 20 + +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(int, cipher_pipeline_encrypt_init, + (void *cctx, + const unsigned char *key, size_t keylen, + size_t numpipes, const unsigned char **iv, size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_decrypt_init, + (void *cctx, + const unsigned char *key, size_t keylen, + size_t numpipes, const unsigned char **iv, size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_update, + (void *cctx, size_t numpipes, + unsigned char **out, size_t *outl, const size_t *outsize, + const unsigned char **in, const size_t *inl)) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_final, + (void *cctx, size_t numpipes, + unsigned char **out, size_t *outl, const size_t *outsize)) +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)) +OSSL_CORE_MAKE_FUNC(int, cipher_encrypt_skey_init, (void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_decrypt_skey_init, (void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[])) + +/* 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 +#define OSSL_FUNC_MAC_INIT_SKEY 13 + +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[])) +OSSL_CORE_MAKE_FUNC(int, mac_init_skey, (void *mctx, void *key, const OSSL_PARAM params[])) + +/*- + * Symmetric key management + * + * The Key Management takes care of provider side of symmetric key objects, and + * includes 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, and the secret key. + * + * Key objects are created with OSSL_FUNC_skeymgmt_import() (there is no + * dedicated memory allocation function), exported with + * OSSL_FUNC_skeymgmt_export() and destroyed with OSSL_FUNC_keymgmt_free(). + * + */ + +/* Key data subset selection - individual bits */ +#define OSSL_SKEYMGMT_SELECT_PARAMETERS 0x01 +#define OSSL_SKEYMGMT_SELECT_SECRET_KEY 0x02 + +/* Key data subset selection - combinations */ +#define OSSL_SKEYMGMT_SELECT_ALL \ + (OSSL_SKEYMGMT_SELECT_PARAMETERS | OSSL_SKEYMGMT_SELECT_SECRET_KEY) + +#define OSSL_FUNC_SKEYMGMT_FREE 1 +#define OSSL_FUNC_SKEYMGMT_IMPORT 2 +#define OSSL_FUNC_SKEYMGMT_EXPORT 3 +#define OSSL_FUNC_SKEYMGMT_GENERATE 4 +#define OSSL_FUNC_SKEYMGMT_GET_KEY_ID 5 +#define OSSL_FUNC_SKEYMGMT_IMP_SETTABLE_PARAMS 6 +#define OSSL_FUNC_SKEYMGMT_GEN_SETTABLE_PARAMS 7 + +OSSL_CORE_MAKE_FUNC(void, skeymgmt_free, (void *keydata)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + skeymgmt_imp_settable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, skeymgmt_import, (void *provctx, int selection, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, skeymgmt_export, + (void *keydata, int selection, + OSSL_CALLBACK *param_cb, void *cbarg)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + skeymgmt_gen_settable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, skeymgmt_generate, (void *provctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const char *, skeymgmt_get_key_id, (void *keydata)) + +/* 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 +#define OSSL_FUNC_KDF_SET_SKEY 12 +#define OSSL_FUNC_KDF_DERIVE_SKEY 13 + +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[])) +OSSL_CORE_MAKE_FUNC(int, kdf_set_skey, + (void *kctx, void *skeydata, const char *paramname)) +OSSL_CORE_MAKE_FUNC(void *, kdf_derive_skey, (void *ctx, const char *key_type, void *provctx, OSSL_FUNC_skeymgmt_import_fn *import, size_t keylen, 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 +#define OSSL_FUNC_KEYMGMT_GEN_GET_PARAMS 15 +#define OSSL_FUNC_KEYMGMT_GEN_GETTABLE_PARAMS 16 + +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(int, keymgmt_gen_get_params, + (void *genctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_gen_gettable_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)) + +/* Extended import and export functions */ +#define OSSL_FUNC_KEYMGMT_IMPORT_TYPES_EX 45 +#define OSSL_FUNC_KEYMGMT_EXPORT_TYPES_EX 46 +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types_ex, + (void *provctx, int selection)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types_ex, + (void *provctx, 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 +#define OSSL_FUNC_KEYEXCH_DERIVE_SKEY 11 + +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)) +OSSL_CORE_MAKE_FUNC(void *, keyexch_derive_skey, (void *ctx, const char *key_type, void *provctx, OSSL_FUNC_skeymgmt_import_fn *import, size_t keylen, const OSSL_PARAM params[])) + +/* 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 +#define OSSL_FUNC_SIGNATURE_QUERY_KEY_TYPES 26 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_INIT 27 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_UPDATE 28 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_FINAL 29 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_INIT 30 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_UPDATE 31 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_FINAL 32 + +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_sign_message_init, + (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_sign_message_update, + (void *ctx, const unsigned char *in, size_t inlen)) +OSSL_CORE_MAKE_FUNC(int, signature_sign_message_final, + (void *ctx, unsigned char *sig, + size_t *siglen, size_t sigsize)) +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_message_init, + (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_verify_message_update, + (void *ctx, const unsigned char *in, size_t inlen)) +/* + * signature_verify_final requires that the signature to be verified against + * is specified via an OSSL_PARAM. + */ +OSSL_CORE_MAKE_FUNC(int, signature_verify_message_final, (void *ctx)) +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)) +OSSL_CORE_MAKE_FUNC(const char **, signature_query_key_types, (void)) + +/* 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 +#define OSSL_FUNC_KEM_AUTH_ENCAPSULATE_INIT 12 +#define OSSL_FUNC_KEM_AUTH_DECAPSULATE_INIT 13 + +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_auth_encapsulate_init, (void *ctx, void *provkey, void *authprivkey, 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_auth_decapsulate_init, (void *ctx, void *provkey, void *authpubkey, 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 +#define OSSL_FUNC_STORE_DELETE 9 +#define OSSL_FUNC_STORE_OPEN_EX 10 +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)) +OSSL_CORE_MAKE_FUNC(int, store_delete, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) +OSSL_CORE_MAKE_FUNC(void *, store_open_ex, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_names.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_names.h new file mode 100644 index 0000000..489c56f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_names.h @@ -0,0 +1,588 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/core_names.h.in + * + * Copyright 2019-2025 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 + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CORE_NAMES_H +#define OPENSSL_CORE_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* 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" + +/* Known CIPHER names (not a complete list) */ +#define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* 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_256_192 "SHA2-256/192" +#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" + +/* 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" + +/* Known KDF names */ +#define OSSL_KDF_NAME_HKDF "HKDF" +#define OSSL_KDF_NAME_HKDF_SHA256 "HKDF-SHA256" +#define OSSL_KDF_NAME_HKDF_SHA384 "HKDF-SHA384" +#define OSSL_KDF_NAME_HKDF_SHA512 "HKDF-SHA512" +#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" +#define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* 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" + +/* 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" + +/* PROV_SKEY well known key types */ +#define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +#define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ALG_PARAM_SECURITY_CATEGORY "security-category" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# 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" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# 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_MIN_TLS "tls-min-tls" +# 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_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_HMAC_PARAM_MAC OSSL_CIPHER_PARAM_AEAD_TAG +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_ENCRYPT_THEN_MAC "encrypt-then-mac" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# 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_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_CMS_KEMRI_KDF_ALGORITHM "kemri-kdf-alg" +# define OSSL_PKEY_PARAM_CMS_RI_TYPE "ri-type" +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# 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_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# 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_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# 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_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# 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_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# 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_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SECURITY_CATEGORY OSSL_ALG_PARAM_SECURITY_CATEGORY +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# 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_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_object.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_object.h new file mode 100644 index 0000000..df0c794 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/core_object.h @@ -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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crmf.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crmf.h new file mode 100644 index 0000000..57649d4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crmf.h @@ -0,0 +1,279 @@ +/*- + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/crmf.h.in + * + * Copyright 2007-2025 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. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRMF_H +#define OPENSSL_CRMF_H + +#include + +#ifndef OPENSSL_NO_CRMF +#include +#include +#include +#include /* for GENERAL_NAME etc. */ +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include + +#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_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + +typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) +#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) +#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) +#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) +#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) +#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) +#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + +/* clang-format on */ + +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) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) +#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) +#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) +#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) +#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) +#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) +#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) + +/* clang-format on */ + +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) +DECLARE_ASN1_DUP_FUNCTION(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); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(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); +const ASN1_INTEGER *OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(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); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char *OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +#ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CRMF) */ +#endif /* !defined(OPENSSL_CRMF_H) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crmferr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crmferr.h new file mode 100644 index 0000000..2215394 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crmferr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#ifndef OPENSSL_NO_CRMF + +/* + * CRMF reason codes. + */ +#define CRMF_R_BAD_PBM_ITERATIONCOUNT 100 +#define CRMF_R_CMS_NOT_SUPPORTED 122 +#define CRMF_R_CRMFERROR 102 +#define CRMF_R_ERROR 103 +#define CRMF_R_ERROR_DECODING_CERTIFICATE 104 +#define CRMF_R_ERROR_DECODING_ENCRYPTEDKEY 123 +#define CRMF_R_ERROR_DECRYPTING_CERTIFICATE 105 +#define CRMF_R_ERROR_DECRYPTING_ENCRYPTEDKEY 124 +#define CRMF_R_ERROR_DECRYPTING_ENCRYPTEDVALUE 125 +#define CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY 106 +#define CRMF_R_ERROR_SETTING_PURPOSE 126 +#define CRMF_R_ERROR_VERIFYING_ENCRYPTEDKEY 127 +#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_CENTRAL_KEYGEN 128 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crypto.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crypto.h new file mode 100644 index 0000000..1c89f88 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/crypto.h @@ -0,0 +1,619 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/crypto.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRYPTO_H +#define OPENSSL_CRYPTO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CRYPTO_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef CHARSET_EBCDIC +#include +#endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#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_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *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); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, 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_malloc_array(num, size) \ + CRYPTO_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_calloc(num, size) \ + CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc_array(num, size, alignment, freeptr) \ + CRYPTO_aligned_alloc_array(num, size, alignment, freeptr, \ + 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_realloc_array(addr, num, size) \ + CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_clear_realloc_array(addr, old_num, num, size) \ + CRYPTO_clear_realloc_array(addr, old_num, num, size, \ + 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_malloc_array(num, size) \ + CRYPTO_secure_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_calloc(num, size) \ + CRYPTO_secure_calloc(num, size, 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_strtoul(const char *str, char **endptr, int base, unsigned long *num); +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 +#define OPENSSL_WINCTX 10 + +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 +#define OPENSSL_INFO_WINDOWS_CONTEXT 1009 + +int OPENSSL_issetugid(void); + +struct crypto_ex_data_st { + OSSL_LIB_CTX *ctx; + STACK_OF(void) *sk; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) +#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) +#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) +#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) +#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) +#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) +#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) +#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) +#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) +#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) +#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) +#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) +#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) +#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk), ossl_check_void_freefunc_type(freefunc)) +#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) +#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) +#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) +#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) +#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) +#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) +#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) +#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * 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_malloc_array(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_calloc(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc_array(size_t num, size_t size, + size_t align, void **freeptr, + const char *file, int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +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); +void *CRYPTO_realloc_array(void *addr, size_t num, size_t size, + const char *file, int line); +void *CRYPTO_clear_realloc_array(void *addr, size_t old_num, size_t num, + size_t size, 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); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc_array(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_calloc(size_t num, size_t size, + 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 */ + +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +#define CRYPTO_MEM_CHECK_MAX_FS 256 + +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 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 +#else +#include +#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); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cryptoerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cryptoerr.h new file mode 100644 index 0000000..626e3e9 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cryptoerr.h @@ -0,0 +1,54 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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 +#include +#include + +/* + * 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_NAMES 132 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cryptoerr_legacy.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cryptoerr_legacy.h new file mode 100644 index 0000000..b1388a5 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cryptoerr_legacy.h @@ -0,0 +1,1466 @@ +/* + * 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 + */ + +/* + * This header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public {lib}err.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_CRYPTOERR_LEGACY_H +#define OPENSSL_CRYPTOERR_LEGACY_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASN1_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASYNC_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BIO_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BN_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BUF_strings(void); +#ifndef OPENSSL_NO_CMS +OSSL_DEPRECATEDIN_3_0 int ERR_load_CMS_strings(void); +#endif +#ifndef OPENSSL_NO_COMP +OSSL_DEPRECATEDIN_3_0 int ERR_load_COMP_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_CONF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_CRYPTO_strings(void); +#ifndef OPENSSL_NO_CT +OSSL_DEPRECATEDIN_3_0 int ERR_load_CT_strings(void); +#endif +#ifndef OPENSSL_NO_DH +OSSL_DEPRECATEDIN_3_0 int ERR_load_DH_strings(void); +#endif +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 int ERR_load_DSA_strings(void); +#endif +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 int ERR_load_EC_strings(void); +#endif +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int ERR_load_ENGINE_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_ERR_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_EVP_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_KDF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OBJ_strings(void); +#ifndef OPENSSL_NO_OCSP +OSSL_DEPRECATEDIN_3_0 int ERR_load_OCSP_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_PEM_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS12_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS7_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RAND_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RSA_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OSSL_STORE_strings(void); +#ifndef OPENSSL_NO_TS +OSSL_DEPRECATEDIN_3_0 int ERR_load_TS_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_UI_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509V3_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * ASN1 function codes. + */ +#define ASN1_F_A2D_ASN1_OBJECT 0 +#define ASN1_F_A2I_ASN1_INTEGER 0 +#define ASN1_F_A2I_ASN1_STRING 0 +#define ASN1_F_APPEND_EXP 0 +#define ASN1_F_ASN1_BIO_INIT 0 +#define ASN1_F_ASN1_BIT_STRING_SET_BIT 0 +#define ASN1_F_ASN1_CB 0 +#define ASN1_F_ASN1_CHECK_TLEN 0 +#define ASN1_F_ASN1_COLLECT 0 +#define ASN1_F_ASN1_D2I_EX_PRIMITIVE 0 +#define ASN1_F_ASN1_D2I_FP 0 +#define ASN1_F_ASN1_D2I_READ_BIO 0 +#define ASN1_F_ASN1_DIGEST 0 +#define ASN1_F_ASN1_DO_ADB 0 +#define ASN1_F_ASN1_DO_LOCK 0 +#define ASN1_F_ASN1_DUP 0 +#define ASN1_F_ASN1_ENC_SAVE 0 +#define ASN1_F_ASN1_EX_C2I 0 +#define ASN1_F_ASN1_FIND_END 0 +#define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 0 +#define ASN1_F_ASN1_GENERATE_V3 0 +#define ASN1_F_ASN1_GET_INT64 0 +#define ASN1_F_ASN1_GET_OBJECT 0 +#define ASN1_F_ASN1_GET_UINT64 0 +#define ASN1_F_ASN1_I2D_BIO 0 +#define ASN1_F_ASN1_I2D_FP 0 +#define ASN1_F_ASN1_ITEM_D2I_FP 0 +#define ASN1_F_ASN1_ITEM_DUP 0 +#define ASN1_F_ASN1_ITEM_EMBED_D2I 0 +#define ASN1_F_ASN1_ITEM_EMBED_NEW 0 +#define ASN1_F_ASN1_ITEM_FLAGS_I2D 0 +#define ASN1_F_ASN1_ITEM_I2D_BIO 0 +#define ASN1_F_ASN1_ITEM_I2D_FP 0 +#define ASN1_F_ASN1_ITEM_PACK 0 +#define ASN1_F_ASN1_ITEM_SIGN 0 +#define ASN1_F_ASN1_ITEM_SIGN_CTX 0 +#define ASN1_F_ASN1_ITEM_UNPACK 0 +#define ASN1_F_ASN1_ITEM_VERIFY 0 +#define ASN1_F_ASN1_MBSTRING_NCOPY 0 +#define ASN1_F_ASN1_OBJECT_NEW 0 +#define ASN1_F_ASN1_OUTPUT_DATA 0 +#define ASN1_F_ASN1_PCTX_NEW 0 +#define ASN1_F_ASN1_PRIMITIVE_NEW 0 +#define ASN1_F_ASN1_SCTX_NEW 0 +#define ASN1_F_ASN1_SIGN 0 +#define ASN1_F_ASN1_STR2TYPE 0 +#define ASN1_F_ASN1_STRING_GET_INT64 0 +#define ASN1_F_ASN1_STRING_GET_UINT64 0 +#define ASN1_F_ASN1_STRING_SET 0 +#define ASN1_F_ASN1_STRING_TABLE_ADD 0 +#define ASN1_F_ASN1_STRING_TO_BN 0 +#define ASN1_F_ASN1_STRING_TYPE_NEW 0 +#define ASN1_F_ASN1_TEMPLATE_EX_D2I 0 +#define ASN1_F_ASN1_TEMPLATE_NEW 0 +#define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 0 +#define ASN1_F_ASN1_TIME_ADJ 0 +#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 0 +#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 0 +#define ASN1_F_ASN1_UTCTIME_ADJ 0 +#define ASN1_F_ASN1_VERIFY 0 +#define ASN1_F_B64_READ_ASN1 0 +#define ASN1_F_B64_WRITE_ASN1 0 +#define ASN1_F_BIO_NEW_NDEF 0 +#define ASN1_F_BITSTR_CB 0 +#define ASN1_F_BN_TO_ASN1_STRING 0 +#define ASN1_F_C2I_ASN1_BIT_STRING 0 +#define ASN1_F_C2I_ASN1_INTEGER 0 +#define ASN1_F_C2I_ASN1_OBJECT 0 +#define ASN1_F_C2I_IBUF 0 +#define ASN1_F_C2I_UINT64_INT 0 +#define ASN1_F_COLLECT_DATA 0 +#define ASN1_F_D2I_ASN1_OBJECT 0 +#define ASN1_F_D2I_ASN1_UINTEGER 0 +#define ASN1_F_D2I_AUTOPRIVATEKEY 0 +#define ASN1_F_D2I_PRIVATEKEY 0 +#define ASN1_F_D2I_PUBLICKEY 0 +#define ASN1_F_DO_BUF 0 +#define ASN1_F_DO_CREATE 0 +#define ASN1_F_DO_DUMP 0 +#define ASN1_F_DO_TCREATE 0 +#define ASN1_F_I2A_ASN1_OBJECT 0 +#define ASN1_F_I2D_ASN1_BIO_STREAM 0 +#define ASN1_F_I2D_ASN1_OBJECT 0 +#define ASN1_F_I2D_DSA_PUBKEY 0 +#define ASN1_F_I2D_EC_PUBKEY 0 +#define ASN1_F_I2D_PRIVATEKEY 0 +#define ASN1_F_I2D_PUBLICKEY 0 +#define ASN1_F_I2D_RSA_PUBKEY 0 +#define ASN1_F_LONG_C2I 0 +#define ASN1_F_NDEF_PREFIX 0 +#define ASN1_F_NDEF_SUFFIX 0 +#define ASN1_F_OID_MODULE_INIT 0 +#define ASN1_F_PARSE_TAGGING 0 +#define ASN1_F_PKCS5_PBE2_SET_IV 0 +#define ASN1_F_PKCS5_PBE2_SET_SCRYPT 0 +#define ASN1_F_PKCS5_PBE_SET 0 +#define ASN1_F_PKCS5_PBE_SET0_ALGOR 0 +#define ASN1_F_PKCS5_PBKDF2_SET 0 +#define ASN1_F_PKCS5_SCRYPT_SET 0 +#define ASN1_F_SMIME_READ_ASN1 0 +#define ASN1_F_SMIME_TEXT 0 +#define ASN1_F_STABLE_GET 0 +#define ASN1_F_STBL_MODULE_INIT 0 +#define ASN1_F_UINT32_C2I 0 +#define ASN1_F_UINT32_NEW 0 +#define ASN1_F_UINT64_C2I 0 +#define ASN1_F_UINT64_NEW 0 +#define ASN1_F_X509_CRL_ADD0_REVOKED 0 +#define ASN1_F_X509_INFO_NEW 0 +#define ASN1_F_X509_NAME_ENCODE 0 +#define ASN1_F_X509_NAME_EX_D2I 0 +#define ASN1_F_X509_NAME_EX_NEW 0 +#define ASN1_F_X509_PKEY_NEW 0 + +/* + * ASYNC function codes. + */ +#define ASYNC_F_ASYNC_CTX_NEW 0 +#define ASYNC_F_ASYNC_INIT_THREAD 0 +#define ASYNC_F_ASYNC_JOB_NEW 0 +#define ASYNC_F_ASYNC_PAUSE_JOB 0 +#define ASYNC_F_ASYNC_START_FUNC 0 +#define ASYNC_F_ASYNC_START_JOB 0 +#define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 0 + +/* + * BIO function codes. + */ +#define BIO_F_ACPT_STATE 0 +#define BIO_F_ADDRINFO_WRAP 0 +#define BIO_F_ADDR_STRINGS 0 +#define BIO_F_BIO_ACCEPT 0 +#define BIO_F_BIO_ACCEPT_EX 0 +#define BIO_F_BIO_ACCEPT_NEW 0 +#define BIO_F_BIO_ADDR_NEW 0 +#define BIO_F_BIO_BIND 0 +#define BIO_F_BIO_CALLBACK_CTRL 0 +#define BIO_F_BIO_CONNECT 0 +#define BIO_F_BIO_CONNECT_NEW 0 +#define BIO_F_BIO_CTRL 0 +#define BIO_F_BIO_GETS 0 +#define BIO_F_BIO_GET_HOST_IP 0 +#define BIO_F_BIO_GET_NEW_INDEX 0 +#define BIO_F_BIO_GET_PORT 0 +#define BIO_F_BIO_LISTEN 0 +#define BIO_F_BIO_LOOKUP 0 +#define BIO_F_BIO_LOOKUP_EX 0 +#define BIO_F_BIO_MAKE_PAIR 0 +#define BIO_F_BIO_METH_NEW 0 +#define BIO_F_BIO_NEW 0 +#define BIO_F_BIO_NEW_DGRAM_SCTP 0 +#define BIO_F_BIO_NEW_FILE 0 +#define BIO_F_BIO_NEW_MEM_BUF 0 +#define BIO_F_BIO_NREAD 0 +#define BIO_F_BIO_NREAD0 0 +#define BIO_F_BIO_NWRITE 0 +#define BIO_F_BIO_NWRITE0 0 +#define BIO_F_BIO_PARSE_HOSTSERV 0 +#define BIO_F_BIO_PUTS 0 +#define BIO_F_BIO_READ 0 +#define BIO_F_BIO_READ_EX 0 +#define BIO_F_BIO_READ_INTERN 0 +#define BIO_F_BIO_SOCKET 0 +#define BIO_F_BIO_SOCKET_NBIO 0 +#define BIO_F_BIO_SOCK_INFO 0 +#define BIO_F_BIO_SOCK_INIT 0 +#define BIO_F_BIO_WRITE 0 +#define BIO_F_BIO_WRITE_EX 0 +#define BIO_F_BIO_WRITE_INTERN 0 +#define BIO_F_BUFFER_CTRL 0 +#define BIO_F_CONN_CTRL 0 +#define BIO_F_CONN_STATE 0 +#define BIO_F_DGRAM_SCTP_NEW 0 +#define BIO_F_DGRAM_SCTP_READ 0 +#define BIO_F_DGRAM_SCTP_WRITE 0 +#define BIO_F_DOAPR_OUTCH 0 +#define BIO_F_FILE_CTRL 0 +#define BIO_F_FILE_READ 0 +#define BIO_F_LINEBUFFER_CTRL 0 +#define BIO_F_LINEBUFFER_NEW 0 +#define BIO_F_MEM_WRITE 0 +#define BIO_F_NBIOF_NEW 0 +#define BIO_F_SLG_WRITE 0 +#define BIO_F_SSL_NEW 0 + +/* + * BN function codes. + */ +#define BN_F_BNRAND 0 +#define BN_F_BNRAND_RANGE 0 +#define BN_F_BN_BLINDING_CONVERT_EX 0 +#define BN_F_BN_BLINDING_CREATE_PARAM 0 +#define BN_F_BN_BLINDING_INVERT_EX 0 +#define BN_F_BN_BLINDING_NEW 0 +#define BN_F_BN_BLINDING_UPDATE 0 +#define BN_F_BN_BN2DEC 0 +#define BN_F_BN_BN2HEX 0 +#define BN_F_BN_COMPUTE_WNAF 0 +#define BN_F_BN_CTX_GET 0 +#define BN_F_BN_CTX_NEW 0 +#define BN_F_BN_CTX_START 0 +#define BN_F_BN_DIV 0 +#define BN_F_BN_DIV_RECP 0 +#define BN_F_BN_EXP 0 +#define BN_F_BN_EXPAND_INTERNAL 0 +#define BN_F_BN_GENCB_NEW 0 +#define BN_F_BN_GENERATE_DSA_NONCE 0 +#define BN_F_BN_GENERATE_PRIME_EX 0 +#define BN_F_BN_GF2M_MOD 0 +#define BN_F_BN_GF2M_MOD_EXP 0 +#define BN_F_BN_GF2M_MOD_MUL 0 +#define BN_F_BN_GF2M_MOD_SOLVE_QUAD 0 +#define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 0 +#define BN_F_BN_GF2M_MOD_SQR 0 +#define BN_F_BN_GF2M_MOD_SQRT 0 +#define BN_F_BN_LSHIFT 0 +#define BN_F_BN_MOD_EXP2_MONT 0 +#define BN_F_BN_MOD_EXP_MONT 0 +#define BN_F_BN_MOD_EXP_MONT_CONSTTIME 0 +#define BN_F_BN_MOD_EXP_MONT_WORD 0 +#define BN_F_BN_MOD_EXP_RECP 0 +#define BN_F_BN_MOD_EXP_SIMPLE 0 +#define BN_F_BN_MOD_INVERSE 0 +#define BN_F_BN_MOD_INVERSE_NO_BRANCH 0 +#define BN_F_BN_MOD_LSHIFT_QUICK 0 +#define BN_F_BN_MOD_SQRT 0 +#define BN_F_BN_MONT_CTX_NEW 0 +#define BN_F_BN_MPI2BN 0 +#define BN_F_BN_NEW 0 +#define BN_F_BN_POOL_GET 0 +#define BN_F_BN_RAND 0 +#define BN_F_BN_RAND_RANGE 0 +#define BN_F_BN_RECP_CTX_NEW 0 +#define BN_F_BN_RSHIFT 0 +#define BN_F_BN_SET_WORDS 0 +#define BN_F_BN_STACK_PUSH 0 +#define BN_F_BN_USUB 0 + +/* + * BUF function codes. + */ +#define BUF_F_BUF_MEM_GROW 0 +#define BUF_F_BUF_MEM_GROW_CLEAN 0 +#define BUF_F_BUF_MEM_NEW 0 + +#ifndef OPENSSL_NO_CMS +/* + * CMS function codes. + */ +#define CMS_F_CHECK_CONTENT 0 +#define CMS_F_CMS_ADD0_CERT 0 +#define CMS_F_CMS_ADD0_RECIPIENT_KEY 0 +#define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 0 +#define CMS_F_CMS_ADD1_RECEIPTREQUEST 0 +#define CMS_F_CMS_ADD1_RECIPIENT_CERT 0 +#define CMS_F_CMS_ADD1_SIGNER 0 +#define CMS_F_CMS_ADD1_SIGNINGTIME 0 +#define CMS_F_CMS_COMPRESS 0 +#define CMS_F_CMS_COMPRESSEDDATA_CREATE 0 +#define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 0 +#define CMS_F_CMS_COPY_CONTENT 0 +#define CMS_F_CMS_COPY_MESSAGEDIGEST 0 +#define CMS_F_CMS_DATA 0 +#define CMS_F_CMS_DATAFINAL 0 +#define CMS_F_CMS_DATAINIT 0 +#define CMS_F_CMS_DECRYPT 0 +#define CMS_F_CMS_DECRYPT_SET1_KEY 0 +#define CMS_F_CMS_DECRYPT_SET1_PASSWORD 0 +#define CMS_F_CMS_DECRYPT_SET1_PKEY 0 +#define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 0 +#define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 0 +#define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 0 +#define CMS_F_CMS_DIGEST_VERIFY 0 +#define CMS_F_CMS_ENCODE_RECEIPT 0 +#define CMS_F_CMS_ENCRYPT 0 +#define CMS_F_CMS_ENCRYPTEDCONTENT_INIT 0 +#define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 0 +#define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 0 +#define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 0 +#define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 0 +#define CMS_F_CMS_ENVELOPEDDATA_CREATE 0 +#define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 0 +#define CMS_F_CMS_ENVELOPED_DATA_INIT 0 +#define CMS_F_CMS_ENV_ASN1_CTRL 0 +#define CMS_F_CMS_FINAL 0 +#define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 0 +#define CMS_F_CMS_GET0_CONTENT 0 +#define CMS_F_CMS_GET0_ECONTENT_TYPE 0 +#define CMS_F_CMS_GET0_ENVELOPED 0 +#define CMS_F_CMS_GET0_REVOCATION_CHOICES 0 +#define CMS_F_CMS_GET0_SIGNED 0 +#define CMS_F_CMS_MSGSIGDIGEST_ADD1 0 +#define CMS_F_CMS_RECEIPTREQUEST_CREATE0 0 +#define CMS_F_CMS_RECEIPT_VERIFY 0 +#define CMS_F_CMS_RECIPIENTINFO_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 0 +#define CMS_F_CMS_SD_ASN1_CTRL 0 +#define CMS_F_CMS_SET1_IAS 0 +#define CMS_F_CMS_SET1_KEYID 0 +#define CMS_F_CMS_SET1_SIGNERIDENTIFIER 0 +#define CMS_F_CMS_SET_DETACHED 0 +#define CMS_F_CMS_SIGN 0 +#define CMS_F_CMS_SIGNED_DATA_INIT 0 +#define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 0 +#define CMS_F_CMS_SIGNERINFO_SIGN 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 0 +#define CMS_F_CMS_SIGN_RECEIPT 0 +#define CMS_F_CMS_SI_CHECK_ATTRIBUTES 0 +#define CMS_F_CMS_STREAM 0 +#define CMS_F_CMS_UNCOMPRESS 0 +#define CMS_F_CMS_VERIFY 0 +#define CMS_F_KEK_UNWRAP_KEY 0 +#endif + +#ifndef OPENSSL_NO_COMP +/* + * COMP function codes. + */ +#define COMP_F_BIO_ZLIB_FLUSH 0 +#define COMP_F_BIO_ZLIB_NEW 0 +#define COMP_F_BIO_ZLIB_READ 0 +#define COMP_F_BIO_ZLIB_WRITE 0 +#define COMP_F_COMP_CTX_NEW 0 +#endif + +/* + * CONF function codes. + */ +#define CONF_F_CONF_DUMP_FP 0 +#define CONF_F_CONF_LOAD 0 +#define CONF_F_CONF_LOAD_FP 0 +#define CONF_F_CONF_PARSE_LIST 0 +#define CONF_F_DEF_LOAD 0 +#define CONF_F_DEF_LOAD_BIO 0 +#define CONF_F_GET_NEXT_FILE 0 +#define CONF_F_MODULE_ADD 0 +#define CONF_F_MODULE_INIT 0 +#define CONF_F_MODULE_LOAD_DSO 0 +#define CONF_F_MODULE_RUN 0 +#define CONF_F_NCONF_DUMP_BIO 0 +#define CONF_F_NCONF_DUMP_FP 0 +#define CONF_F_NCONF_GET_NUMBER_E 0 +#define CONF_F_NCONF_GET_SECTION 0 +#define CONF_F_NCONF_GET_STRING 0 +#define CONF_F_NCONF_LOAD 0 +#define CONF_F_NCONF_LOAD_BIO 0 +#define CONF_F_NCONF_LOAD_FP 0 +#define CONF_F_NCONF_NEW 0 +#define CONF_F_PROCESS_INCLUDE 0 +#define CONF_F_SSL_MODULE_INIT 0 +#define CONF_F_STR_COPY 0 + +/* + * CRYPTO function codes. + */ +#define CRYPTO_F_CMAC_CTX_NEW 0 +#define CRYPTO_F_CRYPTO_DUP_EX_DATA 0 +#define CRYPTO_F_CRYPTO_FREE_EX_DATA 0 +#define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 0 +#define CRYPTO_F_CRYPTO_MEMDUP 0 +#define CRYPTO_F_CRYPTO_NEW_EX_DATA 0 +#define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 0 +#define CRYPTO_F_CRYPTO_OCB128_INIT 0 +#define CRYPTO_F_CRYPTO_SET_EX_DATA 0 +#define CRYPTO_F_GET_AND_LOCK 0 +#define CRYPTO_F_OPENSSL_ATEXIT 0 +#define CRYPTO_F_OPENSSL_BUF2HEXSTR 0 +#define CRYPTO_F_OPENSSL_FOPEN 0 +#define CRYPTO_F_OPENSSL_HEXSTR2BUF 0 +#define CRYPTO_F_OPENSSL_INIT_CRYPTO 0 +#define CRYPTO_F_OPENSSL_LH_NEW 0 +#define CRYPTO_F_OPENSSL_SK_DEEP_COPY 0 +#define CRYPTO_F_OPENSSL_SK_DUP 0 +#define CRYPTO_F_PKEY_HMAC_INIT 0 +#define CRYPTO_F_PKEY_POLY1305_INIT 0 +#define CRYPTO_F_PKEY_SIPHASH_INIT 0 +#define CRYPTO_F_SK_RESERVE 0 + +#ifndef OPENSSL_NO_CT +/* + * CT function codes. + */ +#define CT_F_CTLOG_NEW 0 +#define CT_F_CTLOG_NEW_FROM_BASE64 0 +#define CT_F_CTLOG_NEW_FROM_CONF 0 +#define CT_F_CTLOG_STORE_LOAD_CTX_NEW 0 +#define CT_F_CTLOG_STORE_LOAD_FILE 0 +#define CT_F_CTLOG_STORE_LOAD_LOG 0 +#define CT_F_CTLOG_STORE_NEW 0 +#define CT_F_CT_BASE64_DECODE 0 +#define CT_F_CT_POLICY_EVAL_CTX_NEW 0 +#define CT_F_CT_V1_LOG_ID_FROM_PKEY 0 +#define CT_F_I2O_SCT 0 +#define CT_F_I2O_SCT_LIST 0 +#define CT_F_I2O_SCT_SIGNATURE 0 +#define CT_F_O2I_SCT 0 +#define CT_F_O2I_SCT_LIST 0 +#define CT_F_O2I_SCT_SIGNATURE 0 +#define CT_F_SCT_CTX_NEW 0 +#define CT_F_SCT_CTX_VERIFY 0 +#define CT_F_SCT_NEW 0 +#define CT_F_SCT_NEW_FROM_BASE64 0 +#define CT_F_SCT_SET0_LOG_ID 0 +#define CT_F_SCT_SET1_EXTENSIONS 0 +#define CT_F_SCT_SET1_LOG_ID 0 +#define CT_F_SCT_SET1_SIGNATURE 0 +#define CT_F_SCT_SET_LOG_ENTRY_TYPE 0 +#define CT_F_SCT_SET_SIGNATURE_NID 0 +#define CT_F_SCT_SET_VERSION 0 +#endif + +#ifndef OPENSSL_NO_DH +/* + * DH function codes. + */ +#define DH_F_COMPUTE_KEY 0 +#define DH_F_DHPARAMS_PRINT_FP 0 +#define DH_F_DH_BUILTIN_GENPARAMS 0 +#define DH_F_DH_CHECK_EX 0 +#define DH_F_DH_CHECK_PARAMS_EX 0 +#define DH_F_DH_CHECK_PUB_KEY_EX 0 +#define DH_F_DH_CMS_DECRYPT 0 +#define DH_F_DH_CMS_SET_PEERKEY 0 +#define DH_F_DH_CMS_SET_SHARED_INFO 0 +#define DH_F_DH_METH_DUP 0 +#define DH_F_DH_METH_NEW 0 +#define DH_F_DH_METH_SET1_NAME 0 +#define DH_F_DH_NEW_BY_NID 0 +#define DH_F_DH_NEW_METHOD 0 +#define DH_F_DH_PARAM_DECODE 0 +#define DH_F_DH_PKEY_PUBLIC_CHECK 0 +#define DH_F_DH_PRIV_DECODE 0 +#define DH_F_DH_PRIV_ENCODE 0 +#define DH_F_DH_PUB_DECODE 0 +#define DH_F_DH_PUB_ENCODE 0 +#define DH_F_DO_DH_PRINT 0 +#define DH_F_GENERATE_KEY 0 +#define DH_F_PKEY_DH_CTRL_STR 0 +#define DH_F_PKEY_DH_DERIVE 0 +#define DH_F_PKEY_DH_INIT 0 +#define DH_F_PKEY_DH_KEYGEN 0 +#endif + +#ifndef OPENSSL_NO_DSA +/* + * DSA function codes. + */ +#define DSA_F_DSAPARAMS_PRINT 0 +#define DSA_F_DSAPARAMS_PRINT_FP 0 +#define DSA_F_DSA_BUILTIN_PARAMGEN 0 +#define DSA_F_DSA_BUILTIN_PARAMGEN2 0 +#define DSA_F_DSA_DO_SIGN 0 +#define DSA_F_DSA_DO_VERIFY 0 +#define DSA_F_DSA_METH_DUP 0 +#define DSA_F_DSA_METH_NEW 0 +#define DSA_F_DSA_METH_SET1_NAME 0 +#define DSA_F_DSA_NEW_METHOD 0 +#define DSA_F_DSA_PARAM_DECODE 0 +#define DSA_F_DSA_PRINT_FP 0 +#define DSA_F_DSA_PRIV_DECODE 0 +#define DSA_F_DSA_PRIV_ENCODE 0 +#define DSA_F_DSA_PUB_DECODE 0 +#define DSA_F_DSA_PUB_ENCODE 0 +#define DSA_F_DSA_SIGN 0 +#define DSA_F_DSA_SIGN_SETUP 0 +#define DSA_F_DSA_SIG_NEW 0 +#define DSA_F_OLD_DSA_PRIV_DECODE 0 +#define DSA_F_PKEY_DSA_CTRL 0 +#define DSA_F_PKEY_DSA_CTRL_STR 0 +#define DSA_F_PKEY_DSA_KEYGEN 0 +#endif + +#ifndef OPENSSL_NO_EC +/* + * EC function codes. + */ +#define EC_F_BN_TO_FELEM 0 +#define EC_F_D2I_ECPARAMETERS 0 +#define EC_F_D2I_ECPKPARAMETERS 0 +#define EC_F_D2I_ECPRIVATEKEY 0 +#define EC_F_DO_EC_KEY_PRINT 0 +#define EC_F_ECDH_CMS_DECRYPT 0 +#define EC_F_ECDH_CMS_SET_SHARED_INFO 0 +#define EC_F_ECDH_COMPUTE_KEY 0 +#define EC_F_ECDH_SIMPLE_COMPUTE_KEY 0 +#define EC_F_ECDSA_DO_SIGN_EX 0 +#define EC_F_ECDSA_DO_VERIFY 0 +#define EC_F_ECDSA_SIGN_EX 0 +#define EC_F_ECDSA_SIGN_SETUP 0 +#define EC_F_ECDSA_SIG_NEW 0 +#define EC_F_ECDSA_VERIFY 0 +#define EC_F_ECD_ITEM_VERIFY 0 +#define EC_F_ECKEY_PARAM2TYPE 0 +#define EC_F_ECKEY_PARAM_DECODE 0 +#define EC_F_ECKEY_PRIV_DECODE 0 +#define EC_F_ECKEY_PRIV_ENCODE 0 +#define EC_F_ECKEY_PUB_DECODE 0 +#define EC_F_ECKEY_PUB_ENCODE 0 +#define EC_F_ECKEY_TYPE2PARAM 0 +#define EC_F_ECPARAMETERS_PRINT 0 +#define EC_F_ECPARAMETERS_PRINT_FP 0 +#define EC_F_ECPKPARAMETERS_PRINT 0 +#define EC_F_ECPKPARAMETERS_PRINT_FP 0 +#define EC_F_ECP_NISTZ256_GET_AFFINE 0 +#define EC_F_ECP_NISTZ256_INV_MOD_ORD 0 +#define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 0 +#define EC_F_ECP_NISTZ256_POINTS_MUL 0 +#define EC_F_ECP_NISTZ256_PRE_COMP_NEW 0 +#define EC_F_ECP_NISTZ256_WINDOWED_MUL 0 +#define EC_F_ECX_KEY_OP 0 +#define EC_F_ECX_PRIV_ENCODE 0 +#define EC_F_ECX_PUB_ENCODE 0 +#define EC_F_EC_ASN1_GROUP2CURVE 0 +#define EC_F_EC_ASN1_GROUP2FIELDID 0 +#define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 0 +#define EC_F_EC_GF2M_SIMPLE_FIELD_INV 0 +#define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 0 +#define EC_F_EC_GF2M_SIMPLE_LADDER_POST 0 +#define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 0 +#define EC_F_EC_GF2M_SIMPLE_OCT2POINT 0 +#define EC_F_EC_GF2M_SIMPLE_POINT2OCT 0 +#define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 0 +#define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_GFP_MONT_FIELD_DECODE 0 +#define EC_F_EC_GFP_MONT_FIELD_ENCODE 0 +#define EC_F_EC_GFP_MONT_FIELD_INV 0 +#define EC_F_EC_GFP_MONT_FIELD_MUL 0 +#define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 0 +#define EC_F_EC_GFP_MONT_FIELD_SQR 0 +#define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP224_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP256_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP521_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NIST_FIELD_MUL 0 +#define EC_F_EC_GFP_NIST_FIELD_SQR 0 +#define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_FIELD_INV 0 +#define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 0 +#define EC_F_EC_GFP_SIMPLE_OCT2POINT 0 +#define EC_F_EC_GFP_SIMPLE_POINT2OCT 0 +#define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 0 +#define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_GROUP_CHECK 0 +#define EC_F_EC_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GROUP_COPY 0 +#define EC_F_EC_GROUP_GET_CURVE 0 +#define EC_F_EC_GROUP_GET_CURVE_GF2M 0 +#define EC_F_EC_GROUP_GET_CURVE_GFP 0 +#define EC_F_EC_GROUP_GET_DEGREE 0 +#define EC_F_EC_GROUP_GET_ECPARAMETERS 0 +#define EC_F_EC_GROUP_GET_ECPKPARAMETERS 0 +#define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 0 +#define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 0 +#define EC_F_EC_GROUP_NEW 0 +#define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 0 +#define EC_F_EC_GROUP_NEW_FROM_DATA 0 +#define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 0 +#define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 0 +#define EC_F_EC_GROUP_SET_CURVE 0 +#define EC_F_EC_GROUP_SET_CURVE_GF2M 0 +#define EC_F_EC_GROUP_SET_CURVE_GFP 0 +#define EC_F_EC_GROUP_SET_GENERATOR 0 +#define EC_F_EC_GROUP_SET_SEED 0 +#define EC_F_EC_KEY_CHECK_KEY 0 +#define EC_F_EC_KEY_COPY 0 +#define EC_F_EC_KEY_GENERATE_KEY 0 +#define EC_F_EC_KEY_NEW 0 +#define EC_F_EC_KEY_NEW_METHOD 0 +#define EC_F_EC_KEY_OCT2PRIV 0 +#define EC_F_EC_KEY_PRINT 0 +#define EC_F_EC_KEY_PRINT_FP 0 +#define EC_F_EC_KEY_PRIV2BUF 0 +#define EC_F_EC_KEY_PRIV2OCT 0 +#define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 0 +#define EC_F_EC_KEY_SIMPLE_CHECK_KEY 0 +#define EC_F_EC_KEY_SIMPLE_OCT2PRIV 0 +#define EC_F_EC_KEY_SIMPLE_PRIV2OCT 0 +#define EC_F_EC_PKEY_CHECK 0 +#define EC_F_EC_PKEY_PARAM_CHECK 0 +#define EC_F_EC_POINTS_MAKE_AFFINE 0 +#define EC_F_EC_POINTS_MUL 0 +#define EC_F_EC_POINT_ADD 0 +#define EC_F_EC_POINT_BN2POINT 0 +#define EC_F_EC_POINT_CMP 0 +#define EC_F_EC_POINT_COPY 0 +#define EC_F_EC_POINT_DBL 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_INVERT 0 +#define EC_F_EC_POINT_IS_AT_INFINITY 0 +#define EC_F_EC_POINT_IS_ON_CURVE 0 +#define EC_F_EC_POINT_MAKE_AFFINE 0 +#define EC_F_EC_POINT_NEW 0 +#define EC_F_EC_POINT_OCT2POINT 0 +#define EC_F_EC_POINT_POINT2BUF 0 +#define EC_F_EC_POINT_POINT2OCT 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_TO_INFINITY 0 +#define EC_F_EC_PRE_COMP_NEW 0 +#define EC_F_EC_SCALAR_MUL_LADDER 0 +#define EC_F_EC_WNAF_MUL 0 +#define EC_F_EC_WNAF_PRECOMPUTE_MULT 0 +#define EC_F_I2D_ECPARAMETERS 0 +#define EC_F_I2D_ECPKPARAMETERS 0 +#define EC_F_I2D_ECPRIVATEKEY 0 +#define EC_F_I2O_ECPUBLICKEY 0 +#define EC_F_NISTP224_PRE_COMP_NEW 0 +#define EC_F_NISTP256_PRE_COMP_NEW 0 +#define EC_F_NISTP521_PRE_COMP_NEW 0 +#define EC_F_O2I_ECPUBLICKEY 0 +#define EC_F_OLD_EC_PRIV_DECODE 0 +#define EC_F_OSSL_ECDH_COMPUTE_KEY 0 +#define EC_F_OSSL_ECDSA_SIGN_SIG 0 +#define EC_F_OSSL_ECDSA_VERIFY_SIG 0 +#define EC_F_PKEY_ECD_CTRL 0 +#define EC_F_PKEY_ECD_DIGESTSIGN 0 +#define EC_F_PKEY_ECD_DIGESTSIGN25519 0 +#define EC_F_PKEY_ECD_DIGESTSIGN448 0 +#define EC_F_PKEY_ECX_DERIVE 0 +#define EC_F_PKEY_EC_CTRL 0 +#define EC_F_PKEY_EC_CTRL_STR 0 +#define EC_F_PKEY_EC_DERIVE 0 +#define EC_F_PKEY_EC_INIT 0 +#define EC_F_PKEY_EC_KDF_DERIVE 0 +#define EC_F_PKEY_EC_KEYGEN 0 +#define EC_F_PKEY_EC_PARAMGEN 0 +#define EC_F_PKEY_EC_SIGN 0 +#define EC_F_VALIDATE_ECX_DERIVE 0 +#endif + +#ifndef OPENSSL_NO_ENGINE +/* + * ENGINE function codes. + */ +#define ENGINE_F_DIGEST_UPDATE 0 +#define ENGINE_F_DYNAMIC_CTRL 0 +#define ENGINE_F_DYNAMIC_GET_DATA_CTX 0 +#define ENGINE_F_DYNAMIC_LOAD 0 +#define ENGINE_F_DYNAMIC_SET_DATA_CTX 0 +#define ENGINE_F_ENGINE_ADD 0 +#define ENGINE_F_ENGINE_BY_ID 0 +#define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 0 +#define ENGINE_F_ENGINE_CTRL 0 +#define ENGINE_F_ENGINE_CTRL_CMD 0 +#define ENGINE_F_ENGINE_CTRL_CMD_STRING 0 +#define ENGINE_F_ENGINE_FINISH 0 +#define ENGINE_F_ENGINE_GET_CIPHER 0 +#define ENGINE_F_ENGINE_GET_DIGEST 0 +#define ENGINE_F_ENGINE_GET_FIRST 0 +#define ENGINE_F_ENGINE_GET_LAST 0 +#define ENGINE_F_ENGINE_GET_NEXT 0 +#define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 0 +#define ENGINE_F_ENGINE_GET_PKEY_METH 0 +#define ENGINE_F_ENGINE_GET_PREV 0 +#define ENGINE_F_ENGINE_INIT 0 +#define ENGINE_F_ENGINE_LIST_ADD 0 +#define ENGINE_F_ENGINE_LIST_REMOVE 0 +#define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 0 +#define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 0 +#define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 0 +#define ENGINE_F_ENGINE_NEW 0 +#define ENGINE_F_ENGINE_PKEY_ASN1_FIND_STR 0 +#define ENGINE_F_ENGINE_REMOVE 0 +#define ENGINE_F_ENGINE_SET_DEFAULT_STRING 0 +#define ENGINE_F_ENGINE_SET_ID 0 +#define ENGINE_F_ENGINE_SET_NAME 0 +#define ENGINE_F_ENGINE_TABLE_REGISTER 0 +#define ENGINE_F_ENGINE_UNLOCKED_FINISH 0 +#define ENGINE_F_ENGINE_UP_REF 0 +#define ENGINE_F_INT_CLEANUP_ITEM 0 +#define ENGINE_F_INT_CTRL_HELPER 0 +#define ENGINE_F_INT_ENGINE_CONFIGURE 0 +#define ENGINE_F_INT_ENGINE_MODULE_INIT 0 +#define ENGINE_F_OSSL_HMAC_INIT 0 +#endif + +/* + * EVP function codes. + */ +#define EVP_F_AESNI_INIT_KEY 0 +#define EVP_F_AESNI_XTS_INIT_KEY 0 +#define EVP_F_AES_GCM_CTRL 0 +#define EVP_F_AES_INIT_KEY 0 +#define EVP_F_AES_OCB_CIPHER 0 +#define EVP_F_AES_T4_INIT_KEY 0 +#define EVP_F_AES_T4_XTS_INIT_KEY 0 +#define EVP_F_AES_WRAP_CIPHER 0 +#define EVP_F_AES_XTS_INIT_KEY 0 +#define EVP_F_ALG_MODULE_INIT 0 +#define EVP_F_ARIA_CCM_INIT_KEY 0 +#define EVP_F_ARIA_GCM_CTRL 0 +#define EVP_F_ARIA_GCM_INIT_KEY 0 +#define EVP_F_ARIA_INIT_KEY 0 +#define EVP_F_B64_NEW 0 +#define EVP_F_CAMELLIA_INIT_KEY 0 +#define EVP_F_CHACHA20_POLY1305_CTRL 0 +#define EVP_F_CMLL_T4_INIT_KEY 0 +#define EVP_F_DES_EDE3_WRAP_CIPHER 0 +#define EVP_F_DO_SIGVER_INIT 0 +#define EVP_F_ENC_NEW 0 +#define EVP_F_EVP_CIPHERINIT_EX 0 +#define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 0 +#define EVP_F_EVP_CIPHER_CTX_COPY 0 +#define EVP_F_EVP_CIPHER_CTX_CTRL 0 +#define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 0 +#define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 0 +#define EVP_F_EVP_DECRYPTFINAL_EX 0 +#define EVP_F_EVP_DECRYPTUPDATE 0 +#define EVP_F_EVP_DIGESTFINALXOF 0 +#define EVP_F_EVP_DIGESTINIT_EX 0 +#define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 0 +#define EVP_F_EVP_ENCRYPTFINAL_EX 0 +#define EVP_F_EVP_ENCRYPTUPDATE 0 +#define EVP_F_EVP_MD_CTX_COPY_EX 0 +#define EVP_F_EVP_MD_SIZE 0 +#define EVP_F_EVP_OPENINIT 0 +#define EVP_F_EVP_PBE_ALG_ADD 0 +#define EVP_F_EVP_PBE_ALG_ADD_TYPE 0 +#define EVP_F_EVP_PBE_CIPHERINIT 0 +#define EVP_F_EVP_PBE_SCRYPT 0 +#define EVP_F_EVP_PKCS82PKEY 0 +#define EVP_F_EVP_PKEY2PKCS8 0 +#define EVP_F_EVP_PKEY_ASN1_ADD0 0 +#define EVP_F_EVP_PKEY_CHECK 0 +#define EVP_F_EVP_PKEY_COPY_PARAMETERS 0 +#define EVP_F_EVP_PKEY_CTX_CTRL 0 +#define EVP_F_EVP_PKEY_CTX_CTRL_STR 0 +#define EVP_F_EVP_PKEY_CTX_DUP 0 +#define EVP_F_EVP_PKEY_CTX_MD 0 +#define EVP_F_EVP_PKEY_DECRYPT 0 +#define EVP_F_EVP_PKEY_DECRYPT_INIT 0 +#define EVP_F_EVP_PKEY_DECRYPT_OLD 0 +#define EVP_F_EVP_PKEY_DERIVE 0 +#define EVP_F_EVP_PKEY_DERIVE_INIT 0 +#define EVP_F_EVP_PKEY_DERIVE_SET_PEER 0 +#define EVP_F_EVP_PKEY_ENCRYPT 0 +#define EVP_F_EVP_PKEY_ENCRYPT_INIT 0 +#define EVP_F_EVP_PKEY_ENCRYPT_OLD 0 +#define EVP_F_EVP_PKEY_GET0_DH 0 +#define EVP_F_EVP_PKEY_GET0_DSA 0 +#define EVP_F_EVP_PKEY_GET0_EC_KEY 0 +#define EVP_F_EVP_PKEY_GET0_HMAC 0 +#define EVP_F_EVP_PKEY_GET0_POLY1305 0 +#define EVP_F_EVP_PKEY_GET0_RSA 0 +#define EVP_F_EVP_PKEY_GET0_SIPHASH 0 +#define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 0 +#define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 0 +#define EVP_F_EVP_PKEY_KEYGEN 0 +#define EVP_F_EVP_PKEY_KEYGEN_INIT 0 +#define EVP_F_EVP_PKEY_METH_ADD0 0 +#define EVP_F_EVP_PKEY_METH_NEW 0 +#define EVP_F_EVP_PKEY_NEW 0 +#define EVP_F_EVP_PKEY_NEW_CMAC_KEY 0 +#define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 0 +#define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 0 +#define EVP_F_EVP_PKEY_PARAMGEN 0 +#define EVP_F_EVP_PKEY_PARAMGEN_INIT 0 +#define EVP_F_EVP_PKEY_PARAM_CHECK 0 +#define EVP_F_EVP_PKEY_PUBLIC_CHECK 0 +#define EVP_F_EVP_PKEY_SET1_ENGINE 0 +#define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 0 +#define EVP_F_EVP_PKEY_SIGN 0 +#define EVP_F_EVP_PKEY_SIGN_INIT 0 +#define EVP_F_EVP_PKEY_VERIFY 0 +#define EVP_F_EVP_PKEY_VERIFY_INIT 0 +#define EVP_F_EVP_PKEY_VERIFY_RECOVER 0 +#define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 0 +#define EVP_F_EVP_SIGNFINAL 0 +#define EVP_F_EVP_VERIFYFINAL 0 +#define EVP_F_INT_CTX_NEW 0 +#define EVP_F_OK_NEW 0 +#define EVP_F_PKCS5_PBE_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_PBE_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 0 +#define EVP_F_PKEY_SET_TYPE 0 +#define EVP_F_RC2_MAGIC_TO_METH 0 +#define EVP_F_RC5_CTRL 0 +#define EVP_F_R_32_12_16_INIT_KEY 0 +#define EVP_F_S390X_AES_GCM_CTRL 0 +#define EVP_F_UPDATE 0 + +/* + * KDF function codes. + */ +#define KDF_F_PKEY_HKDF_CTRL_STR 0 +#define KDF_F_PKEY_HKDF_DERIVE 0 +#define KDF_F_PKEY_HKDF_INIT 0 +#define KDF_F_PKEY_SCRYPT_CTRL_STR 0 +#define KDF_F_PKEY_SCRYPT_CTRL_UINT64 0 +#define KDF_F_PKEY_SCRYPT_DERIVE 0 +#define KDF_F_PKEY_SCRYPT_INIT 0 +#define KDF_F_PKEY_SCRYPT_SET_MEMBUF 0 +#define KDF_F_PKEY_TLS1_PRF_CTRL_STR 0 +#define KDF_F_PKEY_TLS1_PRF_DERIVE 0 +#define KDF_F_PKEY_TLS1_PRF_INIT 0 +#define KDF_F_TLS1_PRF_ALG 0 + +/* + * KDF reason codes. + */ +#define KDF_R_INVALID_DIGEST 0 +#define KDF_R_MISSING_ITERATION_COUNT 0 +#define KDF_R_MISSING_KEY 0 +#define KDF_R_MISSING_MESSAGE_DIGEST 0 +#define KDF_R_MISSING_PARAMETER 0 +#define KDF_R_MISSING_PASS 0 +#define KDF_R_MISSING_SALT 0 +#define KDF_R_MISSING_SECRET 0 +#define KDF_R_MISSING_SEED 0 +#define KDF_R_UNKNOWN_PARAMETER_TYPE 0 +#define KDF_R_VALUE_ERROR 0 +#define KDF_R_VALUE_MISSING 0 + +/* + * OBJ function codes. + */ +#define OBJ_F_OBJ_ADD_OBJECT 0 +#define OBJ_F_OBJ_ADD_SIGID 0 +#define OBJ_F_OBJ_CREATE 0 +#define OBJ_F_OBJ_DUP 0 +#define OBJ_F_OBJ_NAME_NEW_INDEX 0 +#define OBJ_F_OBJ_NID2LN 0 +#define OBJ_F_OBJ_NID2OBJ 0 +#define OBJ_F_OBJ_NID2SN 0 +#define OBJ_F_OBJ_TXT2OBJ 0 + +#ifndef OPENSSL_NO_OCSP +/* + * OCSP function codes. + */ +#define OCSP_F_D2I_OCSP_NONCE 0 +#define OCSP_F_OCSP_BASIC_ADD1_STATUS 0 +#define OCSP_F_OCSP_BASIC_SIGN 0 +#define OCSP_F_OCSP_BASIC_SIGN_CTX 0 +#define OCSP_F_OCSP_BASIC_VERIFY 0 +#define OCSP_F_OCSP_CERT_ID_NEW 0 +#define OCSP_F_OCSP_CHECK_DELEGATED 0 +#define OCSP_F_OCSP_CHECK_IDS 0 +#define OCSP_F_OCSP_CHECK_ISSUER 0 +#define OCSP_F_OCSP_CHECK_VALIDITY 0 +#define OCSP_F_OCSP_MATCH_ISSUERID 0 +#define OCSP_F_OCSP_PARSE_URL 0 +#define OCSP_F_OCSP_REQUEST_SIGN 0 +#define OCSP_F_OCSP_REQUEST_VERIFY 0 +#define OCSP_F_OCSP_RESPONSE_GET1_BASIC 0 +#define OCSP_F_PARSE_HTTP_LINE1 0 +#endif + +/* + * PEM function codes. + */ +#define PEM_F_B2I_DSS 0 +#define PEM_F_B2I_PVK_BIO 0 +#define PEM_F_B2I_RSA 0 +#define PEM_F_CHECK_BITLEN_DSA 0 +#define PEM_F_CHECK_BITLEN_RSA 0 +#define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 0 +#define PEM_F_D2I_PKCS8PRIVATEKEY_FP 0 +#define PEM_F_DO_B2I 0 +#define PEM_F_DO_B2I_BIO 0 +#define PEM_F_DO_BLOB_HEADER 0 +#define PEM_F_DO_I2B 0 +#define PEM_F_DO_PK8PKEY 0 +#define PEM_F_DO_PK8PKEY_FP 0 +#define PEM_F_DO_PVK_BODY 0 +#define PEM_F_DO_PVK_HEADER 0 +#define PEM_F_GET_HEADER_AND_DATA 0 +#define PEM_F_GET_NAME 0 +#define PEM_F_I2B_PVK 0 +#define PEM_F_I2B_PVK_BIO 0 +#define PEM_F_LOAD_IV 0 +#define PEM_F_PEM_ASN1_READ 0 +#define PEM_F_PEM_ASN1_READ_BIO 0 +#define PEM_F_PEM_ASN1_WRITE 0 +#define PEM_F_PEM_ASN1_WRITE_BIO 0 +#define PEM_F_PEM_DEF_CALLBACK 0 +#define PEM_F_PEM_DO_HEADER 0 +#define PEM_F_PEM_GET_EVP_CIPHER_INFO 0 +#define PEM_F_PEM_READ 0 +#define PEM_F_PEM_READ_BIO 0 +#define PEM_F_PEM_READ_BIO_DHPARAMS 0 +#define PEM_F_PEM_READ_BIO_EX 0 +#define PEM_F_PEM_READ_BIO_PARAMETERS 0 +#define PEM_F_PEM_READ_BIO_PRIVATEKEY 0 +#define PEM_F_PEM_READ_DHPARAMS 0 +#define PEM_F_PEM_READ_PRIVATEKEY 0 +#define PEM_F_PEM_SIGNFINAL 0 +#define PEM_F_PEM_WRITE 0 +#define PEM_F_PEM_WRITE_BIO 0 +#define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 0 +#define PEM_F_PEM_WRITE_PRIVATEKEY 0 +#define PEM_F_PEM_X509_INFO_READ 0 +#define PEM_F_PEM_X509_INFO_READ_BIO 0 +#define PEM_F_PEM_X509_INFO_WRITE_BIO 0 + +/* + * PKCS12 function codes. + */ +#define PKCS12_F_OPENSSL_ASC2UNI 0 +#define PKCS12_F_OPENSSL_UNI2ASC 0 +#define PKCS12_F_OPENSSL_UNI2UTF8 0 +#define PKCS12_F_OPENSSL_UTF82UNI 0 +#define PKCS12_F_PKCS12_CREATE 0 +#define PKCS12_F_PKCS12_GEN_MAC 0 +#define PKCS12_F_PKCS12_INIT 0 +#define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 0 +#define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 0 +#define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 0 +#define PKCS12_F_PKCS12_KEY_GEN_ASC 0 +#define PKCS12_F_PKCS12_KEY_GEN_UNI 0 +#define PKCS12_F_PKCS12_KEY_GEN_UTF8 0 +#define PKCS12_F_PKCS12_NEWPASS 0 +#define PKCS12_F_PKCS12_PACK_P7DATA 0 +#define PKCS12_F_PKCS12_PACK_P7ENCDATA 0 +#define PKCS12_F_PKCS12_PARSE 0 +#define PKCS12_F_PKCS12_PBE_CRYPT 0 +#define PKCS12_F_PKCS12_PBE_KEYIVGEN 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 0 +#define PKCS12_F_PKCS12_SETUP_MAC 0 +#define PKCS12_F_PKCS12_SET_MAC 0 +#define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 0 +#define PKCS12_F_PKCS12_UNPACK_P7DATA 0 +#define PKCS12_F_PKCS12_VERIFY_MAC 0 +#define PKCS12_F_PKCS8_ENCRYPT 0 +#define PKCS12_F_PKCS8_SET0_PBE 0 + +/* + * PKCS7 function codes. + */ +#define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 0 +#define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 0 +#define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 0 +#define PKCS7_F_PKCS7_ADD_CERTIFICATE 0 +#define PKCS7_F_PKCS7_ADD_CRL 0 +#define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 0 +#define PKCS7_F_PKCS7_ADD_SIGNATURE 0 +#define PKCS7_F_PKCS7_ADD_SIGNER 0 +#define PKCS7_F_PKCS7_BIO_ADD_DIGEST 0 +#define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 0 +#define PKCS7_F_PKCS7_CTRL 0 +#define PKCS7_F_PKCS7_DATADECODE 0 +#define PKCS7_F_PKCS7_DATAFINAL 0 +#define PKCS7_F_PKCS7_DATAINIT 0 +#define PKCS7_F_PKCS7_DATAVERIFY 0 +#define PKCS7_F_PKCS7_DECRYPT 0 +#define PKCS7_F_PKCS7_DECRYPT_RINFO 0 +#define PKCS7_F_PKCS7_ENCODE_RINFO 0 +#define PKCS7_F_PKCS7_ENCRYPT 0 +#define PKCS7_F_PKCS7_FINAL 0 +#define PKCS7_F_PKCS7_FIND_DIGEST 0 +#define PKCS7_F_PKCS7_GET0_SIGNERS 0 +#define PKCS7_F_PKCS7_RECIP_INFO_SET 0 +#define PKCS7_F_PKCS7_SET_CIPHER 0 +#define PKCS7_F_PKCS7_SET_CONTENT 0 +#define PKCS7_F_PKCS7_SET_DIGEST 0 +#define PKCS7_F_PKCS7_SET_TYPE 0 +#define PKCS7_F_PKCS7_SIGN 0 +#define PKCS7_F_PKCS7_SIGNATUREVERIFY 0 +#define PKCS7_F_PKCS7_SIGNER_INFO_SET 0 +#define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 0 +#define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 0 +#define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 0 +#define PKCS7_F_PKCS7_VERIFY 0 + +/* + * RAND function codes. + */ +#define RAND_F_DATA_COLLECT_METHOD 0 +#define RAND_F_DRBG_BYTES 0 +#define RAND_F_DRBG_GET_ENTROPY 0 +#define RAND_F_DRBG_SETUP 0 +#define RAND_F_GET_ENTROPY 0 +#define RAND_F_RAND_BYTES 0 +#define RAND_F_RAND_DRBG_ENABLE_LOCKING 0 +#define RAND_F_RAND_DRBG_GENERATE 0 +#define RAND_F_RAND_DRBG_GET_ENTROPY 0 +#define RAND_F_RAND_DRBG_GET_NONCE 0 +#define RAND_F_RAND_DRBG_INSTANTIATE 0 +#define RAND_F_RAND_DRBG_NEW 0 +#define RAND_F_RAND_DRBG_RESEED 0 +#define RAND_F_RAND_DRBG_RESTART 0 +#define RAND_F_RAND_DRBG_SET 0 +#define RAND_F_RAND_DRBG_SET_DEFAULTS 0 +#define RAND_F_RAND_DRBG_UNINSTANTIATE 0 +#define RAND_F_RAND_LOAD_FILE 0 +#define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 0 +#define RAND_F_RAND_POOL_ADD 0 +#define RAND_F_RAND_POOL_ADD_BEGIN 0 +#define RAND_F_RAND_POOL_ADD_END 0 +#define RAND_F_RAND_POOL_ATTACH 0 +#define RAND_F_RAND_POOL_BYTES_NEEDED 0 +#define RAND_F_RAND_POOL_GROW 0 +#define RAND_F_RAND_POOL_NEW 0 +#define RAND_F_RAND_PSEUDO_BYTES 0 +#define RAND_F_RAND_WRITE_FILE 0 + +/* + * RSA function codes. + */ +#define RSA_F_CHECK_PADDING_MD 0 +#define RSA_F_ENCODE_PKCS1 0 +#define RSA_F_INT_RSA_VERIFY 0 +#define RSA_F_OLD_RSA_PRIV_DECODE 0 +#define RSA_F_PKEY_PSS_INIT 0 +#define RSA_F_PKEY_RSA_CTRL 0 +#define RSA_F_PKEY_RSA_CTRL_STR 0 +#define RSA_F_PKEY_RSA_SIGN 0 +#define RSA_F_PKEY_RSA_VERIFY 0 +#define RSA_F_PKEY_RSA_VERIFYRECOVER 0 +#define RSA_F_RSA_ALGOR_TO_MD 0 +#define RSA_F_RSA_BUILTIN_KEYGEN 0 +#define RSA_F_RSA_CHECK_KEY 0 +#define RSA_F_RSA_CHECK_KEY_EX 0 +#define RSA_F_RSA_CMS_DECRYPT 0 +#define RSA_F_RSA_CMS_VERIFY 0 +#define RSA_F_RSA_ITEM_VERIFY 0 +#define RSA_F_RSA_METH_DUP 0 +#define RSA_F_RSA_METH_NEW 0 +#define RSA_F_RSA_METH_SET1_NAME 0 +#define RSA_F_RSA_MGF1_TO_MD 0 +#define RSA_F_RSA_MULTIP_INFO_NEW 0 +#define RSA_F_RSA_NEW_METHOD 0 +#define RSA_F_RSA_NULL 0 +#define RSA_F_RSA_NULL_PRIVATE_DECRYPT 0 +#define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 0 +#define RSA_F_RSA_NULL_PUBLIC_DECRYPT 0 +#define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 0 +#define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 0 +#define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 0 +#define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 0 +#define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 0 +#define RSA_F_RSA_PADDING_ADD_NONE 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 0 +#define RSA_F_RSA_PADDING_ADD_SSLV23 0 +#define RSA_F_RSA_PADDING_ADD_X931 0 +#define RSA_F_RSA_PADDING_CHECK_NONE 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 0 +#define RSA_F_RSA_PADDING_CHECK_SSLV23 0 +#define RSA_F_RSA_PADDING_CHECK_X931 0 +#define RSA_F_RSA_PARAM_DECODE 0 +#define RSA_F_RSA_PRINT 0 +#define RSA_F_RSA_PRINT_FP 0 +#define RSA_F_RSA_PRIV_DECODE 0 +#define RSA_F_RSA_PRIV_ENCODE 0 +#define RSA_F_RSA_PSS_GET_PARAM 0 +#define RSA_F_RSA_PSS_TO_CTX 0 +#define RSA_F_RSA_PUB_DECODE 0 +#define RSA_F_RSA_SETUP_BLINDING 0 +#define RSA_F_RSA_SIGN 0 +#define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 0 +#define RSA_F_RSA_VERIFY 0 +#define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 0 +#define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 0 +#define RSA_F_SETUP_TBUF 0 + +/* + * OSSL_STORE function codes. + */ +#define OSSL_STORE_F_FILE_CTRL 0 +#define OSSL_STORE_F_FILE_FIND 0 +#define OSSL_STORE_F_FILE_GET_PASS 0 +#define OSSL_STORE_F_FILE_LOAD 0 +#define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 0 +#define OSSL_STORE_F_FILE_NAME_TO_URI 0 +#define OSSL_STORE_F_FILE_OPEN 0 +#define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 0 +#define OSSL_STORE_F_OSSL_STORE_EXPECT 0 +#define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 0 +#define OSSL_STORE_F_OSSL_STORE_FIND 0 +#define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 0 +#define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 0 +#define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 0 +#define OSSL_STORE_F_OSSL_STORE_OPEN 0 +#define OSSL_STORE_F_OSSL_STORE_OPEN_INT 0 +#define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 0 +#define OSSL_STORE_F_TRY_DECODE_PARAMS 0 +#define OSSL_STORE_F_TRY_DECODE_PKCS12 0 +#define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 0 + +#ifndef OPENSSL_NO_TS +/* + * TS function codes. + */ +#define TS_F_DEF_SERIAL_CB 0 +#define TS_F_DEF_TIME_CB 0 +#define TS_F_ESS_ADD_SIGNING_CERT 0 +#define TS_F_ESS_ADD_SIGNING_CERT_V2 0 +#define TS_F_ESS_CERT_ID_NEW_INIT 0 +#define TS_F_ESS_CERT_ID_V2_NEW_INIT 0 +#define TS_F_ESS_SIGNING_CERT_NEW_INIT 0 +#define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 0 +#define TS_F_INT_TS_RESP_VERIFY_TOKEN 0 +#define TS_F_PKCS7_TO_TS_TST_INFO 0 +#define TS_F_TS_ACCURACY_SET_MICROS 0 +#define TS_F_TS_ACCURACY_SET_MILLIS 0 +#define TS_F_TS_ACCURACY_SET_SECONDS 0 +#define TS_F_TS_CHECK_IMPRINTS 0 +#define TS_F_TS_CHECK_NONCES 0 +#define TS_F_TS_CHECK_POLICY 0 +#define TS_F_TS_CHECK_SIGNING_CERTS 0 +#define TS_F_TS_CHECK_STATUS_INFO 0 +#define TS_F_TS_COMPUTE_IMPRINT 0 +#define TS_F_TS_CONF_INVALID 0 +#define TS_F_TS_CONF_LOAD_CERT 0 +#define TS_F_TS_CONF_LOAD_CERTS 0 +#define TS_F_TS_CONF_LOAD_KEY 0 +#define TS_F_TS_CONF_LOOKUP_FAIL 0 +#define TS_F_TS_CONF_SET_DEFAULT_ENGINE 0 +#define TS_F_TS_GET_STATUS_TEXT 0 +#define TS_F_TS_MSG_IMPRINT_SET_ALGO 0 +#define TS_F_TS_REQ_SET_MSG_IMPRINT 0 +#define TS_F_TS_REQ_SET_NONCE 0 +#define TS_F_TS_REQ_SET_POLICY_ID 0 +#define TS_F_TS_RESP_CREATE_RESPONSE 0 +#define TS_F_TS_RESP_CREATE_TST_INFO 0 +#define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 0 +#define TS_F_TS_RESP_CTX_ADD_MD 0 +#define TS_F_TS_RESP_CTX_ADD_POLICY 0 +#define TS_F_TS_RESP_CTX_NEW 0 +#define TS_F_TS_RESP_CTX_SET_ACCURACY 0 +#define TS_F_TS_RESP_CTX_SET_CERTS 0 +#define TS_F_TS_RESP_CTX_SET_DEF_POLICY 0 +#define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 0 +#define TS_F_TS_RESP_CTX_SET_STATUS_INFO 0 +#define TS_F_TS_RESP_GET_POLICY 0 +#define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 0 +#define TS_F_TS_RESP_SET_STATUS_INFO 0 +#define TS_F_TS_RESP_SET_TST_INFO 0 +#define TS_F_TS_RESP_SIGN 0 +#define TS_F_TS_RESP_VERIFY_SIGNATURE 0 +#define TS_F_TS_TST_INFO_SET_ACCURACY 0 +#define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 0 +#define TS_F_TS_TST_INFO_SET_NONCE 0 +#define TS_F_TS_TST_INFO_SET_POLICY_ID 0 +#define TS_F_TS_TST_INFO_SET_SERIAL 0 +#define TS_F_TS_TST_INFO_SET_TIME 0 +#define TS_F_TS_TST_INFO_SET_TSA 0 +#define TS_F_TS_VERIFY 0 +#define TS_F_TS_VERIFY_CERT 0 +#define TS_F_TS_VERIFY_CTX_NEW 0 +#endif + +/* + * UI function codes. + */ +#define UI_F_CLOSE_CONSOLE 0 +#define UI_F_ECHO_CONSOLE 0 +#define UI_F_GENERAL_ALLOCATE_BOOLEAN 0 +#define UI_F_GENERAL_ALLOCATE_PROMPT 0 +#define UI_F_NOECHO_CONSOLE 0 +#define UI_F_OPEN_CONSOLE 0 +#define UI_F_UI_CONSTRUCT_PROMPT 0 +#define UI_F_UI_CREATE_METHOD 0 +#define UI_F_UI_CTRL 0 +#define UI_F_UI_DUP_ERROR_STRING 0 +#define UI_F_UI_DUP_INFO_STRING 0 +#define UI_F_UI_DUP_INPUT_BOOLEAN 0 +#define UI_F_UI_DUP_INPUT_STRING 0 +#define UI_F_UI_DUP_USER_DATA 0 +#define UI_F_UI_DUP_VERIFY_STRING 0 +#define UI_F_UI_GET0_RESULT 0 +#define UI_F_UI_GET_RESULT_LENGTH 0 +#define UI_F_UI_NEW_METHOD 0 +#define UI_F_UI_PROCESS 0 +#define UI_F_UI_SET_RESULT 0 +#define UI_F_UI_SET_RESULT_EX 0 + +/* + * X509 function codes. + */ +#define X509_F_ADD_CERT_DIR 0 +#define X509_F_BUILD_CHAIN 0 +#define X509_F_BY_FILE_CTRL 0 +#define X509_F_CHECK_NAME_CONSTRAINTS 0 +#define X509_F_CHECK_POLICY 0 +#define X509_F_DANE_I2D 0 +#define X509_F_DIR_CTRL 0 +#define X509_F_GET_CERT_BY_SUBJECT 0 +#define X509_F_I2D_X509_AUX 0 +#define X509_F_LOOKUP_CERTS_SK 0 +#define X509_F_NETSCAPE_SPKI_B64_DECODE 0 +#define X509_F_NETSCAPE_SPKI_B64_ENCODE 0 +#define X509_F_NEW_DIR 0 +#define X509_F_X509AT_ADD1_ATTR 0 +#define X509_F_X509V3_ADD_EXT 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 0 +#define X509_F_X509_ATTRIBUTE_GET0_DATA 0 +#define X509_F_X509_ATTRIBUTE_SET1_DATA 0 +#define X509_F_X509_CHECK_PRIVATE_KEY 0 +#define X509_F_X509_CRL_DIFF 0 +#define X509_F_X509_CRL_METHOD_NEW 0 +#define X509_F_X509_CRL_PRINT_FP 0 +#define X509_F_X509_EXTENSION_CREATE_BY_NID 0 +#define X509_F_X509_EXTENSION_CREATE_BY_OBJ 0 +#define X509_F_X509_GET_PUBKEY_PARAMETERS 0 +#define X509_F_X509_LOAD_CERT_CRL_FILE 0 +#define X509_F_X509_LOAD_CERT_FILE 0 +#define X509_F_X509_LOAD_CRL_FILE 0 +#define X509_F_X509_LOOKUP_METH_NEW 0 +#define X509_F_X509_LOOKUP_NEW 0 +#define X509_F_X509_NAME_ADD_ENTRY 0 +#define X509_F_X509_NAME_CANON 0 +#define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 0 +#define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 0 +#define X509_F_X509_NAME_ENTRY_SET_OBJECT 0 +#define X509_F_X509_NAME_ONELINE 0 +#define X509_F_X509_NAME_PRINT 0 +#define X509_F_X509_OBJECT_NEW 0 +#define X509_F_X509_PRINT_EX_FP 0 +#define X509_F_X509_PUBKEY_DECODE 0 +#define X509_F_X509_PUBKEY_GET 0 +#define X509_F_X509_PUBKEY_GET0 0 +#define X509_F_X509_PUBKEY_SET 0 +#define X509_F_X509_REQ_CHECK_PRIVATE_KEY 0 +#define X509_F_X509_REQ_PRINT_EX 0 +#define X509_F_X509_REQ_PRINT_FP 0 +#define X509_F_X509_REQ_TO_X509 0 +#define X509_F_X509_STORE_ADD_CERT 0 +#define X509_F_X509_STORE_ADD_CRL 0 +#define X509_F_X509_STORE_ADD_LOOKUP 0 +#define X509_F_X509_STORE_CTX_GET1_ISSUER 0 +#define X509_F_X509_STORE_CTX_INIT 0 +#define X509_F_X509_STORE_CTX_NEW 0 +#define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 0 +#define X509_F_X509_STORE_NEW 0 +#define X509_F_X509_TO_X509_REQ 0 +#define X509_F_X509_TRUST_ADD 0 +#define X509_F_X509_TRUST_SET 0 +#define X509_F_X509_VERIFY_CERT 0 +#define X509_F_X509_VERIFY_PARAM_NEW 0 + +/* + * X509V3 function codes. + */ +#define X509V3_F_A2I_GENERAL_NAME 0 +#define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 0 +#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 0 +#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 0 +#define X509V3_F_BIGNUM_TO_STRING 0 +#define X509V3_F_COPY_EMAIL 0 +#define X509V3_F_COPY_ISSUER 0 +#define X509V3_F_DO_DIRNAME 0 +#define X509V3_F_DO_EXT_I2D 0 +#define X509V3_F_DO_EXT_NCONF 0 +#define X509V3_F_GNAMES_FROM_SECTNAME 0 +#define X509V3_F_I2S_ASN1_ENUMERATED 0 +#define X509V3_F_I2S_ASN1_IA5STRING 0 +#define X509V3_F_I2S_ASN1_INTEGER 0 +#define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 0 +#define X509V3_F_LEVEL_ADD_NODE 0 +#define X509V3_F_NOTICE_SECTION 0 +#define X509V3_F_NREF_NOS 0 +#define X509V3_F_POLICY_CACHE_CREATE 0 +#define X509V3_F_POLICY_CACHE_NEW 0 +#define X509V3_F_POLICY_DATA_NEW 0 +#define X509V3_F_POLICY_SECTION 0 +#define X509V3_F_PROCESS_PCI_VALUE 0 +#define X509V3_F_R2I_CERTPOL 0 +#define X509V3_F_R2I_PCI 0 +#define X509V3_F_S2I_ASN1_IA5STRING 0 +#define X509V3_F_S2I_ASN1_INTEGER 0 +#define X509V3_F_S2I_ASN1_OCTET_STRING 0 +#define X509V3_F_S2I_SKEY_ID 0 +#define X509V3_F_SET_DIST_POINT_NAME 0 +#define X509V3_F_SXNET_ADD_ID_ASC 0 +#define X509V3_F_SXNET_ADD_ID_INTEGER 0 +#define X509V3_F_SXNET_ADD_ID_ULONG 0 +#define X509V3_F_SXNET_GET_ID_ASC 0 +#define X509V3_F_SXNET_GET_ID_ULONG 0 +#define X509V3_F_TREE_INIT 0 +#define X509V3_F_V2I_ASIDENTIFIERS 0 +#define X509V3_F_V2I_ASN1_BIT_STRING 0 +#define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 0 +#define X509V3_F_V2I_AUTHORITY_KEYID 0 +#define X509V3_F_V2I_BASIC_CONSTRAINTS 0 +#define X509V3_F_V2I_CRLD 0 +#define X509V3_F_V2I_EXTENDED_KEY_USAGE 0 +#define X509V3_F_V2I_GENERAL_NAMES 0 +#define X509V3_F_V2I_GENERAL_NAME_EX 0 +#define X509V3_F_V2I_IDP 0 +#define X509V3_F_V2I_IPADDRBLOCKS 0 +#define X509V3_F_V2I_ISSUER_ALT 0 +#define X509V3_F_V2I_NAME_CONSTRAINTS 0 +#define X509V3_F_V2I_POLICY_CONSTRAINTS 0 +#define X509V3_F_V2I_POLICY_MAPPINGS 0 +#define X509V3_F_V2I_SUBJECT_ALT 0 +#define X509V3_F_V2I_TLS_FEATURE 0 +#define X509V3_F_V3_GENERIC_EXTENSION 0 +#define X509V3_F_X509V3_ADD1_I2D 0 +#define X509V3_F_X509V3_ADD_VALUE 0 +#define X509V3_F_X509V3_EXT_ADD 0 +#define X509V3_F_X509V3_EXT_ADD_ALIAS 0 +#define X509V3_F_X509V3_EXT_I2D 0 +#define X509V3_F_X509V3_EXT_NCONF 0 +#define X509V3_F_X509V3_GET_SECTION 0 +#define X509V3_F_X509V3_GET_STRING 0 +#define X509V3_F_X509V3_GET_VALUE_BOOL 0 +#define X509V3_F_X509V3_PARSE_LIST 0 +#define X509V3_F_X509_PURPOSE_ADD 0 +#define X509V3_F_X509_PURPOSE_SET 0 + +/* + * Compatibility defines. + */ +#define EVP_R_OPERATON_NOT_INITIALIZED EVP_R_OPERATION_NOT_INITIALIZED + +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ct.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ct.h new file mode 100644 index 0000000..56f1983 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ct.h @@ -0,0 +1,574 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ct.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CT_H +#define OPENSSL_CT_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CT_H +#endif + +#include + +#ifndef OPENSSL_NO_CT +#include +#include +#include +#include +#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 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) +#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) +#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) +#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) +#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) +#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) +#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) +#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) +#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk), ossl_check_SCT_freefunc_type(freefunc)) +#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) +#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) +#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) +#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) +#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) +#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) +#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) +#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) +#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) +#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) +#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) +#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) +#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_freefunc_type(freefunc)) +#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) +#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) +#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) +#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) +#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) + +/* clang-format on */ + +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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cterr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cterr.h new file mode 100644 index 0000000..950b7b3 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/cterr.h @@ -0,0 +1,43 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/decoder.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/decoder.h new file mode 100644 index 0000000..8194c24 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/decoder.h @@ -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 + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/decodererr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/decodererr.h new file mode 100644 index 0000000..5fdeace --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/decodererr.h @@ -0,0 +1,26 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/des.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/des.h new file mode 100644 index 0000000..daaef4e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/des.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DES_H +#endif + +#include + +#ifndef OPENSSL_NO_DES +#ifdef __cplusplus +extern "C" { +#endif +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dh.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dh.h new file mode 100644 index 0000000..6d0abe2 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dh.h @@ -0,0 +1,333 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DH_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * DH parameter generation types used by EVP_PKEY_CTX_set_dh_paramgen_type() + * Note that additions/changes to this set of values requires corresponding + * adjustments to range checks in dh_gen() + */ +#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 +#endif +#ifndef OPENSSL_NO_DH +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include + +#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, some of them shared with DH_check_pub_key */ +/* + * 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 /* +DH_check_pub_key */ +#define DH_CHECK_INVALID_J_VALUE 0x40 +#define DH_MODULUS_TOO_SMALL 0x80 +#define DH_MODULUS_TOO_LARGE 0x100 /* +DH_check_pub_key */ + +/* 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((void *(*)(void))DH_new, \ + (d2i_of_void *)d2i_DHparams, \ + (fp), \ + (void **)(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((void *(*)(void))DH_new, \ + (d2i_of_void *)d2i_DHxparams, \ + (fp), \ + (void **)(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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dherr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dherr.h new file mode 100644 index 0000000..753659b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dherr.h @@ -0,0 +1,57 @@ +/* + * 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_DHERR_H +#define OPENSSL_DHERR_H +#pragma once + +#include +#include +#include + +#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_INVALID_SIZE 129 +#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_Q_TOO_LARGE 130 +#define DH_R_SHARED_INFO_ERROR 113 +#define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dsa.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dsa.h new file mode 100644 index 0000000..61baa64 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dsa.h @@ -0,0 +1,273 @@ +/* + * 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_DSA_H +#define OPENSSL_DSA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DSA_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_DSA +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#ifndef OPENSSL_NO_STDIO +#include +#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((void *(*)(void))DSA_new, \ + (d2i_of_void *)d2i_DSAparams, (fp), \ + (void **)(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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dsaerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dsaerr.h new file mode 100644 index 0000000..cc5f4bf --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dsaerr.h @@ -0,0 +1,42 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dtls1.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dtls1.h new file mode 100644 index 0000000..0b42948 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/dtls1.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DTLS1_H +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/e_os2.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/e_os2.h new file mode 100644 index 0000000..86a572b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/e_os2.h @@ -0,0 +1,306 @@ +/* + * Copyright 1995-2024 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_E_OS2_H +#endif + +#include + +#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 implementer 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 +#endif +#define OPENSSL_USE_BUILD_DATE +#if defined(OPENSSL_THREADS) && defined(_SPT_MODEL_) +#define SPT_THREAD_SIGNAL 1 +#define SPT_THREAD_AWARE 1 +#include +#elif defined(OPENSSL_THREADS) && defined(_PUT_MODEL_) +#include +#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 +#include +#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; +typedef UINTN uintptr_t; +#elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__osf__) || defined(__sgi) || defined(__hpux) || defined(OPENSSL_SYS_VMS) || defined(__OpenBSD__) +#include +#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 +#include +#else +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/e_ostime.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/e_ostime.h new file mode 100644 index 0000000..c0f1c54 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/e_ostime.h @@ -0,0 +1,38 @@ +/* + * Copyright 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_E_OSTIME_H +#define OPENSSL_E_OSTIME_H +#pragma once + +#include +#include +#include + +/* + * This header guarantees that 'struct timeval' will be available. It includes + * the minimum headers needed to facilitate this. This may still be a + * substantial set of headers on some platforms (e.g. on Win32). + */ + +#if defined(OPENSSL_SYS_WINDOWS) +#if !defined(_WINSOCKAPI_) +/* + * winsock2.h defines _WINSOCK2API_ and both winsock2.h and winsock.h define + * _WINSOCKAPI_. Both of these provide struct timeval. Don't include + * winsock2.h if either header has been included to avoid breakage with + * applications that prefer to use over . + */ +#include +#endif +#else +#include +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ebcdic.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ebcdic.h new file mode 100644 index 0000000..f2171bb --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ebcdic.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_EBCDIC_H +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ec.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ec.h new file mode 100644 index 0000000..cdde09c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ec.h @@ -0,0 +1,1569 @@ +/* + * Copyright 2002-2023 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_EC_H +#define OPENSSL_EC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_EC_H +#endif + +#include +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Values for EVP_PKEY_CTX_set_ec_param_enc() */ +#define OPENSSL_EC_EXPLICIT_CURVE 0x000 +#define OPENSSL_EC_NAMED_CURVE 0x001 + +int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid); +int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx, int param_enc); +int EVP_PKEY_CTX_set_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx, int cofactor_mode); +int EVP_PKEY_CTX_get_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_type(EVP_PKEY_CTX *ctx, int kdf); +int EVP_PKEY_CTX_get_ecdh_kdf_type(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_get_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); + +int EVP_PKEY_CTX_set_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int len); +int EVP_PKEY_CTX_get_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len); + +int EVP_PKEY_CTX_set0_ecdh_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_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm); +#endif + +#define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +#define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +#define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +#define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) + +/* KDF types */ +#define EVP_PKEY_ECDH_KDF_NONE 1 +#define EVP_PKEY_ECDH_KDF_X9_63 2 +/* + * The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +#define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x04 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +const char *OSSL_EC_curve_nid2name(int nid); + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#ifndef OPENSSL_NO_EC +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include + +#ifndef OPENSSL_ECC_MAX_FIELD_BITS +#define OPENSSL_ECC_MAX_FIELD_BITS 661 +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_method_st EC_METHOD; +#endif +typedef struct ec_group_st EC_GROUP; +typedef struct ec_point_st EC_POINT; +typedef struct ecpk_parameters_st ECPKPARAMETERS; +typedef struct ec_parameters_st ECPARAMETERS; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nist_method(void); + +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp521_method(void); +#endif /* OPENSSL_NO_EC_NISTP_64_GCC_128 */ + +#ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GF2m_simple_method(void); + +#endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** + * Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +OSSL_DEPRECATEDIN_3_0 EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +OSSL_DEPRECATEDIN_3_0 void EC_GROUP_clear_free(EC_GROUP *group); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +OSSL_DEPRECATEDIN_3_0 int EC_METHOD_get_field_type(const EC_METHOD *meth); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Sets the generator and its order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used montgomery data (possibly NULL). + */ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +/** Gets the field of an EC_GROUP + * \param group EC_GROUP object + * \return the group field + */ +const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group); + +/** Returns the field type of the EC_GROUP. + * \param group EC_GROUP object + * \return NID of the underlying field type OID. + */ +int EC_GROUP_get_field_type(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameters of an ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GFp(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GFp(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_EC2M +/** Sets the parameter of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GF2m(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); +#endif /* OPENSSL_NO_EC2M */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if the groups are equal, 1 if not, or -1 on error + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +#ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +#endif + +/** + * Creates a EC_GROUP object with a curve specified by parameters. + * The parameters may be explicit or a named curve, + * \param params A list of parameters describing the group. + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \return newly created EC_GROUP object with specified parameters or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[], + OSSL_LIB_CTX *libctx, const char *propq); + +/** + * Creates an OSSL_PARAM array with the parameters describing the given + * EC_GROUP. + * The resulting parameters may contain an explicit or a named curve depending + * on the EC_GROUP. + * \param group pointer to the EC_GROUP object + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param bnctx BN_CTX object (optional) + * \return newly created OSSL_PARAM array with the parameters + * describing the given EC_GROUP or NULL if an error occurred + */ +OSSL_PARAM *EC_GROUP_to_params(const EC_GROUP *group, OSSL_LIB_CTX *libctx, + const char *propq, BN_CTX *bnctx); + +/** + * Creates a EC_GROUP object with a curve specified by a NID + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name_ex(OSSL_LIB_CTX *libctx, const char *propq, + int nid); + +/** + * Creates a EC_GROUP object with a curve specified by a NID. Same as + * EC_GROUP_new_by_curve_name_ex but the libctx and propq are always + * NULL. + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r is not zero, + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); +int EC_GROUP_check_named_curve(const EC_GROUP *group, int nist_only, + BN_CTX *ctx); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the affine coordinates of an EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the x9.62 compressed coordinates of a EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +#ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Encodes an EC_POINT object to an allocated octet string + * \param group underlying EC_GROUP object + * \param point EC_POINT object + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 BIGNUM *EC_POINT_point2bn(const EC_GROUP *, + const EC_POINT *, + point_conversion_form_t form, + BIGNUM *, BN_CTX *); +OSSL_DEPRECATEDIN_3_0 EC_POINT *EC_POINT_bn2point(const EC_GROUP *, + const BIGNUM *, + EC_POINT *, BN_CTX *); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if the point is on the curve, 0 if not, or -1 on error + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 if the points are not equal, 0 if they are, or -1 on error + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_POINT_make_affine(const EC_GROUP *group, + EC_POINT *point, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n + sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number further summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, + const BIGNUM *n, size_t num, + const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_have_precompute_mult(const EC_GROUP *group); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +DECLARE_ASN1_ITEM(ECPKPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPKPARAMETERS) +DECLARE_ASN1_ITEM(ECPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +#ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +#endif + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +#define d2i_ECPKParameters_bio(bp, x) \ + ASN1_d2i_bio_of(EC_GROUP, NULL, d2i_ECPKParameters, bp, x) +#define i2d_ECPKParameters_bio(bp, x) \ + ASN1_i2d_bio_of(EC_GROUP, i2d_ECPKParameters, bp, x) +#define d2i_ECPKParameters_fp(fp, x) \ + (EC_GROUP *)ASN1_d2i_fp(NULL, (d2i_of_void *)d2i_ECPKParameters, (fp), \ + (void **)(x)) +#define i2d_ECPKParameters_fp(fp, x) \ + ASN1_i2d_fp((i2d_of_void *)i2d_ECPKParameters, (fp), (void *)(x)) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print(BIO *bp, const EC_GROUP *x, + int off); +#ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, + int off); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +/* some values for the encoding_flag */ +#define EC_PKEY_NO_PARAMETERS 0x001 +#define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +#define EC_FLAG_SM2_RANGE 0x0004 +#define EC_FLAG_COFACTOR_ECDH 0x1000 +#define EC_FLAG_CHECK_NAMED_GROUP 0x2000 +#define EC_FLAG_CHECK_NAMED_GROUP_NIST 0x4000 +#define EC_FLAG_CHECK_NAMED_GROUP_MASK \ + (EC_FLAG_CHECK_NAMED_GROUP | EC_FLAG_CHECK_NAMED_GROUP_NIST) + +/* Deprecated flags - it was using 0x01..0x02 */ +#define EC_FLAG_NON_FIPS_ALLOW 0x0000 +#define EC_FLAG_FIPS_CHECKED 0x0000 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** + * Creates a new EC_KEY object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_ex(OSSL_LIB_CTX *ctx, const char *propq); + +/** + * Creates a new EC_KEY object. Same as calling EC_KEY_new_ex with a + * NULL library context + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new(void); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_get_flags(const EC_KEY *key); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_clear_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \param propq Any property query string + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name_ex(OSSL_LIB_CTX *ctx, + const char *propq, + int nid); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. Same as calling EC_KEY_new_by_curve_name_ex with a NULL + * library context and property query string. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +OSSL_DEPRECATEDIN_3_0 void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +OSSL_DEPRECATEDIN_3_0 const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +OSSL_DEPRECATEDIN_3_0 unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +OSSL_DEPRECATEDIN_3_0 point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_conv_form(EC_KEY *eckey, + point_conversion_form_t cform); +#endif /*OPENSSL_NO_DEPRECATED_3_0 */ + +#define EC_KEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EC_KEY, l, p, newf, dupf, freef) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_check_key(const EC_KEY *key); + +/** Indicates if an EC_KEY can be used for signing. + * \param eckey the EC_KEY object + * \return 1 if can sign and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_can_sign(const EC_KEY *eckey); + +/** Sets a public key from affine coordinates performing + * necessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, + BIGNUM *x, + BIGNUM *y); + +/** Encodes an EC_KEY public key to an allocated octet string + * \param key key to encode + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_key2buf(const EC_KEY *key, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/** Decodes a EC_KEY public key from a octet string + * \param key key to decode + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, + size_t len, BN_CTX *ctx); + +/** Decodes an EC_KEY private key from an octet string + * \param key key to decode + * \param buf memory buffer with the encoded private key + * \param len length of the encoded key + * \return 1 on success and 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, + size_t len); + +/** Encodes a EC_KEY private key to an octet string + * \param key key to encode + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_priv2oct(const EC_KEY *key, + unsigned char *buf, size_t len); + +/** Encodes an EC_KEY private key to an allocated octet string + * \param eckey key to encode + * \param pbuf returns pointer to allocated buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_priv2buf(const EC_KEY *eckey, + unsigned char **pbuf); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey(EC_KEY **key, + const unsigned char **in, + long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey(const EC_KEY *key, + unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECParameters(EC_KEY **key, + const unsigned char **in, + long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec parameters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECParameters(const EC_KEY *key, + unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes an ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *o2i_ECPublicKey(EC_KEY **key, + const unsigned char **in, long len); + +/** Encodes an ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out); + +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +#ifndef OPENSSL_NO_STDIO +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); +#endif /* OPENSSL_NO_STDIO */ + +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +OSSL_DEPRECATEDIN_3_0 int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + const unsigned char *sinfo, + size_t sinfolen, const EVP_MD *md); + +OSSL_DEPRECATEDIN_3_0 int ECDH_compute_key(void *out, size_t outlen, + const EC_POINT *pub_key, + const EC_KEY *ecdh, + void *(*KDF)(const void *in, + size_t inlen, void *out, + size_t *outlen)); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +typedef struct ECDSA_SIG_st ECDSA_SIG; + +/** Allocates and initialize a ECDSA_SIG structure + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_SIG_new(void); + +/** frees a ECDSA_SIG structure + * \param sig pointer to the ECDSA_SIG structure + */ +void ECDSA_SIG_free(ECDSA_SIG *sig); + +/** i2d_ECDSA_SIG encodes content of ECDSA_SIG (note: this function modifies *pp + * (*pp += length of the DER encoded signature)). + * \param sig pointer to the ECDSA_SIG object + * \param pp pointer to a unsigned char pointer for the output or NULL + * \return the length of the DER encoded ECDSA_SIG object or a negative value + * on error + */ +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ECDSA_SIG, ECDSA_SIG) + +/** d2i_ECDSA_SIG decodes an ECDSA signature (note: this function modifies *pp + * (*pp += len)). + * \param sig pointer to ECDSA_SIG pointer (may be NULL) + * \param pp memory buffer with the DER encoded signature + * \param len length of the buffer + * \return pointer to the decoded ECDSA_SIG structure (or NULL) + */ + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r + * \param s pointer to BIGNUM for s + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Computes the ECDSA signature of the given hash value using + * the supplied private key and returns the created signature. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, + int dgst_len, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, + int dgstlen, const BIGNUM *kinv, + const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the supplied signature is a valid ECDSA + * signature of the supplied hash value using the supplied public key. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param sig ECDSA_SIG structure + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, + const ECDSA_SIG *sig, EC_KEY *eckey); + +/** Precompute parts of the signing operation + * \param eckey EC_KEY object containing a private EC key + * \param ctx BN_CTX object (optional) + * \param kinv BIGNUM pointer for the inverse of k + * \param rp BIGNUM pointer for x coordinate of k * generator + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, + BIGNUM **kinv, BIGNUM **rp); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig memory for the DER encoded created signature + * \param siglen pointer to the length of the returned signature + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign(int type, const unsigned char *dgst, + int dgstlen, unsigned char *sig, + unsigned int *siglen, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig buffer to hold the DER encoded signature + * \param siglen pointer to the length of the returned signature + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign_ex(int type, const unsigned char *dgst, + int dgstlen, unsigned char *sig, + unsigned int *siglen, const BIGNUM *kinv, + const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the given signature is valid ECDSA signature + * of the supplied hash value using the specified public key. + * \param type this parameter is ignored + * \param dgst pointer to the hash value + * \param dgstlen length of the hash value + * \param sig pointer to the DER encoded signature + * \param siglen length of the DER encoded signature + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_verify(int type, const unsigned char *dgst, + int dgstlen, const unsigned char *sig, + int siglen, EC_KEY *eckey); + +/** Returns the maximum length of the DER encoded signature + * \param eckey EC_KEY object + * \return numbers of bytes required for the DER encoded signature + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +OSSL_DEPRECATEDIN_3_0 EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, + int (*init)(EC_KEY *key), + void (*finish)(EC_KEY *key), + int (*copy)(EC_KEY *dest, const EC_KEY *src), + int (*set_group)(EC_KEY *key, const EC_GROUP *grp), + int (*set_private)(EC_KEY *key, const BIGNUM *priv_key), + int (*set_public)(EC_KEY *key, const EC_POINT *pub_key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, + int (*ckey)(unsigned char **psec, size_t *pseclen, + const EC_POINT *pub_key, const EC_KEY *ecdh)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, + int (*sign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, + int (*verify)(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (*verify_sig)(const unsigned char *dgst, + int dgst_len, const ECDSA_SIG *sig, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, const EC_POINT *pub_key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, int (**pkeygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +#define EVP_EC_gen(curve) \ + EVP_PKEY_Q_keygen(NULL, NULL, "EC", (char *)(strstr(curve, ""))) +/* strstr is used to enable type checking for the variadic string arg */ +#define ECParameters_dup(x) ASN1_dup_of(EC_KEY, i2d_ECParameters, \ + d2i_ECParameters, x) + +#ifndef __cplusplus +#if defined(__SUNPRO_C) +#if __SUNPRO_C >= 0x520 +#pragma error_messages(default, E_ARRAY_OF_INCOMPLETE_NONAME, E_ARRAY_OF_INCOMPLETE) +#endif +#endif +#endif + +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecdh.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecdh.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecdh.h @@ -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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecdsa.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecdsa.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecdsa.h @@ -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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecerr.h new file mode 100644 index 0000000..e4d26aa --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ecerr.h @@ -0,0 +1,102 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/encoder.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/encoder.h new file mode 100644 index 0000000..9138c07 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/encoder.h @@ -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 + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/encodererr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/encodererr.h new file mode 100644 index 0000000..e07174c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/encodererr.h @@ -0,0 +1,26 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/engine.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/engine.h new file mode 100644 index 0000000..73f6d86 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/engine.h @@ -0,0 +1,841 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ENGINE_H +#endif + +#include + +#ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include +#include +#include +#include +#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 is 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 */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/engineerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/engineerr.h new file mode 100644 index 0000000..7cdfb8a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/engineerr.h @@ -0,0 +1,61 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/err.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/err.h new file mode 100644 index 0000000..a15ac6a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/err.h @@ -0,0 +1,517 @@ +/* + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ERR_H +#define OPENSSL_ERR_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ERR_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#include +#endif + +#include +#include +#include +#include + +#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 +#include + +#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; + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) +#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) +#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +/* 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); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ess.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ess.h new file mode 100644 index 0000000..6afc5f5 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ess.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ess.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ESS_H +#define OPENSSL_ESS_H +#pragma once + +#include + +#include +#include +#include + +#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; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) +#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) +#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) +#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) +#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) +#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) +#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) + +/* clang-format on */ + +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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/esserr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/esserr.h new file mode 100644 index 0000000..4688129 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/esserr.h @@ -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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/evp.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/evp.h new file mode 100644 index 0000000..de6f503 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/evp.h @@ -0,0 +1,2290 @@ +/* + * Copyright 1995-2025 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_EVP_H +#define OPENSSL_EVP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ENVELOPE_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#define EVP_MAX_MD_SIZE 64 /* longest known is SHA512 */ +#define EVP_MAX_KEY_LENGTH 64 +#define EVP_MAX_IV_LENGTH 16 +#define EVP_MAX_BLOCK_LENGTH 32 +#define EVP_MAX_AEAD_TAG_LENGTH 16 + +/* Maximum pipes in cipher pipelining */ +#define EVP_MAX_PIPES 32 + +#define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +#define PKCS5_DEFAULT_ITER 2048 + +#include + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PK_RSA 0x0001 +#define EVP_PK_DSA 0x0002 +#define EVP_PK_DH 0x0004 +#define EVP_PK_EC 0x0008 +#define EVP_PKT_SIGN 0x0010 +#define EVP_PKT_ENC 0x0020 +#define EVP_PKT_EXCH 0x0040 +#define EVP_PKS_RSA 0x0100 +#define EVP_PKS_DSA 0x0200 +#define EVP_PKS_EC 0x0400 +#endif + +#define EVP_PKEY_NONE NID_undef +#define EVP_PKEY_RSA NID_rsaEncryption +#define EVP_PKEY_RSA2 NID_rsa +#define EVP_PKEY_RSA_PSS NID_rsassaPss +#define EVP_PKEY_DSA NID_dsa +#define EVP_PKEY_DSA1 NID_dsa_2 +#define EVP_PKEY_DSA2 NID_dsaWithSHA +#define EVP_PKEY_DSA3 NID_dsaWithSHA1 +#define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +#define EVP_PKEY_DH NID_dhKeyAgreement +#define EVP_PKEY_DHX NID_dhpublicnumber +#define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +#define EVP_PKEY_SM2 NID_sm2 +#define EVP_PKEY_HMAC NID_hmac +#define EVP_PKEY_CMAC NID_cmac +#define EVP_PKEY_SCRYPT NID_id_scrypt +#define EVP_PKEY_TLS1_PRF NID_tls1_prf +#define EVP_PKEY_HKDF NID_hkdf +#define EVP_PKEY_POLY1305 NID_poly1305 +#define EVP_PKEY_SIPHASH NID_siphash +#define EVP_PKEY_X25519 NID_X25519 +#define EVP_PKEY_ED25519 NID_ED25519 +#define EVP_PKEY_X448 NID_X448 +#define EVP_PKEY_ED448 NID_ED448 +#define EVP_PKEY_ML_DSA_44 NID_ML_DSA_44 +#define EVP_PKEY_ML_DSA_65 NID_ML_DSA_65 +#define EVP_PKEY_ML_DSA_87 NID_ML_DSA_87 +#define EVP_PKEY_SLH_DSA_SHA2_128S NID_SLH_DSA_SHA2_128s +#define EVP_PKEY_SLH_DSA_SHA2_128F NID_SLH_DSA_SHA2_128f +#define EVP_PKEY_SLH_DSA_SHA2_192S NID_SLH_DSA_SHA2_192s +#define EVP_PKEY_SLH_DSA_SHA2_192F NID_SLH_DSA_SHA2_192f +#define EVP_PKEY_SLH_DSA_SHA2_256S NID_SLH_DSA_SHA2_256s +#define EVP_PKEY_SLH_DSA_SHA2_256F NID_SLH_DSA_SHA2_256f +#define EVP_PKEY_SLH_DSA_SHAKE_128S NID_SLH_DSA_SHAKE_128s +#define EVP_PKEY_SLH_DSA_SHAKE_128F NID_SLH_DSA_SHAKE_128f +#define EVP_PKEY_SLH_DSA_SHAKE_192S NID_SLH_DSA_SHAKE_192s +#define EVP_PKEY_SLH_DSA_SHAKE_192F NID_SLH_DSA_SHAKE_192f +#define EVP_PKEY_SLH_DSA_SHAKE_256S NID_SLH_DSA_SHAKE_256s +#define EVP_PKEY_SLH_DSA_SHAKE_256F NID_SLH_DSA_SHAKE_256f + +/* Special indicator that the object is uniquely provider side */ +#define EVP_PKEY_KEYMGMT -1 + +/* Easy to use macros for EVP_PKEY related selections */ +#define EVP_PKEY_KEY_PARAMETERS \ + (OSSL_KEYMGMT_SELECT_ALL_PARAMETERS) +#define EVP_PKEY_PRIVATE_KEY \ + (EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PRIVATE_KEY) +#define EVP_PKEY_PUBLIC_KEY \ + (EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PUBLIC_KEY) +#define EVP_PKEY_KEYPAIR \ + (EVP_PKEY_PUBLIC_KEY | OSSL_KEYMGMT_SELECT_PRIVATE_KEY) + +#ifdef __cplusplus +extern "C" { +#endif + +int EVP_set_default_properties(OSSL_LIB_CTX *libctx, const char *propq); +char *EVP_get1_default_properties(OSSL_LIB_CTX *libctx); +int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx); +int EVP_default_properties_enable_fips(OSSL_LIB_CTX *libctx, int enable); + +#define EVP_PKEY_MO_SIGN 0x0001 +#define EVP_PKEY_MO_VERIFY 0x0002 +#define EVP_PKEY_MO_ENCRYPT 0x0004 +#define EVP_PKEY_MO_DECRYPT 0x0008 + +#ifndef EVP_MD +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 void EVP_MD_meth_free(EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, const void *data, size_t count)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, unsigned char *md)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, const EVP_MD_CTX *from)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, int p1, void *p2)); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_result_size(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); +#endif +/* digest can only handle a single block */ +#define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +#define EVP_MD_FLAG_XOF 0x0002 + +/* DigestAlgorithmIdentifier flags... */ + +#define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +#define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +#define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +#define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +#define EVP_MD_CTRL_DIGALGID 0x1 +#define EVP_MD_CTRL_MICALG 0x2 +#define EVP_MD_CTRL_XOF_LEN 0x3 +#define EVP_MD_CTRL_TLSTREE 0x4 + +/* Minimum Algorithm specific ctrl value */ + +#define EVP_MD_CTRL_ALG_CTRL 0x1000 + +#endif /* !EVP_MD */ + +/* values for EVP_MD_CTX flags */ + +#define EVP_MD_CTX_FLAG_ONESHOT 0x0001 /* digest update will be \ + * called once only */ +#define EVP_MD_CTX_FLAG_CLEANED 0x0002 /* context has already been \ + * cleaned */ +#define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data \ + * in EVP_MD_CTX_reset */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +/* This flag has no effect from openssl-3.0 onwards */ +#define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +#define EVP_MD_CTX_FLAG_PAD_MASK 0xF0 /* RSA mode to use */ +#define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00 /* PKCS#1 v1.5 mode */ +#define EVP_MD_CTX_FLAG_PAD_X931 0x10 /* X9.31 mode */ +#define EVP_MD_CTX_FLAG_PAD_PSS 0x20 /* PSS mode */ + +#define EVP_MD_CTX_FLAG_NO_INIT 0x0100 /* Don't initialize md_data */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +#define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 and 0x0800 are reserved for internal usage */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, + int (*init)(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, + int (*do_cipher)(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup)(EVP_CIPHER_CTX *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters)(EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters)(EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl)(EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, int type, + int arg, void *ptr); +#endif + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +#define EVP_CIPH_STREAM_CIPHER 0x0 +#define EVP_CIPH_ECB_MODE 0x1 +#define EVP_CIPH_CBC_MODE 0x2 +#define EVP_CIPH_CFB_MODE 0x3 +#define EVP_CIPH_OFB_MODE 0x4 +#define EVP_CIPH_CTR_MODE 0x5 +#define EVP_CIPH_GCM_MODE 0x6 +#define EVP_CIPH_CCM_MODE 0x7 +#define EVP_CIPH_XTS_MODE 0x10001 +#define EVP_CIPH_WRAP_MODE 0x10002 +#define EVP_CIPH_OCB_MODE 0x10003 +#define EVP_CIPH_SIV_MODE 0x10004 +#define EVP_CIPH_GCM_SIV_MODE 0x10005 +#define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +#define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +#define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +#define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +#define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +#define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +#define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +#define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +#define EVP_CIPH_CUSTOM_COPY 0x400 +/* Don't use standard iv length function */ +#define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* Legacy and no longer relevant: Allow use default ASN1 get/set iv */ +#define EVP_CIPH_FLAG_DEFAULT_ASN1 0 +/* Free: 0x1000 */ +/* Buffer length in bits not bytes: CFB1 mode only */ +#define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Deprecated FIPS flag: was 0x4000 */ +#define EVP_CIPH_FLAG_FIPS 0 +/* Deprecated FIPS flag: was 0x8000 */ +#define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0 + +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +#define EVP_CIPH_FLAG_CTS 0x4000 +#define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +#define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +#define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 +/* Cipher can handle pipeline operations */ +#define EVP_CIPH_FLAG_PIPELINE 0X800000 +/* For provider implementations that handle ASN1 get/set param themselves */ +#define EVP_CIPH_FLAG_CUSTOM_ASN1 0x1000000 +/* For ciphers generating unprotected CMS attributes */ +#define EVP_CIPH_FLAG_CIPHER_WITH_MAC 0x2000000 +/* For supplementary wrap cipher support */ +#define EVP_CIPH_FLAG_GET_WRAP_CIPHER 0x4000000 +#define EVP_CIPH_FLAG_INVERSE_CIPHER 0x8000000 +#define EVP_CIPH_FLAG_ENC_THEN_MAC 0x10000000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +#define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +#define EVP_CTRL_INIT 0x0 +#define EVP_CTRL_SET_KEY_LENGTH 0x1 +#define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +#define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +#define EVP_CTRL_GET_RC5_ROUNDS 0x4 +#define EVP_CTRL_SET_RC5_ROUNDS 0x5 +#define EVP_CTRL_RAND_KEY 0x6 +#define EVP_CTRL_PBE_PRF_NID 0x7 +#define EVP_CTRL_COPY 0x8 +#define EVP_CTRL_AEAD_SET_IVLEN 0x9 +#define EVP_CTRL_AEAD_GET_TAG 0x10 +#define EVP_CTRL_AEAD_SET_TAG 0x11 +#define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +#define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +#define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +#define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +#define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +#define EVP_CTRL_GCM_IV_GEN 0x13 +#define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +#define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +#define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +#define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +#define EVP_CTRL_CCM_SET_L 0x14 +#define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +#define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +#define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +#define EVP_CTRL_GCM_SET_IV_INV 0x18 + +#define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +#define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +#define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +#define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +#define EVP_CTRL_SSL3_MASTER_SECRET 0x1d + +/* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ +#define EVP_CTRL_SET_SBOX 0x1e +/* + * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a + * pre-allocated buffer with specified size + */ +#define EVP_CTRL_SBOX_USED 0x1f +/* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, + * 0 switches meshing off + */ +#define EVP_CTRL_KEY_MESH 0x20 +/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ +#define EVP_CTRL_BLOCK_PADDING_MODE 0x21 + +/* Set the output buffers to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 +/* Set the input buffers to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 +/* Set the input buffer lengths to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 +/* Get the IV length used by the cipher */ +#define EVP_CTRL_GET_IVLEN 0x25 +/* 0x26 is unused */ +/* Tell the cipher it's doing a speed test (SIV disallows multiple ops) */ +#define EVP_CTRL_SET_SPEED 0x27 +/* Get the unprotectedAttrs from cipher ctx */ +#define EVP_CTRL_PROCESS_UNPROTECTED 0x28 +/* Get the supplementary wrap cipher */ +#define EVP_CTRL_GET_WRAP_CIPHER 0x29 +/* TLSTREE key diversification */ +#define EVP_CTRL_TLSTREE 0x2A + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +#define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +#define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +#define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +#define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +#define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +#define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +#define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +#define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +#define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +#define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + +/* Password based encryption function */ +typedef int(EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +typedef int(EVP_PBE_KEYGEN_EX)(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de, OSSL_LIB_CTX *libctx, const char *propq); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PKEY_assign_RSA(pkey, rsa) EVP_PKEY_assign((pkey), EVP_PKEY_RSA, \ + (rsa)) +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_6 +#ifndef OPENSSL_NO_DSA +#define EVP_PKEY_assign_DSA(pkey, dsa) EVP_PKEY_assign((pkey), EVP_PKEY_DSA, \ + (dsa)) +#endif +#endif + +#if !defined(OPENSSL_NO_DH) && !defined(OPENSSL_NO_DEPRECATED_3_0) +#define EVP_PKEY_assign_DH(pkey, dh) EVP_PKEY_assign((pkey), EVP_PKEY_DH, (dh)) +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +#define EVP_PKEY_assign_EC_KEY(pkey, eckey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_EC, \ + (eckey)) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_6 +#ifndef OPENSSL_NO_SIPHASH +#define EVP_PKEY_assign_SIPHASH(pkey, shkey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_SIPHASH, \ + (shkey)) +#endif + +#ifndef OPENSSL_NO_POLY1305 +#define EVP_PKEY_assign_POLY1305(pkey, polykey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_POLY1305, \ + (polykey)) +#endif +#endif + +/* Add some extra combinations */ +#define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +#define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +#define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +#define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_get_type(const EVP_MD *md); +#define EVP_MD_type EVP_MD_get_type +#define EVP_MD_nid EVP_MD_get_type +const char *EVP_MD_get0_name(const EVP_MD *md); +#define EVP_MD_name EVP_MD_get0_name +const char *EVP_MD_get0_description(const EVP_MD *md); +int EVP_MD_is_a(const EVP_MD *md, const char *name); +int EVP_MD_names_do_all(const EVP_MD *md, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_MD_get0_provider(const EVP_MD *md); +int EVP_MD_get_pkey_type(const EVP_MD *md); +#define EVP_MD_pkey_type EVP_MD_get_pkey_type +int EVP_MD_get_size(const EVP_MD *md); +#define EVP_MD_size EVP_MD_get_size +int EVP_MD_get_block_size(const EVP_MD *md); +#define EVP_MD_block_size EVP_MD_get_block_size +unsigned long EVP_MD_get_flags(const EVP_MD *md); +#define EVP_MD_flags EVP_MD_get_flags +int EVP_MD_xof(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_get0_md(const EVP_MD_CTX *ctx); +EVP_MD *EVP_MD_CTX_get1_md(EVP_MD_CTX *ctx); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update)(EVP_MD_CTX *ctx, + const void *data, size_t count)); +#endif +int EVP_MD_CTX_get_size_ex(const EVP_MD_CTX *ctx); + +#define EVP_MD_CTX_get0_name(e) EVP_MD_get0_name(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_get_size(e) EVP_MD_CTX_get_size_ex(e) +#define EVP_MD_CTX_size EVP_MD_CTX_get_size_ex +#define EVP_MD_CTX_get_block_size(e) EVP_MD_get_block_size(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_block_size EVP_MD_CTX_get_block_size +#define EVP_MD_CTX_get_type(e) EVP_MD_get_type(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_type EVP_MD_CTX_get_type +EVP_PKEY_CTX *EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX *ctx); +#define EVP_MD_CTX_pkey_ctx EVP_MD_CTX_get_pkey_ctx +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_get0_md_data(const EVP_MD_CTX *ctx); +#define EVP_MD_CTX_md_data EVP_MD_CTX_get0_md_data + +int EVP_CIPHER_get_nid(const EVP_CIPHER *cipher); +#define EVP_CIPHER_nid EVP_CIPHER_get_nid +const char *EVP_CIPHER_get0_name(const EVP_CIPHER *cipher); +#define EVP_CIPHER_name EVP_CIPHER_get0_name +const char *EVP_CIPHER_get0_description(const EVP_CIPHER *cipher); +int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name); +int EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_CIPHER_get0_provider(const EVP_CIPHER *cipher); +int EVP_CIPHER_get_block_size(const EVP_CIPHER *cipher); +#define EVP_CIPHER_block_size EVP_CIPHER_get_block_size +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +#endif +int EVP_CIPHER_get_key_length(const EVP_CIPHER *cipher); +#define EVP_CIPHER_key_length EVP_CIPHER_get_key_length +int EVP_CIPHER_get_iv_length(const EVP_CIPHER *cipher); +#define EVP_CIPHER_iv_length EVP_CIPHER_get_iv_length +unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER *cipher); +#define EVP_CIPHER_flags EVP_CIPHER_get_flags +int EVP_CIPHER_get_mode(const EVP_CIPHER *cipher); +#define EVP_CIPHER_mode EVP_CIPHER_get_mode +int EVP_CIPHER_get_type(const EVP_CIPHER *cipher); +#define EVP_CIPHER_type EVP_CIPHER_get_type +EVP_CIPHER *EVP_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_CIPHER_can_pipeline(const EVP_CIPHER *cipher, int enc); +int EVP_CIPHER_up_ref(EVP_CIPHER *cipher); +void EVP_CIPHER_free(EVP_CIPHER *cipher); + +const EVP_CIPHER *EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX *ctx); +EVP_CIPHER *EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_encrypting EVP_CIPHER_CTX_is_encrypting +int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_nid EVP_CIPHER_CTX_get_nid +int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_block_size EVP_CIPHER_CTX_get_block_size +int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_key_length EVP_CIPHER_CTX_get_key_length +int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_iv_length EVP_CIPHER_CTX_get_iv_length +int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_tag_length EVP_CIPHER_CTX_get_tag_length +#ifndef OPENSSL_NO_DEPRECATED_3_0 +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +#endif +int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +#endif +int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_num EVP_CIPHER_CTX_get_num +int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +EVP_CIPHER_CTX *EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX *in); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); +void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); +#define EVP_CIPHER_CTX_get0_name(c) EVP_CIPHER_get0_name(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_get_type(c) EVP_CIPHER_get_type(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_type EVP_CIPHER_CTX_get_type +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(c)) +#endif +#define EVP_CIPHER_CTX_get_mode(c) EVP_CIPHER_get_mode(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_mode EVP_CIPHER_CTX_get_mode + +#define EVP_ENCODE_LENGTH(l) ((((l) + 2) / 3 * 4) + ((l) / 48 + 1) * 2 + 80) +#define EVP_DECODE_LENGTH(l) (((l) + 3) / 4 * 3 + 80) + +#define EVP_SignInit_ex(a, b, c) EVP_DigestInit_ex(a, b, c) +#define EVP_SignInit(a, b) EVP_DigestInit(a, b) +#define EVP_SignUpdate(a, b, c) EVP_DigestUpdate(a, b, c) +#define EVP_VerifyInit_ex(a, b, c) EVP_DigestInit_ex(a, b, c) +#define EVP_VerifyInit(a, b) EVP_DigestInit(a, b) +#define EVP_VerifyUpdate(a, b, c) EVP_DigestUpdate(a, b, c) +#define EVP_OpenUpdate(a, b, c, d, e) EVP_DecryptUpdate(a, b, c, d, e) +#define EVP_SealUpdate(a, b, c, d, e) EVP_EncryptUpdate(a, b, c, d, e) + +#ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +#else +#define BIO_set_md(b, md) BIO_ctrl(b, BIO_C_SET_MD, 0, (void *)(md)) +#endif +#define BIO_get_md(b, mdp) BIO_ctrl(b, BIO_C_GET_MD, 0, (mdp)) +#define BIO_get_md_ctx(b, mdcp) BIO_ctrl(b, BIO_C_GET_MD_CTX, 0, (mdcp)) +#define BIO_set_md_ctx(b, mdcp) BIO_ctrl(b, BIO_C_SET_MD_CTX, 0, (mdcp)) +#define BIO_get_cipher_status(b) BIO_ctrl(b, BIO_C_GET_CIPHER_STATUS, 0, NULL) +#define BIO_get_cipher_ctx(b, c_pp) BIO_ctrl(b, BIO_C_GET_CIPHER_CTX, 0, (c_pp)) + +__owur int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, + const unsigned char *in, unsigned int inl); + +#define EVP_add_cipher_alias(n, alias) \ + OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n)) +#define EVP_add_digest_alias(n, alias) \ + OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n)) +#define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias, OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS); +#define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias, OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS); + +int EVP_MD_get_params(const EVP_MD *digest, OSSL_PARAM params[]); +int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[]); +int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest); +const OSSL_PARAM *EVP_MD_settable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_gettable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_CTX_settable_params(EVP_MD_CTX *ctx); +const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx); +int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +EVP_MD_CTX *EVP_MD_CTX_new(void); +int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); +#define EVP_MD_CTX_create() EVP_MD_CTX_new() +#define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) +#define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) +__owur EVP_MD_CTX *EVP_MD_CTX_dup(const EVP_MD_CTX *in); +__owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +__owur int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type, + const OSSL_PARAM params[]); +__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, + ENGINE *impl); +__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, + size_t cnt); +__owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, + const EVP_MD *type, ENGINE *impl); +__owur int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name, + const char *propq, const void *data, size_t datalen, + unsigned char *md, size_t *mdlen); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *out, + size_t outlen); +__owur int EVP_DigestSqueeze(EVP_MD_CTX *ctx, unsigned char *out, + size_t outlen); + +__owur EVP_MD *EVP_MD_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); + +int EVP_MD_up_ref(EVP_MD *md); +void EVP_MD_free(EVP_MD *md); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +__owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, + const unsigned char *data, int datal, int count, + unsigned char *key, unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +__owur int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +__owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +__owur int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); +__owur int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); + +__owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +__owur int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +__owur int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +__owur int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +__owur int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv, int enc); +__owur int EVP_CipherInit_SKEY(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + EVP_SKEY *skey, const unsigned char *iv, size_t iv_len, + int enc, const OSSL_PARAM params[]); +__owur int EVP_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc, const OSSL_PARAM params[]); +__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_CipherPipelineEncryptInit(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, + const unsigned char *key, size_t keylen, + size_t numpipes, + const unsigned char **iv, size_t ivlen); +__owur int EVP_CipherPipelineDecryptInit(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, + const unsigned char *key, size_t keylen, + size_t numpipes, + const unsigned char **iv, size_t ivlen); +__owur int EVP_CipherPipelineUpdate(EVP_CIPHER_CTX *ctx, + unsigned char **out, size_t *outl, + const size_t *outsize, + const unsigned char **in, const size_t *inl); +__owur int EVP_CipherPipelineFinal(EVP_CIPHER_CTX *ctx, + unsigned char **outm, size_t *outl, + const size_t *outsize); +__owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); +__owur int EVP_SignFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *propq); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); +__owur int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey, + OSSL_LIB_CTX *libctx, const char *propq); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +__owur int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +__owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, + const unsigned char *iv, EVP_PKEY *priv); +__owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +__owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +__owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, const EVP_ENCODE_CTX *sctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) +#define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) +#endif +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); +int EVP_CIPHER_get_params(EVP_CIPHER *cipher, OSSL_PARAM params[]); +int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX *ctx, const OSSL_PARAM params[]); +int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_CIPHER_gettable_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_settable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX *ctx); +const OSSL_PARAM *EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX *ctx); + +int EVP_CIPHER_CTX_set_algor_params(EVP_CIPHER_CTX *ctx, const X509_ALGOR *alg); +int EVP_CIPHER_CTX_get_algor_params(EVP_CIPHER_CTX *ctx, X509_ALGOR *alg); +int EVP_CIPHER_CTX_get_algor(EVP_CIPHER_CTX *ctx, X509_ALGOR **alg); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +const EVP_MD *EVP_md_null(void); +#ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +#endif +#ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +#endif +#ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +const EVP_MD *EVP_md5_sha1(void); +#endif +#ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +#endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); + +#ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +#endif +#ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +#endif +#ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +#endif +#ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(void); +#endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +#ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +#define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +#define EVP_des_ede_cfb EVP_des_ede_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +#define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +#endif +#ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +#ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +#endif +#endif +#ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +#define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +#endif +#ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +#define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +#endif +#ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +#define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +#endif +#ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +#define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +#endif +#ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +#define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +#endif +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +#define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_128_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +#define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_192_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +#define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +#ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +#define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +#define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +#define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +#endif +#ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +#define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_128_ctr(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +#define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ctr(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +#define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +#endif +#ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +#ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +#endif +#endif + +#ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +#define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +#endif + +#ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +#define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, \ + NULL) +#define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, \ + NULL) + +#ifdef OPENSSL_LOAD_CONF +#define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() +#else +#define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() +#endif + +#define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +#define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +#define EVP_cleanup() \ + while (0) \ + continue +#endif + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); + +void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_CIPHER *cipher, void *arg), + void *arg); + +void EVP_MD_do_all(void (*fn)(const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *ciph, const char *from, + const char *to, void *x), + void *arg); +void EVP_MD_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MD *md, void *arg), + void *arg); + +/* MAC stuff */ + +EVP_MAC *EVP_MAC_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_MAC_up_ref(EVP_MAC *mac); +void EVP_MAC_free(EVP_MAC *mac); +const char *EVP_MAC_get0_name(const EVP_MAC *mac); +const char *EVP_MAC_get0_description(const EVP_MAC *mac); +int EVP_MAC_is_a(const EVP_MAC *mac, const char *name); +const OSSL_PROVIDER *EVP_MAC_get0_provider(const EVP_MAC *mac); +int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]); + +EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac); +void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx); +EVP_MAC_CTX *EVP_MAC_CTX_dup(const EVP_MAC_CTX *src); +EVP_MAC *EVP_MAC_CTX_get0_mac(EVP_MAC_CTX *ctx); +int EVP_MAC_CTX_get_params(EVP_MAC_CTX *ctx, OSSL_PARAM params[]); +int EVP_MAC_CTX_set_params(EVP_MAC_CTX *ctx, const OSSL_PARAM params[]); + +size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX *ctx); +size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX *ctx); +unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *propq, + const char *subalg, const OSSL_PARAM *params, + const void *key, size_t keylen, + const unsigned char *data, size_t datalen, + unsigned char *out, size_t outsize, size_t *outlen); +int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_MAC_init_SKEY(EVP_MAC_CTX *ctx, EVP_SKEY *skey, const OSSL_PARAM params[]); +int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen); +int EVP_MAC_final(EVP_MAC_CTX *ctx, + unsigned char *out, size_t *outl, size_t outsize); +int EVP_MAC_finalXOF(EVP_MAC_CTX *ctx, unsigned char *out, size_t outsize); +const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_gettable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_settable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_CTX_gettable_params(EVP_MAC_CTX *ctx); +const OSSL_PARAM *EVP_MAC_CTX_settable_params(EVP_MAC_CTX *ctx); + +void EVP_MAC_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MAC *mac, void *arg), + void *arg); +int EVP_MAC_names_do_all(const EVP_MAC *mac, + void (*fn)(const char *name, void *data), + void *data); + +/* RAND stuff */ +EVP_RAND *EVP_RAND_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_RAND_up_ref(EVP_RAND *rand); +void EVP_RAND_free(EVP_RAND *rand); +const char *EVP_RAND_get0_name(const EVP_RAND *rand); +const char *EVP_RAND_get0_description(const EVP_RAND *md); +int EVP_RAND_is_a(const EVP_RAND *rand, const char *name); +const OSSL_PROVIDER *EVP_RAND_get0_provider(const EVP_RAND *rand); +int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[]); + +EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent); +int EVP_RAND_CTX_up_ref(EVP_RAND_CTX *ctx); +void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx); +EVP_RAND *EVP_RAND_CTX_get0_rand(EVP_RAND_CTX *ctx); +int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[]); +int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx); +const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx); + +void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_RAND *rand, void *arg), + void *arg); +int EVP_RAND_names_do_all(const EVP_RAND *rand, + void (*fn)(const char *name, void *data), + void *data); + +__owur int EVP_RAND_instantiate(EVP_RAND_CTX *ctx, unsigned int strength, + int prediction_resistance, + const unsigned char *pstr, size_t pstr_len, + const OSSL_PARAM params[]); +int EVP_RAND_uninstantiate(EVP_RAND_CTX *ctx); +__owur int EVP_RAND_generate(EVP_RAND_CTX *ctx, unsigned char *out, + size_t outlen, unsigned int strength, + int prediction_resistance, + const unsigned char *addin, size_t addin_len); +int EVP_RAND_reseed(EVP_RAND_CTX *ctx, int prediction_resistance, + const unsigned char *ent, size_t ent_len, + const unsigned char *addin, size_t addin_len); +__owur int EVP_RAND_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen); +__owur int EVP_RAND_enable_locking(EVP_RAND_CTX *ctx); + +int EVP_RAND_verify_zeroization(EVP_RAND_CTX *ctx); +unsigned int EVP_RAND_get_strength(EVP_RAND_CTX *ctx); +int EVP_RAND_get_state(EVP_RAND_CTX *ctx); + +#define EVP_RAND_STATE_UNINITIALISED 0 +#define EVP_RAND_STATE_READY 1 +#define EVP_RAND_STATE_ERROR 2 + +/* PKEY stuff */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, + int enc_key_len, + EVP_PKEY *private_key); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, + int key_len, EVP_PKEY *pub_key); +#endif +int EVP_PKEY_is_a(const EVP_PKEY *pkey, const char *name); +int EVP_PKEY_type_names_do_all(const EVP_PKEY *pkey, + void (*fn)(const char *name, void *data), + void *data); +int EVP_PKEY_type(int type); +int EVP_PKEY_get_id(const EVP_PKEY *pkey); +#define EVP_PKEY_id EVP_PKEY_get_id +int EVP_PKEY_get_base_id(const EVP_PKEY *pkey); +#define EVP_PKEY_base_id EVP_PKEY_get_base_id +int EVP_PKEY_get_bits(const EVP_PKEY *pkey); +#define EVP_PKEY_bits EVP_PKEY_get_bits +int EVP_PKEY_get_security_bits(const EVP_PKEY *pkey); +#define EVP_PKEY_security_bits EVP_PKEY_get_security_bits +int EVP_PKEY_get_security_category(const EVP_PKEY *pkey); +int EVP_PKEY_get_size(const EVP_PKEY *pkey); +#define EVP_PKEY_size EVP_PKEY_get_size +int EVP_PKEY_can_sign(const EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY *pkey, EVP_KEYMGMT *keymgmt); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +#endif +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +OSSL_DEPRECATEDIN_3_0 +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +#ifndef OPENSSL_NO_POLY1305 +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +#endif +#ifndef OPENSSL_NO_SIPHASH +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +#endif + +struct rsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); + +#ifndef OPENSSL_NO_DSA +struct dsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct dsa_st *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +#endif + +#ifndef OPENSSL_NO_DH +struct dh_st; +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +OSSL_DEPRECATEDIN_3_0 const struct dh_st *EVP_PKEY_get0_DH(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +#endif + +#ifndef OPENSSL_NO_EC +struct ec_key_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct ec_key_st *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); +const char *EVP_PKEY_get0_description(const EVP_PKEY *pkey); +const OSSL_PROVIDER *EVP_PKEY_get0_provider(const EVP_PKEY *key); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey_ex(int type, EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey_ex(EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(const EVP_PKEY *a, unsigned char **pp); +int i2d_PKCS8PrivateKey(const EVP_PKEY *a, unsigned char **pp); + +int i2d_KeyParams(const EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_KeyParams(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_KeyParams_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_KeyParams_bio(int type, EVP_PKEY **a, BIO *in); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b); +int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); +#endif + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +#ifndef OPENSSL_NO_STDIO +int EVP_PKEY_print_public_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +#endif + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); +int EVP_PKEY_get_default_digest_name(EVP_PKEY *pkey, + char *mdname, size_t mdname_sz); +int EVP_PKEY_digestsign_supports_digest(EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *name, const char *propq); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_set1_encoded_public_key in + * preference + */ +#define EVP_PKEY_set1_tls_encodedpoint(pkey, pt, ptlen) \ + EVP_PKEY_set1_encoded_public_key((pkey), (pt), (ptlen)) +#endif + +int EVP_PKEY_set1_encoded_public_key(EVP_PKEY *pkey, + const unsigned char *pub, size_t publen); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_get1_encoded_public_key in + * preference + */ +#define EVP_PKEY_get1_tls_encodedpoint(pkey, ppt) \ + EVP_PKEY_get1_encoded_public_key((pkey), (ppt)) +#endif + +size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY *pkey, unsigned char **ppub); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +#ifndef OPENSSL_NO_SCRYPT +int EVP_PBE_scrypt(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); +int EVP_PBE_scrypt_ex(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de); +int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +#endif + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +int EVP_PBE_CipherInit_ex(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +#define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +#define EVP_PBE_TYPE_PRF 0x1 +/* Is a PKCS#5 v2.0 KDF */ +#define EVP_PBE_TYPE_KDF 0x2 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +int EVP_PBE_find_ex(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen, EVP_PBE_KEYGEN_EX **pkeygen_ex); +void EVP_PBE_cleanup(void); +int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); + +#define ASN1_PKEY_ALIAS 0x1 +#define ASN1_PKEY_DYNAMIC 0x2 +#define ASN1_PKEY_SIGPARAM_NULL 0x4 + +#define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +#define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +#define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +#define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +#define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +#define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +#define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 +#define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa +#define ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED 0xb + +#ifndef OPENSSL_NO_DEPRECATED_3_6 +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_get_count(void); +OSSL_DEPRECATEDIN_3_6 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +OSSL_DEPRECATEDIN_3_6 +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +OSSL_DEPRECATEDIN_3_6 +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_add_alias(int to, int from); +OSSL_DEPRECATEDIN_3_6 +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +OSSL_DEPRECATEDIN_3_6 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_6 EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +OSSL_DEPRECATEDIN_3_6 void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +OSSL_DEPRECATEDIN_3_6 void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode)(EVP_PKEY *pk, + const X509_PUBKEY *pub), + int (*pub_encode)(X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp)(const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size)(const EVP_PKEY *pk), + int (*pkey_bits)(const EVP_PKEY *pk)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode)(EVP_PKEY *pk, + const PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode)(PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode)(EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode)(const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing)(const EVP_PKEY *pk), + int (*param_copy)(EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp)(const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl)(EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify)(EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + const void *data, + const X509_ALGOR *a, + const ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign)(EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + const void *data, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set)(X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key)(EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key)(EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key)(const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key)(const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits)(const EVP_PKEY + *pk)); +#endif /* OPENSSL_NO_DEPRECATED_3_6 */ + +int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, const void *id, int len); +int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id); +int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len); + +int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX *ctx, const char *op); + +const char *EVP_PKEY_get0_type_name(const EVP_PKEY *key); + +#define EVP_PKEY_OP_UNDEFINED 0 +#define EVP_PKEY_OP_PARAMGEN (1 << 1) +#define EVP_PKEY_OP_KEYGEN (1 << 2) +#define EVP_PKEY_OP_FROMDATA (1 << 3) +#define EVP_PKEY_OP_SIGN (1 << 4) +#define EVP_PKEY_OP_VERIFY (1 << 5) +#define EVP_PKEY_OP_VERIFYRECOVER (1 << 6) +#define EVP_PKEY_OP_SIGNCTX (1 << 7) +#define EVP_PKEY_OP_VERIFYCTX (1 << 8) +#define EVP_PKEY_OP_ENCRYPT (1 << 9) +#define EVP_PKEY_OP_DECRYPT (1 << 10) +#define EVP_PKEY_OP_DERIVE (1 << 11) +#define EVP_PKEY_OP_ENCAPSULATE (1 << 12) +#define EVP_PKEY_OP_DECAPSULATE (1 << 13) +#define EVP_PKEY_OP_SIGNMSG (1 << 14) +#define EVP_PKEY_OP_VERIFYMSG (1 << 15) +/* Update the following when adding new EVP_PKEY_OPs */ +#define EVP_PKEY_OP_ALL ((1 << 16) - 1) + +#define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG \ + | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \ + | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +#define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +#define EVP_PKEY_OP_TYPE_DERIVE \ + (EVP_PKEY_OP_DERIVE) + +#define EVP_PKEY_OP_TYPE_DATA \ + (EVP_PKEY_OP_FROMDATA) + +#define EVP_PKEY_OP_TYPE_KEM \ + (EVP_PKEY_OP_ENCAPSULATE | EVP_PKEY_OP_DECAPSULATE) + +#define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +#define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_ALL & ~EVP_PKEY_OP_TYPE_GEN) + +int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key, + int keylen); + +#define EVP_PKEY_CTRL_MD 1 +#define EVP_PKEY_CTRL_PEER_KEY 2 +#define EVP_PKEY_CTRL_SET_MAC_KEY 6 +#define EVP_PKEY_CTRL_DIGESTINIT 7 +/* Used by GOST key encryption in TLS */ +#define EVP_PKEY_CTRL_SET_IV 8 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +#define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 +#define EVP_PKEY_CTRL_PKCS7_SIGN 5 +#define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +#define EVP_PKEY_CTRL_CMS_DECRYPT 10 +#define EVP_PKEY_CTRL_CMS_SIGN 11 +#endif +#define EVP_PKEY_CTRL_CIPHER 12 +#define EVP_PKEY_CTRL_GET_MD 13 +#define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 +#define EVP_PKEY_CTRL_SET1_ID 15 +#define EVP_PKEY_CTRL_GET1_ID 16 +#define EVP_PKEY_CTRL_GET1_ID_LEN 17 + +#define EVP_PKEY_ALG_CTRL 0x1000 + +#define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +#define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +OSSL_DEPRECATEDIN_3_0 EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, + const EVP_PKEY_METHOD *src); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 size_t EVP_PKEY_meth_get_count(void); +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); +#endif + +EVP_KEYMGMT *EVP_KEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEYMGMT_up_ref(EVP_KEYMGMT *keymgmt); +void EVP_KEYMGMT_free(EVP_KEYMGMT *keymgmt); +const OSSL_PROVIDER *EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_name(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_description(const EVP_KEYMGMT *keymgmt); +int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name); +void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYMGMT *keymgmt, void *arg), + void *arg); +int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_gen_gettable_params(const EVP_KEYMGMT *keymgmt); + +EVP_SKEYMGMT *EVP_SKEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_SKEYMGMT_up_ref(EVP_SKEYMGMT *keymgmt); +void EVP_SKEYMGMT_free(EVP_SKEYMGMT *keymgmt); +const OSSL_PROVIDER *EVP_SKEYMGMT_get0_provider(const EVP_SKEYMGMT *keymgmt); +const char *EVP_SKEYMGMT_get0_name(const EVP_SKEYMGMT *keymgmt); +const char *EVP_SKEYMGMT_get0_description(const EVP_SKEYMGMT *keymgmt); +int EVP_SKEYMGMT_is_a(const EVP_SKEYMGMT *keymgmt, const char *name); +void EVP_SKEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_SKEYMGMT *keymgmt, void *arg), + void *arg); +int EVP_SKEYMGMT_names_do_all(const EVP_SKEYMGMT *keymgmt, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_SKEYMGMT_get0_gen_settable_params(const EVP_SKEYMGMT *skeymgmt); +const OSSL_PARAM *EVP_SKEYMGMT_get0_imp_settable_params(const EVP_SKEYMGMT *skeymgmt); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_name(OSSL_LIB_CTX *libctx, + const char *name, + const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX *libctx, + EVP_PKEY *pkey, const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(const EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX *ctx, const char *keytype); + +int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX *ctx, OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_algor_params(EVP_PKEY_CTX *ctx, const X509_ALGOR *alg); +int EVP_PKEY_CTX_get_algor_params(EVP_PKEY_CTX *ctx, X509_ALGOR *alg); +int EVP_PKEY_CTX_get_algor(EVP_PKEY_CTX *ctx, X509_ALGOR **alg); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); +EVP_PKEY *EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, + const char *propq, + const unsigned char *priv, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, const char *propq, + const unsigned char *pub, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); +#endif + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_signature(EVP_PKEY_CTX *pctx, + const unsigned char *sig, size_t siglen); + +void EVP_SIGNATURE_free(EVP_SIGNATURE *signature); +int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature); +OSSL_PROVIDER *EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE *signature); +EVP_SIGNATURE *EVP_SIGNATURE_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_SIGNATURE_is_a(const EVP_SIGNATURE *signature, const char *name); +const char *EVP_SIGNATURE_get0_name(const EVP_SIGNATURE *signature); +const char *EVP_SIGNATURE_get0_description(const EVP_SIGNATURE *signature); +void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_SIGNATURE *signature, + void *data), + void *data); +int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig); +const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig); + +void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher); +int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher); +OSSL_PROVIDER *EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER *cipher); +EVP_ASYM_CIPHER *EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER *cipher, const char *name); +const char *EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER *cipher); +const char *EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER *cipher); +void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_ASYM_CIPHER *cipher, + void *arg), + void *arg); +int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *ciph); +const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *ciph); + +void EVP_KEM_free(EVP_KEM *wrap); +int EVP_KEM_up_ref(EVP_KEM *wrap); +OSSL_PROVIDER *EVP_KEM_get0_provider(const EVP_KEM *wrap); +EVP_KEM *EVP_KEM_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEM_is_a(const EVP_KEM *wrap, const char *name); +const char *EVP_KEM_get0_name(const EVP_KEM *wrap); +const char *EVP_KEM_get0_description(const EVP_KEM *wrap); +void EVP_KEM_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEM *wrap, void *arg), void *arg); +int EVP_KEM_names_do_all(const EVP_KEM *wrap, + void (*fn)(const char *name, void *data), void *data); +const OSSL_PARAM *EVP_KEM_gettable_ctx_params(const EVP_KEM *kem); +const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_sign_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_sign_message_init(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_sign_message_update(EVP_PKEY_CTX *ctx, + const unsigned char *in, size_t inlen); +int EVP_PKEY_sign_message_final(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_verify_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_message_init(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_verify_message_update(EVP_PKEY_CTX *ctx, + const unsigned char *in, size_t inlen); +int EVP_PKEY_verify_message_final(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX *ctx, + const OSSL_PARAM params[]); +int EVP_PKEY_verify_recover_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, + const OSSL_PARAM params[]); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer, + int validate_peer); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); +EVP_SKEY *EVP_PKEY_derive_SKEY(EVP_PKEY_CTX *ctx, EVP_SKEYMGMT *mgmt, + const char *key_type, const char *propquery, + size_t keylen, const OSSL_PARAM params[]); + +int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpriv, + const OSSL_PARAM params[]); +int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, + unsigned char *wrappedkey, size_t *wrappedkeylen, + unsigned char *genkey, size_t *genkeylen); +int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpub, + const OSSL_PARAM params[]); +int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, + unsigned char *unwrapped, size_t *unwrappedlen, + const unsigned char *wrapped, size_t wrappedlen); +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_fromdata(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, + OSSL_PARAM param[]); +const OSSL_PARAM *EVP_PKEY_fromdata_settable(EVP_PKEY_CTX *ctx, int selection); + +int EVP_PKEY_todata(const EVP_PKEY *pkey, int selection, OSSL_PARAM **params); +int EVP_PKEY_export(const EVP_PKEY *pkey, int selection, + OSSL_CALLBACK *export_cb, void *export_cbarg); + +const OSSL_PARAM *EVP_PKEY_gettable_params(const EVP_PKEY *pkey); +int EVP_PKEY_get_params(const EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_get_int_param(const EVP_PKEY *pkey, const char *key_name, + int *out); +int EVP_PKEY_get_size_t_param(const EVP_PKEY *pkey, const char *key_name, + size_t *out); +int EVP_PKEY_get_bn_param(const EVP_PKEY *pkey, const char *key_name, + BIGNUM **bn); +int EVP_PKEY_get_utf8_string_param(const EVP_PKEY *pkey, const char *key_name, + char *str, size_t max_buf_sz, size_t *out_sz); +int EVP_PKEY_get_octet_string_param(const EVP_PKEY *pkey, const char *key_name, + unsigned char *buf, size_t max_buf_sz, + size_t *out_sz); + +const OSSL_PARAM *EVP_PKEY_settable_params(const EVP_PKEY *pkey); +int EVP_PKEY_set_params(EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_set_int_param(EVP_PKEY *pkey, const char *key_name, int in); +int EVP_PKEY_set_size_t_param(EVP_PKEY *pkey, const char *key_name, size_t in); +int EVP_PKEY_set_bn_param(EVP_PKEY *pkey, const char *key_name, + const BIGNUM *bn); +int EVP_PKEY_set_utf8_string_param(EVP_PKEY *pkey, const char *key_name, + const char *str); +int EVP_PKEY_set_octet_string_param(EVP_PKEY *pkey, const char *key_name, + const unsigned char *buf, size_t bsize); + +int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY *pkey); +int EVP_PKEY_get_field_type(const EVP_PKEY *pkey); + +EVP_PKEY *EVP_PKEY_Q_keygen(OSSL_LIB_CTX *libctx, const char *propq, + const char *type, ...); +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_generate(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx); + +#define EVP_PKEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EVP_PKEY, l, p, newf, dupf, freef) +int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg); +void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, int (*copy)(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, void (*cleanup)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, int (*paramgen_init)(EVP_PKEY_CTX *ctx), + int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, int (*keygen_init)(EVP_PKEY_CTX *ctx), + int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, int (*sign_init)(EVP_PKEY_CTX *ctx), + int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, int (*verify_init)(EVP_PKEY_CTX *ctx), + int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, int (*verify_recover_init)(EVP_PKEY_CTX *ctx), + int (*verify_recover)(EVP_PKEY_CTX *ctx, unsigned char *sig, + size_t *siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, int (*encrypt_init)(EVP_PKEY_CTX *ctx), + int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, int (*decrypt_init)(EVP_PKEY_CTX *ctx), + int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, int (*derive_init)(EVP_PKEY_CTX *ctx), + int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), + int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign)(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify)(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, int (*digest_custom)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, int (**pinit)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, int (**pcopy)(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, void (**pcleanup)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD *pmeth, int (**pparamgen_init)(EVP_PKEY_CTX *ctx), + int (**pparamgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD *pmeth, int (**pkeygen_init)(EVP_PKEY_CTX *ctx), + int (**pkeygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD *pmeth, int (**psign_init)(EVP_PKEY_CTX *ctx), + int (**psign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD *pmeth, int (**pverify_init)(EVP_PKEY_CTX *ctx), + int (**pverify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init)(EVP_PKEY_CTX *ctx), + int (**pverify_recover)(EVP_PKEY_CTX *ctx, unsigned char *sig, + size_t *siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**psignctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**pverifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, + int siglen, EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD *pmeth, int (**pencrypt_init)(EVP_PKEY_CTX *ctx), + int (**pencryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD *pmeth, int (**pdecrypt_init)(EVP_PKEY_CTX *ctx), + int (**pdecrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD *pmeth, int (**pderive_init)(EVP_PKEY_CTX *ctx), + int (**pderive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, + int (**pctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), + int (**pctrl_str)(EVP_PKEY_CTX *ctx, const char *type, + const char *value)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestsign(const EVP_PKEY_METHOD *pmeth, + int (**digestsign)(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestverify(const EVP_PKEY_METHOD *pmeth, + int (**digestverify)(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digest_custom(const EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); +#endif + +void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange); +EVP_KEYEXCH *EVP_KEYEXCH_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +OSSL_PROVIDER *EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_is_a(const EVP_KEYEXCH *keyexch, const char *name); +const char *EVP_KEYEXCH_get0_name(const EVP_KEYEXCH *keyexch); +const char *EVP_KEYEXCH_get0_description(const EVP_KEYEXCH *keyexch); +void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYEXCH *keyexch, void *data), + void *data); +int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch); +const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch); + +void EVP_add_alg_module(void); + +int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX *ctx, const char *name); +int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX *ctx, char *name, size_t namelen); +int EVP_PKEY_get_group_name(const EVP_PKEY *pkey, char *name, size_t name_sz, + size_t *gname_len); + +OSSL_LIB_CTX *EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX *ctx); +const char *EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX *ctx); +const OSSL_PROVIDER *EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX *ctx); + +int EVP_SKEY_is_a(const EVP_SKEY *skey, const char *name); +EVP_SKEY *EVP_SKEY_import(OSSL_LIB_CTX *libctx, const char *skeymgmtname, const char *propquery, + int selection, const OSSL_PARAM *params); +EVP_SKEY *EVP_SKEY_generate(OSSL_LIB_CTX *libctx, const char *skeymgmtname, + const char *propquery, const OSSL_PARAM *params); +EVP_SKEY *EVP_SKEY_import_raw_key(OSSL_LIB_CTX *libctx, const char *skeymgmtname, + unsigned char *key, size_t keylen, + const char *propquery); +EVP_SKEY *EVP_SKEY_import_SKEYMGMT(OSSL_LIB_CTX *libctx, EVP_SKEYMGMT *skeymgmt, + int selection, const OSSL_PARAM *params); +int EVP_SKEY_get0_raw_key(const EVP_SKEY *skey, const unsigned char **key, + size_t *len); +const char *EVP_SKEY_get0_key_id(const EVP_SKEY *skey); +int EVP_SKEY_export(const EVP_SKEY *skey, int selection, + OSSL_CALLBACK *export_cb, void *export_cbarg); +int EVP_SKEY_up_ref(EVP_SKEY *skey); +void EVP_SKEY_free(EVP_SKEY *skey); +const char *EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY *skey); +const char *EVP_SKEY_get0_provider_name(const EVP_SKEY *skey); +EVP_SKEY *EVP_SKEY_to_provider(EVP_SKEY *skey, OSSL_LIB_CTX *libctx, + OSSL_PROVIDER *prov, const char *propquery); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/evperr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/evperr.h new file mode 100644 index 0000000..06dd95f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/evperr.h @@ -0,0 +1,146 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_EVPERR_H +#define OPENSSL_EVPERR_H +#pragma once + +#include +#include +#include + +/* + * EVP reason codes. + */ +#define EVP_R_AES_KEY_SETUP_FAILED 143 +#define EVP_R_ARIA_KEY_SETUP_FAILED 176 +#define EVP_R_BAD_ALGORITHM_NAME 200 +#define EVP_R_BAD_DECRYPT 100 +#define EVP_R_BAD_KEY_LENGTH 195 +#define EVP_R_BUFFER_TOO_SMALL 155 +#define EVP_R_CACHE_CONSTANTS_FAILED 225 +#define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +#define EVP_R_CANNOT_GET_PARAMETERS 197 +#define EVP_R_CANNOT_SET_PARAMETERS 198 +#define EVP_R_CIPHER_NOT_GCM_MODE 184 +#define EVP_R_CIPHER_PARAMETER_ERROR 122 +#define EVP_R_COMMAND_NOT_SUPPORTED 147 +#define EVP_R_CONFLICTING_ALGORITHM_NAME 201 +#define EVP_R_COPY_ERROR 173 +#define EVP_R_CTRL_NOT_IMPLEMENTED 132 +#define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +#define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +#define EVP_R_DECODE_ERROR 114 +#define EVP_R_DEFAULT_QUERY_PARSE_ERROR 210 +#define EVP_R_DIFFERENT_KEY_TYPES 101 +#define EVP_R_DIFFERENT_PARAMETERS 153 +#define EVP_R_ERROR_LOADING_SECTION 165 +#define EVP_R_EXPECTING_AN_HMAC_KEY 174 +#define EVP_R_EXPECTING_AN_RSA_KEY 127 +#define EVP_R_EXPECTING_A_DH_KEY 128 +#define EVP_R_EXPECTING_A_DSA_KEY 129 +#define EVP_R_EXPECTING_A_ECX_KEY 219 +#define EVP_R_EXPECTING_A_EC_KEY 142 +#define EVP_R_EXPECTING_A_POLY1305_KEY 164 +#define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +#define EVP_R_FINAL_ERROR 188 +#define EVP_R_GENERATE_ERROR 214 +#define EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED 229 +#define EVP_R_GET_RAW_KEY_FAILED 182 +#define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +#define EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS 204 +#define EVP_R_INACCESSIBLE_KEY 203 +#define EVP_R_INITIALIZATION_ERROR 134 +#define EVP_R_INPUT_NOT_INITIALIZED 111 +#define EVP_R_INVALID_CUSTOM_LENGTH 185 +#define EVP_R_INVALID_DIGEST 152 +#define EVP_R_INVALID_IV_LENGTH 194 +#define EVP_R_INVALID_KEY 163 +#define EVP_R_INVALID_KEY_LENGTH 130 +#define EVP_R_INVALID_LENGTH 221 +#define EVP_R_INVALID_NULL_ALGORITHM 218 +#define EVP_R_INVALID_OPERATION 148 +#define EVP_R_INVALID_PROVIDER_FUNCTIONS 193 +#define EVP_R_INVALID_SALT_LENGTH 186 +#define EVP_R_INVALID_SECRET_LENGTH 223 +#define EVP_R_INVALID_SEED_LENGTH 220 +#define EVP_R_INVALID_VALUE 222 +#define EVP_R_KEYMGMT_EXPORT_FAILURE 205 +#define EVP_R_KEY_SETUP_FAILED 180 +#define EVP_R_LOCKING_NOT_SUPPORTED 213 +#define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +#define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +#define EVP_R_METHOD_NOT_SUPPORTED 144 +#define EVP_R_MISSING_PARAMETERS 103 +#define EVP_R_NOT_ABLE_TO_COPY_CTX 190 +#define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +#define EVP_R_NO_CIPHER_SET 131 +#define EVP_R_NO_DEFAULT_DIGEST 158 +#define EVP_R_NO_DIGEST_SET 139 +#define EVP_R_NO_IMPORT_FUNCTION 206 +#define EVP_R_NO_KEYMGMT_AVAILABLE 199 +#define EVP_R_NO_KEYMGMT_PRESENT 196 +#define EVP_R_NO_KEY_SET 154 +#define EVP_R_NO_OPERATION_SET 149 +#define EVP_R_NULL_MAC_PKEY_CTX 208 +#define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +#define EVP_R_OPERATION_NOT_INITIALIZED 151 +#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE 226 +#define EVP_R_OUTPUT_WOULD_OVERFLOW 202 +#define EVP_R_PARAMETER_TOO_LARGE 187 +#define EVP_R_PARTIALLY_OVERLAPPING 162 +#define EVP_R_PBKDF2_ERROR 181 +#define EVP_R_PIPELINE_NOT_SUPPORTED 230 +#define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +#define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +#define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +#define EVP_R_PROVIDER_ASYM_CIPHER_FAILURE 232 +#define EVP_R_PROVIDER_ASYM_CIPHER_NOT_SUPPORTED 235 +#define EVP_R_PROVIDER_KEYMGMT_FAILURE 233 +#define EVP_R_PROVIDER_KEYMGMT_NOT_SUPPORTED 236 +#define EVP_R_PROVIDER_SIGNATURE_FAILURE 234 +#define EVP_R_PROVIDER_SIGNATURE_NOT_SUPPORTED 237 +#define EVP_R_PUBLIC_KEY_NOT_RSA 106 +#define EVP_R_SETTING_XOF_FAILED 227 +#define EVP_R_SET_DEFAULT_PROPERTY_FAILURE 209 +#define EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE 228 +#define EVP_R_TOO_MANY_PIPES 231 +#define EVP_R_TOO_MANY_RECORDS 183 +#define EVP_R_UNABLE_TO_ENABLE_LOCKING 212 +#define EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE 215 +#define EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH 216 +#define EVP_R_UNABLE_TO_LOCK_CONTEXT 211 +#define EVP_R_UNABLE_TO_SET_CALLBACKS 217 +#define EVP_R_UNKNOWN_BITS 166 +#define EVP_R_UNKNOWN_CIPHER 160 +#define EVP_R_UNKNOWN_DIGEST 161 +#define EVP_R_UNKNOWN_KEY_TYPE 207 +#define EVP_R_UNKNOWN_MAX_SIZE 167 +#define EVP_R_UNKNOWN_OPTION 169 +#define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +#define EVP_R_UNKNOWN_SECURITY_BITS 168 +#define EVP_R_UNSUPPORTED_ALGORITHM 156 +#define EVP_R_UNSUPPORTED_CIPHER 107 +#define EVP_R_UNSUPPORTED_KEYLENGTH 123 +#define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +#define EVP_R_UNSUPPORTED_KEY_SIZE 108 +#define EVP_R_UNSUPPORTED_KEY_TYPE 224 +#define EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS 135 +#define EVP_R_UNSUPPORTED_PRF 125 +#define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +#define EVP_R_UNSUPPORTED_SALT_TYPE 126 +#define EVP_R_UPDATE_ERROR 189 +#define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +#define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +#define EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE 191 +#define EVP_R_XTS_DUPLICATED_KEYS 192 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/fips_names.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/fips_names.h new file mode 100644 index 0000000..3e310bb --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/fips_names.h @@ -0,0 +1,50 @@ +/* + * Copyright 2019-2024 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_FIPS_NAMES_H +#define OPENSSL_FIPS_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Parameter names that the FIPS Provider defines + * All parameters are of type: OSSL_PARAM_UTF8_STRING + */ + +/* The following 4 Parameters are used for FIPS Self Testing */ + +/* The calculated MAC of the module file */ +#define OSSL_PROV_FIPS_PARAM_MODULE_MAC "module-mac" +/* The Version number for the fips install process */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_VERSION "install-version" +/* The calculated MAC of the install status indicator */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_MAC "install-mac" +/* The install status indicator */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_STATUS "install-status" + +/* + * A boolean that determines if the FIPS conditional test errors result in + * the module entering an error state. + * Type: OSSL_PARAM_UTF8_STRING + */ +#define OSSL_PROV_FIPS_PARAM_CONDITIONAL_ERRORS "conditional-errors" + +/* The following are provided for backwards compatibility */ +#define OSSL_PROV_FIPS_PARAM_SECURITY_CHECKS OSSL_PROV_PARAM_SECURITY_CHECKS +#define OSSL_PROV_FIPS_PARAM_TLS1_PRF_EMS_CHECK OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK +#define OSSL_PROV_FIPS_PARAM_DRBG_TRUNC_DIGEST OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_FIPS_NAMES_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/fipskey.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/fipskey.h new file mode 100644 index 0000000..d605d11 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/fipskey.h @@ -0,0 +1,47 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/fipskey.h.in + * + * Copyright 2020-2024 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_FIPSKEY_H +#define OPENSSL_FIPSKEY_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The FIPS validation HMAC key, usable as an array initializer. + */ +/* clang-format off */ +#define FIPS_KEY_ELEMENTS \ + 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 +/* clang-format on */ + +/* + * The FIPS validation key, as a string. + */ +/* clang-format off */ +#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* clang-format on */ + +/* + * The FIPS provider vendor name, as a string. + */ +/* clang-format off */ +#define FIPS_VENDOR "OpenSSL non-compliant FIPS Provider" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/hmac.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/hmac.h new file mode 100644 index 0000000..cb866b2 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/hmac.h @@ -0,0 +1,62 @@ +/* + * 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_HMAC_H +#define OPENSSL_HMAC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_HMAC_H +#endif + +#include + +#include + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HMAC_MAX_MD_CBLOCK 200 /* Deprecated */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 size_t HMAC_size(const HMAC_CTX *e); +OSSL_DEPRECATEDIN_3_0 HMAC_CTX *HMAC_CTX_new(void); +OSSL_DEPRECATEDIN_3_0 int HMAC_CTX_reset(HMAC_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_free(HMAC_CTX *ctx); +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur int HMAC_Init(HMAC_CTX *ctx, + const void *key, int len, + const EVP_MD *md); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +OSSL_DEPRECATEDIN_3_0 int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +OSSL_DEPRECATEDIN_3_0 __owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); +#endif + +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *data, size_t data_len, + unsigned char *md, unsigned int *md_len); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/hpke.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/hpke.h new file mode 100644 index 0000000..12496ff --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/hpke.h @@ -0,0 +1,169 @@ +/* + * Copyright 2022-2024 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 + */ + +/* APIs and data structures for HPKE (RFC9180) */ +#ifndef OSSL_HPKE_H +#define OSSL_HPKE_H +#pragma once + +#include + +/* HPKE modes */ +#define OSSL_HPKE_MODE_BASE 0 /* Base mode */ +#define OSSL_HPKE_MODE_PSK 1 /* Pre-shared key mode */ +#define OSSL_HPKE_MODE_AUTH 2 /* Authenticated mode */ +#define OSSL_HPKE_MODE_PSKAUTH 3 /* PSK+authenticated mode */ + +/* + * Max for ikm, psk, pskid, info and exporter contexts. + * RFC9180, section 7.2.1 RECOMMENDS 64 octets but we have test vectors from + * Appendix A.6.1 with a 66 octet IKM so we'll allow that. + */ +#define OSSL_HPKE_MAX_PARMLEN 66 +#define OSSL_HPKE_MIN_PSKLEN 32 +#define OSSL_HPKE_MAX_INFOLEN 1024 + +/* + * The (16bit) HPKE algorithm ID IANA codepoints + * If/when new IANA codepoints are added there are tables in + * crypto/hpke/hpke_util.c that must also be updated. + */ +#define OSSL_HPKE_KEM_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_KEM_ID_P256 0x0010 /* NIST P-256 */ +#define OSSL_HPKE_KEM_ID_P384 0x0011 /* NIST P-384 */ +#define OSSL_HPKE_KEM_ID_P521 0x0012 /* NIST P-521 */ +#define OSSL_HPKE_KEM_ID_X25519 0x0020 /* Curve25519 */ +#define OSSL_HPKE_KEM_ID_X448 0x0021 /* Curve448 */ + +#define OSSL_HPKE_KDF_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA256 0x0001 /* HKDF-SHA256 */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA384 0x0002 /* HKDF-SHA384 */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA512 0x0003 /* HKDF-SHA512 */ + +#define OSSL_HPKE_AEAD_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_AEAD_ID_AES_GCM_128 0x0001 /* AES-GCM-128 */ +#define OSSL_HPKE_AEAD_ID_AES_GCM_256 0x0002 /* AES-GCM-256 */ +#define OSSL_HPKE_AEAD_ID_CHACHA_POLY1305 0x0003 /* Chacha20-Poly1305 */ +#define OSSL_HPKE_AEAD_ID_EXPORTONLY 0xFFFF /* export-only fake ID */ + +/* strings for suite components */ +#define OSSL_HPKE_KEMSTR_P256 "P-256" /* KEM id 0x10 */ +#define OSSL_HPKE_KEMSTR_P384 "P-384" /* KEM id 0x11 */ +#define OSSL_HPKE_KEMSTR_P521 "P-521" /* KEM id 0x12 */ +#define OSSL_HPKE_KEMSTR_X25519 "X25519" /* KEM id 0x20 */ +#define OSSL_HPKE_KEMSTR_X448 "X448" /* KEM id 0x21 */ +#define OSSL_HPKE_KDFSTR_256 "hkdf-sha256" /* KDF id 1 */ +#define OSSL_HPKE_KDFSTR_384 "hkdf-sha384" /* KDF id 2 */ +#define OSSL_HPKE_KDFSTR_512 "hkdf-sha512" /* KDF id 3 */ +#define OSSL_HPKE_AEADSTR_AES128GCM "aes-128-gcm" /* AEAD id 1 */ +#define OSSL_HPKE_AEADSTR_AES256GCM "aes-256-gcm" /* AEAD id 2 */ +#define OSSL_HPKE_AEADSTR_CP "chacha20-poly1305" /* AEAD id 3 */ +#define OSSL_HPKE_AEADSTR_EXP "exporter" /* AEAD id 0xff */ + +/* + * Roles for use in creating an OSSL_HPKE_CTX, most + * important use of this is to control nonce reuse. + */ +#define OSSL_HPKE_ROLE_SENDER 0 +#define OSSL_HPKE_ROLE_RECEIVER 1 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + uint16_t kem_id; /* Key Encapsulation Method id */ + uint16_t kdf_id; /* Key Derivation Function id */ + uint16_t aead_id; /* AEAD alg id */ +} OSSL_HPKE_SUITE; + +/** + * Suite constants, use this like: + * OSSL_HPKE_SUITE myvar = OSSL_HPKE_SUITE_DEFAULT; + */ +#ifndef OPENSSL_NO_ECX +#define OSSL_HPKE_SUITE_DEFAULT \ + { \ + OSSL_HPKE_KEM_ID_X25519, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#else +#define OSSL_HPKE_SUITE_DEFAULT \ + { \ + OSSL_HPKE_KEM_ID_P256, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#endif + +typedef struct ossl_hpke_ctx_st OSSL_HPKE_CTX; + +OSSL_HPKE_CTX *OSSL_HPKE_CTX_new(int mode, OSSL_HPKE_SUITE suite, int role, + OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_HPKE_CTX_free(OSSL_HPKE_CTX *ctx); + +int OSSL_HPKE_encap(OSSL_HPKE_CTX *ctx, + unsigned char *enc, size_t *enclen, + const unsigned char *pub, size_t publen, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_seal(OSSL_HPKE_CTX *ctx, + unsigned char *ct, size_t *ctlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *pt, size_t ptlen); + +int OSSL_HPKE_keygen(OSSL_HPKE_SUITE suite, + unsigned char *pub, size_t *publen, EVP_PKEY **priv, + const unsigned char *ikm, size_t ikmlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_decap(OSSL_HPKE_CTX *ctx, + const unsigned char *enc, size_t enclen, + EVP_PKEY *recippriv, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_open(OSSL_HPKE_CTX *ctx, + unsigned char *pt, size_t *ptlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *ct, size_t ctlen); + +int OSSL_HPKE_export(OSSL_HPKE_CTX *ctx, + unsigned char *secret, + size_t secretlen, + const unsigned char *label, + size_t labellen); + +int OSSL_HPKE_CTX_set1_authpriv(OSSL_HPKE_CTX *ctx, EVP_PKEY *priv); +int OSSL_HPKE_CTX_set1_authpub(OSSL_HPKE_CTX *ctx, + const unsigned char *pub, + size_t publen); +int OSSL_HPKE_CTX_set1_psk(OSSL_HPKE_CTX *ctx, + const char *pskid, + const unsigned char *psk, size_t psklen); + +int OSSL_HPKE_CTX_set1_ikme(OSSL_HPKE_CTX *ctx, + const unsigned char *ikme, size_t ikmelen); + +int OSSL_HPKE_CTX_set_seq(OSSL_HPKE_CTX *ctx, uint64_t seq); +int OSSL_HPKE_CTX_get_seq(OSSL_HPKE_CTX *ctx, uint64_t *seq); + +int OSSL_HPKE_suite_check(OSSL_HPKE_SUITE suite); +int OSSL_HPKE_get_grease_value(const OSSL_HPKE_SUITE *suite_in, + OSSL_HPKE_SUITE *suite, + unsigned char *enc, size_t *enclen, + unsigned char *ct, size_t ctlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_str2suite(const char *str, OSSL_HPKE_SUITE *suite); +size_t OSSL_HPKE_get_ciphertext_size(OSSL_HPKE_SUITE suite, size_t clearlen); +size_t OSSL_HPKE_get_public_encap_size(OSSL_HPKE_SUITE suite); +size_t OSSL_HPKE_get_recommended_ikmelen(OSSL_HPKE_SUITE suite); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/http.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/http.h new file mode 100644 index 0000000..91aa923 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/http.h @@ -0,0 +1,117 @@ +/* + * Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Siemens AG 2018-2020 + * + * 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_HTTP_H +#define OPENSSL_HTTP_H +#pragma once + +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_HTTP_NAME "http" +#define OSSL_HTTPS_NAME "https" +#define OSSL_HTTP_PREFIX OSSL_HTTP_NAME "://" +#define OSSL_HTTPS_PREFIX OSSL_HTTPS_NAME "://" +#define OSSL_HTTP_PORT "80" +#define OSSL_HTTPS_PORT "443" +#define OPENSSL_NO_PROXY "NO_PROXY" +#define OPENSSL_HTTP_PROXY "HTTP_PROXY" +#define OPENSSL_HTTPS_PROXY "HTTPS_PROXY" + +/* We want to have this even in case of OPENSSL_NO_HTTP */ +int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); + +#ifndef OPENSSL_NO_HTTP + +#define OSSL_HTTP_DEFAULT_MAX_LINE_LEN (4 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_RESP_LEN (100 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_CRL_LEN (32 * 1024 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_RESP_HDR_LINES 256 + +/* Low-level HTTP API */ +OSSL_HTTP_REQ_CTX *OSSL_HTTP_REQ_CTX_new(BIO *wbio, BIO *rbio, int buf_size); +void OSSL_HTTP_REQ_CTX_free(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_set_request_line(OSSL_HTTP_REQ_CTX *rctx, int method_POST, + const char *server, const char *port, + const char *path); +int OSSL_HTTP_REQ_CTX_add1_header(OSSL_HTTP_REQ_CTX *rctx, + const char *name, const char *value); +int OSSL_HTTP_REQ_CTX_set_expected(OSSL_HTTP_REQ_CTX *rctx, + const char *content_type, int asn1, + int timeout, int keep_alive); +int OSSL_HTTP_REQ_CTX_set1_req(OSSL_HTTP_REQ_CTX *rctx, const char *content_type, + const ASN1_ITEM *it, const ASN1_VALUE *req); +int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_nbio_d2i(OSSL_HTTP_REQ_CTX *rctx, + ASN1_VALUE **pval, const ASN1_ITEM *it); +BIO *OSSL_HTTP_REQ_CTX_exchange(OSSL_HTTP_REQ_CTX *rctx); +BIO *OSSL_HTTP_REQ_CTX_get0_mem_bio(const OSSL_HTTP_REQ_CTX *rctx); +size_t OSSL_HTTP_REQ_CTX_get_resp_len(const OSSL_HTTP_REQ_CTX *rctx); +void OSSL_HTTP_REQ_CTX_set_max_response_length(OSSL_HTTP_REQ_CTX *rctx, + unsigned long len); +void OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines(OSSL_HTTP_REQ_CTX *rctx, + size_t count); +int OSSL_HTTP_is_alive(const OSSL_HTTP_REQ_CTX *rctx); + +/* High-level HTTP API */ +typedef BIO *(*OSSL_HTTP_bio_cb_t)(BIO *bio, void *arg, int connect, int detail); +OSSL_HTTP_REQ_CTX *OSSL_HTTP_open(const char *server, const char *port, + const char *proxy, const char *no_proxy, + int use_ssl, BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, int overall_timeout); +int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port, + const char *proxyuser, const char *proxypass, + int timeout, BIO *bio_err, const char *prog); +int OSSL_HTTP_set1_request(OSSL_HTTP_REQ_CTX *rctx, const char *path, + const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +BIO *OSSL_HTTP_exchange(OSSL_HTTP_REQ_CTX *rctx, char **redirection_url); +BIO *OSSL_HTTP_get(const char *url, const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout); +BIO *OSSL_HTTP_transfer(OSSL_HTTP_REQ_CTX **prctx, + const char *server, const char *port, + const char *path, int use_ssl, + const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +int OSSL_HTTP_close(OSSL_HTTP_REQ_CTX *rctx, int ok); + +/* Auxiliary functions */ +int OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); +const char *OSSL_HTTP_adapt_proxy(const char *proxy, const char *no_proxy, + const char *server, int use_ssl); + +#endif /* !defined(OPENSSL_NO_HTTP) */ +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_HTTP_H) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/httperr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/httperr.h new file mode 100644 index 0000000..4c1cc6a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/httperr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2026 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_HTTPERR_H +#define OPENSSL_HTTPERR_H +#pragma once + +#include +#include +#include + +/* + * HTTP reason codes. + */ +#define HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN 108 +#define HTTP_R_CONNECT_FAILURE 100 +#define HTTP_R_CONTENT_TYPE_MISMATCH 131 +#define HTTP_R_ERROR_PARSING_ASN1_LENGTH 109 +#define HTTP_R_ERROR_PARSING_CONTENT_LENGTH 119 +#define HTTP_R_ERROR_PARSING_URL 101 +#define HTTP_R_ERROR_RECEIVING 103 +#define HTTP_R_ERROR_SENDING 102 +#define HTTP_R_FAILED_READING_DATA 128 +#define HTTP_R_HEADER_PARSE_ERROR 126 +#define HTTP_R_INCONSISTENT_CONTENT_LENGTH 120 +#define HTTP_R_INVALID_PORT_NUMBER 123 +#define HTTP_R_INVALID_URL_PATH 125 +#define HTTP_R_INVALID_URL_SCHEME 124 +#define HTTP_R_MAX_RESP_LEN_EXCEEDED 117 +#define HTTP_R_MISSING_ASN1_ENCODING 110 +#define HTTP_R_MISSING_CONTENT_TYPE 121 +#define HTTP_R_MISSING_REDIRECT_LOCATION 111 +#define HTTP_R_RECEIVED_ERROR 105 +#define HTTP_R_RECEIVED_WRONG_HTTP_VERSION 106 +#define HTTP_R_REDIRECTION_FROM_HTTPS_TO_HTTP 112 +#define HTTP_R_REDIRECTION_NOT_ENABLED 116 +#define HTTP_R_RESPONSE_LINE_TOO_LONG 113 +#define HTTP_R_RESPONSE_PARSE_ERROR 104 +#define HTTP_R_RESPONSE_TOO_MANY_HDRLINES 130 +#define HTTP_R_RETRY_TIMEOUT 129 +#define HTTP_R_SERVER_CANCELED_CONNECTION 127 +#define HTTP_R_SOCK_NOT_SUPPORTED 122 +#define HTTP_R_STATUS_CODE_UNSUPPORTED 114 +#define HTTP_R_TLS_NOT_ENABLED 107 +#define HTTP_R_TOO_MANY_REDIRECTIONS 115 +#define HTTP_R_UNEXPECTED_CONTENT_TYPE 118 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/idea.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/idea.h new file mode 100644 index 0000000..674a941 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/idea.h @@ -0,0 +1,82 @@ +/* + * 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_IDEA_H +#define OPENSSL_IDEA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_IDEA_H +#endif + +#include + +#ifndef OPENSSL_NO_IDEA +#ifdef __cplusplus +extern "C" { +#endif + +#define IDEA_BLOCK 8 +#define IDEA_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef unsigned int IDEA_INT; + +#define IDEA_ENCRYPT 1 +#define IDEA_DECRYPT 0 + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *IDEA_options(void); +OSSL_DEPRECATEDIN_3_0 void IDEA_ecb_encrypt(const unsigned char *in, + unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_encrypt_key(const unsigned char *key, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, + IDEA_KEY_SCHEDULE *dk); +OSSL_DEPRECATEDIN_3_0 void IDEA_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num); +OSSL_DEPRECATEDIN_3_0 void IDEA_encrypt(unsigned long *in, + IDEA_KEY_SCHEDULE *ks); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define idea_options IDEA_options +#define idea_ecb_encrypt IDEA_ecb_encrypt +#define idea_set_encrypt_key IDEA_set_encrypt_key +#define idea_set_decrypt_key IDEA_set_decrypt_key +#define idea_cbc_encrypt IDEA_cbc_encrypt +#define idea_cfb64_encrypt IDEA_cfb64_encrypt +#define idea_ofb64_encrypt IDEA_ofb64_encrypt +#define idea_encrypt IDEA_encrypt +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/indicator.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/indicator.h new file mode 100644 index 0000000..66d6f42 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/indicator.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024 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_INDICATOR_H +#define OPENSSL_INDICATOR_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef int(OSSL_INDICATOR_CALLBACK)(const char *type, const char *desc, + const OSSL_PARAM params[]); + +void OSSL_INDICATOR_set_callback(OSSL_LIB_CTX *libctx, + OSSL_INDICATOR_CALLBACK *cb); +void OSSL_INDICATOR_get_callback(OSSL_LIB_CTX *libctx, + OSSL_INDICATOR_CALLBACK **cb); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_INDICATOR_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/kdf.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/kdf.h new file mode 100644 index 0000000..f3267ea --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/kdf.h @@ -0,0 +1,141 @@ +/* + * Copyright 2016-2025 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_KDF_H +#define OPENSSL_KDF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_KDF_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int EVP_KDF_up_ref(EVP_KDF *kdf); +void EVP_KDF_free(EVP_KDF *kdf); +EVP_KDF *EVP_KDF_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); + +EVP_KDF_CTX *EVP_KDF_CTX_new(EVP_KDF *kdf); +void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx); +EVP_KDF_CTX *EVP_KDF_CTX_dup(const EVP_KDF_CTX *src); +const char *EVP_KDF_get0_description(const EVP_KDF *kdf); +int EVP_KDF_is_a(const EVP_KDF *kdf, const char *name); +const char *EVP_KDF_get0_name(const EVP_KDF *kdf); +const OSSL_PROVIDER *EVP_KDF_get0_provider(const EVP_KDF *kdf); +const EVP_KDF *EVP_KDF_CTX_kdf(EVP_KDF_CTX *ctx); + +void EVP_KDF_CTX_reset(EVP_KDF_CTX *ctx); +size_t EVP_KDF_CTX_get_kdf_size(EVP_KDF_CTX *ctx); +int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_KDF_CTX_set_SKEY(EVP_KDF_CTX *ctx, EVP_SKEY *key, const char *paramname); +EVP_SKEY *EVP_KDF_derive_SKEY(EVP_KDF_CTX *ctx, EVP_SKEYMGMT *mgmt, + const char *key_type, const char *propquery, + size_t keylen, const OSSL_PARAM params[]); +int EVP_KDF_get_params(EVP_KDF *kdf, OSSL_PARAM params[]); +int EVP_KDF_CTX_get_params(EVP_KDF_CTX *ctx, OSSL_PARAM params[]); +int EVP_KDF_CTX_set_params(EVP_KDF_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_KDF_gettable_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_gettable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_settable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_CTX_gettable_params(EVP_KDF_CTX *ctx); +const OSSL_PARAM *EVP_KDF_CTX_settable_params(EVP_KDF_CTX *ctx); + +void EVP_KDF_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KDF *kdf, void *arg), + void *arg); +int EVP_KDF_names_do_all(const EVP_KDF *kdf, + void (*fn)(const char *name, void *data), + void *data); + +#define EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND 0 +#define EVP_KDF_HKDF_MODE_EXTRACT_ONLY 1 +#define EVP_KDF_HKDF_MODE_EXPAND_ONLY 2 + +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV 65 +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_SRV_TO_CLI 66 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_CLI_TO_SRV 67 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_SRV_TO_CLI 68 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_CLI_TO_SRV 69 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_SRV_TO_CLI 70 + +/**** The legacy PKEY-based KDF API follows. ****/ + +#define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) +#define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_TLS_SEED (EVP_PKEY_ALG_CTRL + 2) +#define EVP_PKEY_CTRL_HKDF_MD (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_HKDF_SALT (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_HKDF_KEY (EVP_PKEY_ALG_CTRL + 5) +#define EVP_PKEY_CTRL_HKDF_INFO (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_HKDF_MODE (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_PASS (EVP_PKEY_ALG_CTRL + 8) +#define EVP_PKEY_CTRL_SCRYPT_SALT (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_SCRYPT_N (EVP_PKEY_ALG_CTRL + 10) +#define EVP_PKEY_CTRL_SCRYPT_R (EVP_PKEY_ALG_CTRL + 11) +#define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) +#define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) + +#define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND \ + EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND +#define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY \ + EVP_KDF_HKDF_MODE_EXTRACT_ONLY +#define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY \ + EVP_KDF_HKDF_MODE_EXPAND_ONLY + +int EVP_PKEY_CTX_set_tls1_prf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_tls1_prf_secret(EVP_PKEY_CTX *pctx, + const unsigned char *sec, int seclen); + +int EVP_PKEY_CTX_add1_tls1_prf_seed(EVP_PKEY_CTX *pctx, + const unsigned char *seed, int seedlen); + +int EVP_PKEY_CTX_set_hkdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_hkdf_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set1_hkdf_key(EVP_PKEY_CTX *ctx, + const unsigned char *key, int keylen); + +int EVP_PKEY_CTX_add1_hkdf_info(EVP_PKEY_CTX *ctx, + const unsigned char *info, int infolen); + +int EVP_PKEY_CTX_set_hkdf_mode(EVP_PKEY_CTX *ctx, int mode); +#define EVP_PKEY_CTX_hkdf_mode EVP_PKEY_CTX_set_hkdf_mode + +int EVP_PKEY_CTX_set1_pbe_pass(EVP_PKEY_CTX *ctx, const char *pass, + int passlen); + +int EVP_PKEY_CTX_set1_scrypt_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set_scrypt_N(EVP_PKEY_CTX *ctx, uint64_t n); + +int EVP_PKEY_CTX_set_scrypt_r(EVP_PKEY_CTX *ctx, uint64_t r); + +int EVP_PKEY_CTX_set_scrypt_p(EVP_PKEY_CTX *ctx, uint64_t p); + +int EVP_PKEY_CTX_set_scrypt_maxmem_bytes(EVP_PKEY_CTX *ctx, + uint64_t maxmem_bytes); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/kdferr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/kdferr.h new file mode 100644 index 0000000..a2c1f24 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/kdferr.h @@ -0,0 +1,16 @@ +/* + * 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_KDFERR_H +#define OPENSSL_KDFERR_H +#pragma once + +#include + +#endif /* !defined(OPENSSL_KDFERR_H) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/lhash.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/lhash.h new file mode 100644 index 0000000..dab9372 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/lhash.h @@ -0,0 +1,417 @@ +/* + * Copyright 1995-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef OPENSSL_LHASH_H +#define OPENSSL_LHASH_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_LHASH_H +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC)(const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK)(const void *, const void *, OPENSSL_LH_COMPFUNC cfn); +typedef unsigned long (*OPENSSL_LH_HASHFUNC)(const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK)(const void *, OPENSSL_LH_HASHFUNC hfn); +typedef void (*OPENSSL_LH_DOALL_FUNC)(void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK)(void *, OPENSSL_LH_DOALL_FUNC doall); +typedef void (*OPENSSL_LH_DOALL_FUNCARG)(void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK)(void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +#define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +#define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) \ + { \ + const o_type *a = arg; \ + return name##_hash(a); \ + } +#define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +#define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +#define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) \ + { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a, b); \ + } +#define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +#define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +#define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) \ + { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); \ + } +#define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + +#define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void OPENSSL_LH_flush(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +#ifndef OPENSSL_NO_STDIO +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _LHASH OPENSSL_LHASH +#define LHASH_NODE OPENSSL_LH_NODE +#define lh_error OPENSSL_LH_error +#define lh_new OPENSSL_LH_new +#define lh_free OPENSSL_LH_free +#define lh_insert OPENSSL_LH_insert +#define lh_delete OPENSSL_LH_delete +#define lh_retrieve OPENSSL_LH_retrieve +#define lh_doall OPENSSL_LH_doall +#define lh_doall_arg OPENSSL_LH_doall_arg +#define lh_strhash OPENSSL_LH_strhash +#define lh_num_items OPENSSL_LH_num_items +#ifndef OPENSSL_NO_STDIO +#define lh_stats OPENSSL_LH_stats +#define lh_node_stats OPENSSL_LH_node_stats +#define lh_node_usage_stats OPENSSL_LH_node_usage_stats +#endif +#define lh_stats_bio OPENSSL_LH_stats_bio +#define lh_node_stats_bio OPENSSL_LH_node_stats_bio +#define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +#endif + +/* Type checking... */ + +#define LHASH_OF(type) struct lhash_st_##type + +/* Helper macro for internal use */ +#define DEFINE_LHASH_OF_INTERNAL(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ + typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ + typedef void (*lh_##type##_doallfunc)(type * a); \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type * \ + ossl_check_##type##_lh_plain_type(type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + { \ + return (const OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + { \ + return (OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + { \ + return (OPENSSL_LH_COMPFUNC)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + { \ + return (OPENSSL_LH_HASHFUNC)hfn; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + { \ + return (OPENSSL_LH_DOALL_FUNC)dfn; \ + } \ + LHASH_OF(type) + +#ifndef OPENSSL_NO_DEPRECATED_3_1 +#define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +#else +#define DEFINE_LHASH_OF_DEPRECATED(type) +#endif + +#define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ + (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ + } \ + LHASH_OF(type) + +#define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ + } \ + LHASH_OF(type) + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) +#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) +#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) +DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) +#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) +#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/macros.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/macros.h new file mode 100644 index 0000000..598d3fc --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/macros.h @@ -0,0 +1,361 @@ +/* + * Copyright 2019-2026 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_MACROS_H +#define OPENSSL_MACROS_H +#pragma once + +#include +#include + +/* Helper macros for CPP string composition */ +#define OPENSSL_MSTR_HELPER(x) #x +#define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x) + +/* + * Sometimes OPENSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Generic deprecation macro + * + * If OPENSSL_SUPPRESS_DEPRECATED is defined, then OSSL_DEPRECATED and + * OSSL_DEPRECATED_FOR become no-ops + */ +#ifndef OSSL_DEPRECATED +#undef OSSL_DEPRECATED_FOR +#ifndef OPENSSL_SUPPRESS_DEPRECATED +#if defined(_MSC_VER) +/* + * MSVC supports __declspec(deprecated) since MSVC 2003 (13.10), + * and __declspec(deprecated(message)) since MSVC 2005 (14.00) + */ +#if _MSC_VER >= 1400 +#define OSSL_DEPRECATED(since) \ + __declspec(deprecated("Since OpenSSL " #since)) +#define OSSL_DEPRECATED_FOR(since, message) \ + __declspec(deprecated("Since OpenSSL " #since ";" message)) +#elif _MSC_VER >= 1310 +#define OSSL_DEPRECATED(since) __declspec(deprecated) +#define OSSL_DEPRECATED_FOR(since, message) __declspec(deprecated) +#endif +#elif defined(__GNUC__) +/* + * According to GCC documentation, deprecations with message appeared in + * GCC 4.5.0 + */ +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +#define OSSL_DEPRECATED(since) \ + __attribute__((deprecated("Since OpenSSL " #since))) +#define OSSL_DEPRECATED_FOR(since, message) \ + __attribute__((deprecated("Since OpenSSL " #since ";" message))) +#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +#define OSSL_DEPRECATED(since) __attribute__((deprecated)) +#define OSSL_DEPRECATED_FOR(since, message) __attribute__((deprecated)) +#endif +#elif defined(__SUNPRO_C) +#if (__SUNPRO_C >= 0x5130) +#define OSSL_DEPRECATED(since) __attribute__((deprecated)) +#define OSSL_DEPRECATED_FOR(since, message) __attribute__((deprecated)) +#endif +#endif +#endif +#endif + +/* + * Still not defined? Then define no-op macros. This means these macros + * are unsuitable for use in a typedef. + */ +#ifndef OSSL_DEPRECATED +#define OSSL_DEPRECATED(since) extern +#define OSSL_DEPRECATED_FOR(since, message) extern +#endif + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . If this is + * undefined, the value of the macro OPENSSL_CONFIGURED_API (defined in + * ) is the default. + * + * For any version number up until version 1.1.x, is expected to be + * the calculated version number 0xMNNFFPPSL. + * For version numbers 3.0 and on, is expected to be a computation + * of the major and minor numbers in decimal using this formula: + * + * MAJOR * 10000 + MINOR * 100 + * + * So version 3.0 becomes 30000, version 3.2 becomes 30200, etc. + */ + +/* + * We use the OPENSSL_API_COMPAT value to define API level macros. These + * macros are used to enable or disable features at that API version boundary. + */ + +#ifdef OPENSSL_API_LEVEL +#error "OPENSSL_API_LEVEL must not be defined by application" +#endif + +/* + * We figure out what API level was intended by simple numeric comparison. + * The lowest old style number we recognise is 0x00908000L, so we take some + * safety margin and assume that anything below 0x00900000L is a new style + * number. This allows new versions up to and including v943.71.83. + */ +#ifdef OPENSSL_API_COMPAT +#if OPENSSL_API_COMPAT < 0x900000L +#define OPENSSL_API_LEVEL (OPENSSL_API_COMPAT) +#else +#define OPENSSL_API_LEVEL \ + (((OPENSSL_API_COMPAT >> 28) & 0xF) * 10000 \ + + ((OPENSSL_API_COMPAT >> 20) & 0xFF) * 100 \ + + ((OPENSSL_API_COMPAT >> 12) & 0xFF)) +#endif +#endif + +/* + * If OPENSSL_API_COMPAT wasn't given, we use default numbers to set + * the API compatibility level. + */ +#ifndef OPENSSL_API_LEVEL +#if OPENSSL_CONFIGURED_API > 0 +#define OPENSSL_API_LEVEL (OPENSSL_CONFIGURED_API) +#else +#define OPENSSL_API_LEVEL \ + (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +#endif +#endif + +#if OPENSSL_API_LEVEL > OPENSSL_CONFIGURED_API +#error "The requested API level higher than the configured API compatibility level" +#endif + +/* + * Check of sane values. + */ +/* Can't go higher than the current version. */ +#if OPENSSL_API_LEVEL > (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif +/* OpenSSL will have no version 2.y.z */ +#if OPENSSL_API_LEVEL < 30000 && OPENSSL_API_LEVEL >= 20000 +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif +/* Below 0.9.8 is unacceptably low */ +#if OPENSSL_API_LEVEL < 908 +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif + +/* + * Define macros for deprecation and simulated removal purposes. + * + * The macros OSSL_DEPRECATEDIN_{major}_{minor} are always defined for + * all OpenSSL versions we care for. They can be used as attributes + * in function declarations where appropriate. + * + * The macros OPENSSL_NO_DEPRECATED_{major}_{minor} are defined for + * all OpenSSL versions up to or equal to the version given with + * OPENSSL_API_COMPAT. They are used as guards around anything that's + * deprecated up to that version, as an effect of the developer option + * 'no-deprecated'. + */ + +#undef OPENSSL_NO_DEPRECATED_3_6 +#undef OPENSSL_NO_DEPRECATED_3_5 +#undef OPENSSL_NO_DEPRECATED_3_4 +#undef OPENSSL_NO_DEPRECATED_3_1 +#undef OPENSSL_NO_DEPRECATED_3_0 +#undef OPENSSL_NO_DEPRECATED_1_1_1 +#undef OPENSSL_NO_DEPRECATED_1_1_0 +#undef OPENSSL_NO_DEPRECATED_1_0_2 +#undef OPENSSL_NO_DEPRECATED_1_0_1 +#undef OPENSSL_NO_DEPRECATED_1_0_0 +#undef OPENSSL_NO_DEPRECATED_0_9_8 + +#if OPENSSL_API_LEVEL >= 30600 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_6 OSSL_DEPRECATED(3.6) +#define OSSL_DEPRECATEDIN_3_6_FOR(msg) OSSL_DEPRECATED_FOR(3.6, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_6 +#endif +#else +#define OSSL_DEPRECATEDIN_3_6 +#define OSSL_DEPRECATEDIN_3_6_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30500 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_5 OSSL_DEPRECATED(3.5) +#define OSSL_DEPRECATEDIN_3_5_FOR(msg) OSSL_DEPRECATED_FOR(3.5, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_5 +#endif +#else +#define OSSL_DEPRECATEDIN_3_5 +#define OSSL_DEPRECATEDIN_3_5_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30400 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_4 OSSL_DEPRECATED(3.4) +#define OSSL_DEPRECATEDIN_3_4_FOR(msg) OSSL_DEPRECATED_FOR(3.4, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_4 +#endif +#else +#define OSSL_DEPRECATEDIN_3_4 +#define OSSL_DEPRECATEDIN_3_4_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30100 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_1 OSSL_DEPRECATED(3.1) +#define OSSL_DEPRECATEDIN_3_1_FOR(msg) OSSL_DEPRECATED_FOR(3.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_1 +#endif +#else +#define OSSL_DEPRECATEDIN_3_1 +#define OSSL_DEPRECATEDIN_3_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30000 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_0 OSSL_DEPRECATED(3.0) +#define OSSL_DEPRECATEDIN_3_0_FOR(msg) OSSL_DEPRECATED_FOR(3.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_0 +#endif +#else +#define OSSL_DEPRECATEDIN_3_0 +#define OSSL_DEPRECATEDIN_3_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10101 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_1_1 OSSL_DEPRECATED(1.1.1) +#define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) OSSL_DEPRECATED_FOR(1.1.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_1_1 +#endif +#else +#define OSSL_DEPRECATEDIN_1_1_1 +#define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10100 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_1_0 OSSL_DEPRECATED(1.1.0) +#define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) OSSL_DEPRECATED_FOR(1.1.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_1_0 +#endif +#else +#define OSSL_DEPRECATEDIN_1_1_0 +#define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10002 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_2 OSSL_DEPRECATED(1.0.2) +#define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) OSSL_DEPRECATED_FOR(1.0.2, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_2 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_2 +#define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10001 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_1 OSSL_DEPRECATED(1.0.1) +#define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) OSSL_DEPRECATED_FOR(1.0.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_1 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_1 +#define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10000 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_0 OSSL_DEPRECATED(1.0.0) +#define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) OSSL_DEPRECATED_FOR(1.0.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_0 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_0 +#define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 908 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_0_9_8 OSSL_DEPRECATED(0.9.8) +#define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) OSSL_DEPRECATED_FOR(0.9.8, msg) +#else +#define OPENSSL_NO_DEPRECATED_0_9_8 +#endif +#else +#define OSSL_DEPRECATEDIN_0_9_8 +#define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) +#endif + +/* + * Make our own variants of __FILE__ and __LINE__, depending on configuration + */ + +#ifndef OPENSSL_FILE +#ifdef OPENSSL_NO_FILENAMES +#define OPENSSL_FILE "" +#define OPENSSL_LINE 0 +#else +#define OPENSSL_FILE __FILE__ +#define OPENSSL_LINE __LINE__ +#endif +#endif + +/* + * __func__ was standardized in C99, so for any compiler that claims + * to implement that language level or newer, we assume we can safely + * use that symbol. + * + * GNU C also provides __FUNCTION__ since version 2, which predates + * C99. We can, however, only use this if __STDC_VERSION__ exists, + * as it's otherwise not allowed according to ISO C standards (C90). + * (compiling with GNU C's -pedantic tells us so) + * + * If none of the above applies, we check if the compiler is MSVC, + * and use __FUNCTION__ if that's the case. + */ +#ifndef OPENSSL_FUNC +#if defined(__STDC_VERSION__) +#if __STDC_VERSION__ >= 199901L +#define OPENSSL_FUNC __func__ +#elif defined(__GNUC__) && __GNUC__ >= 2 +#define OPENSSL_FUNC __FUNCTION__ +#endif +#elif defined(_MSC_VER) +#define OPENSSL_FUNC __FUNCTION__ +#endif +/* + * If all these possibilities are exhausted, we give up and use a + * static string. + */ +#ifndef OPENSSL_FUNC +#define OPENSSL_FUNC "(unknown function)" +#endif +#endif + +#ifndef OSSL_CRYPTO_ALLOC +#if defined(__GNUC__) +#define OSSL_CRYPTO_ALLOC __attribute__((__malloc__)) +#elif defined(_MSC_VER) +#define OSSL_CRYPTO_ALLOC __declspec(restrict) +#else +#define OSSL_CRYPTO_ALLOC +#endif +#endif + +#endif /* OPENSSL_MACROS_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md2.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md2.h new file mode 100644 index 0000000..10d9a0f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md2.h @@ -0,0 +1,56 @@ +/* + * 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_MD2_H +#define OPENSSL_MD2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD2_H +#endif + +#include + +#ifndef OPENSSL_NO_MD2 +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD2_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +typedef unsigned char MD2_INT; + +#define MD2_BLOCK 16 + +typedef struct MD2state_st { + unsigned int num; + unsigned char data[MD2_BLOCK]; + MD2_INT cksm[MD2_BLOCK]; + MD2_INT state[MD2_BLOCK]; +} MD2_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *MD2_options(void); +OSSL_DEPRECATEDIN_3_0 int MD2_Init(MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD2_Update(MD2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MD2_Final(unsigned char *md, MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD2(const unsigned char *d, size_t n, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md4.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md4.h new file mode 100644 index 0000000..d60fe4a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md4.h @@ -0,0 +1,63 @@ +/* + * 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_MD4_H +#define OPENSSL_MD4_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD4_H +#endif + +#include + +#ifndef OPENSSL_NO_MD4 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD4_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD4_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define MD4_LONG unsigned int + +#define MD4_CBLOCK 64 +#define MD4_LBLOCK (MD4_CBLOCK / 4) + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD4_Init(MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD4_Update(MD4_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD4_Final(unsigned char *md, MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD4(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD4_Transform(MD4_CTX *c, const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md5.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md5.h new file mode 100644 index 0000000..0ec3d1c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/md5.h @@ -0,0 +1,62 @@ +/* + * 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_MD5_H +#define OPENSSL_MD5_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD5_H +#endif + +#include + +#ifndef OPENSSL_NO_MD5 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD5_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD5_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define MD5_LONG unsigned int + +#define MD5_CBLOCK 64 +#define MD5_LBLOCK (MD5_CBLOCK / 4) + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD5_Init(MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD5_Update(MD5_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD5_Final(unsigned char *md, MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD5(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD5_Transform(MD5_CTX *c, const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/mdc2.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/mdc2.h new file mode 100644 index 0000000..46c9652 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/mdc2.h @@ -0,0 +1,55 @@ +/* + * 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_MDC2_H +#define OPENSSL_MDC2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MDC2_H +#endif + +#include + +#ifndef OPENSSL_NO_MDC2 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MDC2_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define MDC2_BLOCK 8 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + unsigned int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MDC2_Init(MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MDC2_Update(MDC2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MDC2_Final(unsigned char *md, MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MDC2(const unsigned char *d, size_t n, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ml_kem.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ml_kem.h new file mode 100644 index 0000000..fe5b0e2 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ml_kem.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024-2025 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_ML_KEM_H +#define OPENSSL_ML_KEM_H +#pragma once + +#define OSSL_ML_KEM_SHARED_SECRET_BYTES 32 + +#define OSSL_ML_KEM_512_BITS 512 +#define OSSL_ML_KEM_512_SECURITY_BITS 128 +#define OSSL_ML_KEM_512_CIPHERTEXT_BYTES 768 +#define OSSL_ML_KEM_512_PUBLIC_KEY_BYTES 800 + +#define OSSL_ML_KEM_768_BITS 768 +#define OSSL_ML_KEM_768_SECURITY_BITS 192 +#define OSSL_ML_KEM_768_CIPHERTEXT_BYTES 1088 +#define OSSL_ML_KEM_768_PUBLIC_KEY_BYTES 1184 + +#define OSSL_ML_KEM_1024_BITS 1024 +#define OSSL_ML_KEM_1024_SECURITY_BITS 256 +#define OSSL_ML_KEM_1024_CIPHERTEXT_BYTES 1568 +#define OSSL_ML_KEM_1024_PUBLIC_KEY_BYTES 1568 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/modes.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/modes.h new file mode 100644 index 0000000..df11114 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/modes.h @@ -0,0 +1,219 @@ +/* + * Copyright 2008-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_MODES_H +#define OPENSSL_MODES_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MODES_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +typedef void (*block128_f)(const unsigned char in[16], + unsigned char out[16], const void *key); + +typedef void (*cbc128_f)(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int enc); + +typedef void (*ecb128_f)(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + int enc); + +typedef void (*ctr128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16]); + +typedef void (*ccm128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16], + unsigned char cmac[16]); + +void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); +void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); + +void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], unsigned int *num, + block128_f block); + +void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], + unsigned int *num, ctr128_f ctr); + +void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + block128_f block); + +void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, + size_t bits, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); + +size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +typedef struct gcm128_context GCM128_CONTEXT; + +GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); +void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); +void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, + size_t len); +int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); + +typedef struct ccm128_context CCM128_CONTEXT; + +void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, + unsigned int M, unsigned int L, void *key, + block128_f block); +int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, + size_t nlen, size_t mlen); +void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, + size_t alen); +int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); + +typedef struct xts128_context XTS128_CONTEXT; + +int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + +size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); +size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); +size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); + +#ifndef OPENSSL_NO_OCB +typedef struct ocb128_context OCB128_CONTEXT; + +typedef void (*ocb128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + size_t start_block_num, + unsigned char offset_i[16], + const unsigned char L_[][16], + unsigned char checksum[16]); + +OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src, + void *keyenc, void *keydec); +int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv, + size_t len, size_t taglen); +int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx); +#endif /* OPENSSL_NO_OCB */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/obj_mac.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/obj_mac.h new file mode 100644 index 0000000..236e88f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/obj_mac.h @@ -0,0 +1,6695 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2025 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_OBJ_MAC_H +# define OPENSSL_OBJ_MAC_H +# pragma once + +#define SN_undef "UNDEF" +#define LN_undef "undefined" +#define NID_undef 0 +#define OBJ_undef 0L + +#define SN_itu_t "ITU-T" +#define LN_itu_t "itu-t" +#define NID_itu_t 645 +#define OBJ_itu_t 0L + +#define NID_ccitt 404 +#define OBJ_ccitt OBJ_itu_t + +#define SN_iso "ISO" +#define LN_iso "iso" +#define NID_iso 181 +#define OBJ_iso 1L + +#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" +#define LN_joint_iso_itu_t "joint-iso-itu-t" +#define NID_joint_iso_itu_t 646 +#define OBJ_joint_iso_itu_t 2L + +#define NID_joint_iso_ccitt 393 +#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t + +#define SN_member_body "member-body" +#define LN_member_body "ISO Member Body" +#define NID_member_body 182 +#define OBJ_member_body OBJ_iso,2L + +#define SN_identified_organization "identified-organization" +#define NID_identified_organization 676 +#define OBJ_identified_organization OBJ_iso,3L + +#define SN_gmac "GMAC" +#define LN_gmac "gmac" +#define NID_gmac 1195 +#define OBJ_gmac OBJ_iso,0L,9797L,3L,4L + +#define SN_hmac_md5 "HMAC-MD5" +#define LN_hmac_md5 "hmac-md5" +#define NID_hmac_md5 780 +#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L + +#define SN_hmac_sha1 "HMAC-SHA1" +#define LN_hmac_sha1 "hmac-sha1" +#define NID_hmac_sha1 781 +#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L + +#define SN_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#define SN_international_organizations "international-organizations" +#define LN_international_organizations "International Organizations" +#define NID_international_organizations 647 +#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L + +#define SN_wap "wap" +#define NID_wap 678 +#define OBJ_wap OBJ_international_organizations,43L + +#define SN_wap_wsg "wap-wsg" +#define NID_wap_wsg 679 +#define OBJ_wap_wsg OBJ_wap,1L + +#define SN_selected_attribute_types "selected-attribute-types" +#define LN_selected_attribute_types "Selected Attribute Types" +#define NID_selected_attribute_types 394 +#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L + +#define SN_clearance "clearance" +#define NID_clearance 395 +#define OBJ_clearance OBJ_selected_attribute_types,55L + +#define SN_ISO_US "ISO-US" +#define LN_ISO_US "ISO US Member Body" +#define NID_ISO_US 183 +#define OBJ_ISO_US OBJ_member_body,840L + +#define SN_X9_57 "X9-57" +#define LN_X9_57 "X9.57" +#define NID_X9_57 184 +#define OBJ_X9_57 OBJ_ISO_US,10040L + +#define SN_X9cm "X9cm" +#define LN_X9cm "X9.57 CM ?" +#define NID_X9cm 185 +#define OBJ_X9cm OBJ_X9_57,4L + +#define SN_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#define SN_dsa "DSA" +#define LN_dsa "dsaEncryption" +#define NID_dsa 116 +#define OBJ_dsa OBJ_X9cm,1L + +#define SN_dsaWithSHA1 "DSA-SHA1" +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define NID_dsaWithSHA1 113 +#define OBJ_dsaWithSHA1 OBJ_X9cm,3L + +#define SN_ansi_X9_62 "ansi-X9-62" +#define LN_ansi_X9_62 "ANSI X9.62" +#define NID_ansi_X9_62 405 +#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L + +#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L + +#define SN_X9_62_prime_field "prime-field" +#define NID_X9_62_prime_field 406 +#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L + +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_characteristic_two_field 407 +#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L + +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L + +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_onBasis 681 +#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L + +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_tpBasis 682 +#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L + +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_ppBasis 683 +#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L + +#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L + +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_id_ecPublicKey 408 +#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L + +#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L + +#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L + +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_c2pnb163v1 684 +#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L + +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v2 685 +#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L + +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v3 686 +#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L + +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb176v1 687 +#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L + +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2tnb191v1 688 +#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L + +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v2 689 +#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L + +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v3 690 +#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L + +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2onb191v4 691 +#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L + +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v5 692 +#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L + +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2pnb208w1 693 +#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L + +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2tnb239v1 694 +#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L + +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v2 695 +#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L + +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v3 696 +#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L + +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2onb239v4 697 +#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L + +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v5 698 +#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L + +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2pnb272w1 699 +#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L + +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb304w1 700 +#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L + +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2tnb359v1 701 +#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L + +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2pnb368w1 702 +#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L + +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2tnb431r1 703 +#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L + +#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L + +#define SN_X9_62_prime192v1 "prime192v1" +#define NID_X9_62_prime192v1 409 +#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L + +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v2 410 +#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L + +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v3 411 +#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L + +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime239v1 412 +#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L + +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v2 413 +#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L + +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v3 414 +#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L + +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_X9_62_prime256v1 415 +#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L + +#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L + +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_ecdsa_with_SHA1 416 +#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L + +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_Recommended 791 +#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L + +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Specified 792 +#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L + +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_SHA224 793 +#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L + +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA256 794 +#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L + +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA384 795 +#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L + +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA512 796 +#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L + +#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L + +#define SN_secp112r1 "secp112r1" +#define NID_secp112r1 704 +#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L + +#define SN_secp112r2 "secp112r2" +#define NID_secp112r2 705 +#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L + +#define SN_secp128r1 "secp128r1" +#define NID_secp128r1 706 +#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L + +#define SN_secp128r2 "secp128r2" +#define NID_secp128r2 707 +#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L + +#define SN_secp160k1 "secp160k1" +#define NID_secp160k1 708 +#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L + +#define SN_secp160r1 "secp160r1" +#define NID_secp160r1 709 +#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L + +#define SN_secp160r2 "secp160r2" +#define NID_secp160r2 710 +#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L + +#define SN_secp192k1 "secp192k1" +#define NID_secp192k1 711 +#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L + +#define SN_secp224k1 "secp224k1" +#define NID_secp224k1 712 +#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L + +#define SN_secp224r1 "secp224r1" +#define NID_secp224r1 713 +#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L + +#define SN_secp256k1 "secp256k1" +#define NID_secp256k1 714 +#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L + +#define SN_secp384r1 "secp384r1" +#define NID_secp384r1 715 +#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L + +#define SN_secp521r1 "secp521r1" +#define NID_secp521r1 716 +#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L + +#define SN_sect113r1 "sect113r1" +#define NID_sect113r1 717 +#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L + +#define SN_sect113r2 "sect113r2" +#define NID_sect113r2 718 +#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L + +#define SN_sect131r1 "sect131r1" +#define NID_sect131r1 719 +#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L + +#define SN_sect131r2 "sect131r2" +#define NID_sect131r2 720 +#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L + +#define SN_sect163k1 "sect163k1" +#define NID_sect163k1 721 +#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L + +#define SN_sect163r1 "sect163r1" +#define NID_sect163r1 722 +#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L + +#define SN_sect163r2 "sect163r2" +#define NID_sect163r2 723 +#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L + +#define SN_sect193r1 "sect193r1" +#define NID_sect193r1 724 +#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L + +#define SN_sect193r2 "sect193r2" +#define NID_sect193r2 725 +#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L + +#define SN_sect233k1 "sect233k1" +#define NID_sect233k1 726 +#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L + +#define SN_sect233r1 "sect233r1" +#define NID_sect233r1 727 +#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L + +#define SN_sect239k1 "sect239k1" +#define NID_sect239k1 728 +#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L + +#define SN_sect283k1 "sect283k1" +#define NID_sect283k1 729 +#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L + +#define SN_sect283r1 "sect283r1" +#define NID_sect283r1 730 +#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L + +#define SN_sect409k1 "sect409k1" +#define NID_sect409k1 731 +#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L + +#define SN_sect409r1 "sect409r1" +#define NID_sect409r1 732 +#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L + +#define SN_sect571k1 "sect571k1" +#define NID_sect571k1 733 +#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L + +#define SN_sect571r1 "sect571r1" +#define NID_sect571r1 734 +#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L + +#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L + +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L + +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L + +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L + +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L + +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L + +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L + +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L + +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L + +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L + +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L + +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L + +#define SN_cast5_cbc "CAST5-CBC" +#define LN_cast5_cbc "cast5-cbc" +#define NID_cast5_cbc 108 +#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L + +#define SN_cast5_ecb "CAST5-ECB" +#define LN_cast5_ecb "cast5-ecb" +#define NID_cast5_ecb 109 + +#define SN_cast5_cfb64 "CAST5-CFB" +#define LN_cast5_cfb64 "cast5-cfb" +#define NID_cast5_cfb64 110 + +#define SN_cast5_ofb64 "CAST5-OFB" +#define LN_cast5_ofb64 "cast5-ofb" +#define NID_cast5_ofb64 111 + +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L + +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define LN_id_PasswordBasedMAC "password based MAC" +#define NID_id_PasswordBasedMAC 782 +#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L + +#define SN_id_DHBasedMac "id-DHBasedMac" +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define NID_id_DHBasedMac 783 +#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L + +#define SN_rsadsi "rsadsi" +#define LN_rsadsi "RSA Data Security, Inc." +#define NID_rsadsi 1 +#define OBJ_rsadsi OBJ_ISO_US,113549L + +#define SN_pkcs "pkcs" +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define NID_pkcs 2 +#define OBJ_pkcs OBJ_rsadsi,1L + +#define SN_pkcs1 "pkcs1" +#define NID_pkcs1 186 +#define OBJ_pkcs1 OBJ_pkcs,1L + +#define LN_rsaEncryption "rsaEncryption" +#define NID_rsaEncryption 6 +#define OBJ_rsaEncryption OBJ_pkcs1,1L + +#define SN_md2WithRSAEncryption "RSA-MD2" +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define NID_md2WithRSAEncryption 7 +#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L + +#define SN_md4WithRSAEncryption "RSA-MD4" +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define NID_md4WithRSAEncryption 396 +#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L + +#define SN_md5WithRSAEncryption "RSA-MD5" +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define NID_md5WithRSAEncryption 8 +#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L + +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define NID_sha1WithRSAEncryption 65 +#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L + +#define SN_rsaesOaep "RSAES-OAEP" +#define LN_rsaesOaep "rsaesOaep" +#define NID_rsaesOaep 919 +#define OBJ_rsaesOaep OBJ_pkcs1,7L + +#define SN_mgf1 "MGF1" +#define LN_mgf1 "mgf1" +#define NID_mgf1 911 +#define OBJ_mgf1 OBJ_pkcs1,8L + +#define SN_pSpecified "PSPECIFIED" +#define LN_pSpecified "pSpecified" +#define NID_pSpecified 935 +#define OBJ_pSpecified OBJ_pkcs1,9L + +#define SN_rsassaPss "RSASSA-PSS" +#define LN_rsassaPss "rsassaPss" +#define NID_rsassaPss 912 +#define OBJ_rsassaPss OBJ_pkcs1,10L + +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define NID_sha256WithRSAEncryption 668 +#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L + +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define NID_sha384WithRSAEncryption 669 +#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L + +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define NID_sha512WithRSAEncryption 670 +#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L + +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define NID_sha224WithRSAEncryption 671 +#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L + +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#define SN_pkcs3 "pkcs3" +#define NID_pkcs3 27 +#define OBJ_pkcs3 OBJ_pkcs,3L + +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_dhKeyAgreement 28 +#define OBJ_dhKeyAgreement OBJ_pkcs3,1L + +#define SN_pkcs5 "pkcs5" +#define NID_pkcs5 187 +#define OBJ_pkcs5 OBJ_pkcs,5L + +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define NID_pbeWithMD2AndDES_CBC 9 +#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L + +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define NID_pbeWithMD5AndDES_CBC 10 +#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L + +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L + +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L + +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L + +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L + +#define LN_id_pbkdf2 "PBKDF2" +#define NID_id_pbkdf2 69 +#define OBJ_id_pbkdf2 OBJ_pkcs5,12L + +#define LN_pbes2 "PBES2" +#define NID_pbes2 161 +#define OBJ_pbes2 OBJ_pkcs5,13L + +#define LN_pbmac1 "PBMAC1" +#define NID_pbmac1 162 +#define OBJ_pbmac1 OBJ_pkcs5,14L + +#define SN_pkcs7 "pkcs7" +#define NID_pkcs7 20 +#define OBJ_pkcs7 OBJ_pkcs,7L + +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7_data 21 +#define OBJ_pkcs7_data OBJ_pkcs7,1L + +#define LN_pkcs7_signed "pkcs7-signedData" +#define NID_pkcs7_signed 22 +#define OBJ_pkcs7_signed OBJ_pkcs7,2L + +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define NID_pkcs7_enveloped 23 +#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L + +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_signedAndEnveloped 24 +#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L + +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_digest 25 +#define OBJ_pkcs7_digest OBJ_pkcs7,5L + +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_encrypted 26 +#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L + +#define SN_pkcs9 "pkcs9" +#define NID_pkcs9 47 +#define OBJ_pkcs9 OBJ_pkcs,9L + +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9_emailAddress 48 +#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L + +#define LN_pkcs9_unstructuredName "unstructuredName" +#define NID_pkcs9_unstructuredName 49 +#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L + +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_contentType 50 +#define OBJ_pkcs9_contentType OBJ_pkcs9,3L + +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_messageDigest 51 +#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L + +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_signingTime 52 +#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L + +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_countersignature 53 +#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L + +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_challengePassword 54 +#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L + +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_unstructuredAddress 55 +#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L + +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_extCertAttributes 56 +#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L + +#define SN_ext_req "extReq" +#define LN_ext_req "Extension Request" +#define NID_ext_req 172 +#define OBJ_ext_req OBJ_pkcs9,14L + +#define SN_SMIMECapabilities "SMIME-CAPS" +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define NID_SMIMECapabilities 167 +#define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +#define SN_SMIME "SMIME" +#define LN_SMIME "S/MIME" +#define NID_SMIME 188 +#define OBJ_SMIME OBJ_pkcs9,16L + +#define SN_id_smime_mod "id-smime-mod" +#define NID_id_smime_mod 189 +#define OBJ_id_smime_mod OBJ_SMIME,0L + +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_ct 190 +#define OBJ_id_smime_ct OBJ_SMIME,1L + +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_aa 191 +#define OBJ_id_smime_aa OBJ_SMIME,2L + +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_alg 192 +#define OBJ_id_smime_alg OBJ_SMIME,3L + +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_cd 193 +#define OBJ_id_smime_cd OBJ_SMIME,4L + +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_spq 194 +#define OBJ_id_smime_spq OBJ_SMIME,5L + +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_cti 195 +#define OBJ_id_smime_cti OBJ_SMIME,6L + +#define SN_id_smime_ori "id-smime-ori" +#define NID_id_smime_ori 1499 +#define OBJ_id_smime_ori OBJ_SMIME,13L + +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_mod_cms 196 +#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L + +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_ess 197 +#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L + +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_oid 198 +#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L + +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_msg_v3 199 +#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L + +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L + +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L + +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L + +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L + +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_ct_receipt 204 +#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L + +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_authData 205 +#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L + +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_publishCert 206 +#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L + +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L + +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L + +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_contentInfo 209 +#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L + +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L + +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L + +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_compressedData 786 +#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L + +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#define SN_id_ct_routeOriginAuthz "id-ct-routeOriginAuthz" +#define NID_id_ct_routeOriginAuthz 1234 +#define OBJ_id_ct_routeOriginAuthz OBJ_id_smime_ct,24L + +#define SN_id_ct_rpkiManifest "id-ct-rpkiManifest" +#define NID_id_ct_rpkiManifest 1235 +#define OBJ_id_ct_rpkiManifest OBJ_id_smime_ct,26L + +#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" +#define NID_id_ct_asciiTextWithCRLF 787 +#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L + +#define SN_id_ct_xml "id-ct-xml" +#define NID_id_ct_xml 1060 +#define OBJ_id_ct_xml OBJ_id_smime_ct,28L + +#define SN_id_ct_rpkiGhostbusters "id-ct-rpkiGhostbusters" +#define NID_id_ct_rpkiGhostbusters 1236 +#define OBJ_id_ct_rpkiGhostbusters OBJ_id_smime_ct,35L + +#define SN_id_ct_resourceTaggedAttest "id-ct-resourceTaggedAttest" +#define NID_id_ct_resourceTaggedAttest 1237 +#define OBJ_id_ct_resourceTaggedAttest OBJ_id_smime_ct,36L + +#define SN_id_ct_geofeedCSVwithCRLF "id-ct-geofeedCSVwithCRLF" +#define NID_id_ct_geofeedCSVwithCRLF 1246 +#define OBJ_id_ct_geofeedCSVwithCRLF OBJ_id_smime_ct,47L + +#define SN_id_ct_signedChecklist "id-ct-signedChecklist" +#define NID_id_ct_signedChecklist 1247 +#define OBJ_id_ct_signedChecklist OBJ_id_smime_ct,48L + +#define SN_id_ct_ASPA "id-ct-ASPA" +#define NID_id_ct_ASPA 1250 +#define OBJ_id_ct_ASPA OBJ_id_smime_ct,49L + +#define SN_id_ct_signedTAL "id-ct-signedTAL" +#define NID_id_ct_signedTAL 1284 +#define OBJ_id_ct_signedTAL OBJ_id_smime_ct,50L + +#define SN_id_ct_rpkiSignedPrefixList "id-ct-rpkiSignedPrefixList" +#define NID_id_ct_rpkiSignedPrefixList 1320 +#define OBJ_id_ct_rpkiSignedPrefixList OBJ_id_smime_ct,51L + +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_smime_aa_receiptRequest 212 +#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L + +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_securityLabel 213 +#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L + +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_mlExpandHistory 214 +#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L + +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_contentHint 215 +#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L + +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_msgSigDigest 216 +#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L + +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_encapContentType 217 +#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L + +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_contentIdentifier 218 +#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L + +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_macValue 219 +#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L + +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_equivalentLabels 220 +#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L + +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_contentReference 221 +#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L + +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_encrypKeyPref 222 +#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L + +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_signingCertificate 223 +#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L + +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L + +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_timeStampToken 225 +#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L + +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L + +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_commitmentType 227 +#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L + +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_signerLocation 228 +#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L + +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerAttr 229 +#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L + +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L + +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L + +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L + +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L + +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_certValues 234 +#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L + +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_revocationValues 235 +#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L + +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L + +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L + +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L + +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_signatureType 239 +#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L + +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_dvcs_dvc 240 +#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L + +#define SN_id_aa_ets_attrCertificateRefs "id-aa-ets-attrCertificateRefs" +#define NID_id_aa_ets_attrCertificateRefs 1261 +#define OBJ_id_aa_ets_attrCertificateRefs OBJ_id_smime_aa,44L + +#define SN_id_aa_ets_attrRevocationRefs "id-aa-ets-attrRevocationRefs" +#define NID_id_aa_ets_attrRevocationRefs 1262 +#define OBJ_id_aa_ets_attrRevocationRefs OBJ_id_smime_aa,45L + +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#define SN_id_aa_ets_archiveTimestampV2 "id-aa-ets-archiveTimestampV2" +#define NID_id_aa_ets_archiveTimestampV2 1280 +#define OBJ_id_aa_ets_archiveTimestampV2 OBJ_id_smime_aa,48L + +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L + +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L + +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_3DESwrap 243 +#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L + +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_RC2wrap 244 +#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L + +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_ESDH 245 +#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L + +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L + +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L + +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_alg_PWRI_KEK 893 +#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L + +#define SN_HKDF_SHA256 "id-alg-hkdf-with-sha256" +#define LN_HKDF_SHA256 "HKDF-SHA256" +#define NID_HKDF_SHA256 1496 +#define OBJ_HKDF_SHA256 OBJ_id_smime_alg,28L + +#define SN_HKDF_SHA384 "id-alg-hkdf-with-sha384" +#define LN_HKDF_SHA384 "HKDF-SHA384" +#define NID_HKDF_SHA384 1497 +#define OBJ_HKDF_SHA384 OBJ_id_smime_alg,29L + +#define SN_HKDF_SHA512 "id-alg-hkdf-with-sha512" +#define LN_HKDF_SHA512 "HKDF-SHA512" +#define NID_HKDF_SHA512 1498 +#define OBJ_HKDF_SHA512 OBJ_id_smime_alg,30L + +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_smime_cd_ldap 248 +#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L + +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L + +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L + +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L + +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L + +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L + +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L + +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L + +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L + +#define SN_id_smime_ori_kem "id-smime-ori-kem" +#define NID_id_smime_ori_kem 1500 +#define OBJ_id_smime_ori_kem OBJ_id_smime_ori,3L + +#define LN_friendlyName "friendlyName" +#define NID_friendlyName 156 +#define OBJ_friendlyName OBJ_pkcs9,20L + +#define LN_localKeyID "localKeyID" +#define NID_localKeyID 157 +#define OBJ_localKeyID OBJ_pkcs9,21L + +#define OBJ_ms_corp 1L,3L,6L,1L,4L,1L,311L + +#define SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name OBJ_ms_corp,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet OBJ_ms_corp,17L,2L + +#define OBJ_certTypes OBJ_pkcs9,22L + +#define LN_x509Certificate "x509Certificate" +#define NID_x509Certificate 158 +#define OBJ_x509Certificate OBJ_certTypes,1L + +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_sdsiCertificate 159 +#define OBJ_sdsiCertificate OBJ_certTypes,2L + +#define OBJ_crlTypes OBJ_pkcs9,23L + +#define LN_x509Crl "x509Crl" +#define NID_x509Crl 160 +#define OBJ_x509Crl OBJ_crlTypes,1L + +#define SN_id_aa_CMSAlgorithmProtection "id-aa-CMSAlgorithmProtection" +#define NID_id_aa_CMSAlgorithmProtection 1263 +#define OBJ_id_aa_CMSAlgorithmProtection OBJ_pkcs9,52L + +#define OBJ_pkcs12 OBJ_pkcs,12L + +#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L + +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L + +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L + +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L + +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L + +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L + +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L + +#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L + +#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L + +#define LN_keyBag "keyBag" +#define NID_keyBag 150 +#define OBJ_keyBag OBJ_pkcs12_BagIds,1L + +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L + +#define LN_certBag "certBag" +#define NID_certBag 152 +#define OBJ_certBag OBJ_pkcs12_BagIds,3L + +#define LN_crlBag "crlBag" +#define NID_crlBag 153 +#define OBJ_crlBag OBJ_pkcs12_BagIds,4L + +#define LN_secretBag "secretBag" +#define NID_secretBag 154 +#define OBJ_secretBag OBJ_pkcs12_BagIds,5L + +#define LN_safeContentsBag "safeContentsBag" +#define NID_safeContentsBag 155 +#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L + +#define SN_md2 "MD2" +#define LN_md2 "md2" +#define NID_md2 3 +#define OBJ_md2 OBJ_rsadsi,2L,2L + +#define SN_md4 "MD4" +#define LN_md4 "md4" +#define NID_md4 257 +#define OBJ_md4 OBJ_rsadsi,2L,4L + +#define SN_md5 "MD5" +#define LN_md5 "md5" +#define NID_md5 4 +#define OBJ_md5 OBJ_rsadsi,2L,5L + +#define SN_md5_sha1 "MD5-SHA1" +#define LN_md5_sha1 "md5-sha1" +#define NID_md5_sha1 114 + +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_hmacWithMD5 797 +#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L + +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithSHA1 163 +#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +#define SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#define SN_SM2_with_SM3 "SM2-SM3" +#define LN_SM2_with_SM3 "SM2-with-SM3" +#define NID_SM2_with_SM3 1204 +#define OBJ_SM2_with_SM3 OBJ_sm_scheme,501L + +#define LN_hmacWithSM3 "hmacWithSM3" +#define NID_hmacWithSM3 1281 +#define OBJ_hmacWithSM3 OBJ_sm3,3L,1L + +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSHA224 798 +#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L + +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA256 799 +#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L + +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA384 800 +#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L + +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA512 801 +#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L + +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#define SN_rc2_cbc "RC2-CBC" +#define LN_rc2_cbc "rc2-cbc" +#define NID_rc2_cbc 37 +#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L + +#define SN_rc2_ecb "RC2-ECB" +#define LN_rc2_ecb "rc2-ecb" +#define NID_rc2_ecb 38 + +#define SN_rc2_cfb64 "RC2-CFB" +#define LN_rc2_cfb64 "rc2-cfb" +#define NID_rc2_cfb64 39 + +#define SN_rc2_ofb64 "RC2-OFB" +#define LN_rc2_ofb64 "rc2-ofb" +#define NID_rc2_ofb64 40 + +#define SN_rc2_40_cbc "RC2-40-CBC" +#define LN_rc2_40_cbc "rc2-40-cbc" +#define NID_rc2_40_cbc 98 + +#define SN_rc2_64_cbc "RC2-64-CBC" +#define LN_rc2_64_cbc "rc2-64-cbc" +#define NID_rc2_64_cbc 166 + +#define SN_rc4 "RC4" +#define LN_rc4 "rc4" +#define NID_rc4 5 +#define OBJ_rc4 OBJ_rsadsi,3L,4L + +#define SN_rc4_40 "RC4-40" +#define LN_rc4_40 "rc4-40" +#define NID_rc4_40 97 + +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define LN_des_ede3_cbc "des-ede3-cbc" +#define NID_des_ede3_cbc 44 +#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L + +#define SN_rc5_cbc "RC5-CBC" +#define LN_rc5_cbc "rc5-cbc" +#define NID_rc5_cbc 120 +#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L + +#define SN_rc5_ecb "RC5-ECB" +#define LN_rc5_ecb "rc5-ecb" +#define NID_rc5_ecb 121 + +#define SN_rc5_cfb64 "RC5-CFB" +#define LN_rc5_cfb64 "rc5-cfb" +#define NID_rc5_cfb64 122 + +#define SN_rc5_ofb64 "RC5-OFB" +#define LN_rc5_ofb64 "rc5-ofb" +#define NID_rc5_ofb64 123 + +#define SN_ms_ext_req "msExtReq" +#define LN_ms_ext_req "Microsoft Extension Request" +#define NID_ms_ext_req 171 +#define OBJ_ms_ext_req OBJ_ms_corp,2L,1L,14L + +#define SN_ms_code_ind "msCodeInd" +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define NID_ms_code_ind 134 +#define OBJ_ms_code_ind OBJ_ms_corp,2L,1L,21L + +#define SN_ms_code_com "msCodeCom" +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define NID_ms_code_com 135 +#define OBJ_ms_code_com OBJ_ms_corp,2L,1L,22L + +#define SN_ms_ctl_sign "msCTLSign" +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define NID_ms_ctl_sign 136 +#define OBJ_ms_ctl_sign OBJ_ms_corp,10L,3L,1L + +#define SN_ms_sgc "msSGC" +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define NID_ms_sgc 137 +#define OBJ_ms_sgc OBJ_ms_corp,10L,3L,3L + +#define SN_ms_efs "msEFS" +#define LN_ms_efs "Microsoft Encrypted File System" +#define NID_ms_efs 138 +#define OBJ_ms_efs OBJ_ms_corp,10L,3L,4L + +#define SN_ms_smartcard_login "msSmartcardLogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define NID_ms_smartcard_login 648 +#define OBJ_ms_smartcard_login OBJ_ms_corp,20L,2L,2L + +#define SN_ms_upn "msUPN" +#define LN_ms_upn "Microsoft User Principal Name" +#define NID_ms_upn 649 +#define OBJ_ms_upn OBJ_ms_corp,20L,2L,3L + +#define SN_ms_ntds_sec_ext "ms-ntds-sec-ext" +#define LN_ms_ntds_sec_ext "Microsoft NTDS CA Extension" +#define NID_ms_ntds_sec_ext 1292 +#define OBJ_ms_ntds_sec_ext OBJ_ms_corp,25L,2L + +#define SN_ms_ntds_obj_sid "ms-ntds-obj-sid" +#define LN_ms_ntds_obj_sid "Microsoft NTDS AD objectSid" +#define NID_ms_ntds_obj_sid 1291 +#define OBJ_ms_ntds_obj_sid OBJ_ms_corp,25L,2L,1L + +#define SN_ms_cert_templ "ms-cert-templ" +#define LN_ms_cert_templ "Microsoft certificate template" +#define NID_ms_cert_templ 1293 +#define OBJ_ms_cert_templ OBJ_ms_corp,21L,7L + +#define SN_ms_app_policies "ms-app-policies" +#define LN_ms_app_policies "Microsoft Application Policies Extension" +#define NID_ms_app_policies 1294 +#define OBJ_ms_app_policies OBJ_ms_corp,21L,10L + +#define SN_idea_cbc "IDEA-CBC" +#define LN_idea_cbc "idea-cbc" +#define NID_idea_cbc 34 +#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L + +#define SN_idea_ecb "IDEA-ECB" +#define LN_idea_ecb "idea-ecb" +#define NID_idea_ecb 36 + +#define SN_idea_cfb64 "IDEA-CFB" +#define LN_idea_cfb64 "idea-cfb" +#define NID_idea_cfb64 35 + +#define SN_idea_ofb64 "IDEA-OFB" +#define LN_idea_ofb64 "idea-ofb" +#define NID_idea_ofb64 46 + +#define SN_bf_cbc "BF-CBC" +#define LN_bf_cbc "bf-cbc" +#define NID_bf_cbc 91 +#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L + +#define SN_bf_ecb "BF-ECB" +#define LN_bf_ecb "bf-ecb" +#define NID_bf_ecb 92 + +#define SN_bf_cfb64 "BF-CFB" +#define LN_bf_cfb64 "bf-cfb" +#define NID_bf_cfb64 93 + +#define SN_bf_ofb64 "BF-OFB" +#define LN_bf_ofb64 "bf-ofb" +#define NID_bf_ofb64 94 + +#define SN_id_pkix "PKIX" +#define NID_id_pkix 127 +#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix_mod 258 +#define OBJ_id_pkix_mod OBJ_id_pkix,0L + +#define SN_id_pe "id-pe" +#define NID_id_pe 175 +#define OBJ_id_pe OBJ_id_pkix,1L + +#define SN_id_qt "id-qt" +#define NID_id_qt 259 +#define OBJ_id_qt OBJ_id_pkix,2L + +#define SN_id_kp "id-kp" +#define NID_id_kp 128 +#define OBJ_id_kp OBJ_id_pkix,3L + +#define SN_id_it "id-it" +#define NID_id_it 260 +#define OBJ_id_it OBJ_id_pkix,4L + +#define SN_id_pkip "id-pkip" +#define NID_id_pkip 261 +#define OBJ_id_pkip OBJ_id_pkix,5L + +#define SN_id_alg "id-alg" +#define NID_id_alg 262 +#define OBJ_id_alg OBJ_id_pkix,6L + +#define SN_id_cmc "id-cmc" +#define NID_id_cmc 263 +#define OBJ_id_cmc OBJ_id_pkix,7L + +#define SN_id_on "id-on" +#define NID_id_on 264 +#define OBJ_id_on OBJ_id_pkix,8L + +#define SN_id_pda "id-pda" +#define NID_id_pda 265 +#define OBJ_id_pda OBJ_id_pkix,9L + +#define SN_id_aca "id-aca" +#define NID_id_aca 266 +#define OBJ_id_aca OBJ_id_pkix,10L + +#define SN_id_qcs "id-qcs" +#define NID_id_qcs 267 +#define OBJ_id_qcs OBJ_id_pkix,11L + +#define SN_id_cp "id-cp" +#define NID_id_cp 1238 +#define OBJ_id_cp OBJ_id_pkix,14L + +#define SN_id_cct "id-cct" +#define NID_id_cct 268 +#define OBJ_id_cct OBJ_id_pkix,12L + +#define SN_id_ppl "id-ppl" +#define NID_id_ppl 662 +#define OBJ_id_ppl OBJ_id_pkix,21L + +#define SN_id_ad "id-ad" +#define NID_id_ad 176 +#define OBJ_id_ad OBJ_id_pkix,48L + +#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" +#define NID_id_pkix1_explicit_88 269 +#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L + +#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" +#define NID_id_pkix1_implicit_88 270 +#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L + +#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" +#define NID_id_pkix1_explicit_93 271 +#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L + +#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" +#define NID_id_pkix1_implicit_93 272 +#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L + +#define SN_id_mod_crmf "id-mod-crmf" +#define NID_id_mod_crmf 273 +#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L + +#define SN_id_mod_cmc "id-mod-cmc" +#define NID_id_mod_cmc 274 +#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L + +#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" +#define NID_id_mod_kea_profile_88 275 +#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L + +#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" +#define NID_id_mod_kea_profile_93 276 +#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L + +#define SN_id_mod_cmp "id-mod-cmp" +#define NID_id_mod_cmp 277 +#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L + +#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" +#define NID_id_mod_qualified_cert_88 278 +#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L + +#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" +#define NID_id_mod_qualified_cert_93 279 +#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L + +#define SN_id_mod_attribute_cert "id-mod-attribute-cert" +#define NID_id_mod_attribute_cert 280 +#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L + +#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" +#define NID_id_mod_timestamp_protocol 281 +#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L + +#define SN_id_mod_ocsp "id-mod-ocsp" +#define NID_id_mod_ocsp 282 +#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L + +#define SN_id_mod_dvcs "id-mod-dvcs" +#define NID_id_mod_dvcs 283 +#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L + +#define SN_id_mod_cmp2000 "id-mod-cmp2000" +#define NID_id_mod_cmp2000 284 +#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L + +#define SN_id_mod_cmp2000_02 "id-mod-cmp2000-02" +#define NID_id_mod_cmp2000_02 1251 +#define OBJ_id_mod_cmp2000_02 OBJ_id_pkix_mod,50L + +#define SN_id_mod_cmp2021_88 "id-mod-cmp2021-88" +#define NID_id_mod_cmp2021_88 1252 +#define OBJ_id_mod_cmp2021_88 OBJ_id_pkix_mod,99L + +#define SN_id_mod_cmp2021_02 "id-mod-cmp2021-02" +#define NID_id_mod_cmp2021_02 1253 +#define OBJ_id_mod_cmp2021_02 OBJ_id_pkix_mod,100L + +#define SN_info_access "authorityInfoAccess" +#define LN_info_access "Authority Information Access" +#define NID_info_access 177 +#define OBJ_info_access OBJ_id_pe,1L + +#define SN_biometricInfo "biometricInfo" +#define LN_biometricInfo "Biometric Info" +#define NID_biometricInfo 285 +#define OBJ_biometricInfo OBJ_id_pe,2L + +#define SN_qcStatements "qcStatements" +#define NID_qcStatements 286 +#define OBJ_qcStatements OBJ_id_pe,3L + +#define SN_ac_auditIdentity "ac-auditIdentity" +#define LN_ac_auditIdentity "X509v3 Audit Identity" +#define NID_ac_auditIdentity 287 +#define OBJ_ac_auditIdentity OBJ_id_pe,4L + +#define NID_ac_auditEntity 1323 +#define OBJ_ac_auditEntity OBJ_ac_auditIdentity + +#define SN_ac_targeting "ac-targeting" +#define NID_ac_targeting 288 +#define OBJ_ac_targeting OBJ_id_pe,5L + +#define SN_aaControls "aaControls" +#define NID_aaControls 289 +#define OBJ_aaControls OBJ_id_pe,6L + +#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" +#define NID_sbgp_ipAddrBlock 290 +#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L + +#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" +#define NID_sbgp_autonomousSysNum 291 +#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L + +#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" +#define NID_sbgp_routerIdentifier 292 +#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L + +#define SN_ac_proxying "ac-proxying" +#define NID_ac_proxying 397 +#define OBJ_ac_proxying OBJ_id_pe,10L + +#define SN_sinfo_access "subjectInfoAccess" +#define LN_sinfo_access "Subject Information Access" +#define NID_sinfo_access 398 +#define OBJ_sinfo_access OBJ_id_pe,11L + +#define SN_proxyCertInfo "proxyCertInfo" +#define LN_proxyCertInfo "Proxy Certificate Information" +#define NID_proxyCertInfo 663 +#define OBJ_proxyCertInfo OBJ_id_pe,14L + +#define SN_tlsfeature "tlsfeature" +#define LN_tlsfeature "TLS Feature" +#define NID_tlsfeature 1020 +#define OBJ_tlsfeature OBJ_id_pe,24L + +#define SN_sbgp_ipAddrBlockv2 "sbgp-ipAddrBlockv2" +#define NID_sbgp_ipAddrBlockv2 1239 +#define OBJ_sbgp_ipAddrBlockv2 OBJ_id_pe,28L + +#define SN_sbgp_autonomousSysNumv2 "sbgp-autonomousSysNumv2" +#define NID_sbgp_autonomousSysNumv2 1240 +#define OBJ_sbgp_autonomousSysNumv2 OBJ_id_pe,29L + +#define SN_id_qt_cps "id-qt-cps" +#define LN_id_qt_cps "Policy Qualifier CPS" +#define NID_id_qt_cps 164 +#define OBJ_id_qt_cps OBJ_id_qt,1L + +#define SN_id_qt_unotice "id-qt-unotice" +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define NID_id_qt_unotice 165 +#define OBJ_id_qt_unotice OBJ_id_qt,2L + +#define SN_textNotice "textNotice" +#define NID_textNotice 293 +#define OBJ_textNotice OBJ_id_qt,3L + +#define SN_server_auth "serverAuth" +#define LN_server_auth "TLS Web Server Authentication" +#define NID_server_auth 129 +#define OBJ_server_auth OBJ_id_kp,1L + +#define SN_client_auth "clientAuth" +#define LN_client_auth "TLS Web Client Authentication" +#define NID_client_auth 130 +#define OBJ_client_auth OBJ_id_kp,2L + +#define SN_code_sign "codeSigning" +#define LN_code_sign "Code Signing" +#define NID_code_sign 131 +#define OBJ_code_sign OBJ_id_kp,3L + +#define SN_email_protect "emailProtection" +#define LN_email_protect "E-mail Protection" +#define NID_email_protect 132 +#define OBJ_email_protect OBJ_id_kp,4L + +#define SN_ipsecEndSystem "ipsecEndSystem" +#define LN_ipsecEndSystem "IPSec End System" +#define NID_ipsecEndSystem 294 +#define OBJ_ipsecEndSystem OBJ_id_kp,5L + +#define SN_ipsecTunnel "ipsecTunnel" +#define LN_ipsecTunnel "IPSec Tunnel" +#define NID_ipsecTunnel 295 +#define OBJ_ipsecTunnel OBJ_id_kp,6L + +#define SN_ipsecUser "ipsecUser" +#define LN_ipsecUser "IPSec User" +#define NID_ipsecUser 296 +#define OBJ_ipsecUser OBJ_id_kp,7L + +#define SN_time_stamp "timeStamping" +#define LN_time_stamp "Time Stamping" +#define NID_time_stamp 133 +#define OBJ_time_stamp OBJ_id_kp,8L + +#define SN_OCSP_sign "OCSPSigning" +#define LN_OCSP_sign "OCSP Signing" +#define NID_OCSP_sign 180 +#define OBJ_OCSP_sign OBJ_id_kp,9L + +#define SN_dvcs "DVCS" +#define LN_dvcs "dvcs" +#define NID_dvcs 297 +#define OBJ_dvcs OBJ_id_kp,10L + +#define SN_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#define SN_cmcArchive "cmcArchive" +#define LN_cmcArchive "CMC Archive Server" +#define NID_cmcArchive 1219 +#define OBJ_cmcArchive OBJ_id_kp,29L + +#define SN_id_kp_bgpsec_router "id-kp-bgpsec-router" +#define LN_id_kp_bgpsec_router "BGPsec Router" +#define NID_id_kp_bgpsec_router 1220 +#define OBJ_id_kp_bgpsec_router OBJ_id_kp,30L + +#define SN_id_kp_BrandIndicatorforMessageIdentification "id-kp-BrandIndicatorforMessageIdentification" +#define LN_id_kp_BrandIndicatorforMessageIdentification "Brand Indicator for Message Identification" +#define NID_id_kp_BrandIndicatorforMessageIdentification 1221 +#define OBJ_id_kp_BrandIndicatorforMessageIdentification OBJ_id_kp,31L + +#define SN_cmKGA "cmKGA" +#define LN_cmKGA "Certificate Management Key Generation Authority" +#define NID_cmKGA 1222 +#define OBJ_cmKGA OBJ_id_kp,32L + +#define SN_id_it_caProtEncCert "id-it-caProtEncCert" +#define NID_id_it_caProtEncCert 298 +#define OBJ_id_it_caProtEncCert OBJ_id_it,1L + +#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" +#define NID_id_it_signKeyPairTypes 299 +#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L + +#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" +#define NID_id_it_encKeyPairTypes 300 +#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L + +#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" +#define NID_id_it_preferredSymmAlg 301 +#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L + +#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" +#define NID_id_it_caKeyUpdateInfo 302 +#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L + +#define SN_id_it_currentCRL "id-it-currentCRL" +#define NID_id_it_currentCRL 303 +#define OBJ_id_it_currentCRL OBJ_id_it,6L + +#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" +#define NID_id_it_unsupportedOIDs 304 +#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L + +#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" +#define NID_id_it_subscriptionRequest 305 +#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L + +#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" +#define NID_id_it_subscriptionResponse 306 +#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L + +#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" +#define NID_id_it_keyPairParamReq 307 +#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L + +#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" +#define NID_id_it_keyPairParamRep 308 +#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L + +#define SN_id_it_revPassphrase "id-it-revPassphrase" +#define NID_id_it_revPassphrase 309 +#define OBJ_id_it_revPassphrase OBJ_id_it,12L + +#define SN_id_it_implicitConfirm "id-it-implicitConfirm" +#define NID_id_it_implicitConfirm 310 +#define OBJ_id_it_implicitConfirm OBJ_id_it,13L + +#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" +#define NID_id_it_confirmWaitTime 311 +#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L + +#define SN_id_it_origPKIMessage "id-it-origPKIMessage" +#define NID_id_it_origPKIMessage 312 +#define OBJ_id_it_origPKIMessage OBJ_id_it,15L + +#define SN_id_it_suppLangTags "id-it-suppLangTags" +#define NID_id_it_suppLangTags 784 +#define OBJ_id_it_suppLangTags OBJ_id_it,16L + +#define SN_id_it_caCerts "id-it-caCerts" +#define NID_id_it_caCerts 1223 +#define OBJ_id_it_caCerts OBJ_id_it,17L + +#define SN_id_it_rootCaKeyUpdate "id-it-rootCaKeyUpdate" +#define NID_id_it_rootCaKeyUpdate 1224 +#define OBJ_id_it_rootCaKeyUpdate OBJ_id_it,18L + +#define SN_id_it_certReqTemplate "id-it-certReqTemplate" +#define NID_id_it_certReqTemplate 1225 +#define OBJ_id_it_certReqTemplate OBJ_id_it,19L + +#define SN_id_it_rootCaCert "id-it-rootCaCert" +#define NID_id_it_rootCaCert 1254 +#define OBJ_id_it_rootCaCert OBJ_id_it,20L + +#define SN_id_it_certProfile "id-it-certProfile" +#define NID_id_it_certProfile 1255 +#define OBJ_id_it_certProfile OBJ_id_it,21L + +#define SN_id_it_crlStatusList "id-it-crlStatusList" +#define NID_id_it_crlStatusList 1256 +#define OBJ_id_it_crlStatusList OBJ_id_it,22L + +#define SN_id_it_crls "id-it-crls" +#define NID_id_it_crls 1257 +#define OBJ_id_it_crls OBJ_id_it,23L + +#define SN_id_regCtrl "id-regCtrl" +#define NID_id_regCtrl 313 +#define OBJ_id_regCtrl OBJ_id_pkip,1L + +#define SN_id_regInfo "id-regInfo" +#define NID_id_regInfo 314 +#define OBJ_id_regInfo OBJ_id_pkip,2L + +#define SN_id_regCtrl_regToken "id-regCtrl-regToken" +#define NID_id_regCtrl_regToken 315 +#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L + +#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" +#define NID_id_regCtrl_authenticator 316 +#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L + +#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" +#define NID_id_regCtrl_pkiPublicationInfo 317 +#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L + +#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" +#define NID_id_regCtrl_pkiArchiveOptions 318 +#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L + +#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" +#define NID_id_regCtrl_oldCertID 319 +#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L + +#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" +#define NID_id_regCtrl_protocolEncrKey 320 +#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L + +#define SN_id_regCtrl_altCertTemplate "id-regCtrl-altCertTemplate" +#define NID_id_regCtrl_altCertTemplate 1258 +#define OBJ_id_regCtrl_altCertTemplate OBJ_id_regCtrl,7L + +#define SN_id_regCtrl_algId "id-regCtrl-algId" +#define NID_id_regCtrl_algId 1259 +#define OBJ_id_regCtrl_algId OBJ_id_regCtrl,11L + +#define SN_id_regCtrl_rsaKeyLen "id-regCtrl-rsaKeyLen" +#define NID_id_regCtrl_rsaKeyLen 1260 +#define OBJ_id_regCtrl_rsaKeyLen OBJ_id_regCtrl,12L + +#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" +#define NID_id_regInfo_utf8Pairs 321 +#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L + +#define SN_id_regInfo_certReq "id-regInfo-certReq" +#define NID_id_regInfo_certReq 322 +#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L + +#define SN_id_alg_des40 "id-alg-des40" +#define NID_id_alg_des40 323 +#define OBJ_id_alg_des40 OBJ_id_alg,1L + +#define SN_id_alg_noSignature "id-alg-noSignature" +#define NID_id_alg_noSignature 324 +#define OBJ_id_alg_noSignature OBJ_id_alg,2L + +#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" +#define NID_id_alg_dh_sig_hmac_sha1 325 +#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L + +#define SN_id_alg_dh_pop "id-alg-dh-pop" +#define NID_id_alg_dh_pop 326 +#define OBJ_id_alg_dh_pop OBJ_id_alg,4L + +#define SN_id_cmc_statusInfo "id-cmc-statusInfo" +#define NID_id_cmc_statusInfo 327 +#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L + +#define SN_id_cmc_identification "id-cmc-identification" +#define NID_id_cmc_identification 328 +#define OBJ_id_cmc_identification OBJ_id_cmc,2L + +#define SN_id_cmc_identityProof "id-cmc-identityProof" +#define NID_id_cmc_identityProof 329 +#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L + +#define SN_id_cmc_dataReturn "id-cmc-dataReturn" +#define NID_id_cmc_dataReturn 330 +#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L + +#define SN_id_cmc_transactionId "id-cmc-transactionId" +#define NID_id_cmc_transactionId 331 +#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L + +#define SN_id_cmc_senderNonce "id-cmc-senderNonce" +#define NID_id_cmc_senderNonce 332 +#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L + +#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" +#define NID_id_cmc_recipientNonce 333 +#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L + +#define SN_id_cmc_addExtensions "id-cmc-addExtensions" +#define NID_id_cmc_addExtensions 334 +#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L + +#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" +#define NID_id_cmc_encryptedPOP 335 +#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L + +#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" +#define NID_id_cmc_decryptedPOP 336 +#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L + +#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" +#define NID_id_cmc_lraPOPWitness 337 +#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L + +#define SN_id_cmc_getCert "id-cmc-getCert" +#define NID_id_cmc_getCert 338 +#define OBJ_id_cmc_getCert OBJ_id_cmc,15L + +#define SN_id_cmc_getCRL "id-cmc-getCRL" +#define NID_id_cmc_getCRL 339 +#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L + +#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" +#define NID_id_cmc_revokeRequest 340 +#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L + +#define SN_id_cmc_regInfo "id-cmc-regInfo" +#define NID_id_cmc_regInfo 341 +#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L + +#define SN_id_cmc_responseInfo "id-cmc-responseInfo" +#define NID_id_cmc_responseInfo 342 +#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L + +#define SN_id_cmc_queryPending "id-cmc-queryPending" +#define NID_id_cmc_queryPending 343 +#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L + +#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" +#define NID_id_cmc_popLinkRandom 344 +#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L + +#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" +#define NID_id_cmc_popLinkWitness 345 +#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L + +#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" +#define NID_id_cmc_confirmCertAcceptance 346 +#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L + +#define SN_id_on_personalData "id-on-personalData" +#define NID_id_on_personalData 347 +#define OBJ_id_on_personalData OBJ_id_on,1L + +#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" +#define LN_id_on_permanentIdentifier "Permanent Identifier" +#define NID_id_on_permanentIdentifier 858 +#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L + +#define SN_id_on_hardwareModuleName "id-on-hardwareModuleName" +#define LN_id_on_hardwareModuleName "Hardware Module Name" +#define NID_id_on_hardwareModuleName 1321 +#define OBJ_id_on_hardwareModuleName OBJ_id_on,4L + +#define SN_XmppAddr "id-on-xmppAddr" +#define LN_XmppAddr "XmppAddr" +#define NID_XmppAddr 1209 +#define OBJ_XmppAddr OBJ_id_on,5L + +#define SN_SRVName "id-on-dnsSRV" +#define LN_SRVName "SRVName" +#define NID_SRVName 1210 +#define OBJ_SRVName OBJ_id_on,7L + +#define SN_NAIRealm "id-on-NAIRealm" +#define LN_NAIRealm "NAIRealm" +#define NID_NAIRealm 1211 +#define OBJ_NAIRealm OBJ_id_on,8L + +#define SN_id_on_SmtpUTF8Mailbox "id-on-SmtpUTF8Mailbox" +#define LN_id_on_SmtpUTF8Mailbox "Smtp UTF8 Mailbox" +#define NID_id_on_SmtpUTF8Mailbox 1208 +#define OBJ_id_on_SmtpUTF8Mailbox OBJ_id_on,9L + +#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" +#define NID_id_pda_dateOfBirth 348 +#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L + +#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" +#define NID_id_pda_placeOfBirth 349 +#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L + +#define SN_id_pda_gender "id-pda-gender" +#define NID_id_pda_gender 351 +#define OBJ_id_pda_gender OBJ_id_pda,3L + +#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" +#define NID_id_pda_countryOfCitizenship 352 +#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L + +#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" +#define NID_id_pda_countryOfResidence 353 +#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L + +#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" +#define NID_id_aca_authenticationInfo 354 +#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L + +#define SN_id_aca_accessIdentity "id-aca-accessIdentity" +#define NID_id_aca_accessIdentity 355 +#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L + +#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" +#define NID_id_aca_chargingIdentity 356 +#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L + +#define SN_id_aca_group "id-aca-group" +#define NID_id_aca_group 357 +#define OBJ_id_aca_group OBJ_id_aca,4L + +#define SN_id_aca_role "id-aca-role" +#define NID_id_aca_role 358 +#define OBJ_id_aca_role OBJ_id_aca,5L + +#define SN_id_aca_encAttrs "id-aca-encAttrs" +#define NID_id_aca_encAttrs 399 +#define OBJ_id_aca_encAttrs OBJ_id_aca,6L + +#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" +#define NID_id_qcs_pkixQCSyntax_v1 359 +#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L + +#define SN_ipAddr_asNumber "ipAddr-asNumber" +#define NID_ipAddr_asNumber 1241 +#define OBJ_ipAddr_asNumber OBJ_id_cp,2L + +#define SN_ipAddr_asNumberv2 "ipAddr-asNumberv2" +#define NID_ipAddr_asNumberv2 1242 +#define OBJ_ipAddr_asNumberv2 OBJ_id_cp,3L + +#define SN_id_cct_crs "id-cct-crs" +#define NID_id_cct_crs 360 +#define OBJ_id_cct_crs OBJ_id_cct,1L + +#define SN_id_cct_PKIData "id-cct-PKIData" +#define NID_id_cct_PKIData 361 +#define OBJ_id_cct_PKIData OBJ_id_cct,2L + +#define SN_id_cct_PKIResponse "id-cct-PKIResponse" +#define NID_id_cct_PKIResponse 362 +#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L + +#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" +#define LN_id_ppl_anyLanguage "Any language" +#define NID_id_ppl_anyLanguage 664 +#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L + +#define SN_id_ppl_inheritAll "id-ppl-inheritAll" +#define LN_id_ppl_inheritAll "Inherit all" +#define NID_id_ppl_inheritAll 665 +#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L + +#define SN_Independent "id-ppl-independent" +#define LN_Independent "Independent" +#define NID_Independent 667 +#define OBJ_Independent OBJ_id_ppl,2L + +#define SN_ad_OCSP "OCSP" +#define LN_ad_OCSP "OCSP" +#define NID_ad_OCSP 178 +#define OBJ_ad_OCSP OBJ_id_ad,1L + +#define SN_ad_ca_issuers "caIssuers" +#define LN_ad_ca_issuers "CA Issuers" +#define NID_ad_ca_issuers 179 +#define OBJ_ad_ca_issuers OBJ_id_ad,2L + +#define SN_ad_timeStamping "ad_timestamping" +#define LN_ad_timeStamping "AD Time Stamping" +#define NID_ad_timeStamping 363 +#define OBJ_ad_timeStamping OBJ_id_ad,3L + +#define SN_ad_dvcs "AD_DVCS" +#define LN_ad_dvcs "ad dvcs" +#define NID_ad_dvcs 364 +#define OBJ_ad_dvcs OBJ_id_ad,4L + +#define SN_caRepository "caRepository" +#define LN_caRepository "CA Repository" +#define NID_caRepository 785 +#define OBJ_caRepository OBJ_id_ad,5L + +#define SN_rpkiManifest "rpkiManifest" +#define LN_rpkiManifest "RPKI Manifest" +#define NID_rpkiManifest 1243 +#define OBJ_rpkiManifest OBJ_id_ad,10L + +#define SN_signedObject "signedObject" +#define LN_signedObject "Signed Object" +#define NID_signedObject 1244 +#define OBJ_signedObject OBJ_id_ad,11L + +#define SN_rpkiNotify "rpkiNotify" +#define LN_rpkiNotify "RPKI Notify" +#define NID_rpkiNotify 1245 +#define OBJ_rpkiNotify OBJ_id_ad,13L + +#define OBJ_id_pkix_OCSP OBJ_ad_OCSP + +#define SN_id_pkix_OCSP_basic "basicOCSPResponse" +#define LN_id_pkix_OCSP_basic "Basic OCSP Response" +#define NID_id_pkix_OCSP_basic 365 +#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L + +#define SN_id_pkix_OCSP_Nonce "Nonce" +#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" +#define NID_id_pkix_OCSP_Nonce 366 +#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L + +#define SN_id_pkix_OCSP_CrlID "CrlID" +#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" +#define NID_id_pkix_OCSP_CrlID 367 +#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L + +#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" +#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" +#define NID_id_pkix_OCSP_acceptableResponses 368 +#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L + +#define SN_id_pkix_OCSP_noCheck "noCheck" +#define LN_id_pkix_OCSP_noCheck "OCSP No Check" +#define NID_id_pkix_OCSP_noCheck 369 +#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L + +#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" +#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" +#define NID_id_pkix_OCSP_archiveCutoff 370 +#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L + +#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" +#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" +#define NID_id_pkix_OCSP_serviceLocator 371 +#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L + +#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" +#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" +#define NID_id_pkix_OCSP_extendedStatus 372 +#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L + +#define SN_id_pkix_OCSP_valid "valid" +#define NID_id_pkix_OCSP_valid 373 +#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L + +#define SN_id_pkix_OCSP_path "path" +#define NID_id_pkix_OCSP_path 374 +#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L + +#define SN_id_pkix_OCSP_trustRoot "trustRoot" +#define LN_id_pkix_OCSP_trustRoot "Trust Root" +#define NID_id_pkix_OCSP_trustRoot 375 +#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L + +#define SN_algorithm "algorithm" +#define LN_algorithm "algorithm" +#define NID_algorithm 376 +#define OBJ_algorithm 1L,3L,14L,3L,2L + +#define SN_md5WithRSA "RSA-NP-MD5" +#define LN_md5WithRSA "md5WithRSA" +#define NID_md5WithRSA 104 +#define OBJ_md5WithRSA OBJ_algorithm,3L + +#define SN_des_ecb "DES-ECB" +#define LN_des_ecb "des-ecb" +#define NID_des_ecb 29 +#define OBJ_des_ecb OBJ_algorithm,6L + +#define SN_des_cbc "DES-CBC" +#define LN_des_cbc "des-cbc" +#define NID_des_cbc 31 +#define OBJ_des_cbc OBJ_algorithm,7L + +#define SN_des_ofb64 "DES-OFB" +#define LN_des_ofb64 "des-ofb" +#define NID_des_ofb64 45 +#define OBJ_des_ofb64 OBJ_algorithm,8L + +#define SN_des_cfb64 "DES-CFB" +#define LN_des_cfb64 "des-cfb" +#define NID_des_cfb64 30 +#define OBJ_des_cfb64 OBJ_algorithm,9L + +#define SN_rsaSignature "rsaSignature" +#define NID_rsaSignature 377 +#define OBJ_rsaSignature OBJ_algorithm,11L + +#define SN_dsa_2 "DSA-old" +#define LN_dsa_2 "dsaEncryption-old" +#define NID_dsa_2 67 +#define OBJ_dsa_2 OBJ_algorithm,12L + +#define SN_dsaWithSHA "DSA-SHA" +#define LN_dsaWithSHA "dsaWithSHA" +#define NID_dsaWithSHA 66 +#define OBJ_dsaWithSHA OBJ_algorithm,13L + +#define SN_shaWithRSAEncryption "RSA-SHA" +#define LN_shaWithRSAEncryption "shaWithRSAEncryption" +#define NID_shaWithRSAEncryption 42 +#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L + +#define SN_des_ede_ecb "DES-EDE" +#define LN_des_ede_ecb "des-ede" +#define NID_des_ede_ecb 32 +#define OBJ_des_ede_ecb OBJ_algorithm,17L + +#define SN_des_ede3_ecb "DES-EDE3" +#define LN_des_ede3_ecb "des-ede3" +#define NID_des_ede3_ecb 33 + +#define SN_des_ede_cbc "DES-EDE-CBC" +#define LN_des_ede_cbc "des-ede-cbc" +#define NID_des_ede_cbc 43 + +#define SN_des_ede_cfb64 "DES-EDE-CFB" +#define LN_des_ede_cfb64 "des-ede-cfb" +#define NID_des_ede_cfb64 60 + +#define SN_des_ede3_cfb64 "DES-EDE3-CFB" +#define LN_des_ede3_cfb64 "des-ede3-cfb" +#define NID_des_ede3_cfb64 61 + +#define SN_des_ede_ofb64 "DES-EDE-OFB" +#define LN_des_ede_ofb64 "des-ede-ofb" +#define NID_des_ede_ofb64 62 + +#define SN_des_ede3_ofb64 "DES-EDE3-OFB" +#define LN_des_ede3_ofb64 "des-ede3-ofb" +#define NID_des_ede3_ofb64 63 + +#define SN_desx_cbc "DESX-CBC" +#define LN_desx_cbc "desx-cbc" +#define NID_desx_cbc 80 + +#define SN_sha "SHA" +#define LN_sha "sha" +#define NID_sha 41 +#define OBJ_sha OBJ_algorithm,18L + +#define SN_sha1 "SHA1" +#define LN_sha1 "sha1" +#define NID_sha1 64 +#define OBJ_sha1 OBJ_algorithm,26L + +#define SN_dsaWithSHA1_2 "DSA-SHA1-old" +#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +#define NID_dsaWithSHA1_2 70 +#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L + +#define SN_sha1WithRSA "RSA-SHA1-2" +#define LN_sha1WithRSA "sha1WithRSA" +#define NID_sha1WithRSA 115 +#define OBJ_sha1WithRSA OBJ_algorithm,29L + +#define SN_ripemd160 "RIPEMD160" +#define LN_ripemd160 "ripemd160" +#define NID_ripemd160 117 +#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L + +#define SN_ripemd160WithRSA "RSA-RIPEMD160" +#define LN_ripemd160WithRSA "ripemd160WithRSA" +#define NID_ripemd160WithRSA 119 +#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L + +#define SN_blake2bmac "BLAKE2BMAC" +#define LN_blake2bmac "blake2bmac" +#define NID_blake2bmac 1201 +#define OBJ_blake2bmac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L + +#define SN_blake2smac "BLAKE2SMAC" +#define LN_blake2smac "blake2smac" +#define NID_blake2smac 1202 +#define OBJ_blake2smac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L + +#define SN_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 OBJ_blake2bmac,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 OBJ_blake2smac,8L + +#define SN_sxnet "SXNetID" +#define LN_sxnet "Strong Extranet ID" +#define NID_sxnet 143 +#define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +#define SN_X500 "X500" +#define LN_X500 "directory services (X.500)" +#define NID_X500 11 +#define OBJ_X500 2L,5L + +#define SN_X509 "X509" +#define NID_X509 12 +#define OBJ_X509 OBJ_X500,4L + +#define SN_commonName "CN" +#define LN_commonName "commonName" +#define NID_commonName 13 +#define OBJ_commonName OBJ_X509,3L + +#define SN_surname "SN" +#define LN_surname "surname" +#define NID_surname 100 +#define OBJ_surname OBJ_X509,4L + +#define LN_serialNumber "serialNumber" +#define NID_serialNumber 105 +#define OBJ_serialNumber OBJ_X509,5L + +#define SN_countryName "C" +#define LN_countryName "countryName" +#define NID_countryName 14 +#define OBJ_countryName OBJ_X509,6L + +#define SN_localityName "L" +#define LN_localityName "localityName" +#define NID_localityName 15 +#define OBJ_localityName OBJ_X509,7L + +#define SN_stateOrProvinceName "ST" +#define LN_stateOrProvinceName "stateOrProvinceName" +#define NID_stateOrProvinceName 16 +#define OBJ_stateOrProvinceName OBJ_X509,8L + +#define SN_streetAddress "street" +#define LN_streetAddress "streetAddress" +#define NID_streetAddress 660 +#define OBJ_streetAddress OBJ_X509,9L + +#define SN_organizationName "O" +#define LN_organizationName "organizationName" +#define NID_organizationName 17 +#define OBJ_organizationName OBJ_X509,10L + +#define SN_organizationalUnitName "OU" +#define LN_organizationalUnitName "organizationalUnitName" +#define NID_organizationalUnitName 18 +#define OBJ_organizationalUnitName OBJ_X509,11L + +#define SN_title "title" +#define LN_title "title" +#define NID_title 106 +#define OBJ_title OBJ_X509,12L + +#define LN_description "description" +#define NID_description 107 +#define OBJ_description OBJ_X509,13L + +#define LN_searchGuide "searchGuide" +#define NID_searchGuide 859 +#define OBJ_searchGuide OBJ_X509,14L + +#define LN_businessCategory "businessCategory" +#define NID_businessCategory 860 +#define OBJ_businessCategory OBJ_X509,15L + +#define LN_postalAddress "postalAddress" +#define NID_postalAddress 861 +#define OBJ_postalAddress OBJ_X509,16L + +#define LN_postalCode "postalCode" +#define NID_postalCode 661 +#define OBJ_postalCode OBJ_X509,17L + +#define LN_postOfficeBox "postOfficeBox" +#define NID_postOfficeBox 862 +#define OBJ_postOfficeBox OBJ_X509,18L + +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_physicalDeliveryOfficeName 863 +#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L + +#define LN_telephoneNumber "telephoneNumber" +#define NID_telephoneNumber 864 +#define OBJ_telephoneNumber OBJ_X509,20L + +#define LN_telexNumber "telexNumber" +#define NID_telexNumber 865 +#define OBJ_telexNumber OBJ_X509,21L + +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_teletexTerminalIdentifier 866 +#define OBJ_teletexTerminalIdentifier OBJ_X509,22L + +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_facsimileTelephoneNumber 867 +#define OBJ_facsimileTelephoneNumber OBJ_X509,23L + +#define LN_x121Address "x121Address" +#define NID_x121Address 868 +#define OBJ_x121Address OBJ_X509,24L + +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_internationaliSDNNumber 869 +#define OBJ_internationaliSDNNumber OBJ_X509,25L + +#define LN_registeredAddress "registeredAddress" +#define NID_registeredAddress 870 +#define OBJ_registeredAddress OBJ_X509,26L + +#define LN_destinationIndicator "destinationIndicator" +#define NID_destinationIndicator 871 +#define OBJ_destinationIndicator OBJ_X509,27L + +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_preferredDeliveryMethod 872 +#define OBJ_preferredDeliveryMethod OBJ_X509,28L + +#define LN_presentationAddress "presentationAddress" +#define NID_presentationAddress 873 +#define OBJ_presentationAddress OBJ_X509,29L + +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_supportedApplicationContext 874 +#define OBJ_supportedApplicationContext OBJ_X509,30L + +#define SN_member "member" +#define NID_member 875 +#define OBJ_member OBJ_X509,31L + +#define SN_owner "owner" +#define NID_owner 876 +#define OBJ_owner OBJ_X509,32L + +#define LN_roleOccupant "roleOccupant" +#define NID_roleOccupant 877 +#define OBJ_roleOccupant OBJ_X509,33L + +#define SN_seeAlso "seeAlso" +#define NID_seeAlso 878 +#define OBJ_seeAlso OBJ_X509,34L + +#define LN_userPassword "userPassword" +#define NID_userPassword 879 +#define OBJ_userPassword OBJ_X509,35L + +#define LN_userCertificate "userCertificate" +#define NID_userCertificate 880 +#define OBJ_userCertificate OBJ_X509,36L + +#define LN_cACertificate "cACertificate" +#define NID_cACertificate 881 +#define OBJ_cACertificate OBJ_X509,37L + +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_authorityRevocationList 882 +#define OBJ_authorityRevocationList OBJ_X509,38L + +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_certificateRevocationList 883 +#define OBJ_certificateRevocationList OBJ_X509,39L + +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_crossCertificatePair 884 +#define OBJ_crossCertificatePair OBJ_X509,40L + +#define SN_name "name" +#define LN_name "name" +#define NID_name 173 +#define OBJ_name OBJ_X509,41L + +#define SN_givenName "GN" +#define LN_givenName "givenName" +#define NID_givenName 99 +#define OBJ_givenName OBJ_X509,42L + +#define SN_initials "initials" +#define LN_initials "initials" +#define NID_initials 101 +#define OBJ_initials OBJ_X509,43L + +#define LN_generationQualifier "generationQualifier" +#define NID_generationQualifier 509 +#define OBJ_generationQualifier OBJ_X509,44L + +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_x500UniqueIdentifier 503 +#define OBJ_x500UniqueIdentifier OBJ_X509,45L + +#define SN_dnQualifier "dnQualifier" +#define LN_dnQualifier "dnQualifier" +#define NID_dnQualifier 174 +#define OBJ_dnQualifier OBJ_X509,46L + +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_enhancedSearchGuide 885 +#define OBJ_enhancedSearchGuide OBJ_X509,47L + +#define LN_protocolInformation "protocolInformation" +#define NID_protocolInformation 886 +#define OBJ_protocolInformation OBJ_X509,48L + +#define LN_distinguishedName "distinguishedName" +#define NID_distinguishedName 887 +#define OBJ_distinguishedName OBJ_X509,49L + +#define LN_uniqueMember "uniqueMember" +#define NID_uniqueMember 888 +#define OBJ_uniqueMember OBJ_X509,50L + +#define LN_houseIdentifier "houseIdentifier" +#define NID_houseIdentifier 889 +#define OBJ_houseIdentifier OBJ_X509,51L + +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_supportedAlgorithms 890 +#define OBJ_supportedAlgorithms OBJ_X509,52L + +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_deltaRevocationList 891 +#define OBJ_deltaRevocationList OBJ_X509,53L + +#define SN_dmdName "dmdName" +#define NID_dmdName 892 +#define OBJ_dmdName OBJ_X509,54L + +#define LN_pseudonym "pseudonym" +#define NID_pseudonym 510 +#define OBJ_pseudonym OBJ_X509,65L + +#define SN_role "role" +#define LN_role "role" +#define NID_role 400 +#define OBJ_role OBJ_X509,72L + +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#define SN_X500algorithms "X500algorithms" +#define LN_X500algorithms "directory services - algorithms" +#define NID_X500algorithms 378 +#define OBJ_X500algorithms OBJ_X500,8L + +#define SN_rsa "RSA" +#define LN_rsa "rsa" +#define NID_rsa 19 +#define OBJ_rsa OBJ_X500algorithms,1L,1L + +#define SN_mdc2WithRSA "RSA-MDC2" +#define LN_mdc2WithRSA "mdc2WithRSA" +#define NID_mdc2WithRSA 96 +#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L + +#define SN_mdc2 "MDC2" +#define LN_mdc2 "mdc2" +#define NID_mdc2 95 +#define OBJ_mdc2 OBJ_X500algorithms,3L,101L + +#define SN_id_ce "id-ce" +#define NID_id_ce 81 +#define OBJ_id_ce OBJ_X500,29L + +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define NID_subject_directory_attributes 769 +#define OBJ_subject_directory_attributes OBJ_id_ce,9L + +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define NID_subject_key_identifier 82 +#define OBJ_subject_key_identifier OBJ_id_ce,14L + +#define SN_key_usage "keyUsage" +#define LN_key_usage "X509v3 Key Usage" +#define NID_key_usage 83 +#define OBJ_key_usage OBJ_id_ce,15L + +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define NID_private_key_usage_period 84 +#define OBJ_private_key_usage_period OBJ_id_ce,16L + +#define SN_subject_alt_name "subjectAltName" +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define NID_subject_alt_name 85 +#define OBJ_subject_alt_name OBJ_id_ce,17L + +#define SN_issuer_alt_name "issuerAltName" +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define NID_issuer_alt_name 86 +#define OBJ_issuer_alt_name OBJ_id_ce,18L + +#define SN_basic_constraints "basicConstraints" +#define LN_basic_constraints "X509v3 Basic Constraints" +#define NID_basic_constraints 87 +#define OBJ_basic_constraints OBJ_id_ce,19L + +#define SN_crl_number "crlNumber" +#define LN_crl_number "X509v3 CRL Number" +#define NID_crl_number 88 +#define OBJ_crl_number OBJ_id_ce,20L + +#define SN_crl_reason "CRLReason" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define NID_crl_reason 141 +#define OBJ_crl_reason OBJ_id_ce,21L + +#define SN_invalidity_date "invalidityDate" +#define LN_invalidity_date "Invalidity Date" +#define NID_invalidity_date 142 +#define OBJ_invalidity_date OBJ_id_ce,24L + +#define SN_delta_crl "deltaCRL" +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define NID_delta_crl 140 +#define OBJ_delta_crl OBJ_id_ce,27L + +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define NID_issuing_distribution_point 770 +#define OBJ_issuing_distribution_point OBJ_id_ce,28L + +#define SN_certificate_issuer "certificateIssuer" +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define NID_certificate_issuer 771 +#define OBJ_certificate_issuer OBJ_id_ce,29L + +#define SN_name_constraints "nameConstraints" +#define LN_name_constraints "X509v3 Name Constraints" +#define NID_name_constraints 666 +#define OBJ_name_constraints OBJ_id_ce,30L + +#define SN_crl_distribution_points "crlDistributionPoints" +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define NID_crl_distribution_points 103 +#define OBJ_crl_distribution_points OBJ_id_ce,31L + +#define SN_certificate_policies "certificatePolicies" +#define LN_certificate_policies "X509v3 Certificate Policies" +#define NID_certificate_policies 89 +#define OBJ_certificate_policies OBJ_id_ce,32L + +#define SN_any_policy "anyPolicy" +#define LN_any_policy "X509v3 Any Policy" +#define NID_any_policy 746 +#define OBJ_any_policy OBJ_certificate_policies,0L + +#define SN_policy_mappings "policyMappings" +#define LN_policy_mappings "X509v3 Policy Mappings" +#define NID_policy_mappings 747 +#define OBJ_policy_mappings OBJ_id_ce,33L + +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define NID_authority_key_identifier 90 +#define OBJ_authority_key_identifier OBJ_id_ce,35L + +#define SN_policy_constraints "policyConstraints" +#define LN_policy_constraints "X509v3 Policy Constraints" +#define NID_policy_constraints 401 +#define OBJ_policy_constraints OBJ_id_ce,36L + +#define SN_ext_key_usage "extendedKeyUsage" +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define NID_ext_key_usage 126 +#define OBJ_ext_key_usage OBJ_id_ce,37L + +#define SN_authority_attribute_identifier "authorityAttributeIdentifier" +#define LN_authority_attribute_identifier "X509v3 Authority Attribute Identifier" +#define NID_authority_attribute_identifier 1295 +#define OBJ_authority_attribute_identifier OBJ_id_ce,38L + +#define SN_role_spec_cert_identifier "roleSpecCertIdentifier" +#define LN_role_spec_cert_identifier "X509v3 Role Specification Certificate Identifier" +#define NID_role_spec_cert_identifier 1296 +#define OBJ_role_spec_cert_identifier OBJ_id_ce,39L + +#define SN_basic_att_constraints "basicAttConstraints" +#define LN_basic_att_constraints "X509v3 Basic Attribute Certificate Constraints" +#define NID_basic_att_constraints 1297 +#define OBJ_basic_att_constraints OBJ_id_ce,41L + +#define SN_delegated_name_constraints "delegatedNameConstraints" +#define LN_delegated_name_constraints "X509v3 Delegated Name Constraints" +#define NID_delegated_name_constraints 1298 +#define OBJ_delegated_name_constraints OBJ_id_ce,42L + +#define SN_time_specification "timeSpecification" +#define LN_time_specification "X509v3 Time Specification" +#define NID_time_specification 1299 +#define OBJ_time_specification OBJ_id_ce,43L + +#define SN_freshest_crl "freshestCRL" +#define LN_freshest_crl "X509v3 Freshest CRL" +#define NID_freshest_crl 857 +#define OBJ_freshest_crl OBJ_id_ce,46L + +#define SN_attribute_descriptor "attributeDescriptor" +#define LN_attribute_descriptor "X509v3 Attribute Descriptor" +#define NID_attribute_descriptor 1300 +#define OBJ_attribute_descriptor OBJ_id_ce,48L + +#define SN_user_notice "userNotice" +#define LN_user_notice "X509v3 User Notice" +#define NID_user_notice 1301 +#define OBJ_user_notice OBJ_id_ce,49L + +#define SN_soa_identifier "sOAIdentifier" +#define LN_soa_identifier "X509v3 Source of Authority Identifier" +#define NID_soa_identifier 1302 +#define OBJ_soa_identifier OBJ_id_ce,50L + +#define SN_acceptable_cert_policies "acceptableCertPolicies" +#define LN_acceptable_cert_policies "X509v3 Acceptable Certification Policies" +#define NID_acceptable_cert_policies 1303 +#define OBJ_acceptable_cert_policies OBJ_id_ce,52L + +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define NID_inhibit_any_policy 748 +#define OBJ_inhibit_any_policy OBJ_id_ce,54L + +#define SN_target_information "targetInformation" +#define LN_target_information "X509v3 AC Targeting" +#define NID_target_information 402 +#define OBJ_target_information OBJ_id_ce,55L + +#define SN_no_rev_avail "noRevAvail" +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define NID_no_rev_avail 403 +#define OBJ_no_rev_avail OBJ_id_ce,56L + +#define SN_acceptable_privilege_policies "acceptablePrivPolicies" +#define LN_acceptable_privilege_policies "X509v3 Acceptable Privilege Policies" +#define NID_acceptable_privilege_policies 1304 +#define OBJ_acceptable_privilege_policies OBJ_id_ce,57L + +#define SN_indirect_issuer "indirectIssuer" +#define LN_indirect_issuer "X509v3 Indirect Issuer" +#define NID_indirect_issuer 1305 +#define OBJ_indirect_issuer OBJ_id_ce,61L + +#define SN_no_assertion "noAssertion" +#define LN_no_assertion "X509v3 No Assertion" +#define NID_no_assertion 1306 +#define OBJ_no_assertion OBJ_id_ce,62L + +#define SN_id_aa_issuing_distribution_point "aAissuingDistributionPoint" +#define LN_id_aa_issuing_distribution_point "X509v3 Attribute Authority Issuing Distribution Point" +#define NID_id_aa_issuing_distribution_point 1307 +#define OBJ_id_aa_issuing_distribution_point OBJ_id_ce,63L + +#define SN_issued_on_behalf_of "issuedOnBehalfOf" +#define LN_issued_on_behalf_of "X509v3 Issued On Behalf Of" +#define NID_issued_on_behalf_of 1308 +#define OBJ_issued_on_behalf_of OBJ_id_ce,64L + +#define SN_single_use "singleUse" +#define LN_single_use "X509v3 Single Use" +#define NID_single_use 1309 +#define OBJ_single_use OBJ_id_ce,65L + +#define SN_group_ac "groupAC" +#define LN_group_ac "X509v3 Group Attribute Certificate" +#define NID_group_ac 1310 +#define OBJ_group_ac OBJ_id_ce,66L + +#define SN_allowed_attribute_assignments "allowedAttributeAssignments" +#define LN_allowed_attribute_assignments "X509v3 Allowed Attribute Assignments" +#define NID_allowed_attribute_assignments 1311 +#define OBJ_allowed_attribute_assignments OBJ_id_ce,67L + +#define SN_attribute_mappings "attributeMappings" +#define LN_attribute_mappings "X509v3 Attribute Mappings" +#define NID_attribute_mappings 1312 +#define OBJ_attribute_mappings OBJ_id_ce,68L + +#define SN_holder_name_constraints "holderNameConstraints" +#define LN_holder_name_constraints "X509v3 Holder Name Constraints" +#define NID_holder_name_constraints 1313 +#define OBJ_holder_name_constraints OBJ_id_ce,69L + +#define SN_authorization_validation "authorizationValidation" +#define LN_authorization_validation "X509v3 Authorization Validation" +#define NID_authorization_validation 1314 +#define OBJ_authorization_validation OBJ_id_ce,70L + +#define SN_prot_restrict "protRestrict" +#define LN_prot_restrict "X509v3 Protocol Restriction" +#define NID_prot_restrict 1315 +#define OBJ_prot_restrict OBJ_id_ce,71L + +#define SN_subject_alt_public_key_info "subjectAltPublicKeyInfo" +#define LN_subject_alt_public_key_info "X509v3 Subject Alternative Public Key Info" +#define NID_subject_alt_public_key_info 1316 +#define OBJ_subject_alt_public_key_info OBJ_id_ce,72L + +#define SN_alt_signature_algorithm "altSignatureAlgorithm" +#define LN_alt_signature_algorithm "X509v3 Alternative Signature Algorithm" +#define NID_alt_signature_algorithm 1317 +#define OBJ_alt_signature_algorithm OBJ_id_ce,73L + +#define SN_alt_signature_value "altSignatureValue" +#define LN_alt_signature_value "X509v3 Alternative Signature Value" +#define NID_alt_signature_value 1318 +#define OBJ_alt_signature_value OBJ_id_ce,74L + +#define SN_associated_information "associatedInformation" +#define LN_associated_information "X509v3 Associated Information" +#define NID_associated_information 1319 +#define OBJ_associated_information OBJ_id_ce,75L + +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define NID_anyExtendedKeyUsage 910 +#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L + +#define SN_netscape "Netscape" +#define LN_netscape "Netscape Communications Corp." +#define NID_netscape 57 +#define OBJ_netscape 2L,16L,840L,1L,113730L + +#define SN_netscape_cert_extension "nsCertExt" +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define NID_netscape_cert_extension 58 +#define OBJ_netscape_cert_extension OBJ_netscape,1L + +#define SN_netscape_data_type "nsDataType" +#define LN_netscape_data_type "Netscape Data Type" +#define NID_netscape_data_type 59 +#define OBJ_netscape_data_type OBJ_netscape,2L + +#define SN_netscape_cert_type "nsCertType" +#define LN_netscape_cert_type "Netscape Cert Type" +#define NID_netscape_cert_type 71 +#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L + +#define SN_netscape_base_url "nsBaseUrl" +#define LN_netscape_base_url "Netscape Base Url" +#define NID_netscape_base_url 72 +#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L + +#define SN_netscape_revocation_url "nsRevocationUrl" +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define NID_netscape_revocation_url 73 +#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L + +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define NID_netscape_ca_revocation_url 74 +#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L + +#define SN_netscape_renewal_url "nsRenewalUrl" +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define NID_netscape_renewal_url 75 +#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L + +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define NID_netscape_ca_policy_url 76 +#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L + +#define SN_netscape_ssl_server_name "nsSslServerName" +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define NID_netscape_ssl_server_name 77 +#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L + +#define SN_netscape_comment "nsComment" +#define LN_netscape_comment "Netscape Comment" +#define NID_netscape_comment 78 +#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L + +#define SN_netscape_cert_sequence "nsCertSequence" +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define NID_netscape_cert_sequence 79 +#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L + +#define SN_ns_sgc "nsSGC" +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define NID_ns_sgc 139 +#define OBJ_ns_sgc OBJ_netscape,4L,1L + +#define SN_org "ORG" +#define LN_org "org" +#define NID_org 379 +#define OBJ_org OBJ_iso,3L + +#define SN_dod "DOD" +#define LN_dod "dod" +#define NID_dod 380 +#define OBJ_dod OBJ_org,6L + +#define SN_iana "IANA" +#define LN_iana "iana" +#define NID_iana 381 +#define OBJ_iana OBJ_dod,1L + +#define OBJ_internet OBJ_iana + +#define SN_Directory "directory" +#define LN_Directory "Directory" +#define NID_Directory 382 +#define OBJ_Directory OBJ_internet,1L + +#define SN_Management "mgmt" +#define LN_Management "Management" +#define NID_Management 383 +#define OBJ_Management OBJ_internet,2L + +#define SN_Experimental "experimental" +#define LN_Experimental "Experimental" +#define NID_Experimental 384 +#define OBJ_Experimental OBJ_internet,3L + +#define SN_Private "private" +#define LN_Private "Private" +#define NID_Private 385 +#define OBJ_Private OBJ_internet,4L + +#define SN_Security "security" +#define LN_Security "Security" +#define NID_Security 386 +#define OBJ_Security OBJ_internet,5L + +#define SN_SNMPv2 "snmpv2" +#define LN_SNMPv2 "SNMPv2" +#define NID_SNMPv2 387 +#define OBJ_SNMPv2 OBJ_internet,6L + +#define LN_Mail "Mail" +#define NID_Mail 388 +#define OBJ_Mail OBJ_internet,7L + +#define SN_Enterprises "enterprises" +#define LN_Enterprises "Enterprises" +#define NID_Enterprises 389 +#define OBJ_Enterprises OBJ_Private,1L + +#define SN_dcObject "dcobject" +#define LN_dcObject "dcObject" +#define NID_dcObject 390 +#define OBJ_dcObject OBJ_Enterprises,1466L,344L + +#define SN_id_kp_wisun_fan_device "id-kp-wisun-fan-device" +#define LN_id_kp_wisun_fan_device "Wi-SUN Alliance Field Area Network (FAN)" +#define NID_id_kp_wisun_fan_device 1322 +#define OBJ_id_kp_wisun_fan_device OBJ_Enterprises,45605L,1L + +#define SN_mime_mhs "mime-mhs" +#define LN_mime_mhs "MIME MHS" +#define NID_mime_mhs 504 +#define OBJ_mime_mhs OBJ_Mail,1L + +#define SN_mime_mhs_headings "mime-mhs-headings" +#define LN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs_headings 505 +#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L + +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_bodies 506 +#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L + +#define SN_id_hex_partial_message "id-hex-partial-message" +#define LN_id_hex_partial_message "id-hex-partial-message" +#define NID_id_hex_partial_message 507 +#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L + +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_multipart_message 508 +#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L + +#define SN_zlib_compression "ZLIB" +#define LN_zlib_compression "zlib compression" +#define NID_zlib_compression 125 +#define OBJ_zlib_compression OBJ_id_smime_alg,8L + +#define OBJ_csor 2L,16L,840L,1L,101L,3L + +#define OBJ_nistAlgorithms OBJ_csor,4L + +#define OBJ_aes OBJ_nistAlgorithms,1L + +#define SN_aes_128_ecb "AES-128-ECB" +#define LN_aes_128_ecb "aes-128-ecb" +#define NID_aes_128_ecb 418 +#define OBJ_aes_128_ecb OBJ_aes,1L + +#define SN_aes_128_cbc "AES-128-CBC" +#define LN_aes_128_cbc "aes-128-cbc" +#define NID_aes_128_cbc 419 +#define OBJ_aes_128_cbc OBJ_aes,2L + +#define SN_aes_128_ofb128 "AES-128-OFB" +#define LN_aes_128_ofb128 "aes-128-ofb" +#define NID_aes_128_ofb128 420 +#define OBJ_aes_128_ofb128 OBJ_aes,3L + +#define SN_aes_128_cfb128 "AES-128-CFB" +#define LN_aes_128_cfb128 "aes-128-cfb" +#define NID_aes_128_cfb128 421 +#define OBJ_aes_128_cfb128 OBJ_aes,4L + +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_id_aes128_wrap 788 +#define OBJ_id_aes128_wrap OBJ_aes,5L + +#define SN_aes_128_gcm "id-aes128-GCM" +#define LN_aes_128_gcm "aes-128-gcm" +#define NID_aes_128_gcm 895 +#define OBJ_aes_128_gcm OBJ_aes,6L + +#define SN_aes_128_ccm "id-aes128-CCM" +#define LN_aes_128_ccm "aes-128-ccm" +#define NID_aes_128_ccm 896 +#define OBJ_aes_128_ccm OBJ_aes,7L + +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_id_aes128_wrap_pad 897 +#define OBJ_id_aes128_wrap_pad OBJ_aes,8L + +#define SN_aes_192_ecb "AES-192-ECB" +#define LN_aes_192_ecb "aes-192-ecb" +#define NID_aes_192_ecb 422 +#define OBJ_aes_192_ecb OBJ_aes,21L + +#define SN_aes_192_cbc "AES-192-CBC" +#define LN_aes_192_cbc "aes-192-cbc" +#define NID_aes_192_cbc 423 +#define OBJ_aes_192_cbc OBJ_aes,22L + +#define SN_aes_192_ofb128 "AES-192-OFB" +#define LN_aes_192_ofb128 "aes-192-ofb" +#define NID_aes_192_ofb128 424 +#define OBJ_aes_192_ofb128 OBJ_aes,23L + +#define SN_aes_192_cfb128 "AES-192-CFB" +#define LN_aes_192_cfb128 "aes-192-cfb" +#define NID_aes_192_cfb128 425 +#define OBJ_aes_192_cfb128 OBJ_aes,24L + +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_id_aes192_wrap 789 +#define OBJ_id_aes192_wrap OBJ_aes,25L + +#define SN_aes_192_gcm "id-aes192-GCM" +#define LN_aes_192_gcm "aes-192-gcm" +#define NID_aes_192_gcm 898 +#define OBJ_aes_192_gcm OBJ_aes,26L + +#define SN_aes_192_ccm "id-aes192-CCM" +#define LN_aes_192_ccm "aes-192-ccm" +#define NID_aes_192_ccm 899 +#define OBJ_aes_192_ccm OBJ_aes,27L + +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_id_aes192_wrap_pad 900 +#define OBJ_id_aes192_wrap_pad OBJ_aes,28L + +#define SN_aes_256_ecb "AES-256-ECB" +#define LN_aes_256_ecb "aes-256-ecb" +#define NID_aes_256_ecb 426 +#define OBJ_aes_256_ecb OBJ_aes,41L + +#define SN_aes_256_cbc "AES-256-CBC" +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_cbc 427 +#define OBJ_aes_256_cbc OBJ_aes,42L + +#define SN_aes_256_ofb128 "AES-256-OFB" +#define LN_aes_256_ofb128 "aes-256-ofb" +#define NID_aes_256_ofb128 428 +#define OBJ_aes_256_ofb128 OBJ_aes,43L + +#define SN_aes_256_cfb128 "AES-256-CFB" +#define LN_aes_256_cfb128 "aes-256-cfb" +#define NID_aes_256_cfb128 429 +#define OBJ_aes_256_cfb128 OBJ_aes,44L + +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_id_aes256_wrap 790 +#define OBJ_id_aes256_wrap OBJ_aes,45L + +#define SN_aes_256_gcm "id-aes256-GCM" +#define LN_aes_256_gcm "aes-256-gcm" +#define NID_aes_256_gcm 901 +#define OBJ_aes_256_gcm OBJ_aes,46L + +#define SN_aes_256_ccm "id-aes256-CCM" +#define LN_aes_256_ccm "aes-256-ccm" +#define NID_aes_256_ccm 902 +#define OBJ_aes_256_ccm OBJ_aes,47L + +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_id_aes256_wrap_pad 903 +#define OBJ_id_aes256_wrap_pad OBJ_aes,48L + +#define SN_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define NID_aes_128_cfb1 650 + +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define NID_aes_192_cfb1 651 + +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define NID_aes_256_cfb1 652 + +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define NID_aes_128_cfb8 653 + +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define NID_aes_192_cfb8 654 + +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define NID_aes_256_cfb8 655 + +#define SN_aes_128_ctr "AES-128-CTR" +#define LN_aes_128_ctr "aes-128-ctr" +#define NID_aes_128_ctr 904 + +#define SN_aes_192_ctr "AES-192-CTR" +#define LN_aes_192_ctr "aes-192-ctr" +#define NID_aes_192_ctr 905 + +#define SN_aes_256_ctr "AES-256-CTR" +#define LN_aes_256_ctr "aes-256-ctr" +#define NID_aes_256_ctr 906 + +#define SN_aes_128_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#define SN_des_cfb1 "DES-CFB1" +#define LN_des_cfb1 "des-cfb1" +#define NID_des_cfb1 656 + +#define SN_des_cfb8 "DES-CFB8" +#define LN_des_cfb8 "des-cfb8" +#define NID_des_cfb8 657 + +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define NID_des_ede3_cfb1 658 + +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define NID_des_ede3_cfb8 659 + +#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L + +#define SN_sha256 "SHA256" +#define LN_sha256 "sha256" +#define NID_sha256 672 +#define OBJ_sha256 OBJ_nist_hashalgs,1L + +#define SN_sha384 "SHA384" +#define LN_sha384 "sha384" +#define NID_sha384 673 +#define OBJ_sha384 OBJ_nist_hashalgs,2L + +#define SN_sha512 "SHA512" +#define LN_sha512 "sha512" +#define NID_sha512 674 +#define OBJ_sha512 OBJ_nist_hashalgs,3L + +#define SN_sha224 "SHA224" +#define LN_sha224 "sha224" +#define NID_sha224 675 +#define OBJ_sha224 OBJ_nist_hashalgs,4L + +#define SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#define SN_kmac128 "KMAC128" +#define LN_kmac128 "kmac128" +#define NID_kmac128 1196 +#define OBJ_kmac128 OBJ_nist_hashalgs,19L + +#define SN_kmac256 "KMAC256" +#define LN_kmac256 "kmac256" +#define NID_kmac256 1197 +#define OBJ_kmac256 OBJ_nist_hashalgs,20L + +#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_dsa_with_SHA224 802 +#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L + +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA256 803 +#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L + +#define OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#define SN_ML_DSA_44 "id-ml-dsa-44" +#define LN_ML_DSA_44 "ML-DSA-44" +#define NID_ML_DSA_44 1457 +#define OBJ_ML_DSA_44 OBJ_sigAlgs,17L + +#define SN_ML_DSA_65 "id-ml-dsa-65" +#define LN_ML_DSA_65 "ML-DSA-65" +#define NID_ML_DSA_65 1458 +#define OBJ_ML_DSA_65 OBJ_sigAlgs,18L + +#define SN_ML_DSA_87 "id-ml-dsa-87" +#define LN_ML_DSA_87 "ML-DSA-87" +#define NID_ML_DSA_87 1459 +#define OBJ_ML_DSA_87 OBJ_sigAlgs,19L + +#define SN_SLH_DSA_SHA2_128s "id-slh-dsa-sha2-128s" +#define LN_SLH_DSA_SHA2_128s "SLH-DSA-SHA2-128s" +#define NID_SLH_DSA_SHA2_128s 1460 +#define OBJ_SLH_DSA_SHA2_128s OBJ_sigAlgs,20L + +#define SN_SLH_DSA_SHA2_128f "id-slh-dsa-sha2-128f" +#define LN_SLH_DSA_SHA2_128f "SLH-DSA-SHA2-128f" +#define NID_SLH_DSA_SHA2_128f 1461 +#define OBJ_SLH_DSA_SHA2_128f OBJ_sigAlgs,21L + +#define SN_SLH_DSA_SHA2_192s "id-slh-dsa-sha2-192s" +#define LN_SLH_DSA_SHA2_192s "SLH-DSA-SHA2-192s" +#define NID_SLH_DSA_SHA2_192s 1462 +#define OBJ_SLH_DSA_SHA2_192s OBJ_sigAlgs,22L + +#define SN_SLH_DSA_SHA2_192f "id-slh-dsa-sha2-192f" +#define LN_SLH_DSA_SHA2_192f "SLH-DSA-SHA2-192f" +#define NID_SLH_DSA_SHA2_192f 1463 +#define OBJ_SLH_DSA_SHA2_192f OBJ_sigAlgs,23L + +#define SN_SLH_DSA_SHA2_256s "id-slh-dsa-sha2-256s" +#define LN_SLH_DSA_SHA2_256s "SLH-DSA-SHA2-256s" +#define NID_SLH_DSA_SHA2_256s 1464 +#define OBJ_SLH_DSA_SHA2_256s OBJ_sigAlgs,24L + +#define SN_SLH_DSA_SHA2_256f "id-slh-dsa-sha2-256f" +#define LN_SLH_DSA_SHA2_256f "SLH-DSA-SHA2-256f" +#define NID_SLH_DSA_SHA2_256f 1465 +#define OBJ_SLH_DSA_SHA2_256f OBJ_sigAlgs,25L + +#define SN_SLH_DSA_SHAKE_128s "id-slh-dsa-shake-128s" +#define LN_SLH_DSA_SHAKE_128s "SLH-DSA-SHAKE-128s" +#define NID_SLH_DSA_SHAKE_128s 1466 +#define OBJ_SLH_DSA_SHAKE_128s OBJ_sigAlgs,26L + +#define SN_SLH_DSA_SHAKE_128f "id-slh-dsa-shake-128f" +#define LN_SLH_DSA_SHAKE_128f "SLH-DSA-SHAKE-128f" +#define NID_SLH_DSA_SHAKE_128f 1467 +#define OBJ_SLH_DSA_SHAKE_128f OBJ_sigAlgs,27L + +#define SN_SLH_DSA_SHAKE_192s "id-slh-dsa-shake-192s" +#define LN_SLH_DSA_SHAKE_192s "SLH-DSA-SHAKE-192s" +#define NID_SLH_DSA_SHAKE_192s 1468 +#define OBJ_SLH_DSA_SHAKE_192s OBJ_sigAlgs,28L + +#define SN_SLH_DSA_SHAKE_192f "id-slh-dsa-shake-192f" +#define LN_SLH_DSA_SHAKE_192f "SLH-DSA-SHAKE-192f" +#define NID_SLH_DSA_SHAKE_192f 1469 +#define OBJ_SLH_DSA_SHAKE_192f OBJ_sigAlgs,29L + +#define SN_SLH_DSA_SHAKE_256s "id-slh-dsa-shake-256s" +#define LN_SLH_DSA_SHAKE_256s "SLH-DSA-SHAKE-256s" +#define NID_SLH_DSA_SHAKE_256s 1470 +#define OBJ_SLH_DSA_SHAKE_256s OBJ_sigAlgs,30L + +#define SN_SLH_DSA_SHAKE_256f "id-slh-dsa-shake-256f" +#define LN_SLH_DSA_SHAKE_256f "SLH-DSA-SHAKE-256f" +#define NID_SLH_DSA_SHAKE_256f 1471 +#define OBJ_SLH_DSA_SHAKE_256f OBJ_sigAlgs,31L + +#define SN_HASH_ML_DSA_44_WITH_SHA512 "id-hash-ml-dsa-44-with-sha512" +#define LN_HASH_ML_DSA_44_WITH_SHA512 "HASH-ML-DSA-44-WITH-SHA512" +#define NID_HASH_ML_DSA_44_WITH_SHA512 1472 +#define OBJ_HASH_ML_DSA_44_WITH_SHA512 OBJ_sigAlgs,32L + +#define SN_HASH_ML_DSA_65_WITH_SHA512 "id-hash-ml-dsa-65-with-sha512" +#define LN_HASH_ML_DSA_65_WITH_SHA512 "HASH-ML-DSA-65-WITH-SHA512" +#define NID_HASH_ML_DSA_65_WITH_SHA512 1473 +#define OBJ_HASH_ML_DSA_65_WITH_SHA512 OBJ_sigAlgs,33L + +#define SN_HASH_ML_DSA_87_WITH_SHA512 "id-hash-ml-dsa-87-with-sha512" +#define LN_HASH_ML_DSA_87_WITH_SHA512 "HASH-ML-DSA-87-WITH-SHA512" +#define NID_HASH_ML_DSA_87_WITH_SHA512 1474 +#define OBJ_HASH_ML_DSA_87_WITH_SHA512 OBJ_sigAlgs,34L + +#define SN_SLH_DSA_SHA2_128s_WITH_SHA256 "id-hash-slh-dsa-sha2-128s-with-sha256" +#define LN_SLH_DSA_SHA2_128s_WITH_SHA256 "SLH-DSA-SHA2-128s-WITH-SHA256" +#define NID_SLH_DSA_SHA2_128s_WITH_SHA256 1475 +#define OBJ_SLH_DSA_SHA2_128s_WITH_SHA256 OBJ_sigAlgs,35L + +#define SN_SLH_DSA_SHA2_128f_WITH_SHA256 "id-hash-slh-dsa-sha2-128f-with-sha256" +#define LN_SLH_DSA_SHA2_128f_WITH_SHA256 "SLH-DSA-SHA2-128f-WITH-SHA256" +#define NID_SLH_DSA_SHA2_128f_WITH_SHA256 1476 +#define OBJ_SLH_DSA_SHA2_128f_WITH_SHA256 OBJ_sigAlgs,36L + +#define SN_SLH_DSA_SHA2_192s_WITH_SHA512 "id-hash-slh-dsa-sha2-192s-with-sha512" +#define LN_SLH_DSA_SHA2_192s_WITH_SHA512 "SLH-DSA-SHA2-192s-WITH-SHA512" +#define NID_SLH_DSA_SHA2_192s_WITH_SHA512 1477 +#define OBJ_SLH_DSA_SHA2_192s_WITH_SHA512 OBJ_sigAlgs,37L + +#define SN_SLH_DSA_SHA2_192f_WITH_SHA512 "id-hash-slh-dsa-sha2-192f-with-sha512" +#define LN_SLH_DSA_SHA2_192f_WITH_SHA512 "SLH-DSA-SHA2-192f-WITH-SHA512" +#define NID_SLH_DSA_SHA2_192f_WITH_SHA512 1478 +#define OBJ_SLH_DSA_SHA2_192f_WITH_SHA512 OBJ_sigAlgs,38L + +#define SN_SLH_DSA_SHA2_256s_WITH_SHA512 "id-hash-slh-dsa-sha2-256s-with-sha512" +#define LN_SLH_DSA_SHA2_256s_WITH_SHA512 "SLH-DSA-SHA2-256s-WITH-SHA512" +#define NID_SLH_DSA_SHA2_256s_WITH_SHA512 1479 +#define OBJ_SLH_DSA_SHA2_256s_WITH_SHA512 OBJ_sigAlgs,39L + +#define SN_SLH_DSA_SHA2_256f_WITH_SHA512 "id-hash-slh-dsa-sha2-256f-with-sha512" +#define LN_SLH_DSA_SHA2_256f_WITH_SHA512 "SLH-DSA-SHA2-256f-WITH-SHA512" +#define NID_SLH_DSA_SHA2_256f_WITH_SHA512 1480 +#define OBJ_SLH_DSA_SHA2_256f_WITH_SHA512 OBJ_sigAlgs,40L + +#define SN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "id-hash-slh-dsa-shake-128s-with-shake128" +#define LN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "SLH-DSA-SHAKE-128s-WITH-SHAKE128" +#define NID_SLH_DSA_SHAKE_128s_WITH_SHAKE128 1481 +#define OBJ_SLH_DSA_SHAKE_128s_WITH_SHAKE128 OBJ_sigAlgs,41L + +#define SN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "id-hash-slh-dsa-shake-128f-with-shake128" +#define LN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "SLH-DSA-SHAKE-128f-WITH-SHAKE128" +#define NID_SLH_DSA_SHAKE_128f_WITH_SHAKE128 1482 +#define OBJ_SLH_DSA_SHAKE_128f_WITH_SHAKE128 OBJ_sigAlgs,42L + +#define SN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "id-hash-slh-dsa-shake-192s-with-shake256" +#define LN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "SLH-DSA-SHAKE-192s-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_192s_WITH_SHAKE256 1483 +#define OBJ_SLH_DSA_SHAKE_192s_WITH_SHAKE256 OBJ_sigAlgs,43L + +#define SN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "id-hash-slh-dsa-shake-192f-with-shake256" +#define LN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "SLH-DSA-SHAKE-192f-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_192f_WITH_SHAKE256 1484 +#define OBJ_SLH_DSA_SHAKE_192f_WITH_SHAKE256 OBJ_sigAlgs,44L + +#define SN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "id-hash-slh-dsa-shake-256s-with-shake256" +#define LN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "SLH-DSA-SHAKE-256s-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_256s_WITH_SHAKE256 1485 +#define OBJ_SLH_DSA_SHAKE_256s_WITH_SHAKE256 OBJ_sigAlgs,45L + +#define SN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "id-hash-slh-dsa-shake-256f-with-shake256" +#define LN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "SLH-DSA-SHAKE-256f-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_256f_WITH_SHAKE256 1486 +#define OBJ_SLH_DSA_SHAKE_256f_WITH_SHAKE256 OBJ_sigAlgs,46L + +#define SN_hold_instruction_code "holdInstructionCode" +#define LN_hold_instruction_code "Hold Instruction Code" +#define NID_hold_instruction_code 430 +#define OBJ_hold_instruction_code OBJ_id_ce,23L + +#define OBJ_holdInstruction OBJ_X9_57,2L + +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_none "Hold Instruction None" +#define NID_hold_instruction_none 431 +#define OBJ_hold_instruction_none OBJ_holdInstruction,1L + +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define NID_hold_instruction_call_issuer 432 +#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L + +#define SN_hold_instruction_reject "holdInstructionReject" +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define NID_hold_instruction_reject 433 +#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L + +#define SN_itu_t_identified_organization "itu-t-identified-organization" +#define NID_itu_t_identified_organization 1264 +#define OBJ_itu_t_identified_organization OBJ_itu_t,4L + +#define SN_etsi "etsi" +#define NID_etsi 1265 +#define OBJ_etsi OBJ_itu_t_identified_organization,0L + +#define SN_electronic_signature_standard "electronic-signature-standard" +#define NID_electronic_signature_standard 1266 +#define OBJ_electronic_signature_standard OBJ_etsi,1733L + +#define SN_ess_attributes "ess-attributes" +#define NID_ess_attributes 1267 +#define OBJ_ess_attributes OBJ_electronic_signature_standard,2L + +#define SN_id_aa_ets_mimeType "id-aa-ets-mimeType" +#define NID_id_aa_ets_mimeType 1268 +#define OBJ_id_aa_ets_mimeType OBJ_ess_attributes,1L + +#define SN_id_aa_ets_longTermValidation "id-aa-ets-longTermValidation" +#define NID_id_aa_ets_longTermValidation 1269 +#define OBJ_id_aa_ets_longTermValidation OBJ_ess_attributes,2L + +#define SN_id_aa_ets_SignaturePolicyDocument "id-aa-ets-SignaturePolicyDocument" +#define NID_id_aa_ets_SignaturePolicyDocument 1270 +#define OBJ_id_aa_ets_SignaturePolicyDocument OBJ_ess_attributes,3L + +#define SN_id_aa_ets_archiveTimestampV3 "id-aa-ets-archiveTimestampV3" +#define NID_id_aa_ets_archiveTimestampV3 1271 +#define OBJ_id_aa_ets_archiveTimestampV3 OBJ_ess_attributes,4L + +#define SN_id_aa_ATSHashIndex "id-aa-ATSHashIndex" +#define NID_id_aa_ATSHashIndex 1272 +#define OBJ_id_aa_ATSHashIndex OBJ_ess_attributes,5L + +#define SN_cades "cades" +#define NID_cades 1273 +#define OBJ_cades OBJ_etsi,19122L + +#define SN_cades_attributes "cades-attributes" +#define NID_cades_attributes 1274 +#define OBJ_cades_attributes OBJ_cades,1L + +#define SN_id_aa_ets_signerAttrV2 "id-aa-ets-signerAttrV2" +#define NID_id_aa_ets_signerAttrV2 1275 +#define OBJ_id_aa_ets_signerAttrV2 OBJ_cades_attributes,1L + +#define SN_id_aa_ets_sigPolicyStore "id-aa-ets-sigPolicyStore" +#define NID_id_aa_ets_sigPolicyStore 1276 +#define OBJ_id_aa_ets_sigPolicyStore OBJ_cades_attributes,3L + +#define SN_id_aa_ATSHashIndex_v2 "id-aa-ATSHashIndex-v2" +#define NID_id_aa_ATSHashIndex_v2 1277 +#define OBJ_id_aa_ATSHashIndex_v2 OBJ_cades_attributes,4L + +#define SN_id_aa_ATSHashIndex_v3 "id-aa-ATSHashIndex-v3" +#define NID_id_aa_ATSHashIndex_v3 1278 +#define OBJ_id_aa_ATSHashIndex_v3 OBJ_cades_attributes,5L + +#define SN_signedAssertion "signedAssertion" +#define NID_signedAssertion 1279 +#define OBJ_signedAssertion OBJ_cades_attributes,6L + +#define SN_data "data" +#define NID_data 434 +#define OBJ_data OBJ_itu_t,9L + +#define SN_pss "pss" +#define NID_pss 435 +#define OBJ_pss OBJ_data,2342L + +#define SN_ucl "ucl" +#define NID_ucl 436 +#define OBJ_ucl OBJ_pss,19200300L + +#define SN_pilot "pilot" +#define NID_pilot 437 +#define OBJ_pilot OBJ_ucl,100L + +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilotAttributeType 438 +#define OBJ_pilotAttributeType OBJ_pilot,1L + +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeSyntax 439 +#define OBJ_pilotAttributeSyntax OBJ_pilot,3L + +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotObjectClass 440 +#define OBJ_pilotObjectClass OBJ_pilot,4L + +#define LN_pilotGroups "pilotGroups" +#define NID_pilotGroups 441 +#define OBJ_pilotGroups OBJ_pilot,10L + +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L + +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_caseIgnoreIA5StringSyntax 443 +#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L + +#define LN_pilotObject "pilotObject" +#define NID_pilotObject 444 +#define OBJ_pilotObject OBJ_pilotObjectClass,3L + +#define LN_pilotPerson "pilotPerson" +#define NID_pilotPerson 445 +#define OBJ_pilotPerson OBJ_pilotObjectClass,4L + +#define SN_account "account" +#define NID_account 446 +#define OBJ_account OBJ_pilotObjectClass,5L + +#define SN_document "document" +#define NID_document 447 +#define OBJ_document OBJ_pilotObjectClass,6L + +#define SN_room "room" +#define NID_room 448 +#define OBJ_room OBJ_pilotObjectClass,7L + +#define LN_documentSeries "documentSeries" +#define NID_documentSeries 449 +#define OBJ_documentSeries OBJ_pilotObjectClass,9L + +#define SN_Domain "domain" +#define LN_Domain "Domain" +#define NID_Domain 392 +#define OBJ_Domain OBJ_pilotObjectClass,13L + +#define LN_rFC822localPart "rFC822localPart" +#define NID_rFC822localPart 450 +#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L + +#define LN_dNSDomain "dNSDomain" +#define NID_dNSDomain 451 +#define OBJ_dNSDomain OBJ_pilotObjectClass,15L + +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_domainRelatedObject 452 +#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L + +#define LN_friendlyCountry "friendlyCountry" +#define NID_friendlyCountry 453 +#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L + +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_simpleSecurityObject 454 +#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L + +#define LN_pilotOrganization "pilotOrganization" +#define NID_pilotOrganization 455 +#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L + +#define LN_pilotDSA "pilotDSA" +#define NID_pilotDSA 456 +#define OBJ_pilotDSA OBJ_pilotObjectClass,21L + +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_qualityLabelledData 457 +#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L + +#define SN_userId "UID" +#define LN_userId "userId" +#define NID_userId 458 +#define OBJ_userId OBJ_pilotAttributeType,1L + +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_textEncodedORAddress 459 +#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L + +#define SN_rfc822Mailbox "mail" +#define LN_rfc822Mailbox "rfc822Mailbox" +#define NID_rfc822Mailbox 460 +#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L + +#define SN_info "info" +#define NID_info 461 +#define OBJ_info OBJ_pilotAttributeType,4L + +#define LN_favouriteDrink "favouriteDrink" +#define NID_favouriteDrink 462 +#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L + +#define LN_roomNumber "roomNumber" +#define NID_roomNumber 463 +#define OBJ_roomNumber OBJ_pilotAttributeType,6L + +#define SN_photo "photo" +#define NID_photo 464 +#define OBJ_photo OBJ_pilotAttributeType,7L + +#define LN_userClass "userClass" +#define NID_userClass 465 +#define OBJ_userClass OBJ_pilotAttributeType,8L + +#define SN_host "host" +#define NID_host 466 +#define OBJ_host OBJ_pilotAttributeType,9L + +#define SN_manager "manager" +#define NID_manager 467 +#define OBJ_manager OBJ_pilotAttributeType,10L + +#define LN_documentIdentifier "documentIdentifier" +#define NID_documentIdentifier 468 +#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L + +#define LN_documentTitle "documentTitle" +#define NID_documentTitle 469 +#define OBJ_documentTitle OBJ_pilotAttributeType,12L + +#define LN_documentVersion "documentVersion" +#define NID_documentVersion 470 +#define OBJ_documentVersion OBJ_pilotAttributeType,13L + +#define LN_documentAuthor "documentAuthor" +#define NID_documentAuthor 471 +#define OBJ_documentAuthor OBJ_pilotAttributeType,14L + +#define LN_documentLocation "documentLocation" +#define NID_documentLocation 472 +#define OBJ_documentLocation OBJ_pilotAttributeType,15L + +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_homeTelephoneNumber 473 +#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L + +#define SN_secretary "secretary" +#define NID_secretary 474 +#define OBJ_secretary OBJ_pilotAttributeType,21L + +#define LN_otherMailbox "otherMailbox" +#define NID_otherMailbox 475 +#define OBJ_otherMailbox OBJ_pilotAttributeType,22L + +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_lastModifiedTime 476 +#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L + +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedBy 477 +#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L + +#define SN_domainComponent "DC" +#define LN_domainComponent "domainComponent" +#define NID_domainComponent 391 +#define OBJ_domainComponent OBJ_pilotAttributeType,25L + +#define LN_aRecord "aRecord" +#define NID_aRecord 478 +#define OBJ_aRecord OBJ_pilotAttributeType,26L + +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_pilotAttributeType27 479 +#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L + +#define LN_mXRecord "mXRecord" +#define NID_mXRecord 480 +#define OBJ_mXRecord OBJ_pilotAttributeType,28L + +#define LN_nSRecord "nSRecord" +#define NID_nSRecord 481 +#define OBJ_nSRecord OBJ_pilotAttributeType,29L + +#define LN_sOARecord "sOARecord" +#define NID_sOARecord 482 +#define OBJ_sOARecord OBJ_pilotAttributeType,30L + +#define LN_cNAMERecord "cNAMERecord" +#define NID_cNAMERecord 483 +#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L + +#define LN_associatedDomain "associatedDomain" +#define NID_associatedDomain 484 +#define OBJ_associatedDomain OBJ_pilotAttributeType,37L + +#define LN_associatedName "associatedName" +#define NID_associatedName 485 +#define OBJ_associatedName OBJ_pilotAttributeType,38L + +#define LN_homePostalAddress "homePostalAddress" +#define NID_homePostalAddress 486 +#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L + +#define LN_personalTitle "personalTitle" +#define NID_personalTitle 487 +#define OBJ_personalTitle OBJ_pilotAttributeType,40L + +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L + +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_pagerTelephoneNumber 489 +#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L + +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_friendlyCountryName 490 +#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L + +#define SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#define LN_organizationalStatus "organizationalStatus" +#define NID_organizationalStatus 491 +#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L + +#define LN_janetMailbox "janetMailbox" +#define NID_janetMailbox 492 +#define OBJ_janetMailbox OBJ_pilotAttributeType,46L + +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_mailPreferenceOption 493 +#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L + +#define LN_buildingName "buildingName" +#define NID_buildingName 494 +#define OBJ_buildingName OBJ_pilotAttributeType,48L + +#define LN_dSAQuality "dSAQuality" +#define NID_dSAQuality 495 +#define OBJ_dSAQuality OBJ_pilotAttributeType,49L + +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_singleLevelQuality 496 +#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L + +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_subtreeMinimumQuality 497 +#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L + +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMaximumQuality 498 +#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L + +#define LN_personalSignature "personalSignature" +#define NID_personalSignature 499 +#define OBJ_personalSignature OBJ_pilotAttributeType,53L + +#define LN_dITRedirect "dITRedirect" +#define NID_dITRedirect 500 +#define OBJ_dITRedirect OBJ_pilotAttributeType,54L + +#define SN_audio "audio" +#define NID_audio 501 +#define OBJ_audio OBJ_pilotAttributeType,55L + +#define LN_documentPublisher "documentPublisher" +#define NID_documentPublisher 502 +#define OBJ_documentPublisher OBJ_pilotAttributeType,56L + +#define SN_id_set "id-set" +#define LN_id_set "Secure Electronic Transactions" +#define NID_id_set 512 +#define OBJ_id_set OBJ_international_organizations,42L + +#define SN_set_ctype "set-ctype" +#define LN_set_ctype "content types" +#define NID_set_ctype 513 +#define OBJ_set_ctype OBJ_id_set,0L + +#define SN_set_msgExt "set-msgExt" +#define LN_set_msgExt "message extensions" +#define NID_set_msgExt 514 +#define OBJ_set_msgExt OBJ_id_set,1L + +#define SN_set_attr "set-attr" +#define NID_set_attr 515 +#define OBJ_set_attr OBJ_id_set,3L + +#define SN_set_policy "set-policy" +#define NID_set_policy 516 +#define OBJ_set_policy OBJ_id_set,5L + +#define SN_set_certExt "set-certExt" +#define LN_set_certExt "certificate extensions" +#define NID_set_certExt 517 +#define OBJ_set_certExt OBJ_id_set,7L + +#define SN_set_brand "set-brand" +#define NID_set_brand 518 +#define OBJ_set_brand OBJ_id_set,8L + +#define SN_setct_PANData "setct-PANData" +#define NID_setct_PANData 519 +#define OBJ_setct_PANData OBJ_set_ctype,0L + +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANToken 520 +#define OBJ_setct_PANToken OBJ_set_ctype,1L + +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANOnly 521 +#define OBJ_setct_PANOnly OBJ_set_ctype,2L + +#define SN_setct_OIData "setct-OIData" +#define NID_setct_OIData 522 +#define OBJ_setct_OIData OBJ_set_ctype,3L + +#define SN_setct_PI "setct-PI" +#define NID_setct_PI 523 +#define OBJ_setct_PI OBJ_set_ctype,4L + +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PIData 524 +#define OBJ_setct_PIData OBJ_set_ctype,5L + +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIDataUnsigned 525 +#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L + +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_HODInput 526 +#define OBJ_setct_HODInput OBJ_set_ctype,7L + +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_AuthResBaggage 527 +#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L + +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L + +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevResBaggage 529 +#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L + +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_CapTokenSeq 530 +#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L + +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_PInitResData 531 +#define OBJ_setct_PInitResData OBJ_set_ctype,12L + +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PI_TBS 532 +#define OBJ_setct_PI_TBS OBJ_set_ctype,13L + +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PResData 533 +#define OBJ_setct_PResData OBJ_set_ctype,14L + +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_AuthReqTBS 534 +#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L + +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthResTBS 535 +#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L + +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBSX 536 +#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L + +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthTokenTBS 537 +#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L + +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_CapTokenData 538 +#define OBJ_setct_CapTokenData OBJ_set_ctype,20L + +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenTBS 539 +#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L + +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_AcqCardCodeMsg 540 +#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L + +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AuthRevReqTBS 541 +#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L + +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevResData 542 +#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L + +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResTBS 543 +#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L + +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_CapReqTBS 544 +#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L + +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBSX 545 +#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L + +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapResData 546 +#define OBJ_setct_CapResData OBJ_set_ctype,28L + +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapRevReqTBS 547 +#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L + +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBSX 548 +#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L + +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevResData 549 +#define OBJ_setct_CapRevResData OBJ_set_ctype,31L + +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CredReqTBS 550 +#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L + +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBSX 551 +#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L + +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredResData 552 +#define OBJ_setct_CredResData OBJ_set_ctype,34L + +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredRevReqTBS 553 +#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L + +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBSX 554 +#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L + +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevResData 555 +#define OBJ_setct_CredRevResData OBJ_set_ctype,37L + +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_PCertReqData 556 +#define OBJ_setct_PCertReqData OBJ_set_ctype,38L + +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertResTBS 557 +#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L + +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_BatchAdminReqData 558 +#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L + +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminResData 559 +#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L + +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L + +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L + +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_RegFormResTBS 562 +#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L + +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_CertReqData 563 +#define OBJ_setct_CertReqData OBJ_set_ctype,45L + +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqTBS 564 +#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L + +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertResData 565 +#define OBJ_setct_CertResData OBJ_set_ctype,47L + +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertInqReqTBS 566 +#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L + +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_ErrorTBS 567 +#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L + +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L + +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIUnsignedTBE 569 +#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L + +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_AuthReqTBE 570 +#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L + +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthResTBE 571 +#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L + +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBEX 572 +#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L + +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L + +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_CapTokenTBE 574 +#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L + +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBEX 575 +#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L + +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L + +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AuthRevReqTBE 577 +#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L + +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevResTBE 578 +#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L + +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBEB 579 +#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L + +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_CapReqTBE 580 +#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L + +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBEX 581 +#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L + +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapResTBE 582 +#define OBJ_setct_CapResTBE OBJ_set_ctype,64L + +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapRevReqTBE 583 +#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L + +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBEX 584 +#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L + +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevResTBE 585 +#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L + +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CredReqTBE 586 +#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L + +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBEX 587 +#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L + +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredResTBE 588 +#define OBJ_setct_CredResTBE OBJ_set_ctype,70L + +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredRevReqTBE 589 +#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L + +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBEX 590 +#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L + +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevResTBE 591 +#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L + +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L + +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminResTBE 593 +#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L + +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L + +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_CertReqTBE 595 +#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L + +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBEX 596 +#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L + +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertResTBE 597 +#define OBJ_setct_CertResTBE OBJ_set_ctype,79L + +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CRLNotificationTBS 598 +#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L + +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L + +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_BCIDistributionTBS 600 +#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L + +#define SN_setext_genCrypt "setext-genCrypt" +#define LN_setext_genCrypt "generic cryptogram" +#define NID_setext_genCrypt 601 +#define OBJ_setext_genCrypt OBJ_set_msgExt,1L + +#define SN_setext_miAuth "setext-miAuth" +#define LN_setext_miAuth "merchant initiated auth" +#define NID_setext_miAuth 602 +#define OBJ_setext_miAuth OBJ_set_msgExt,3L + +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_pinSecure 603 +#define OBJ_setext_pinSecure OBJ_set_msgExt,4L + +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinAny 604 +#define OBJ_setext_pinAny OBJ_set_msgExt,5L + +#define SN_setext_track2 "setext-track2" +#define NID_setext_track2 605 +#define OBJ_setext_track2 OBJ_set_msgExt,7L + +#define SN_setext_cv "setext-cv" +#define LN_setext_cv "additional verification" +#define NID_setext_cv 606 +#define OBJ_setext_cv OBJ_set_msgExt,8L + +#define SN_set_policy_root "set-policy-root" +#define NID_set_policy_root 607 +#define OBJ_set_policy_root OBJ_set_policy,0L + +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_setCext_hashedRoot 608 +#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L + +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_certType 609 +#define OBJ_setCext_certType OBJ_set_certExt,1L + +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_merchData 610 +#define OBJ_setCext_merchData OBJ_set_certExt,2L + +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_cCertRequired 611 +#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L + +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_tunneling 612 +#define OBJ_setCext_tunneling OBJ_set_certExt,4L + +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_setExt 613 +#define OBJ_setCext_setExt OBJ_set_certExt,5L + +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setQualf 614 +#define OBJ_setCext_setQualf OBJ_set_certExt,6L + +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_PGWYcapabilities 615 +#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L + +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_TokenIdentifier 616 +#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L + +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_Track2Data 617 +#define OBJ_setCext_Track2Data OBJ_set_certExt,9L + +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_TokenType 618 +#define OBJ_setCext_TokenType OBJ_set_certExt,10L + +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_IssuerCapabilities 619 +#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L + +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setAttr_Cert 620 +#define OBJ_setAttr_Cert OBJ_set_attr,0L + +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define NID_setAttr_PGWYcap 621 +#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L + +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_TokenType 622 +#define OBJ_setAttr_TokenType OBJ_set_attr,2L + +#define SN_setAttr_IssCap "setAttr-IssCap" +#define LN_setAttr_IssCap "issuer capabilities" +#define NID_setAttr_IssCap 623 +#define OBJ_setAttr_IssCap OBJ_set_attr,3L + +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_set_rootKeyThumb 624 +#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L + +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_addPolicy 625 +#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L + +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_setAttr_Token_EMV 626 +#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L + +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_B0Prime 627 +#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L + +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_IssCap_CVM 628 +#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L + +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_T2 629 +#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L + +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_Sig 630 +#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L + +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define NID_setAttr_GenCryptgrm 631 +#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L + +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define LN_setAttr_T2Enc "encrypted track 2" +#define NID_setAttr_T2Enc 632 +#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L + +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define NID_setAttr_T2cleartxt 633 +#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L + +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define LN_setAttr_TokICCsig "ICC or token signature" +#define NID_setAttr_TokICCsig 634 +#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L + +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define LN_setAttr_SecDevSig "secure device signature" +#define NID_setAttr_SecDevSig 635 +#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L + +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_set_brand_IATA_ATA 636 +#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L + +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_Diners 637 +#define OBJ_set_brand_Diners OBJ_set_brand,30L + +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_AmericanExpress 638 +#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L + +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_JCB 639 +#define OBJ_set_brand_JCB OBJ_set_brand,35L + +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_Visa 640 +#define OBJ_set_brand_Visa OBJ_set_brand,4L + +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_MasterCard 641 +#define OBJ_set_brand_MasterCard OBJ_set_brand,5L + +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_Novus 642 +#define OBJ_set_brand_Novus OBJ_set_brand,6011L + +#define SN_des_cdmf "DES-CDMF" +#define LN_des_cdmf "des-cdmf" +#define NID_des_cdmf 643 +#define OBJ_des_cdmf OBJ_rsadsi,3L,10L + +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_rsaOAEPEncryptionSET 644 +#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L + +#define SN_ipsec3 "Oakley-EC2N-3" +#define LN_ipsec3 "ipsec3" +#define NID_ipsec3 749 + +#define SN_ipsec4 "Oakley-EC2N-4" +#define LN_ipsec4 "ipsec4" +#define NID_ipsec4 750 + +#define SN_whirlpool "whirlpool" +#define NID_whirlpool 804 +#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L + +#define SN_cryptopro "cryptopro" +#define NID_cryptopro 805 +#define OBJ_cryptopro OBJ_member_body,643L,2L,2L + +#define SN_cryptocom "cryptocom" +#define NID_cryptocom 806 +#define OBJ_cryptocom OBJ_member_body,643L,2L,9L + +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L + +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L + +#define SN_id_GostR3411_94 "md_gost94" +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define NID_id_GostR3411_94 809 +#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L + +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define NID_id_HMACGostR3411_94 810 +#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L + +#define SN_id_GostR3410_2001 "gost2001" +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define NID_id_GostR3410_2001 811 +#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L + +#define SN_id_GostR3410_94 "gost94" +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define NID_id_GostR3410_94 812 +#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L + +#define SN_id_Gost28147_89 "gost89" +#define LN_id_Gost28147_89 "GOST 28147-89" +#define NID_id_Gost28147_89 813 +#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L + +#define SN_gost89_cnt "gost89-cnt" +#define NID_gost89_cnt 814 + +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#define SN_id_Gost28147_89_MAC "gost-mac" +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define NID_id_Gost28147_89_MAC 815 +#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L + +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define NID_id_GostR3411_94_prf 816 +#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L + +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define NID_id_GostR3410_2001DH 817 +#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L + +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define NID_id_GostR3410_94DH 818 +#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L + +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L + +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L + +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L + +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L + +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L + +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L + +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L + +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L + +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L + +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L + +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L + +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L + +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L + +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L + +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L + +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L + +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L + +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L + +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L + +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L + +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L + +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L + +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L + +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L + +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_94_a 845 +#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L + +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_aBis 846 +#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L + +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_b 847 +#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L + +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_bBis 848 +#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L + +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define NID_id_Gost28147_89_cc 849 +#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L + +#define SN_id_GostR3410_94_cc "gost94cc" +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define NID_id_GostR3410_94_cc 850 +#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L + +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define NID_id_GostR3410_2001_cc 851 +#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L + +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L + +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L + +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L + +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_magma_ctr_acpkm "magma-ctr-acpkm" +#define NID_magma_ctr_acpkm 1174 +#define OBJ_magma_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_magma_ctr_acpkm_omac "magma-ctr-acpkm-omac" +#define NID_magma_ctr_acpkm_omac 1175 +#define OBJ_magma_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_kuznyechik_ctr_acpkm "kuznyechik-ctr-acpkm" +#define NID_kuznyechik_ctr_acpkm 1177 +#define OBJ_kuznyechik_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_kuznyechik_ctr_acpkm_omac "kuznyechik-ctr-acpkm-omac" +#define NID_kuznyechik_ctr_acpkm_omac 1178 +#define OBJ_kuznyechik_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_magma_kexp15 "magma-kexp15" +#define NID_magma_kexp15 1181 +#define OBJ_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_kuznyechik_kexp15 "kuznyechik-kexp15" +#define NID_kuznyechik_kexp15 1183 +#define OBJ_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_OGRNIP "OGRNIP" +#define LN_OGRNIP "OGRNIP" +#define NID_OGRNIP 1226 +#define OBJ_OGRNIP OBJ_member_body,643L,100L,5L + +#define SN_subjectSignTool "subjectSignTool" +#define LN_subjectSignTool "Signing Tool of Subject" +#define NID_subjectSignTool 1007 +#define OBJ_subjectSignTool OBJ_member_body,643L,100L,111L + +#define SN_issuerSignTool "issuerSignTool" +#define LN_issuerSignTool "Signing Tool of Issuer" +#define NID_issuerSignTool 1008 +#define OBJ_issuerSignTool OBJ_member_body,643L,100L,112L + +#define SN_classSignTool "classSignTool" +#define LN_classSignTool "Class of Signing Tool" +#define NID_classSignTool 1227 +#define OBJ_classSignTool OBJ_member_body,643L,100L,113L + +#define SN_classSignToolKC1 "classSignToolKC1" +#define LN_classSignToolKC1 "Class of Signing Tool KC1" +#define NID_classSignToolKC1 1228 +#define OBJ_classSignToolKC1 OBJ_member_body,643L,100L,113L,1L + +#define SN_classSignToolKC2 "classSignToolKC2" +#define LN_classSignToolKC2 "Class of Signing Tool KC2" +#define NID_classSignToolKC2 1229 +#define OBJ_classSignToolKC2 OBJ_member_body,643L,100L,113L,2L + +#define SN_classSignToolKC3 "classSignToolKC3" +#define LN_classSignToolKC3 "Class of Signing Tool KC3" +#define NID_classSignToolKC3 1230 +#define OBJ_classSignToolKC3 OBJ_member_body,643L,100L,113L,3L + +#define SN_classSignToolKB1 "classSignToolKB1" +#define LN_classSignToolKB1 "Class of Signing Tool KB1" +#define NID_classSignToolKB1 1231 +#define OBJ_classSignToolKB1 OBJ_member_body,643L,100L,113L,4L + +#define SN_classSignToolKB2 "classSignToolKB2" +#define LN_classSignToolKB2 "Class of Signing Tool KB2" +#define NID_classSignToolKB2 1232 +#define OBJ_classSignToolKB2 OBJ_member_body,643L,100L,113L,5L + +#define SN_classSignToolKA1 "classSignToolKA1" +#define LN_classSignToolKA1 "Class of Signing Tool KA1" +#define NID_classSignToolKA1 1233 +#define OBJ_classSignToolKA1 OBJ_member_body,643L,100L,113L,6L + +#define SN_kuznyechik_ecb "kuznyechik-ecb" +#define NID_kuznyechik_ecb 1012 + +#define SN_kuznyechik_ctr "kuznyechik-ctr" +#define NID_kuznyechik_ctr 1013 + +#define SN_kuznyechik_ofb "kuznyechik-ofb" +#define NID_kuznyechik_ofb 1014 + +#define SN_kuznyechik_cbc "kuznyechik-cbc" +#define NID_kuznyechik_cbc 1015 + +#define SN_kuznyechik_cfb "kuznyechik-cfb" +#define NID_kuznyechik_cfb 1016 + +#define SN_kuznyechik_mac "kuznyechik-mac" +#define NID_kuznyechik_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define LN_camellia_128_cbc "camellia-128-cbc" +#define NID_camellia_128_cbc 751 +#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L + +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define LN_camellia_192_cbc "camellia-192-cbc" +#define NID_camellia_192_cbc 752 +#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L + +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define LN_camellia_256_cbc "camellia-256-cbc" +#define NID_camellia_256_cbc 753 +#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L + +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_id_camellia128_wrap 907 +#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L + +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia192_wrap 908 +#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L + +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia256_wrap 909 +#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L + +#define OBJ_ntt_ds 0L,3L,4401L,5L + +#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L + +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define LN_camellia_128_ecb "camellia-128-ecb" +#define NID_camellia_128_ecb 754 +#define OBJ_camellia_128_ecb OBJ_camellia,1L + +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define NID_camellia_128_ofb128 766 +#define OBJ_camellia_128_ofb128 OBJ_camellia,3L + +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define NID_camellia_128_cfb128 757 +#define OBJ_camellia_128_cfb128 OBJ_camellia,4L + +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define LN_camellia_192_ecb "camellia-192-ecb" +#define NID_camellia_192_ecb 755 +#define OBJ_camellia_192_ecb OBJ_camellia,21L + +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define NID_camellia_192_ofb128 767 +#define OBJ_camellia_192_ofb128 OBJ_camellia,23L + +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define NID_camellia_192_cfb128 758 +#define OBJ_camellia_192_cfb128 OBJ_camellia,24L + +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define LN_camellia_256_ecb "camellia-256-ecb" +#define NID_camellia_256_ecb 756 +#define OBJ_camellia_256_ecb OBJ_camellia,41L + +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define NID_camellia_256_ofb128 768 +#define OBJ_camellia_256_ofb128 OBJ_camellia,43L + +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define NID_camellia_256_cfb128 759 +#define OBJ_camellia_256_cfb128 OBJ_camellia,44L + +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define NID_camellia_128_cfb1 760 + +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define NID_camellia_192_cfb1 761 + +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define NID_camellia_256_cfb1 762 + +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define NID_camellia_128_cfb8 763 + +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define NID_camellia_192_cfb8 764 + +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define NID_camellia_256_cfb8 765 + +#define OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#define SN_kisa "KISA" +#define LN_kisa "kisa" +#define NID_kisa 773 +#define OBJ_kisa OBJ_member_body,410L,200004L + +#define SN_seed_ecb "SEED-ECB" +#define LN_seed_ecb "seed-ecb" +#define NID_seed_ecb 776 +#define OBJ_seed_ecb OBJ_kisa,1L,3L + +#define SN_seed_cbc "SEED-CBC" +#define LN_seed_cbc "seed-cbc" +#define NID_seed_cbc 777 +#define OBJ_seed_cbc OBJ_kisa,1L,4L + +#define SN_seed_cfb128 "SEED-CFB" +#define LN_seed_cfb128 "seed-cfb" +#define NID_seed_cfb128 779 +#define OBJ_seed_cfb128 OBJ_kisa,1L,5L + +#define SN_seed_ofb128 "SEED-OFB" +#define LN_seed_ofb128 "seed-ofb" +#define NID_seed_ofb128 778 +#define OBJ_seed_ofb128 OBJ_kisa,1L,6L + +#define SN_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#define SN_sm4_gcm "SM4-GCM" +#define LN_sm4_gcm "sm4-gcm" +#define NID_sm4_gcm 1248 +#define OBJ_sm4_gcm OBJ_sm_scheme,104L,8L + +#define SN_sm4_ccm "SM4-CCM" +#define LN_sm4_ccm "sm4-ccm" +#define NID_sm4_ccm 1249 +#define OBJ_sm4_ccm OBJ_sm_scheme,104L,9L + +#define SN_sm4_xts "SM4-XTS" +#define LN_sm4_xts "sm4-xts" +#define NID_sm4_xts 1290 +#define OBJ_sm4_xts OBJ_sm_scheme,104L,10L + +#define SN_hmac "HMAC" +#define LN_hmac "hmac" +#define NID_hmac 855 + +#define SN_cmac "CMAC" +#define LN_cmac "cmac" +#define NID_cmac 894 + +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define NID_rc4_hmac_md5 915 + +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define NID_aes_128_cbc_hmac_sha1 916 + +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define NID_aes_192_cbc_hmac_sha1 917 + +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define NID_aes_256_cbc_hmac_sha1 918 + +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define NID_aes_128_cbc_hmac_sha256 948 + +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define NID_aes_192_cbc_hmac_sha256 949 + +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define NID_aes_256_cbc_hmac_sha256 950 + +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#define SN_aes_128_cbc_hmac_sha1_etm "AES-128-CBC-HMAC-SHA1-ETM" +#define LN_aes_128_cbc_hmac_sha1_etm "aes-128-cbc-hmac-sha1-etm" +#define NID_aes_128_cbc_hmac_sha1_etm 1487 + +#define SN_aes_192_cbc_hmac_sha1_etm "AES-192-CBC-HMAC-SHA1-ETM" +#define LN_aes_192_cbc_hmac_sha1_etm "aes-192-cbc-hmac-sha1-etm" +#define NID_aes_192_cbc_hmac_sha1_etm 1488 + +#define SN_aes_256_cbc_hmac_sha1_etm "AES-256-CBC-HMAC-SHA1-ETM" +#define LN_aes_256_cbc_hmac_sha1_etm "aes-256-cbc-hmac-sha1-etm" +#define NID_aes_256_cbc_hmac_sha1_etm 1489 + +#define SN_aes_128_cbc_hmac_sha256_etm "AES-128-CBC-HMAC-SHA256-ETM" +#define LN_aes_128_cbc_hmac_sha256_etm "aes-128-cbc-hmac-sha256-etm" +#define NID_aes_128_cbc_hmac_sha256_etm 1490 + +#define SN_aes_192_cbc_hmac_sha256_etm "AES-192-CBC-HMAC-SHA256-ETM" +#define LN_aes_192_cbc_hmac_sha256_etm "aes-192-cbc-hmac-sha256-etm" +#define NID_aes_192_cbc_hmac_sha256_etm 1491 + +#define SN_aes_256_cbc_hmac_sha256_etm "AES-256-CBC-HMAC-SHA256-ETM" +#define LN_aes_256_cbc_hmac_sha256_etm "aes-256-cbc-hmac-sha256-etm" +#define NID_aes_256_cbc_hmac_sha256_etm 1492 + +#define SN_aes_128_cbc_hmac_sha512_etm "AES-128-CBC-HMAC-SHA512-ETM" +#define LN_aes_128_cbc_hmac_sha512_etm "aes-128-cbc-hmac-sha512-etm" +#define NID_aes_128_cbc_hmac_sha512_etm 1493 + +#define SN_aes_192_cbc_hmac_sha512_etm "AES-192-CBC-HMAC-SHA512-ETM" +#define LN_aes_192_cbc_hmac_sha512_etm "aes-192-cbc-hmac-sha512-etm" +#define NID_aes_192_cbc_hmac_sha512_etm 1494 + +#define SN_aes_256_cbc_hmac_sha512_etm "AES-256-CBC-HMAC-SHA512-ETM" +#define LN_aes_256_cbc_hmac_sha512_etm "aes-256-cbc-hmac-sha512-etm" +#define NID_aes_256_cbc_hmac_sha512_etm 1495 + +#define SN_dhpublicnumber "dhpublicnumber" +#define LN_dhpublicnumber "X9.42 DH" +#define NID_dhpublicnumber 920 +#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L + +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_brainpoolP160r1 921 +#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L + +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160t1 922 +#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L + +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP192r1 923 +#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L + +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192t1 924 +#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L + +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP224r1 925 +#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L + +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224t1 926 +#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L + +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP256r1 927 +#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L + +#define SN_brainpoolP256r1tls13 "brainpoolP256r1tls13" +#define NID_brainpoolP256r1tls13 1285 + +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256t1 928 +#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L + +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP320r1 929 +#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L + +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320t1 930 +#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L + +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP384r1 931 +#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L + +#define SN_brainpoolP384r1tls13 "brainpoolP384r1tls13" +#define NID_brainpoolP384r1tls13 1286 + +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384t1 932 +#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L + +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP512r1 933 +#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L + +#define SN_brainpoolP512r1tls13 "brainpoolP512r1tls13" +#define NID_brainpoolP512r1tls13 1287 + +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512t1 934 +#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L + +#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L + +#define OBJ_secg_scheme OBJ_certicom_arc,1L + +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L + +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L + +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L + +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L + +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L + +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L + +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L + +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L + +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L + +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L + +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dh_std_kdf 946 + +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_cofactor_kdf 947 + +#define SN_ct_precert_scts "ct_precert_scts" +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define NID_ct_precert_scts 951 +#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L + +#define SN_ct_precert_poison "ct_precert_poison" +#define LN_ct_precert_poison "CT Precertificate Poison" +#define NID_ct_precert_poison 952 +#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L + +#define SN_ct_precert_signer "ct_precert_signer" +#define LN_ct_precert_signer "CT Precertificate Signer" +#define NID_ct_precert_signer 953 +#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L + +#define SN_ct_cert_scts "ct_cert_scts" +#define LN_ct_cert_scts "CT Certificate SCTs" +#define NID_ct_cert_scts 954 +#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L + +#define SN_jurisdictionLocalityName "jurisdictionL" +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define NID_jurisdictionLocalityName 955 +#define OBJ_jurisdictionLocalityName OBJ_ms_corp,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName OBJ_ms_corp,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName OBJ_ms_corp,60L,2L,1L,3L + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_sshkdf "SSHKDF" +#define LN_sshkdf "sshkdf" +#define NID_sshkdf 1203 + +#define SN_sskdf "SSKDF" +#define LN_sskdf "sskdf" +#define NID_sskdf 1205 + +#define SN_x942kdf "X942KDF" +#define LN_x942kdf "x942kdf" +#define NID_x942kdf 1207 + +#define SN_x963kdf "X963KDF" +#define LN_x963kdf "x963kdf" +#define NID_x963kdf 1206 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_gost18 "KxGOST18" +#define LN_kx_gost18 "kx-gost18" +#define NID_kx_gost18 1218 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_modp_1536 "modp_1536" +#define NID_modp_1536 1212 + +#define SN_modp_2048 "modp_2048" +#define NID_modp_2048 1213 + +#define SN_modp_3072 "modp_3072" +#define NID_modp_3072 1214 + +#define SN_modp_4096 "modp_4096" +#define NID_modp_4096 1215 + +#define SN_modp_6144 "modp_6144" +#define NID_modp_6144 1216 + +#define SN_modp_8192 "modp_8192" +#define NID_modp_8192 1217 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L + +#define SN_aes_128_siv "AES-128-SIV" +#define LN_aes_128_siv "aes-128-siv" +#define NID_aes_128_siv 1198 + +#define SN_aes_192_siv "AES-192-SIV" +#define LN_aes_192_siv "aes-192-siv" +#define NID_aes_192_siv 1199 + +#define SN_aes_256_siv "AES-256-SIV" +#define LN_aes_256_siv "aes-256-siv" +#define NID_aes_256_siv 1200 + +#define SN_oracle "oracle-organization" +#define LN_oracle "Oracle organization" +#define NID_oracle 1282 +#define OBJ_oracle OBJ_joint_iso_itu_t,16L,840L,1L,113894L + +#define SN_oracle_jdk_trustedkeyusage "oracle-jdk-trustedkeyusage" +#define LN_oracle_jdk_trustedkeyusage "Trusted key usage (Oracle)" +#define NID_oracle_jdk_trustedkeyusage 1283 +#define OBJ_oracle_jdk_trustedkeyusage OBJ_oracle,746875L,1L,1L + +#define SN_brotli "brotli" +#define LN_brotli "Brotli compression" +#define NID_brotli 1288 + +#define SN_zstd "zstd" +#define LN_zstd "Zstandard compression" +#define NID_zstd 1289 + +#define SN_tcg "tcg" +#define LN_tcg "Trusted Computing Group" +#define NID_tcg 1324 +#define OBJ_tcg 2L,23L,133L + +#define SN_tcg_tcpaSpecVersion "tcg-tcpaSpecVersion" +#define NID_tcg_tcpaSpecVersion 1325 +#define OBJ_tcg_tcpaSpecVersion OBJ_tcg,1L + +#define SN_tcg_attribute "tcg-attribute" +#define LN_tcg_attribute "Trusted Computing Group Attributes" +#define NID_tcg_attribute 1326 +#define OBJ_tcg_attribute OBJ_tcg,2L + +#define SN_tcg_protocol "tcg-protocol" +#define LN_tcg_protocol "Trusted Computing Group Protocols" +#define NID_tcg_protocol 1327 +#define OBJ_tcg_protocol OBJ_tcg,3L + +#define SN_tcg_algorithm "tcg-algorithm" +#define LN_tcg_algorithm "Trusted Computing Group Algorithms" +#define NID_tcg_algorithm 1328 +#define OBJ_tcg_algorithm OBJ_tcg,4L + +#define SN_tcg_platformClass "tcg-platformClass" +#define LN_tcg_platformClass "Trusted Computing Group Platform Classes" +#define NID_tcg_platformClass 1329 +#define OBJ_tcg_platformClass OBJ_tcg,5L + +#define SN_tcg_ce "tcg-ce" +#define LN_tcg_ce "Trusted Computing Group Certificate Extensions" +#define NID_tcg_ce 1330 +#define OBJ_tcg_ce OBJ_tcg,6L + +#define SN_tcg_kp "tcg-kp" +#define LN_tcg_kp "Trusted Computing Group Key Purposes" +#define NID_tcg_kp 1331 +#define OBJ_tcg_kp OBJ_tcg,8L + +#define SN_tcg_ca "tcg-ca" +#define LN_tcg_ca "Trusted Computing Group Certificate Policies" +#define NID_tcg_ca 1332 +#define OBJ_tcg_ca OBJ_tcg,11L + +#define SN_tcg_address "tcg-address" +#define LN_tcg_address "Trusted Computing Group Address Formats" +#define NID_tcg_address 1333 +#define OBJ_tcg_address OBJ_tcg,17L + +#define SN_tcg_registry "tcg-registry" +#define LN_tcg_registry "Trusted Computing Group Registry" +#define NID_tcg_registry 1334 +#define OBJ_tcg_registry OBJ_tcg,18L + +#define SN_tcg_traits "tcg-traits" +#define LN_tcg_traits "Trusted Computing Group Traits" +#define NID_tcg_traits 1335 +#define OBJ_tcg_traits OBJ_tcg,19L + +#define SN_tcg_common "tcg-common" +#define LN_tcg_common "Trusted Computing Group Common" +#define NID_tcg_common 1336 +#define OBJ_tcg_common OBJ_tcg_platformClass,1L + +#define SN_tcg_at_platformManufacturerStr "tcg-at-platformManufacturerStr" +#define LN_tcg_at_platformManufacturerStr "TCG Platform Manufacturer String" +#define NID_tcg_at_platformManufacturerStr 1337 +#define OBJ_tcg_at_platformManufacturerStr OBJ_tcg_common,1L + +#define SN_tcg_at_platformManufacturerId "tcg-at-platformManufacturerId" +#define LN_tcg_at_platformManufacturerId "TCG Platform Manufacturer ID" +#define NID_tcg_at_platformManufacturerId 1338 +#define OBJ_tcg_at_platformManufacturerId OBJ_tcg_common,2L + +#define SN_tcg_at_platformConfigUri "tcg-at-platformConfigUri" +#define LN_tcg_at_platformConfigUri "TCG Platform Configuration URI" +#define NID_tcg_at_platformConfigUri 1339 +#define OBJ_tcg_at_platformConfigUri OBJ_tcg_common,3L + +#define SN_tcg_at_platformModel "tcg-at-platformModel" +#define LN_tcg_at_platformModel "TCG Platform Model" +#define NID_tcg_at_platformModel 1340 +#define OBJ_tcg_at_platformModel OBJ_tcg_common,4L + +#define SN_tcg_at_platformVersion "tcg-at-platformVersion" +#define LN_tcg_at_platformVersion "TCG Platform Version" +#define NID_tcg_at_platformVersion 1341 +#define OBJ_tcg_at_platformVersion OBJ_tcg_common,5L + +#define SN_tcg_at_platformSerial "tcg-at-platformSerial" +#define LN_tcg_at_platformSerial "TCG Platform Serial Number" +#define NID_tcg_at_platformSerial 1342 +#define OBJ_tcg_at_platformSerial OBJ_tcg_common,6L + +#define SN_tcg_at_platformConfiguration "tcg-at-platformConfiguration" +#define LN_tcg_at_platformConfiguration "TCG Platform Configuration" +#define NID_tcg_at_platformConfiguration 1343 +#define OBJ_tcg_at_platformConfiguration OBJ_tcg_common,7L + +#define SN_tcg_at_platformIdentifier "tcg-at-platformIdentifier" +#define LN_tcg_at_platformIdentifier "TCG Platform Identifier" +#define NID_tcg_at_platformIdentifier 1344 +#define OBJ_tcg_at_platformIdentifier OBJ_tcg_common,8L + +#define SN_tcg_at_tpmManufacturer "tcg-at-tpmManufacturer" +#define LN_tcg_at_tpmManufacturer "TPM Manufacturer" +#define NID_tcg_at_tpmManufacturer 1345 +#define OBJ_tcg_at_tpmManufacturer OBJ_tcg_attribute,1L + +#define SN_tcg_at_tpmModel "tcg-at-tpmModel" +#define LN_tcg_at_tpmModel "TPM Model" +#define NID_tcg_at_tpmModel 1346 +#define OBJ_tcg_at_tpmModel OBJ_tcg_attribute,2L + +#define SN_tcg_at_tpmVersion "tcg-at-tpmVersion" +#define LN_tcg_at_tpmVersion "TPM Version" +#define NID_tcg_at_tpmVersion 1347 +#define OBJ_tcg_at_tpmVersion OBJ_tcg_attribute,3L + +#define SN_tcg_at_securityQualities "tcg-at-securityQualities" +#define LN_tcg_at_securityQualities "Security Qualities" +#define NID_tcg_at_securityQualities 1348 +#define OBJ_tcg_at_securityQualities OBJ_tcg_attribute,10L + +#define SN_tcg_at_tpmProtectionProfile "tcg-at-tpmProtectionProfile" +#define LN_tcg_at_tpmProtectionProfile "TPM Protection Profile" +#define NID_tcg_at_tpmProtectionProfile 1349 +#define OBJ_tcg_at_tpmProtectionProfile OBJ_tcg_attribute,11L + +#define SN_tcg_at_tpmSecurityTarget "tcg-at-tpmSecurityTarget" +#define LN_tcg_at_tpmSecurityTarget "TPM Security Target" +#define NID_tcg_at_tpmSecurityTarget 1350 +#define OBJ_tcg_at_tpmSecurityTarget OBJ_tcg_attribute,12L + +#define SN_tcg_at_tbbProtectionProfile "tcg-at-tbbProtectionProfile" +#define LN_tcg_at_tbbProtectionProfile "TBB Protection Profile" +#define NID_tcg_at_tbbProtectionProfile 1351 +#define OBJ_tcg_at_tbbProtectionProfile OBJ_tcg_attribute,13L + +#define SN_tcg_at_tbbSecurityTarget "tcg-at-tbbSecurityTarget" +#define LN_tcg_at_tbbSecurityTarget "TBB Security Target" +#define NID_tcg_at_tbbSecurityTarget 1352 +#define OBJ_tcg_at_tbbSecurityTarget OBJ_tcg_attribute,14L + +#define SN_tcg_at_tpmIdLabel "tcg-at-tpmIdLabel" +#define LN_tcg_at_tpmIdLabel "TPM ID Label" +#define NID_tcg_at_tpmIdLabel 1353 +#define OBJ_tcg_at_tpmIdLabel OBJ_tcg_attribute,15L + +#define SN_tcg_at_tpmSpecification "tcg-at-tpmSpecification" +#define LN_tcg_at_tpmSpecification "TPM Specification" +#define NID_tcg_at_tpmSpecification 1354 +#define OBJ_tcg_at_tpmSpecification OBJ_tcg_attribute,16L + +#define SN_tcg_at_tcgPlatformSpecification "tcg-at-tcgPlatformSpecification" +#define LN_tcg_at_tcgPlatformSpecification "TPM Platform Specification" +#define NID_tcg_at_tcgPlatformSpecification 1355 +#define OBJ_tcg_at_tcgPlatformSpecification OBJ_tcg_attribute,17L + +#define SN_tcg_at_tpmSecurityAssertions "tcg-at-tpmSecurityAssertions" +#define LN_tcg_at_tpmSecurityAssertions "TPM Security Assertions" +#define NID_tcg_at_tpmSecurityAssertions 1356 +#define OBJ_tcg_at_tpmSecurityAssertions OBJ_tcg_attribute,18L + +#define SN_tcg_at_tbbSecurityAssertions "tcg-at-tbbSecurityAssertions" +#define LN_tcg_at_tbbSecurityAssertions "TBB Security Assertions" +#define NID_tcg_at_tbbSecurityAssertions 1357 +#define OBJ_tcg_at_tbbSecurityAssertions OBJ_tcg_attribute,19L + +#define SN_tcg_at_tcgCredentialSpecification "tcg-at-tcgCredentialSpecification" +#define LN_tcg_at_tcgCredentialSpecification "TCG Credential Specification" +#define NID_tcg_at_tcgCredentialSpecification 1358 +#define OBJ_tcg_at_tcgCredentialSpecification OBJ_tcg_attribute,23L + +#define SN_tcg_at_tcgCredentialType "tcg-at-tcgCredentialType" +#define LN_tcg_at_tcgCredentialType "TCG Credential Type" +#define NID_tcg_at_tcgCredentialType 1359 +#define OBJ_tcg_at_tcgCredentialType OBJ_tcg_attribute,25L + +#define SN_tcg_at_previousPlatformCertificates "tcg-at-previousPlatformCertificates" +#define LN_tcg_at_previousPlatformCertificates "TCG Previous Platform Certificates" +#define NID_tcg_at_previousPlatformCertificates 1360 +#define OBJ_tcg_at_previousPlatformCertificates OBJ_tcg_attribute,26L + +#define SN_tcg_at_tbbSecurityAssertions_v3 "tcg-at-tbbSecurityAssertions-v3" +#define LN_tcg_at_tbbSecurityAssertions_v3 "TCG TBB Security Assertions V3" +#define NID_tcg_at_tbbSecurityAssertions_v3 1361 +#define OBJ_tcg_at_tbbSecurityAssertions_v3 OBJ_tcg_attribute,27L + +#define SN_tcg_at_cryptographicAnchors "tcg-at-cryptographicAnchors" +#define LN_tcg_at_cryptographicAnchors "TCG Cryptographic Anchors" +#define NID_tcg_at_cryptographicAnchors 1362 +#define OBJ_tcg_at_cryptographicAnchors OBJ_tcg_attribute,28L + +#define SN_tcg_at_platformConfiguration_v1 "tcg-at-platformConfiguration-v1" +#define LN_tcg_at_platformConfiguration_v1 "Platform Configuration Version 1" +#define NID_tcg_at_platformConfiguration_v1 1363 +#define OBJ_tcg_at_platformConfiguration_v1 OBJ_tcg_at_platformConfiguration,1L + +#define SN_tcg_at_platformConfiguration_v2 "tcg-at-platformConfiguration-v2" +#define LN_tcg_at_platformConfiguration_v2 "Platform Configuration Version 2" +#define NID_tcg_at_platformConfiguration_v2 1364 +#define OBJ_tcg_at_platformConfiguration_v2 OBJ_tcg_at_platformConfiguration,2L + +#define SN_tcg_at_platformConfiguration_v3 "tcg-at-platformConfiguration-v3" +#define LN_tcg_at_platformConfiguration_v3 "Platform Configuration Version 3" +#define NID_tcg_at_platformConfiguration_v3 1365 +#define OBJ_tcg_at_platformConfiguration_v3 OBJ_tcg_at_platformConfiguration,3L + +#define SN_tcg_at_platformConfigUri_v3 "tcg-at-platformConfigUri-v3" +#define LN_tcg_at_platformConfigUri_v3 "Platform Configuration URI Version 3" +#define NID_tcg_at_platformConfigUri_v3 1366 +#define OBJ_tcg_at_platformConfigUri_v3 OBJ_tcg_at_platformConfiguration,4L + +#define SN_tcg_algorithm_null "tcg-algorithm-null" +#define LN_tcg_algorithm_null "TCG NULL Algorithm" +#define NID_tcg_algorithm_null 1367 +#define OBJ_tcg_algorithm_null OBJ_tcg_algorithm,1L + +#define SN_tcg_kp_EKCertificate "tcg-kp-EKCertificate" +#define LN_tcg_kp_EKCertificate "Endorsement Key Certificate" +#define NID_tcg_kp_EKCertificate 1368 +#define OBJ_tcg_kp_EKCertificate OBJ_tcg_kp,1L + +#define SN_tcg_kp_PlatformAttributeCertificate "tcg-kp-PlatformAttributeCertificate" +#define LN_tcg_kp_PlatformAttributeCertificate "Platform Attribute Certificate" +#define NID_tcg_kp_PlatformAttributeCertificate 1369 +#define OBJ_tcg_kp_PlatformAttributeCertificate OBJ_tcg_kp,2L + +#define SN_tcg_kp_AIKCertificate "tcg-kp-AIKCertificate" +#define LN_tcg_kp_AIKCertificate "Attestation Identity Key Certificate" +#define NID_tcg_kp_AIKCertificate 1370 +#define OBJ_tcg_kp_AIKCertificate OBJ_tcg_kp,3L + +#define SN_tcg_kp_PlatformKeyCertificate "tcg-kp-PlatformKeyCertificate" +#define LN_tcg_kp_PlatformKeyCertificate "Platform Key Certificate" +#define NID_tcg_kp_PlatformKeyCertificate 1371 +#define OBJ_tcg_kp_PlatformKeyCertificate OBJ_tcg_kp,4L + +#define SN_tcg_kp_DeltaPlatformAttributeCertificate "tcg-kp-DeltaPlatformAttributeCertificate" +#define LN_tcg_kp_DeltaPlatformAttributeCertificate "Delta Platform Attribute Certificate" +#define NID_tcg_kp_DeltaPlatformAttributeCertificate 1372 +#define OBJ_tcg_kp_DeltaPlatformAttributeCertificate OBJ_tcg_kp,5L + +#define SN_tcg_kp_DeltaPlatformKeyCertificate "tcg-kp-DeltaPlatformKeyCertificate" +#define LN_tcg_kp_DeltaPlatformKeyCertificate "Delta Platform Key Certificate" +#define NID_tcg_kp_DeltaPlatformKeyCertificate 1373 +#define OBJ_tcg_kp_DeltaPlatformKeyCertificate OBJ_tcg_kp,6L + +#define SN_tcg_kp_AdditionalPlatformAttributeCertificate "tcg-kp-AdditionalPlatformAttributeCertificate" +#define LN_tcg_kp_AdditionalPlatformAttributeCertificate "Additional Platform Attribute Certificate" +#define NID_tcg_kp_AdditionalPlatformAttributeCertificate 1374 +#define OBJ_tcg_kp_AdditionalPlatformAttributeCertificate OBJ_tcg_kp,7L + +#define SN_tcg_kp_AdditionalPlatformKeyCertificate "tcg-kp-AdditionalPlatformKeyCertificate" +#define LN_tcg_kp_AdditionalPlatformKeyCertificate "Additional Platform Key Certificate" +#define NID_tcg_kp_AdditionalPlatformKeyCertificate 1375 +#define OBJ_tcg_kp_AdditionalPlatformKeyCertificate OBJ_tcg_kp,8L + +#define SN_tcg_ce_relevantCredentials "tcg-ce-relevantCredentials" +#define LN_tcg_ce_relevantCredentials "Relevant Credentials" +#define NID_tcg_ce_relevantCredentials 1376 +#define OBJ_tcg_ce_relevantCredentials OBJ_tcg_ce,2L + +#define SN_tcg_ce_relevantManifests "tcg-ce-relevantManifests" +#define LN_tcg_ce_relevantManifests "Relevant Manifests" +#define NID_tcg_ce_relevantManifests 1377 +#define OBJ_tcg_ce_relevantManifests OBJ_tcg_ce,3L + +#define SN_tcg_ce_virtualPlatformAttestationService "tcg-ce-virtualPlatformAttestationService" +#define LN_tcg_ce_virtualPlatformAttestationService "Virtual Platform Attestation Service" +#define NID_tcg_ce_virtualPlatformAttestationService 1378 +#define OBJ_tcg_ce_virtualPlatformAttestationService OBJ_tcg_ce,4L + +#define SN_tcg_ce_migrationControllerAttestationService "tcg-ce-migrationControllerAttestationService" +#define LN_tcg_ce_migrationControllerAttestationService "Migration Controller Attestation Service" +#define NID_tcg_ce_migrationControllerAttestationService 1379 +#define OBJ_tcg_ce_migrationControllerAttestationService OBJ_tcg_ce,5L + +#define SN_tcg_ce_migrationControllerRegistrationService "tcg-ce-migrationControllerRegistrationService" +#define LN_tcg_ce_migrationControllerRegistrationService "Migration Controller Registration Service" +#define NID_tcg_ce_migrationControllerRegistrationService 1380 +#define OBJ_tcg_ce_migrationControllerRegistrationService OBJ_tcg_ce,6L + +#define SN_tcg_ce_virtualPlatformBackupService "tcg-ce-virtualPlatformBackupService" +#define LN_tcg_ce_virtualPlatformBackupService "Virtual Platform Backup Service" +#define NID_tcg_ce_virtualPlatformBackupService 1381 +#define OBJ_tcg_ce_virtualPlatformBackupService OBJ_tcg_ce,7L + +#define SN_tcg_prt_tpmIdProtocol "tcg-prt-tpmIdProtocol" +#define LN_tcg_prt_tpmIdProtocol "TCG TPM Protocol" +#define NID_tcg_prt_tpmIdProtocol 1382 +#define OBJ_tcg_prt_tpmIdProtocol OBJ_tcg_protocol,1L + +#define SN_tcg_address_ethernetmac "tcg-address-ethernetmac" +#define LN_tcg_address_ethernetmac "Ethernet MAC Address" +#define NID_tcg_address_ethernetmac 1383 +#define OBJ_tcg_address_ethernetmac OBJ_tcg_address,1L + +#define SN_tcg_address_wlanmac "tcg-address-wlanmac" +#define LN_tcg_address_wlanmac "WLAN MAC Address" +#define NID_tcg_address_wlanmac 1384 +#define OBJ_tcg_address_wlanmac OBJ_tcg_address,2L + +#define SN_tcg_address_bluetoothmac "tcg-address-bluetoothmac" +#define LN_tcg_address_bluetoothmac "Bluetooth MAC Address" +#define NID_tcg_address_bluetoothmac 1385 +#define OBJ_tcg_address_bluetoothmac OBJ_tcg_address,3L + +#define SN_tcg_registry_componentClass "tcg-registry-componentClass" +#define LN_tcg_registry_componentClass "TCG Component Class" +#define NID_tcg_registry_componentClass 1386 +#define OBJ_tcg_registry_componentClass OBJ_tcg_registry,3L + +#define SN_tcg_registry_componentClass_tcg "tcg-registry-componentClass-tcg" +#define LN_tcg_registry_componentClass_tcg "Trusted Computed Group Registry" +#define NID_tcg_registry_componentClass_tcg 1387 +#define OBJ_tcg_registry_componentClass_tcg OBJ_tcg_registry_componentClass,1L + +#define SN_tcg_registry_componentClass_ietf "tcg-registry-componentClass-ietf" +#define LN_tcg_registry_componentClass_ietf "Internet Engineering Task Force Registry" +#define NID_tcg_registry_componentClass_ietf 1388 +#define OBJ_tcg_registry_componentClass_ietf OBJ_tcg_registry_componentClass,2L + +#define SN_tcg_registry_componentClass_dmtf "tcg-registry-componentClass-dmtf" +#define LN_tcg_registry_componentClass_dmtf "Distributed Management Task Force Registry" +#define NID_tcg_registry_componentClass_dmtf 1389 +#define OBJ_tcg_registry_componentClass_dmtf OBJ_tcg_registry_componentClass,3L + +#define SN_tcg_registry_componentClass_pcie "tcg-registry-componentClass-pcie" +#define LN_tcg_registry_componentClass_pcie "PCIE Component Class" +#define NID_tcg_registry_componentClass_pcie 1390 +#define OBJ_tcg_registry_componentClass_pcie OBJ_tcg_registry_componentClass,4L + +#define SN_tcg_registry_componentClass_disk "tcg-registry-componentClass-disk" +#define LN_tcg_registry_componentClass_disk "Disk Component Class" +#define NID_tcg_registry_componentClass_disk 1391 +#define OBJ_tcg_registry_componentClass_disk OBJ_tcg_registry_componentClass,5L + +#define SN_tcg_cap_verifiedPlatformCertificate "tcg-cap-verifiedPlatformCertificate" +#define LN_tcg_cap_verifiedPlatformCertificate "TCG Verified Platform Certificate CA Policy" +#define NID_tcg_cap_verifiedPlatformCertificate 1392 +#define OBJ_tcg_cap_verifiedPlatformCertificate OBJ_tcg_ca,4L + +#define SN_tcg_tr_ID "tcg-tr-ID" +#define LN_tcg_tr_ID "TCG Trait Identifiers" +#define NID_tcg_tr_ID 1393 +#define OBJ_tcg_tr_ID OBJ_tcg_traits,1L + +#define SN_tcg_tr_category "tcg-tr-category" +#define LN_tcg_tr_category "TCG Trait Categories" +#define NID_tcg_tr_category 1394 +#define OBJ_tcg_tr_category OBJ_tcg_traits,2L + +#define SN_tcg_tr_registry "tcg-tr-registry" +#define LN_tcg_tr_registry "TCG Trait Registries" +#define NID_tcg_tr_registry 1395 +#define OBJ_tcg_tr_registry OBJ_tcg_traits,3L + +#define SN_tcg_tr_ID_Boolean "tcg-tr-ID-Boolean" +#define LN_tcg_tr_ID_Boolean "Boolean Trait" +#define NID_tcg_tr_ID_Boolean 1396 +#define OBJ_tcg_tr_ID_Boolean OBJ_tcg_tr_ID,1L + +#define SN_tcg_tr_ID_CertificateIdentifier "tcg-tr-ID-CertificateIdentifier" +#define LN_tcg_tr_ID_CertificateIdentifier "Certificate Identifier Trait" +#define NID_tcg_tr_ID_CertificateIdentifier 1397 +#define OBJ_tcg_tr_ID_CertificateIdentifier OBJ_tcg_tr_ID,2L + +#define SN_tcg_tr_ID_CommonCriteria "tcg-tr-ID-CommonCriteria" +#define LN_tcg_tr_ID_CommonCriteria "Common Criteria Trait" +#define NID_tcg_tr_ID_CommonCriteria 1398 +#define OBJ_tcg_tr_ID_CommonCriteria OBJ_tcg_tr_ID,3L + +#define SN_tcg_tr_ID_componentClass "tcg-tr-ID-componentClass" +#define LN_tcg_tr_ID_componentClass "Component Class Trait" +#define NID_tcg_tr_ID_componentClass 1399 +#define OBJ_tcg_tr_ID_componentClass OBJ_tcg_tr_ID,4L + +#define SN_tcg_tr_ID_componentIdentifierV11 "tcg-tr-ID-componentIdentifierV11" +#define LN_tcg_tr_ID_componentIdentifierV11 "Component Identifier V1.1 Trait" +#define NID_tcg_tr_ID_componentIdentifierV11 1400 +#define OBJ_tcg_tr_ID_componentIdentifierV11 OBJ_tcg_tr_ID,5L + +#define SN_tcg_tr_ID_FIPSLevel "tcg-tr-ID-FIPSLevel" +#define LN_tcg_tr_ID_FIPSLevel "FIPS Level Trait" +#define NID_tcg_tr_ID_FIPSLevel 1401 +#define OBJ_tcg_tr_ID_FIPSLevel OBJ_tcg_tr_ID,6L + +#define SN_tcg_tr_ID_ISO9000Level "tcg-tr-ID-ISO9000Level" +#define LN_tcg_tr_ID_ISO9000Level "ISO 9000 Level Trait" +#define NID_tcg_tr_ID_ISO9000Level 1402 +#define OBJ_tcg_tr_ID_ISO9000Level OBJ_tcg_tr_ID,7L + +#define SN_tcg_tr_ID_networkMAC "tcg-tr-ID-networkMAC" +#define LN_tcg_tr_ID_networkMAC "Network MAC Trait" +#define NID_tcg_tr_ID_networkMAC 1403 +#define OBJ_tcg_tr_ID_networkMAC OBJ_tcg_tr_ID,8L + +#define SN_tcg_tr_ID_OID "tcg-tr-ID-OID" +#define LN_tcg_tr_ID_OID "Object Identifier Trait" +#define NID_tcg_tr_ID_OID 1404 +#define OBJ_tcg_tr_ID_OID OBJ_tcg_tr_ID,9L + +#define SN_tcg_tr_ID_PEN "tcg-tr-ID-PEN" +#define LN_tcg_tr_ID_PEN "Private Enterprise Number Trait" +#define NID_tcg_tr_ID_PEN 1405 +#define OBJ_tcg_tr_ID_PEN OBJ_tcg_tr_ID,10L + +#define SN_tcg_tr_ID_platformFirmwareCapabilities "tcg-tr-ID-platformFirmwareCapabilities" +#define LN_tcg_tr_ID_platformFirmwareCapabilities "Platform Firmware Capabilities Trait" +#define NID_tcg_tr_ID_platformFirmwareCapabilities 1406 +#define OBJ_tcg_tr_ID_platformFirmwareCapabilities OBJ_tcg_tr_ID,11L + +#define SN_tcg_tr_ID_platformFirmwareSignatureVerification "tcg-tr-ID-platformFirmwareSignatureVerification" +#define LN_tcg_tr_ID_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait" +#define NID_tcg_tr_ID_platformFirmwareSignatureVerification 1407 +#define OBJ_tcg_tr_ID_platformFirmwareSignatureVerification OBJ_tcg_tr_ID,12L + +#define SN_tcg_tr_ID_platformFirmwareUpdateCompliance "tcg-tr-ID-platformFirmwareUpdateCompliance" +#define LN_tcg_tr_ID_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait" +#define NID_tcg_tr_ID_platformFirmwareUpdateCompliance 1408 +#define OBJ_tcg_tr_ID_platformFirmwareUpdateCompliance OBJ_tcg_tr_ID,13L + +#define SN_tcg_tr_ID_platformHardwareCapabilities "tcg-tr-ID-platformHardwareCapabilities" +#define LN_tcg_tr_ID_platformHardwareCapabilities "Platform Hardware Capabilities Trait" +#define NID_tcg_tr_ID_platformHardwareCapabilities 1409 +#define OBJ_tcg_tr_ID_platformHardwareCapabilities OBJ_tcg_tr_ID,14L + +#define SN_tcg_tr_ID_RTM "tcg-tr-ID-RTM" +#define LN_tcg_tr_ID_RTM "Root of Trust for Measurement Trait" +#define NID_tcg_tr_ID_RTM 1410 +#define OBJ_tcg_tr_ID_RTM OBJ_tcg_tr_ID,15L + +#define SN_tcg_tr_ID_status "tcg-tr-ID-status" +#define LN_tcg_tr_ID_status "Attribute Status Trait" +#define NID_tcg_tr_ID_status 1411 +#define OBJ_tcg_tr_ID_status OBJ_tcg_tr_ID,16L + +#define SN_tcg_tr_ID_URI "tcg-tr-ID-URI" +#define LN_tcg_tr_ID_URI "Uniform Resource Identifier Trait" +#define NID_tcg_tr_ID_URI 1412 +#define OBJ_tcg_tr_ID_URI OBJ_tcg_tr_ID,17L + +#define SN_tcg_tr_ID_UTF8String "tcg-tr-ID-UTF8String" +#define LN_tcg_tr_ID_UTF8String "UTF8String Trait" +#define NID_tcg_tr_ID_UTF8String 1413 +#define OBJ_tcg_tr_ID_UTF8String OBJ_tcg_tr_ID,18L + +#define SN_tcg_tr_ID_IA5String "tcg-tr-ID-IA5String" +#define LN_tcg_tr_ID_IA5String "IA5String Trait" +#define NID_tcg_tr_ID_IA5String 1414 +#define OBJ_tcg_tr_ID_IA5String OBJ_tcg_tr_ID,19L + +#define SN_tcg_tr_ID_PEMCertString "tcg-tr-ID-PEMCertString" +#define LN_tcg_tr_ID_PEMCertString "PEM-Encoded Certificate String Trait" +#define NID_tcg_tr_ID_PEMCertString 1415 +#define OBJ_tcg_tr_ID_PEMCertString OBJ_tcg_tr_ID,20L + +#define SN_tcg_tr_ID_PublicKey "tcg-tr-ID-PublicKey" +#define LN_tcg_tr_ID_PublicKey "Public Key Trait" +#define NID_tcg_tr_ID_PublicKey 1416 +#define OBJ_tcg_tr_ID_PublicKey OBJ_tcg_tr_ID,21L + +#define SN_tcg_tr_cat_platformManufacturer "tcg-tr-cat-platformManufacturer" +#define LN_tcg_tr_cat_platformManufacturer "Platform Manufacturer Trait Category" +#define NID_tcg_tr_cat_platformManufacturer 1417 +#define OBJ_tcg_tr_cat_platformManufacturer OBJ_tcg_tr_category,1L + +#define SN_tcg_tr_cat_platformModel "tcg-tr-cat-platformModel" +#define LN_tcg_tr_cat_platformModel "Platform Model Trait Category" +#define NID_tcg_tr_cat_platformModel 1418 +#define OBJ_tcg_tr_cat_platformModel OBJ_tcg_tr_category,2L + +#define SN_tcg_tr_cat_platformVersion "tcg-tr-cat-platformVersion" +#define LN_tcg_tr_cat_platformVersion "Platform Version Trait Category" +#define NID_tcg_tr_cat_platformVersion 1419 +#define OBJ_tcg_tr_cat_platformVersion OBJ_tcg_tr_category,3L + +#define SN_tcg_tr_cat_platformSerial "tcg-tr-cat-platformSerial" +#define LN_tcg_tr_cat_platformSerial "Platform Serial Trait Category" +#define NID_tcg_tr_cat_platformSerial 1420 +#define OBJ_tcg_tr_cat_platformSerial OBJ_tcg_tr_category,4L + +#define SN_tcg_tr_cat_platformManufacturerIdentifier "tcg-tr-cat-platformManufacturerIdentifier" +#define LN_tcg_tr_cat_platformManufacturerIdentifier "Platform Manufacturer Identifier Trait Category" +#define NID_tcg_tr_cat_platformManufacturerIdentifier 1421 +#define OBJ_tcg_tr_cat_platformManufacturerIdentifier OBJ_tcg_tr_category,5L + +#define SN_tcg_tr_cat_platformOwnership "tcg-tr-cat-platformOwnership" +#define LN_tcg_tr_cat_platformOwnership "Platform Ownership Trait Category" +#define NID_tcg_tr_cat_platformOwnership 1422 +#define OBJ_tcg_tr_cat_platformOwnership OBJ_tcg_tr_category,6L + +#define SN_tcg_tr_cat_componentClass "tcg-tr-cat-componentClass" +#define LN_tcg_tr_cat_componentClass "Component Class Trait Category" +#define NID_tcg_tr_cat_componentClass 1423 +#define OBJ_tcg_tr_cat_componentClass OBJ_tcg_tr_category,7L + +#define SN_tcg_tr_cat_componentManufacturer "tcg-tr-cat-componentManufacturer" +#define LN_tcg_tr_cat_componentManufacturer "Component Manufacturer Trait Category" +#define NID_tcg_tr_cat_componentManufacturer 1424 +#define OBJ_tcg_tr_cat_componentManufacturer OBJ_tcg_tr_category,8L + +#define SN_tcg_tr_cat_componentModel "tcg-tr-cat-componentModel" +#define LN_tcg_tr_cat_componentModel "Component Model Trait Category" +#define NID_tcg_tr_cat_componentModel 1425 +#define OBJ_tcg_tr_cat_componentModel OBJ_tcg_tr_category,9L + +#define SN_tcg_tr_cat_componentSerial "tcg-tr-cat-componentSerial" +#define LN_tcg_tr_cat_componentSerial "Component Serial Trait Category" +#define NID_tcg_tr_cat_componentSerial 1426 +#define OBJ_tcg_tr_cat_componentSerial OBJ_tcg_tr_category,10L + +#define SN_tcg_tr_cat_componentStatus "tcg-tr-cat-componentStatus" +#define LN_tcg_tr_cat_componentStatus "Component Status Trait Category" +#define NID_tcg_tr_cat_componentStatus 1427 +#define OBJ_tcg_tr_cat_componentStatus OBJ_tcg_tr_category,11L + +#define SN_tcg_tr_cat_componentLocation "tcg-tr-cat-componentLocation" +#define LN_tcg_tr_cat_componentLocation "Component Location Trait Category" +#define NID_tcg_tr_cat_componentLocation 1428 +#define OBJ_tcg_tr_cat_componentLocation OBJ_tcg_tr_category,12L + +#define SN_tcg_tr_cat_componentRevision "tcg-tr-cat-componentRevision" +#define LN_tcg_tr_cat_componentRevision "Component Revision Trait Category" +#define NID_tcg_tr_cat_componentRevision 1429 +#define OBJ_tcg_tr_cat_componentRevision OBJ_tcg_tr_category,13L + +#define SN_tcg_tr_cat_componentFieldReplaceable "tcg-tr-cat-componentFieldReplaceable" +#define LN_tcg_tr_cat_componentFieldReplaceable "Component Field Replaceable Trait Category" +#define NID_tcg_tr_cat_componentFieldReplaceable 1430 +#define OBJ_tcg_tr_cat_componentFieldReplaceable OBJ_tcg_tr_category,14L + +#define SN_tcg_tr_cat_EKCertificate "tcg-tr-cat-EKCertificate" +#define LN_tcg_tr_cat_EKCertificate "EK Certificate Trait Category" +#define NID_tcg_tr_cat_EKCertificate 1431 +#define OBJ_tcg_tr_cat_EKCertificate OBJ_tcg_tr_category,15L + +#define SN_tcg_tr_cat_IAKCertificate "tcg-tr-cat-IAKCertificate" +#define LN_tcg_tr_cat_IAKCertificate "IAK Certificate Trait Category" +#define NID_tcg_tr_cat_IAKCertificate 1432 +#define OBJ_tcg_tr_cat_IAKCertificate OBJ_tcg_tr_category,16L + +#define SN_tcg_tr_cat_IDevIDCertificate "tcg-tr-cat-IDevIDCertificate" +#define LN_tcg_tr_cat_IDevIDCertificate "IDevID Certificate Trait Category" +#define NID_tcg_tr_cat_IDevIDCertificate 1433 +#define OBJ_tcg_tr_cat_IDevIDCertificate OBJ_tcg_tr_category,17L + +#define SN_tcg_tr_cat_DICECertificate "tcg-tr-cat-DICECertificate" +#define LN_tcg_tr_cat_DICECertificate "DICE Certificate Trait Category" +#define NID_tcg_tr_cat_DICECertificate 1434 +#define OBJ_tcg_tr_cat_DICECertificate OBJ_tcg_tr_category,18L + +#define SN_tcg_tr_cat_SPDMCertificate "tcg-tr-cat-SPDMCertificate" +#define LN_tcg_tr_cat_SPDMCertificate "SPDM Certificate Trait Category" +#define NID_tcg_tr_cat_SPDMCertificate 1435 +#define OBJ_tcg_tr_cat_SPDMCertificate OBJ_tcg_tr_category,19L + +#define SN_tcg_tr_cat_PEMCertificate "tcg-tr-cat-PEMCertificate" +#define LN_tcg_tr_cat_PEMCertificate "PEM Certificate Trait Category" +#define NID_tcg_tr_cat_PEMCertificate 1436 +#define OBJ_tcg_tr_cat_PEMCertificate OBJ_tcg_tr_category,20L + +#define SN_tcg_tr_cat_PlatformCertificate "tcg-tr-cat-PlatformCertificate" +#define LN_tcg_tr_cat_PlatformCertificate "Platform Certificate Trait Category" +#define NID_tcg_tr_cat_PlatformCertificate 1437 +#define OBJ_tcg_tr_cat_PlatformCertificate OBJ_tcg_tr_category,21L + +#define SN_tcg_tr_cat_DeltaPlatformCertificate "tcg-tr-cat-DeltaPlatformCertificate" +#define LN_tcg_tr_cat_DeltaPlatformCertificate "Delta Platform Certificate Trait Category" +#define NID_tcg_tr_cat_DeltaPlatformCertificate 1438 +#define OBJ_tcg_tr_cat_DeltaPlatformCertificate OBJ_tcg_tr_category,22L + +#define SN_tcg_tr_cat_RebasePlatformCertificate "tcg-tr-cat-RebasePlatformCertificate" +#define LN_tcg_tr_cat_RebasePlatformCertificate "Rebase Platform Certificate Trait Category" +#define NID_tcg_tr_cat_RebasePlatformCertificate 1439 +#define OBJ_tcg_tr_cat_RebasePlatformCertificate OBJ_tcg_tr_category,23L + +#define SN_tcg_tr_cat_genericCertificate "tcg-tr-cat-genericCertificate" +#define LN_tcg_tr_cat_genericCertificate "Generic Certificate Trait Category" +#define NID_tcg_tr_cat_genericCertificate 1440 +#define OBJ_tcg_tr_cat_genericCertificate OBJ_tcg_tr_category,24L + +#define SN_tcg_tr_cat_CommonCriteria "tcg-tr-cat-CommonCriteria" +#define LN_tcg_tr_cat_CommonCriteria "Common Criteria Trait Category" +#define NID_tcg_tr_cat_CommonCriteria 1441 +#define OBJ_tcg_tr_cat_CommonCriteria OBJ_tcg_tr_category,25L + +#define SN_tcg_tr_cat_componentIdentifierV11 "tcg-tr-cat-componentIdentifierV11" +#define LN_tcg_tr_cat_componentIdentifierV11 "Component Identifier V1.1 Trait Category" +#define NID_tcg_tr_cat_componentIdentifierV11 1442 +#define OBJ_tcg_tr_cat_componentIdentifierV11 OBJ_tcg_tr_category,26L + +#define SN_tcg_tr_cat_FIPSLevel "tcg-tr-cat-FIPSLevel" +#define LN_tcg_tr_cat_FIPSLevel "FIPS Level Trait Category" +#define NID_tcg_tr_cat_FIPSLevel 1443 +#define OBJ_tcg_tr_cat_FIPSLevel OBJ_tcg_tr_category,27L + +#define SN_tcg_tr_cat_ISO9000 "tcg-tr-cat-ISO9000" +#define LN_tcg_tr_cat_ISO9000 "ISO 9000 Trait Category" +#define NID_tcg_tr_cat_ISO9000 1444 +#define OBJ_tcg_tr_cat_ISO9000 OBJ_tcg_tr_category,28L + +#define SN_tcg_tr_cat_networkMAC "tcg-tr-cat-networkMAC" +#define LN_tcg_tr_cat_networkMAC "Network MAC Trait Category" +#define NID_tcg_tr_cat_networkMAC 1445 +#define OBJ_tcg_tr_cat_networkMAC OBJ_tcg_tr_category,29L + +#define SN_tcg_tr_cat_attestationProtocol "tcg-tr-cat-attestationProtocol" +#define LN_tcg_tr_cat_attestationProtocol "Attestation Protocol Trait Category" +#define NID_tcg_tr_cat_attestationProtocol 1446 +#define OBJ_tcg_tr_cat_attestationProtocol OBJ_tcg_tr_category,30L + +#define SN_tcg_tr_cat_PEN "tcg-tr-cat-PEN" +#define LN_tcg_tr_cat_PEN "Private Enterprise Number Trait Category" +#define NID_tcg_tr_cat_PEN 1447 +#define OBJ_tcg_tr_cat_PEN OBJ_tcg_tr_category,31L + +#define SN_tcg_tr_cat_platformFirmwareCapabilities "tcg-tr-cat-platformFirmwareCapabilities" +#define LN_tcg_tr_cat_platformFirmwareCapabilities "Platform Firmware Capabilities Trait Category" +#define NID_tcg_tr_cat_platformFirmwareCapabilities 1448 +#define OBJ_tcg_tr_cat_platformFirmwareCapabilities OBJ_tcg_tr_category,32L + +#define SN_tcg_tr_cat_platformHardwareCapabilities "tcg-tr-cat-platformHardwareCapabilities" +#define LN_tcg_tr_cat_platformHardwareCapabilities "Platform Hardware Capabilities Trait Category" +#define NID_tcg_tr_cat_platformHardwareCapabilities 1449 +#define OBJ_tcg_tr_cat_platformHardwareCapabilities OBJ_tcg_tr_category,33L + +#define SN_tcg_tr_cat_platformFirmwareSignatureVerification "tcg-tr-cat-platformFirmwareSignatureVerification" +#define LN_tcg_tr_cat_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait Category" +#define NID_tcg_tr_cat_platformFirmwareSignatureVerification 1450 +#define OBJ_tcg_tr_cat_platformFirmwareSignatureVerification OBJ_tcg_tr_category,34L + +#define SN_tcg_tr_cat_platformFirmwareUpdateCompliance "tcg-tr-cat-platformFirmwareUpdateCompliance" +#define LN_tcg_tr_cat_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait Category" +#define NID_tcg_tr_cat_platformFirmwareUpdateCompliance 1451 +#define OBJ_tcg_tr_cat_platformFirmwareUpdateCompliance OBJ_tcg_tr_category,35L + +#define SN_tcg_tr_cat_RTM "tcg-tr-cat-RTM" +#define LN_tcg_tr_cat_RTM "Root of Trust of Measurement Trait Category" +#define NID_tcg_tr_cat_RTM 1452 +#define OBJ_tcg_tr_cat_RTM OBJ_tcg_tr_category,36L + +#define SN_tcg_tr_cat_PublicKey "tcg-tr-cat-PublicKey" +#define LN_tcg_tr_cat_PublicKey "Public Key Trait Category" +#define NID_tcg_tr_cat_PublicKey 1453 +#define OBJ_tcg_tr_cat_PublicKey OBJ_tcg_tr_category,37L + +#define OBJ_nistKems OBJ_nistAlgorithms,4L + +#define SN_ML_KEM_512 "id-alg-ml-kem-512" +#define LN_ML_KEM_512 "ML-KEM-512" +#define NID_ML_KEM_512 1454 +#define OBJ_ML_KEM_512 OBJ_nistKems,1L + +#define SN_ML_KEM_768 "id-alg-ml-kem-768" +#define LN_ML_KEM_768 "ML-KEM-768" +#define NID_ML_KEM_768 1455 +#define OBJ_ML_KEM_768 OBJ_nistKems,2L + +#define SN_ML_KEM_1024 "id-alg-ml-kem-1024" +#define LN_ML_KEM_1024 "ML-KEM-1024" +#define NID_ML_KEM_1024 1456 +#define OBJ_ML_KEM_1024 OBJ_nistKems,3L + +#endif /* OPENSSL_OBJ_MAC_H */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm SN_magma_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm NID_magma_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_magma_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac SN_magma_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac NID_magma_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_magma_ctr_acpkm_omac + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm SN_kuznyechik_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm NID_kuznyechik_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_kuznyechik_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac SN_kuznyechik_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac NID_kuznyechik_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_kuznyechik_ctr_acpkm_omac + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 SN_magma_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 NID_magma_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_magma_kexp15 + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 SN_kuznyechik_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 NID_kuznyechik_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_kuznyechik_kexp15 + +#define SN_grasshopper_ecb SN_kuznyechik_ecb +#define NID_grasshopper_ecb NID_kuznyechik_ecb + +#define SN_grasshopper_ctr SN_kuznyechik_ctr +#define NID_grasshopper_ctr NID_kuznyechik_ctr + +#define SN_grasshopper_ofb SN_kuznyechik_ofb +#define NID_grasshopper_ofb NID_kuznyechik_ofb + +#define SN_grasshopper_cbc SN_kuznyechik_cbc +#define NID_grasshopper_cbc NID_kuznyechik_cbc + +#define SN_grasshopper_cfb SN_kuznyechik_cfb +#define NID_grasshopper_cfb NID_kuznyechik_cfb + +#define SN_grasshopper_mac SN_kuznyechik_mac +#define NID_grasshopper_mac NID_kuznyechik_mac + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/objects.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/objects.h new file mode 100644 index 0000000..de1f1db --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/objects.h @@ -0,0 +1,186 @@ +/* + * Copyright 1995-2024 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_OBJECTS_H +#define OPENSSL_OBJECTS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OBJECTS_H +#endif + +#include +#include +#include +#include + +#define OBJ_NAME_TYPE_UNDEF 0x00 +#define OBJ_NAME_TYPE_MD_METH 0x01 +#define OBJ_NAME_TYPE_CIPHER_METH 0x02 +#define OBJ_NAME_TYPE_PKEY_METH 0x03 +#define OBJ_NAME_TYPE_COMP_METH 0x04 +#define OBJ_NAME_TYPE_MAC_METH 0x05 +#define OBJ_NAME_TYPE_KDF_METH 0x06 +#define OBJ_NAME_TYPE_NUM 0x07 + +#define OBJ_NAME_ALIAS 0x8000 + +#define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 +#define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct obj_name_st { + int type; + int alias; + const char *name; + const char *data; +} OBJ_NAME; + +#define OBJ_create_and_add_object(a, b, c) OBJ_create(a, b, c) + +int OBJ_NAME_init(void); +int OBJ_NAME_new_index(unsigned long (*hash_func)(const char *), + int (*cmp_func)(const char *, const char *), + void (*free_func)(const char *, int, const char *)); +const char *OBJ_NAME_get(const char *name, int type); +int OBJ_NAME_add(const char *name, int type, const char *data); +int OBJ_NAME_remove(const char *name, int type); +void OBJ_NAME_cleanup(int type); /* -1 for everything */ +void OBJ_NAME_do_all(int type, void (*fn)(const OBJ_NAME *, void *arg), + void *arg); +void OBJ_NAME_do_all_sorted(int type, + void (*fn)(const OBJ_NAME *, void *arg), + void *arg); + +DECLARE_ASN1_DUP_FUNCTION_name(ASN1_OBJECT, OBJ) +ASN1_OBJECT *OBJ_nid2obj(int n); +const char *OBJ_nid2ln(int n); +const char *OBJ_nid2sn(int n); +int OBJ_obj2nid(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); +int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); +int OBJ_txt2nid(const char *s); +int OBJ_ln2nid(const char *s); +int OBJ_sn2nid(const char *s); +int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); +const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, + int (*cmp)(const void *, const void *)); +const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, + int size, + int (*cmp)(const void *, const void *), + int flags); + +#define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ + static int nm##_cmp(type1 const *, type2 const *); \ + scope type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +#define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ + _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) +#define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +/*- + * Unsolved problem: if a type is actually a pointer type, like + * nid_triple is, then its impossible to get a const where you need + * it. Consider: + * + * typedef int nid_triple[3]; + * const void *a_; + * const nid_triple const *a = a_; + * + * The assignment discards a const because what you really want is: + * + * const int const * const *a = a_; + * + * But if you do that, you lose the fact that a is an array of 3 ints, + * which breaks comparison functions. + * + * Thus we end up having to cast, sadly, or unpack the + * declarations. Or, as I finally did in this case, declare nid_triple + * to be a struct, which it should have been in the first place. + * + * Ben, August 2008. + * + * Also, strictly speaking not all types need be const, but handling + * the non-constness means a lot of complication, and in practice + * comparison routines do always not touch their arguments. + */ + +#define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a, b); \ + } \ + static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +#define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a, b); \ + } \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +#define OBJ_bsearch(type1, key, type2, base, num, cmp) \ + ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1, key), CHECKED_PTR_OF(type2, base), \ + num, sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1, cmp##_type_1), \ + (void)CHECKED_PTR_OF(type2, cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN))) + +#define OBJ_bsearch_ex(type1, key, type2, base, num, cmp, flags) \ + ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1, key), CHECKED_PTR_OF(type2, base), \ + num, sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1, cmp##_type_1), \ + (void)type_2 = CHECKED_PTR_OF(type2, cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN)), \ + flags) + +int OBJ_new_nid(int num); +int OBJ_add_object(const ASN1_OBJECT *obj); +int OBJ_create(const char *oid, const char *sn, const char *ln); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OBJ_cleanup() \ + while (0) \ + continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); +int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); +int OBJ_add_sigid(int signid, int dig_id, int pkey_id); +void OBJ_sigid_free(void); + +#define SN_ac_auditEntity SN_ac_auditIdentity + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/objectserr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/objectserr.h new file mode 100644 index 0000000..2927561 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/objectserr.h @@ -0,0 +1,26 @@ +/* + * 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_OBJECTSERR_H +#define OPENSSL_OBJECTSERR_H +#pragma once + +#include +#include +#include + +/* + * OBJ reason codes. + */ +#define OBJ_R_OID_EXISTS 102 +#define OBJ_R_UNKNOWN_NID 101 +#define OBJ_R_UNKNOWN_OBJECT_NAME 103 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ocsp.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ocsp.h new file mode 100644 index 0000000..00467ba --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ocsp.h @@ -0,0 +1,487 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ocsp.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_OCSP_H +#define OPENSSL_OCSP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OCSP_H +#endif + +#include +#include +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * -- value 7 is not used + * removeFromCRL (8), + * privilegeWithdrawn (9), + * aACompromise (10) } + */ +#define OCSP_REVOKED_STATUS_NOSTATUS -1 +#define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +#define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +#define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +#define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +#define OCSP_REVOKED_STATUS_SUPERSEDED 4 +#define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +#define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +#define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 +#define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 +#define OCSP_REVOKED_STATUS_AACOMPROMISE 10 + +#ifndef OPENSSL_NO_OCSP + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +#define OCSP_DEFAULT_NONCE_LENGTH 16 + +#define OCSP_NOCERTS 0x1 +#define OCSP_NOINTERN 0x2 +#define OCSP_NOSIGS 0x4 +#define OCSP_NOCHAIN 0x8 +#define OCSP_NOVERIFY 0x10 +#define OCSP_NOEXPLICIT 0x20 +#define OCSP_NOCASIGN 0x40 +#define OCSP_NODELEGATED 0x80 +#define OCSP_NOCHECKS 0x100 +#define OCSP_TRUSTOTHER 0x200 +#define OCSP_RESPID_KEY 0x400 +#define OCSP_NOTIME 0x800 +#define OCSP_PARTIAL_CHAIN 0x1000 + +typedef struct ocsp_cert_id_st OCSP_CERTID; +typedef struct ocsp_one_request_st OCSP_ONEREQ; +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) +#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) +#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) +#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) +#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) +#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) +#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_freefunc_type(freefunc)) +#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) +#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) +#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) +#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) +#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) +#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) +#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) +#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) +#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) +#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) +#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) +#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) +#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) +#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) +#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) + +/* clang-format on */ + +#define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +#define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +#define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +#define OCSP_RESPONSE_STATUS_TRYLATER 3 +#define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +#define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +#define V_OCSP_RESPID_NAME 0 +#define V_OCSP_RESPID_KEY 1 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) +#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) +#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) +#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) +#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) +#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) +#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_freefunc_type(freefunc)) +#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) +#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) +#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) +#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +#define V_OCSP_CERTSTATUS_GOOD 0 +#define V_OCSP_CERTSTATUS_REVOKED 1 +#define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) +#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) +#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) +#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) +#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) +#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) +#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) +#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) +#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) +#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) +#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) +#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +#define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +#define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +#define d2i_OCSP_REQUEST_bio(bp, p) ASN1_d2i_bio_of(OCSP_REQUEST, OCSP_REQUEST_new, d2i_OCSP_REQUEST, bp, p) + +#define d2i_OCSP_RESPONSE_bio(bp, p) ASN1_d2i_bio_of(OCSP_RESPONSE, OCSP_RESPONSE_new, d2i_OCSP_RESPONSE, bp, p) + +#define PEM_read_bio_OCSP_REQUEST(bp, x, cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char **)(x), cb, NULL) + +#define PEM_read_bio_OCSP_RESPONSE(bp, x, cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char **)(x), cb, NULL) + +#define PEM_write_bio_OCSP_REQUEST(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define PEM_write_bio_OCSP_RESPONSE(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define i2d_OCSP_RESPONSE_bio(bp, o) ASN1_i2d_bio_of(OCSP_RESPONSE, i2d_OCSP_RESPONSE, bp, o) + +#define i2d_OCSP_REQUEST_bio(bp, o) ASN1_i2d_bio_of(OCSP_REQUEST, i2d_OCSP_REQUEST, bp, o) + +#define ASN1_BIT_STRING_digest(data, type, md, len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING), type, data, md, len) + +#define OCSP_CERTSTATUS_dup(cs) \ + (OCSP_CERTSTATUS *)ASN1_dup((i2d_of_void *)i2d_OCSP_CERTSTATUS, \ + (d2i_of_void *)d2i_OCSP_CERTSTATUS, (char *)(cs)) + +DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) + +OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, + const OCSP_REQUEST *req, int buf_size); +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; +#define OCSP_REQ_CTX_new(io, buf_size) \ + OSSL_HTTP_REQ_CTX_new(io, io, buf_size) +#define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free +#define OCSP_REQ_CTX_http(rctx, op, path) \ + (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, NULL, NULL, path)) +#define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header +#define OCSP_REQ_CTX_i2d(r, it, req) \ + OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) +#define OCSP_REQ_CTX_set1_req(r, req) \ + OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) +#define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio +#define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i +#define OCSP_sendreq_nbio(p, r) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ + ASN1_ITEM_rptr(OCSP_RESPONSE)) +#define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio +#define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length +#endif + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, const X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP *bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +#define OCSP_parse_url(url, host, port, path, ssl) \ + OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key_ex(OCSP_RESPID *respid, X509 *cert, + OSSL_LIB_CTX *libctx, const char *propq); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, + const char *propq); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(const X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_OCSP) */ +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ocsperr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ocsperr.h new file mode 100644 index 0000000..18e035e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ocsperr.h @@ -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_OCSPERR_H +#define OPENSSL_OCSPERR_H +#pragma once + +#include +#include +#include + +#ifndef OPENSSL_NO_OCSP + +/* + * OCSP reason codes. + */ +#define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +#define OCSP_R_DIGEST_ERR 102 +#define OCSP_R_DIGEST_NAME_ERR 106 +#define OCSP_R_DIGEST_SIZE_ERR 107 +#define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +#define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +#define OCSP_R_MISSING_OCSPSIGNING_USAGE 103 +#define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE 124 +#define OCSP_R_NOT_BASIC_RESPONSE 104 +#define OCSP_R_NO_CERTIFICATES_IN_CHAIN 105 +#define OCSP_R_NO_RESPONSE_DATA 108 +#define OCSP_R_NO_REVOKED_TIME 109 +#define OCSP_R_NO_SIGNER_KEY 130 +#define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 110 +#define OCSP_R_REQUEST_NOT_SIGNED 128 +#define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA 111 +#define OCSP_R_ROOT_CA_NOT_TRUSTED 112 +#define OCSP_R_SIGNATURE_FAILURE 117 +#define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND 118 +#define OCSP_R_STATUS_EXPIRED 125 +#define OCSP_R_STATUS_NOT_YET_VALID 126 +#define OCSP_R_STATUS_TOO_OLD 127 +#define OCSP_R_UNKNOWN_MESSAGE_DIGEST 119 +#define OCSP_R_UNKNOWN_NID 120 +#define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE 129 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/opensslconf.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/opensslconf.h new file mode 100644 index 0000000..4a8d78e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/opensslconf.h @@ -0,0 +1,17 @@ +/* + * 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_OPENSSLCONF_H +#define OPENSSL_OPENSSLCONF_H +#pragma once + +#include +#include + +#endif /* OPENSSL_OPENSSLCONF_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/opensslv.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/opensslv.h new file mode 100644 index 0000000..e518027 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/opensslv.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/opensslv.h.in + * + * Copyright 1999-2025 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_OPENSSLV_H +#define OPENSSL_OPENSSLV_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SECTION 1: VERSION DATA. These will change for each release + */ + +/* + * Base version macros + * + * These macros express version number MAJOR.MINOR.PATCH exactly + */ +/* clang-format off */ +# define OPENSSL_VERSION_MAJOR 3 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_MINOR 6 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_PATCH 2 +/* clang-format on */ + +/* + * Additional version information + * + * These are also part of the new version scheme, but aren't part + * of the version number itself. + */ + +/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_PRE_RELEASE "" +/* clang-format on */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_BUILD_METADATA "" +/* clang-format on */ + +/* + * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA + * to be anything but the empty string. Its use is entirely reserved for + * others + */ + +/* + * Shared library version + * + * This is strictly to express ABI version, which may or may not + * be related to the API version expressed with the macros above. + * This is defined in free form. + */ +/* clang-format off */ +# define OPENSSL_SHLIB_VERSION 3 +/* clang-format on */ + +/* + * SECTION 2: USEFUL MACROS + */ + +/* For checking general API compatibility when preprocessing */ +#define OPENSSL_VERSION_PREREQ(maj, min) \ + ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) + +/* + * Macros to get the version in easily digested string form, both the short + * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced + * with the values from the corresponding OPENSSL_VERSION_ macros) and the + * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and + * OPENSSL_VERSION_BUILD_METADATA_STR appended. + */ +/* clang-format off */ +# define OPENSSL_VERSION_STR "3.6.2" +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_FULL_VERSION_STR "3.6.2" +/* clang-format on */ + +/* + * SECTION 3: ADDITIONAL METADATA + * + * These strings are defined separately to allow them to be parsable. + */ +/* clang-format off */ +# define OPENSSL_RELEASE_DATE "7 Apr 2026" +/* clang-format on */ + +/* + * SECTION 4: BACKWARD COMPATIBILITY + */ + +/* clang-format off */ +# define OPENSSL_VERSION_TEXT "OpenSSL 3.6.2 7 Apr 2026" +/* clang-format on */ + +/* clang-format off */ +/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PP0L */ +# define OPENSSL_VERSION_NUMBER \ + ( (OPENSSL_VERSION_MAJOR<<28) \ + |(OPENSSL_VERSION_MINOR<<20) \ + |(OPENSSL_VERSION_PATCH<<4) \ + |0x0L ) +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OPENSSLV_H +#endif + +#endif /* OPENSSL_OPENSSLV_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ossl_typ.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ossl_typ.h new file mode 100644 index 0000000..a562299 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ossl_typ.h @@ -0,0 +1,16 @@ +/* + * Copyright 2019 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 + */ + +/* + * The original was renamed to + * + * This header file only exists for compatibility reasons with older + * applications which #include . + */ +#include diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/param_build.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/param_build.h new file mode 100644 index 0000000..be6a025 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/param_build.h @@ -0,0 +1,63 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, 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_PARAM_BUILD_H +#define OPENSSL_PARAM_BUILD_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +OSSL_PARAM_BLD *OSSL_PARAM_BLD_new(void); +OSSL_PARAM *OSSL_PARAM_BLD_to_param(OSSL_PARAM_BLD *bld); +void OSSL_PARAM_BLD_free(OSSL_PARAM_BLD *bld); + +int OSSL_PARAM_BLD_push_int(OSSL_PARAM_BLD *bld, const char *key, int val); +int OSSL_PARAM_BLD_push_uint(OSSL_PARAM_BLD *bld, const char *key, + unsigned int val); +int OSSL_PARAM_BLD_push_long(OSSL_PARAM_BLD *bld, const char *key, + long int val); +int OSSL_PARAM_BLD_push_ulong(OSSL_PARAM_BLD *bld, const char *key, + unsigned long int val); +int OSSL_PARAM_BLD_push_int32(OSSL_PARAM_BLD *bld, const char *key, + int32_t val); +int OSSL_PARAM_BLD_push_uint32(OSSL_PARAM_BLD *bld, const char *key, + uint32_t val); +int OSSL_PARAM_BLD_push_int64(OSSL_PARAM_BLD *bld, const char *key, + int64_t val); +int OSSL_PARAM_BLD_push_uint64(OSSL_PARAM_BLD *bld, const char *key, + uint64_t val); +int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key, + size_t val); +int OSSL_PARAM_BLD_push_time_t(OSSL_PARAM_BLD *bld, const char *key, + time_t val); +int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key, + double val); +int OSSL_PARAM_BLD_push_BN(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn); +int OSSL_PARAM_BLD_push_BN_pad(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn, size_t sz); +int OSSL_PARAM_BLD_push_utf8_string(OSSL_PARAM_BLD *bld, const char *key, + const char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_utf8_ptr(OSSL_PARAM_BLD *bld, const char *key, + char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_string(OSSL_PARAM_BLD *bld, const char *key, + const void *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_ptr(OSSL_PARAM_BLD *bld, const char *key, + void *buf, size_t bsize); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_PARAM_BUILD_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/params.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/params.h new file mode 100644 index 0000000..6772c40 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/params.h @@ -0,0 +1,166 @@ +/* + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, 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_PARAMS_H +#define OPENSSL_PARAMS_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_PARAM_UNMODIFIED ((size_t)-1) + +#define OSSL_PARAM_END \ + { NULL, 0, NULL, 0, 0 } + +#define OSSL_PARAM_DEFN(key, type, addr, sz) \ + { (key), (type), (addr), (sz), OSSL_PARAM_UNMODIFIED } + +/* Basic parameter types without return sizes */ +#define OSSL_PARAM_int(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int)) +#define OSSL_PARAM_uint(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned int)) +#define OSSL_PARAM_long(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(long int)) +#define OSSL_PARAM_ulong(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned long int)) +#define OSSL_PARAM_int32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int32_t)) +#define OSSL_PARAM_uint32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint32_t)) +#define OSSL_PARAM_int64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int64_t)) +#define OSSL_PARAM_uint64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint64_t)) +#define OSSL_PARAM_size_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), sizeof(size_t)) +#define OSSL_PARAM_time_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(time_t)) +#define OSSL_PARAM_double(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_REAL, (addr), sizeof(double)) + +#define OSSL_PARAM_BN(key, bn, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (bn), (sz)) +#define OSSL_PARAM_utf8_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_STRING, (addr), sz) +#define OSSL_PARAM_octet_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_STRING, (addr), sz) + +#define OSSL_PARAM_utf8_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_PTR, (addr), sz) +#define OSSL_PARAM_octet_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_PTR, (addr), sz) + +/* Search an OSSL_PARAM array for a matching name */ +OSSL_PARAM *OSSL_PARAM_locate(OSSL_PARAM *p, const char *key); +const OSSL_PARAM *OSSL_PARAM_locate_const(const OSSL_PARAM *p, const char *key); + +/* Basic parameter type run-time construction */ +OSSL_PARAM OSSL_PARAM_construct_int(const char *key, int *buf); +OSSL_PARAM OSSL_PARAM_construct_uint(const char *key, unsigned int *buf); +OSSL_PARAM OSSL_PARAM_construct_long(const char *key, long int *buf); +OSSL_PARAM OSSL_PARAM_construct_ulong(const char *key, unsigned long int *buf); +OSSL_PARAM OSSL_PARAM_construct_int32(const char *key, int32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint32(const char *key, uint32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_int64(const char *key, int64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint64(const char *key, uint64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_size_t(const char *key, size_t *buf); +OSSL_PARAM OSSL_PARAM_construct_time_t(const char *key, time_t *buf); +OSSL_PARAM OSSL_PARAM_construct_BN(const char *key, unsigned char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_double(const char *key, double *buf); +OSSL_PARAM OSSL_PARAM_construct_utf8_string(const char *key, char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_string(const char *key, void *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_ptr(const char *key, void **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_end(void); + +int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to, + const OSSL_PARAM *paramdefs, + const char *key, const char *value, + size_t value_n, int *found); + +int OSSL_PARAM_print_to_bio(const OSSL_PARAM *params, BIO *bio, + int print_values); + +int OSSL_PARAM_get_int(const OSSL_PARAM *p, int *val); +int OSSL_PARAM_get_uint(const OSSL_PARAM *p, unsigned int *val); +int OSSL_PARAM_get_long(const OSSL_PARAM *p, long int *val); +int OSSL_PARAM_get_ulong(const OSSL_PARAM *p, unsigned long int *val); +int OSSL_PARAM_get_int32(const OSSL_PARAM *p, int32_t *val); +int OSSL_PARAM_get_uint32(const OSSL_PARAM *p, uint32_t *val); +int OSSL_PARAM_get_int64(const OSSL_PARAM *p, int64_t *val); +int OSSL_PARAM_get_uint64(const OSSL_PARAM *p, uint64_t *val); +int OSSL_PARAM_get_size_t(const OSSL_PARAM *p, size_t *val); +int OSSL_PARAM_get_time_t(const OSSL_PARAM *p, time_t *val); + +int OSSL_PARAM_set_int(OSSL_PARAM *p, int val); +int OSSL_PARAM_set_uint(OSSL_PARAM *p, unsigned int val); +int OSSL_PARAM_set_long(OSSL_PARAM *p, long int val); +int OSSL_PARAM_set_ulong(OSSL_PARAM *p, unsigned long int val); +int OSSL_PARAM_set_int32(OSSL_PARAM *p, int32_t val); +int OSSL_PARAM_set_uint32(OSSL_PARAM *p, uint32_t val); +int OSSL_PARAM_set_int64(OSSL_PARAM *p, int64_t val); +int OSSL_PARAM_set_uint64(OSSL_PARAM *p, uint64_t val); +int OSSL_PARAM_set_size_t(OSSL_PARAM *p, size_t val); +int OSSL_PARAM_set_time_t(OSSL_PARAM *p, time_t val); + +int OSSL_PARAM_get_double(const OSSL_PARAM *p, double *val); +int OSSL_PARAM_set_double(OSSL_PARAM *p, double val); + +int OSSL_PARAM_get_BN(const OSSL_PARAM *p, BIGNUM **val); +int OSSL_PARAM_set_BN(OSSL_PARAM *p, const BIGNUM *val); + +int OSSL_PARAM_get_utf8_string(const OSSL_PARAM *p, char **val, size_t max_len); +int OSSL_PARAM_set_utf8_string(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_string(const OSSL_PARAM *p, void **val, size_t max_len, + size_t *used_len); +int OSSL_PARAM_set_octet_string(OSSL_PARAM *p, const void *val, size_t len); + +int OSSL_PARAM_get_utf8_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_set_utf8_ptr(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); +int OSSL_PARAM_set_octet_ptr(OSSL_PARAM *p, const void *val, + size_t used_len); + +int OSSL_PARAM_get_utf8_string_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_get_octet_string_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); + +int OSSL_PARAM_modified(const OSSL_PARAM *p); +void OSSL_PARAM_set_all_unmodified(OSSL_PARAM *p); + +OSSL_PARAM *OSSL_PARAM_dup(const OSSL_PARAM *p); +OSSL_PARAM *OSSL_PARAM_merge(const OSSL_PARAM *p1, const OSSL_PARAM *p2); +void OSSL_PARAM_free(OSSL_PARAM *p); + +int OSSL_PARAM_set_octet_string_or_ptr(OSSL_PARAM *p, const void *val, + size_t len); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pem.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pem.h new file mode 100644 index 0000000..fa64aaf --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pem.h @@ -0,0 +1,548 @@ +/* + * Copyright 1995-2025 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_PEM_H +#define OPENSSL_PEM_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PEM_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PEM_BUFSIZE 1024 + +#define PEM_STRING_X509_OLD "X509 CERTIFICATE" +#define PEM_STRING_X509 "CERTIFICATE" +#define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +#define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +#define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +#define PEM_STRING_X509_CRL "X509 CRL" +#define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +#define PEM_STRING_PUBLIC "PUBLIC KEY" +#define PEM_STRING_RSA "RSA PRIVATE KEY" +#define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +#define PEM_STRING_DSA "DSA PRIVATE KEY" +#define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +#define PEM_STRING_PKCS7 "PKCS7" +#define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +#define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +#define PEM_STRING_PKCS8INF "PRIVATE KEY" +#define PEM_STRING_DHPARAMS "DH PARAMETERS" +#define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +#define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +#define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +#define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +#define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +#define PEM_STRING_PARAMETERS "PARAMETERS" +#define PEM_STRING_CMS "CMS" +#define PEM_STRING_SM2PRIVATEKEY "SM2 PRIVATE KEY" +#define PEM_STRING_SM2PARAMETERS "SM2 PARAMETERS" +#define PEM_STRING_ACERT "ATTRIBUTE CERTIFICATE" + +#define PEM_TYPE_ENCRYPTED 10 +#define PEM_TYPE_MIC_ONLY 20 +#define PEM_TYPE_MIC_CLEAR 30 +#define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +#define PEM_read_cb_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u) +#define PEM_read_cb_ex_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name##_ex(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +#define PEM_write_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x) +#define PEM_write_cb_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u) +#define PEM_write_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) +#define PEM_write_cb_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +#ifdef OPENSSL_NO_STDIO + +#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +#endif +#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +#endif +#else + +#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str, fp, \ + (void **)x, cb, u); \ + } + +#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ + PEM_write_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) +#endif +#endif + +#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + type *PEM_read_bio_##name(BIO *bp, type **x, \ + pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str, bp, \ + (void **)x, cb, u); \ + } + +#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + PEM_write_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +#define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +/* + * 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. + */ +#if defined(OPENSSL_NO_STDIO) + +#define DECLARE_PEM_read_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_read_fp_ex_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_fp_ex_attr(attr, name, type) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const_attr(attr, name, type) /**/ +#endif +#define DECLARE_PEM_write_cb_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) /**/ + +#else + +#define DECLARE_PEM_read_fp_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); +#define DECLARE_PEM_read_fp_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); \ + attr PEM_read_cb_ex_fnsig(name, type, FILE, read); + +#define DECLARE_PEM_write_fp_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +#define DECLARE_PEM_write_fp_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); \ + attr PEM_write_ex_fnsig(name, type, FILE, write); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +#endif +#define DECLARE_PEM_write_cb_fp_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); +#define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); \ + attr PEM_write_cb_ex_fnsig(name, type, FILE, write); + +#endif + +#define DECLARE_PEM_read_fp(name, type) \ + DECLARE_PEM_read_fp_attr(extern, name, type) +#define DECLARE_PEM_write_fp(name, type) \ + DECLARE_PEM_write_fp_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const(name, type) \ + DECLARE_PEM_write_fp_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_write_cb_fp(name, type) \ + DECLARE_PEM_write_cb_fp_attr(extern, name, type) + +#define DECLARE_PEM_read_bio_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); +#define DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); \ + attr PEM_read_cb_ex_fnsig(name, type, BIO, read_bio); +#define DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_bio_attr(extern, name, type) +#define DECLARE_PEM_read_bio_ex(name, type) \ + DECLARE_PEM_read_bio_ex_attr(extern, name, type) + +#define DECLARE_PEM_write_bio_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_ex_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_bio_attr(extern, name, type) +#define DECLARE_PEM_write_bio_ex(name, type) \ + DECLARE_PEM_write_bio_ex_attr(extern, name, type) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_bio_const_attr(extern, name, type) +#endif + +#define DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_cb_ex_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_bio_attr(extern, name, type) +#define DECLARE_PEM_write_cb_ex_bio(name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(extern, name, type) + +#define DECLARE_PEM_write_attr(attr, name, type) \ + DECLARE_PEM_write_bio_attr(attr, name, type) \ + DECLARE_PEM_write_fp_attr(attr, name, type) +#define DECLARE_PEM_write_ex_attr(attr, name, type) \ + DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_attr(extern, name, type) +#define DECLARE_PEM_write_ex(name, type) \ + DECLARE_PEM_write_ex_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_const_attr(attr, name, type) \ + DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + DECLARE_PEM_write_fp_const_attr(attr, name, type) +#define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_write_cb_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_attr(attr, name, type) +#define DECLARE_PEM_write_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_attr(extern, name, type) +#define DECLARE_PEM_write_cb_ex(name, type) \ + DECLARE_PEM_write_cb_ex_attr(extern, name, type) +#define DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_read_bio_attr(attr, name, type) \ + DECLARE_PEM_read_fp_attr(attr, name, type) +#define DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_read_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_attr(extern, name, type) +#define DECLARE_PEM_read_ex(name, type) \ + DECLARE_PEM_read_ex_attr(extern, name, type) +#define DECLARE_PEM_rw_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_attr(attr, name, type) +#define DECLARE_PEM_rw_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_ex_attr(attr, name, type) +#define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_rw_attr(extern, name, type) +#define DECLARE_PEM_rw_ex(name, type) \ + DECLARE_PEM_rw_ex_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_rw_const_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_const_attr(attr, name, type) +#define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_rw_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_rw_cb_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_cb_attr(attr, name, type) +#define DECLARE_PEM_rw_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_ex_attr(attr, name, type) +#define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_rw_cb_attr(extern, name, type) +#define DECLARE_PEM_rw_cb_ex(name, type) \ + DECLARE_PEM_rw_cb_ex_attr(extern, name, type) + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +#define PEM_FLAG_SECURE 0x1 +#define PEM_FLAG_EAY_COMPATIBLE 0x2 +#define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio_ctx(OSSL_i2d_of_void_ctx *i2d, void *vctx, + const char *name, BIO *bp, const void *x, + const EVP_CIPHER *enc, const unsigned char *kstr, + int klen, pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_bio_ex(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, + const char *propq); + +int PEM_X509_INFO_write_bio(BIO *bp, const X509_INFO *xi, EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +#ifndef OPENSSL_NO_STDIO +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_ex(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, + void *u, OSSL_LIB_CTX *libctx, const char *propq); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, const unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, const char *str); + +#include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(X509_PUBKEY, X509_PUBKEY) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSAPublicKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSA_PUBKEY, RSA) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSA_PUBKEY, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSAparams, DSA) +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, ECPrivateKey, EC_KEY) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, EC_PUBKEY, EC_KEY) +#endif +#endif + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH) +DECLARE_PEM_write_attr(OSSL_DEPRECATEDIN_3_0, DHxparams, DH) +#endif +#endif +DECLARE_PEM_rw_cb_ex(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw_ex(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, const EVP_PKEY *x, + const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +/* Why do these take a signed char *kstr? */ +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, const EVP_PKEY *, const EVP_CIPHER *, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_bio(BIO *bp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS8PrivateKey_fp(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cd, void *u); +#endif +EVP_PKEY *PEM_read_bio_Parameters_ex(BIO *bp, EVP_PKEY **x, + OSSL_LIB_CTX *libctx, const char *propq); +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, const EVP_PKEY *x); + +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, const EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, const EVP_PKEY *pk); +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); +int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pem2.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pem2.h new file mode 100644 index 0000000..6d3ab2a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pem2.h @@ -0,0 +1,19 @@ +/* + * Copyright 1999-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_PEM2_H +#define OPENSSL_PEM2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PEM2_H +#endif +#include +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pemerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pemerr.h new file mode 100644 index 0000000..eb3c9a1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pemerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_PEMERR_H +#define OPENSSL_PEMERR_H +#pragma once + +#include +#include +#include + +/* + * PEM reason codes. + */ +#define PEM_R_BAD_BASE64_DECODE 100 +#define PEM_R_BAD_DECRYPT 101 +#define PEM_R_BAD_END_LINE 102 +#define PEM_R_BAD_IV_CHARS 103 +#define PEM_R_BAD_MAGIC_NUMBER 116 +#define PEM_R_BAD_PASSWORD_READ 104 +#define PEM_R_BAD_VERSION_NUMBER 117 +#define PEM_R_BIO_WRITE_FAILURE 118 +#define PEM_R_CIPHER_IS_NULL 127 +#define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +#define PEM_R_EXPECTING_DSS_KEY_BLOB 131 +#define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +#define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +#define PEM_R_EXPECTING_RSA_KEY_BLOB 132 +#define PEM_R_HEADER_TOO_LONG 128 +#define PEM_R_INCONSISTENT_HEADER 121 +#define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +#define PEM_R_KEYBLOB_TOO_SHORT 123 +#define PEM_R_MISSING_DEK_IV 129 +#define PEM_R_NOT_DEK_INFO 105 +#define PEM_R_NOT_ENCRYPTED 106 +#define PEM_R_NOT_PROC_TYPE 107 +#define PEM_R_NO_START_LINE 108 +#define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +#define PEM_R_PVK_DATA_TOO_SHORT 124 +#define PEM_R_PVK_TOO_SHORT 125 +#define PEM_R_READ_KEY 111 +#define PEM_R_SHORT_HEADER 112 +#define PEM_R_UNEXPECTED_DEK_IV 130 +#define PEM_R_UNSUPPORTED_CIPHER 113 +#define PEM_R_UNSUPPORTED_ENCRYPTION 114 +#define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +#define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 +#define PEM_R_UNSUPPORTED_PVK_KEY_TYPE 133 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs12.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs12.h new file mode 100644 index 0000000..60f1de8 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs12.h @@ -0,0 +1,376 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/pkcs12.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS12_H +#define OPENSSL_PKCS12_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS12_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PKCS12_KEY_ID 1 +#define PKCS12_IV_ID 2 +#define PKCS12_MAC_ID 3 + +/* Default iteration count */ +#ifndef PKCS12_DEFAULT_ITER +#define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +#endif + +#define PKCS12_MAC_KEY_LENGTH 20 + +/* + * The macro is expected to be used only internally. Kept for + * backwards compatibility. NIST requires 16, previous value was + * 8. Allow to override this at compile time. + */ +#ifndef PKCS12_SALT_LEN +#define PKCS12_SALT_LEN 16 +#endif + +/* It's not clear if these are actually needed... */ +#define PKCS12_key_gen PKCS12_key_gen_utf8 +#define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +#define KEY_EX 0x10 +#define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) +#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) +#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) +#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) +#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) +#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) +#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) +#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) +#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) +#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) +#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) +#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +#define PKCS12_ERROR 0 +#define PKCS12_OK 1 + +/* Compatibility macros */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 + +#define M_PKCS12_bag_type PKCS12_bag_type +#define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +#define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +#define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +#define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +#define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +#define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +#define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +#define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +#define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +#define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +#endif + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); +const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_secret(int type, int vtype, const unsigned char *value, int len); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf, + OSSL_LIB_CTX *ctx, + const char *propq); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, + int passlen, OSSL_LIB_CTX *ctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen, + OSSL_LIB_CTX *ctx, + const char *propq); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +X509_SIG *PKCS8_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, + OSSL_LIB_CTX *ctx, const char *propq); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags, + OSSL_LIB_CTX *ctx, const char *propq); + +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, + const unsigned char *bytes, int len); +int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, + const unsigned char *bytes, int len); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf); +void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf, + OSSL_LIB_CTX *libctx, + const char *propq); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf, + OSSL_LIB_CTX *ctx, + const char *propq); +PKCS12 *PKCS12_init(int mode); +PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_asc_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); +PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype); +PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass); +PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, + int nid_type, const unsigned char *value, int len); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); +PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, + OSSL_LIB_CTX *ctx, const char *propq); + +int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, const PKCS12 *p12); +#endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +#ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +#endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs12err.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs12err.h new file mode 100644 index 0000000..2ad38f8 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs12err.h @@ -0,0 +1,44 @@ +/* + * 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_PKCS12ERR_H +#define OPENSSL_PKCS12ERR_H +#pragma once + +#include +#include +#include + +/* + * PKCS12 reason codes. + */ +#define PKCS12_R_CALLBACK_FAILED 115 +#define PKCS12_R_CANT_PACK_STRUCTURE 100 +#define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 +#define PKCS12_R_DECODE_ERROR 101 +#define PKCS12_R_ENCODE_ERROR 102 +#define PKCS12_R_ENCRYPT_ERROR 103 +#define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 +#define PKCS12_R_INVALID_NULL_ARGUMENT 104 +#define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 +#define PKCS12_R_INVALID_TYPE 112 +#define PKCS12_R_IV_GEN_ERROR 106 +#define PKCS12_R_KEY_GEN_ERROR 107 +#define PKCS12_R_MAC_ABSENT 108 +#define PKCS12_R_MAC_GENERATION_ERROR 109 +#define PKCS12_R_MAC_SETUP_ERROR 110 +#define PKCS12_R_MAC_STRING_SET_ERROR 111 +#define PKCS12_R_MAC_VERIFY_FAILURE 113 +#define PKCS12_R_PARSE_ERROR 114 +#define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 +#define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +#define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs7.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs7.h new file mode 100644 index 0000000..3e7299f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs7.h @@ -0,0 +1,435 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/pkcs7.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS7_H +#define OPENSSL_PKCS7_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS7_H +#endif + +#include +#include +#include + +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct PKCS7_CTX_st { + OSSL_LIB_CTX *libctx; + char *propq; +} PKCS7_CTX; + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; /* confusing name, actually used for signing */ + ASN1_OCTET_STRING *enc_digest; /* confusing name, actually signature */ + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; + const PKCS7_CTX *ctx; +} PKCS7_SIGNER_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) +#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) +#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) +#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) +#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) +#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) +#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ + const PKCS7_CTX *ctx; +} PKCS7_RECIP_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) +#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) +#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) +#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) +#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) +#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) +#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; + const PKCS7_CTX *ctx; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +#define PKCS7_S_HEADER 0 +#define PKCS7_S_BODY 1 +#define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; + PKCS7_CTX ctx; +} PKCS7; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) +#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) +#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) +#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) +#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) +#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) +#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_freefunc_type(freefunc)) +#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) +#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) +#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) +#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) +#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) + +/* clang-format on */ + +#define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +#define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +#define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +#define PKCS7_get_attributes(si) ((si)->unauth_attr) + +#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +#define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +#define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +#define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +#define PKCS7_set_detached(p, v) \ + PKCS7_ctrl(p, PKCS7_OP_SET_DETACHED_SIGNATURE, v, NULL) +#define PKCS7_get_detached(p) \ + PKCS7_ctrl(p, PKCS7_OP_GET_DETACHED_SIGNATURE, 0, NULL) + +#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +#define PKCS7_TEXT 0x1 +#define PKCS7_NOCERTS 0x2 +#define PKCS7_NOSIGS 0x4 +#define PKCS7_NOCHAIN 0x8 +#define PKCS7_NOINTERN 0x10 +#define PKCS7_NOVERIFY 0x20 +#define PKCS7_DETACHED 0x40 +#define PKCS7_BINARY 0x80 +#define PKCS7_NOATTR 0x100 +#define PKCS7_NOSMIMECAP 0x200 +#define PKCS7_NOOLDMIMETYPE 0x400 +#define PKCS7_CRLFEOL 0x800 +#define PKCS7_STREAM 0x1000 +#define PKCS7_NOCRL 0x2000 +#define PKCS7_PARTIAL 0x4000 +#define PKCS7_REUSE_DIGEST 0x8000 +#define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +#define SMIME_TEXT PKCS7_TEXT +#define SMIME_NOCERTS PKCS7_NOCERTS +#define SMIME_NOSIGS PKCS7_NOSIGS +#define SMIME_NOCHAIN PKCS7_NOCHAIN +#define SMIME_NOINTERN PKCS7_NOINTERN +#define SMIME_NOVERIFY PKCS7_NOVERIFY +#define SMIME_DETACHED PKCS7_DETACHED +#define SMIME_BINARY PKCS7_BINARY +#define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +#define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +#ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, const PKCS7 *p7); +#endif +DECLARE_ASN1_DUP_FUNCTION(PKCS7) +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, const PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) +PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_type_is_other(PKCS7 *p7); +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *signer); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_get_octet_string(PKCS7 *p7); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(const PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(const PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); +PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, int flags, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7_ex(BIO *bio, BIO **bcont, PKCS7 **p7); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs7err.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs7err.h new file mode 100644 index 0000000..358fe10 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/pkcs7err.h @@ -0,0 +1,61 @@ +/* + * 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_PKCS7ERR_H +#define OPENSSL_PKCS7ERR_H +#pragma once + +#include +#include +#include + +/* + * PKCS7 reason codes. + */ +#define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 +#define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 +#define PKCS7_R_CIPHER_NOT_INITIALIZED 116 +#define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 +#define PKCS7_R_CTRL_ERROR 152 +#define PKCS7_R_DECRYPT_ERROR 119 +#define PKCS7_R_DIGEST_FAILURE 101 +#define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 +#define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 +#define PKCS7_R_ERROR_ADDING_RECIPIENT 120 +#define PKCS7_R_ERROR_SETTING_CIPHER 121 +#define PKCS7_R_INVALID_NULL_POINTER 143 +#define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +#define PKCS7_R_NO_CONTENT 122 +#define PKCS7_R_NO_DEFAULT_DIGEST 151 +#define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +#define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +#define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +#define PKCS7_R_NO_SIGNERS 142 +#define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 +#define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 +#define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 +#define PKCS7_R_PKCS7_DATASIGN 145 +#define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 +#define PKCS7_R_SIGNATURE_FAILURE 105 +#define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 +#define PKCS7_R_SIGNING_CTRL_FAILURE 147 +#define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 +#define PKCS7_R_SMIME_TEXT_ERROR 129 +#define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 +#define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 +#define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 +#define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 +#define PKCS7_R_UNKNOWN_OPERATION 110 +#define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 +#define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 +#define PKCS7_R_WRONG_CONTENT_TYPE 113 +#define PKCS7_R_WRONG_PKCS7_TYPE 114 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/prov_ssl.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/prov_ssl.h new file mode 100644 index 0000000..269c3b8 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/prov_ssl.h @@ -0,0 +1,38 @@ +/* + * Copyright 2021-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_PROV_SSL_H +#define OPENSSL_PROV_SSL_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* SSL/TLS related defines useful to providers */ + +#define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* SSL/TLS uses a 2 byte unsigned version number */ +#define SSL3_VERSION 0x0300 +#define TLS1_VERSION 0x0301 +#define TLS1_1_VERSION 0x0302 +#define TLS1_2_VERSION 0x0303 +#define TLS1_3_VERSION 0x0304 +#define DTLS1_VERSION 0xFEFF +#define DTLS1_2_VERSION 0xFEFD +#define DTLS1_BAD_VER 0x0100 + +/* QUIC uses a 4 byte unsigned version number */ +#define OSSL_QUIC1_VERSION 0x0000001 + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_PROV_SSL_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/proverr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/proverr.h new file mode 100644 index 0000000..a82b8e4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/proverr.h @@ -0,0 +1,169 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_PROVERR_H +#define OPENSSL_PROVERR_H +#pragma once + +#include +#include +#include + +/* + * PROV reason codes. + */ +#define PROV_R_ADDITIONAL_INPUT_TOO_LONG 184 +#define PROV_R_ALGORITHM_MISMATCH 173 +#define PROV_R_ALREADY_INSTANTIATED 185 +#define PROV_R_BAD_DECRYPT 100 +#define PROV_R_BAD_ENCODING 141 +#define PROV_R_BAD_LENGTH 142 +#define PROV_R_BAD_TLS_CLIENT_VERSION 161 +#define PROV_R_BN_ERROR 160 +#define PROV_R_CIPHER_OPERATION_FAILED 102 +#define PROV_R_COFACTOR_REQUIRED 236 +#define PROV_R_DERIVATION_FUNCTION_INIT_FAILED 205 +#define PROV_R_DIGEST_NOT_ALLOWED 174 +#define PROV_R_EMS_NOT_ENABLED 233 +#define PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS 244 +#define PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK 186 +#define PROV_R_ERROR_INSTANTIATING_DRBG 188 +#define PROV_R_ERROR_RETRIEVING_ENTROPY 189 +#define PROV_R_ERROR_RETRIEVING_NONCE 190 +#define PROV_R_FAILED_DURING_DERIVATION 164 +#define PROV_R_FAILED_TO_CREATE_LOCK 180 +#define PROV_R_FAILED_TO_DECRYPT 162 +#define PROV_R_FAILED_TO_GENERATE_KEY 121 +#define PROV_R_FAILED_TO_GET_PARAMETER 103 +#define PROV_R_FAILED_TO_SET_PARAMETER 104 +#define PROV_R_FAILED_TO_SIGN 175 +#define PROV_R_FINAL_CALL_OUT_OF_ORDER 237 +#define PROV_R_FIPS_MODULE_CONDITIONAL_ERROR 227 +#define PROV_R_FIPS_MODULE_ENTERING_ERROR_STATE 224 +#define PROV_R_FIPS_MODULE_IMPORT_PCT_ERROR 253 +#define PROV_R_FIPS_MODULE_IN_ERROR_STATE 225 +#define PROV_R_GENERATE_ERROR 191 +#define PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 165 +#define PROV_R_INDICATOR_INTEGRITY_FAILURE 210 +#define PROV_R_INIT_CALL_OUT_OF_ORDER 238 +#define PROV_R_INSUFFICIENT_DRBG_STRENGTH 181 +#define PROV_R_INVALID_AAD 108 +#define PROV_R_INVALID_AEAD 231 +#define PROV_R_INVALID_CONFIG_DATA 211 +#define PROV_R_INVALID_CONSTANT_LENGTH 157 +#define PROV_R_INVALID_CURVE 176 +#define PROV_R_INVALID_CUSTOM_LENGTH 111 +#define PROV_R_INVALID_DATA 115 +#define PROV_R_INVALID_DIGEST 122 +#define PROV_R_INVALID_DIGEST_LENGTH 166 +#define PROV_R_INVALID_DIGEST_SIZE 218 +#define PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION 243 +#define PROV_R_INVALID_INPUT_LENGTH 230 +#define PROV_R_INVALID_ITERATION_COUNT 123 +#define PROV_R_INVALID_IV_LENGTH 109 +#define PROV_R_INVALID_KDF 232 +#define PROV_R_INVALID_KEY 158 +#define PROV_R_INVALID_KEY_LENGTH 105 +#define PROV_R_INVALID_MAC 151 +#define PROV_R_INVALID_MEMORY_SIZE 235 +#define PROV_R_INVALID_MGF1_MD 167 +#define PROV_R_INVALID_MODE 125 +#define PROV_R_INVALID_OUTPUT_LENGTH 217 +#define PROV_R_INVALID_PADDING_MODE 168 +#define PROV_R_INVALID_PREHASHED_DIGEST_LENGTH 241 +#define PROV_R_INVALID_PUBINFO 198 +#define PROV_R_INVALID_SALT_LENGTH 112 +#define PROV_R_INVALID_SEED_LENGTH 154 +#define PROV_R_INVALID_SIGNATURE_SIZE 179 +#define PROV_R_INVALID_STATE 212 +#define PROV_R_INVALID_TAG 110 +#define PROV_R_INVALID_TAG_LENGTH 118 +#define PROV_R_INVALID_THREAD_POOL_SIZE 234 +#define PROV_R_INVALID_UKM_LENGTH 200 +#define PROV_R_INVALID_X931_DIGEST 170 +#define PROV_R_IN_ERROR_STATE 192 +#define PROV_R_KEY_SETUP_FAILED 101 +#define PROV_R_KEY_SIZE_TOO_SMALL 171 +#define PROV_R_LENGTH_TOO_LARGE 202 +#define PROV_R_MISMATCHING_DOMAIN_PARAMETERS 203 +#define PROV_R_MISSING_CEK_ALG 144 +#define PROV_R_MISSING_CIPHER 155 +#define PROV_R_MISSING_CONFIG_DATA 213 +#define PROV_R_MISSING_CONSTANT 156 +#define PROV_R_MISSING_KEY 128 +#define PROV_R_MISSING_MAC 150 +#define PROV_R_MISSING_MESSAGE_DIGEST 129 +#define PROV_R_MISSING_OID 209 +#define PROV_R_MISSING_PASS 130 +#define PROV_R_MISSING_SALT 131 +#define PROV_R_MISSING_SECRET 132 +#define PROV_R_MISSING_SEED 140 +#define PROV_R_MISSING_SESSION_ID 133 +#define PROV_R_MISSING_TYPE 134 +#define PROV_R_MISSING_XCGHASH 135 +#define PROV_R_ML_DSA_NO_FORMAT 245 +#define PROV_R_ML_KEM_NO_FORMAT 246 +#define PROV_R_MODULE_INTEGRITY_FAILURE 214 +#define PROV_R_NOT_A_PRIVATE_KEY 221 +#define PROV_R_NOT_A_PUBLIC_KEY 220 +#define PROV_R_NOT_INSTANTIATED 193 +#define PROV_R_NOT_PARAMETERS 226 +#define PROV_R_NOT_SUPPORTED 136 +#define PROV_R_NOT_XOF_OR_INVALID_LENGTH 113 +#define PROV_R_NO_INSTANCE_ALLOWED 242 +#define PROV_R_NO_KEY_SET 114 +#define PROV_R_NO_PARAMETERS_SET 177 +#define PROV_R_NULL_LENGTH_POINTER 247 +#define PROV_R_NULL_OUTPUT_BUFFER 248 +#define PROV_R_ONESHOT_CALL_OUT_OF_ORDER 239 +#define PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 178 +#define PROV_R_OUTPUT_BUFFER_TOO_SMALL 106 +#define PROV_R_PARENT_CANNOT_GENERATE_RANDOM_NUMBERS 228 +#define PROV_R_PARENT_CANNOT_SUPPLY_ENTROPY_SEED 187 +#define PROV_R_PARENT_LOCKING_NOT_ENABLED 182 +#define PROV_R_PARENT_STRENGTH_TOO_WEAK 194 +#define PROV_R_PATH_MUST_BE_ABSOLUTE 219 +#define PROV_R_PERSONALISATION_STRING_TOO_LONG 195 +#define PROV_R_PSS_SALTLEN_TOO_SMALL 172 +#define PROV_R_REPEATED_PARAMETER 252 +#define PROV_R_REQUEST_TOO_LARGE_FOR_DRBG 196 +#define PROV_R_REQUIRE_CTR_MODE_CIPHER 206 +#define PROV_R_RESEED_ERROR 197 +#define PROV_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 222 +#define PROV_R_SEED_SOURCES_MUST_NOT_HAVE_A_PARENT 229 +#define PROV_R_SELF_TEST_KAT_FAILURE 215 +#define PROV_R_SELF_TEST_POST_FAILURE 216 +#define PROV_R_TAG_NOT_NEEDED 120 +#define PROV_R_TAG_NOT_SET 119 +#define PROV_R_TOO_MANY_RECORDS 126 +#define PROV_R_UNABLE_TO_FIND_CIPHERS 207 +#define PROV_R_UNABLE_TO_GET_PARENT_STRENGTH 199 +#define PROV_R_UNABLE_TO_GET_PASSPHRASE 159 +#define PROV_R_UNABLE_TO_INITIALISE_CIPHERS 208 +#define PROV_R_UNABLE_TO_LOAD_SHA256 147 +#define PROV_R_UNABLE_TO_LOCK_PARENT 201 +#define PROV_R_UNABLE_TO_RESEED 204 +#define PROV_R_UNEXPECTED_KEY_PARAMETERS 249 +#define PROV_R_UNSUPPORTED_CEK_ALG 145 +#define PROV_R_UNSUPPORTED_KEY_SIZE 153 +#define PROV_R_UNSUPPORTED_MAC_TYPE 137 +#define PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS 152 +#define PROV_R_UNSUPPORTED_SELECTION 250 +#define PROV_R_UPDATE_CALL_OUT_OF_ORDER 240 +#define PROV_R_URI_AUTHORITY_UNSUPPORTED 223 +#define PROV_R_VALUE_ERROR 138 +#define PROV_R_WRONG_CIPHERTEXT_SIZE 251 +#define PROV_R_WRONG_FINAL_BLOCK_LENGTH 107 +#define PROV_R_WRONG_OUTPUT_BUFFER_SIZE 139 +#define PROV_R_XOF_DIGESTS_NOT_ALLOWED 183 +#define PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE 148 +#define PROV_R_XTS_DUPLICATED_KEYS 149 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/provider.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/provider.h new file mode 100644 index 0000000..c34beea --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/provider.h @@ -0,0 +1,94 @@ +/* + * Copyright 2019-2025 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_PROVIDER_H +#define OPENSSL_PROVIDER_H +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Set and Get a library context search path */ +int OSSL_PROVIDER_set_default_search_path(OSSL_LIB_CTX *, const char *path); +const char *OSSL_PROVIDER_get0_default_search_path(OSSL_LIB_CTX *libctx); + +/* Load and unload a provider */ +OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *, const char *name); +OSSL_PROVIDER *OSSL_PROVIDER_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params); +OSSL_PROVIDER *OSSL_PROVIDER_try_load(OSSL_LIB_CTX *, const char *name, + int retain_fallbacks); +OSSL_PROVIDER *OSSL_PROVIDER_try_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params, + int retain_fallbacks); +int OSSL_PROVIDER_unload(OSSL_PROVIDER *prov); +int OSSL_PROVIDER_available(OSSL_LIB_CTX *, const char *name); +int OSSL_PROVIDER_do_all(OSSL_LIB_CTX *ctx, + int (*cb)(OSSL_PROVIDER *provider, void *cbdata), + void *cbdata); + +const OSSL_PARAM *OSSL_PROVIDER_gettable_params(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_params(const OSSL_PROVIDER *prov, OSSL_PARAM params[]); +int OSSL_PROVIDER_self_test(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_capabilities(const OSSL_PROVIDER *prov, + const char *capability, + OSSL_CALLBACK *cb, + void *arg); + +/*- + * Provider configuration parameters are normally set in the configuration file, + * but can also be set early in the main program before a provider is in use by + * multiple threads. + * + * Only UTF8-string values are supported. + */ +int OSSL_PROVIDER_add_conf_parameter(OSSL_PROVIDER *prov, const char *name, + const char *value); +/* + * Retrieves any of the requested configuration parameters for the given + * provider that were set in the configuration file or via the above + * OSSL_PROVIDER_add_parameter() function. + * + * The |params| array elements MUST have type OSSL_PARAM_UTF8_PTR, values are + * returned by reference, not as copies. + */ +int OSSL_PROVIDER_get_conf_parameters(const OSSL_PROVIDER *prov, + OSSL_PARAM params[]); +/* + * Parse a provider configuration parameter as a boolean value, + * or return a default value if unable to retrieve the parameter. + * Values like "1", "yes", "true", ... are true (nonzero). + * Values like "0", "no", "false", ... are false (zero). + */ +int OSSL_PROVIDER_conf_get_bool(const OSSL_PROVIDER *prov, + const char *name, int defval); + +const OSSL_ALGORITHM *OSSL_PROVIDER_query_operation(const OSSL_PROVIDER *prov, + int operation_id, + int *no_cache); +void OSSL_PROVIDER_unquery_operation(const OSSL_PROVIDER *prov, + int operation_id, const OSSL_ALGORITHM *algs); +void *OSSL_PROVIDER_get0_provider_ctx(const OSSL_PROVIDER *prov); +const OSSL_DISPATCH *OSSL_PROVIDER_get0_dispatch(const OSSL_PROVIDER *prov); + +/* Add a built in providers */ +int OSSL_PROVIDER_add_builtin(OSSL_LIB_CTX *, const char *name, + OSSL_provider_init_fn *init_fn); + +/* Information */ +const char *OSSL_PROVIDER_get0_name(const OSSL_PROVIDER *prov); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/quic.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/quic.h new file mode 100644 index 0000000..657969b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/quic.h @@ -0,0 +1,75 @@ +/* + * Copyright 2022-2025 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_QUIC_H +#define OPENSSL_QUIC_H +#pragma once + +#include +#include + +#ifndef OPENSSL_NO_QUIC + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Method used for non-thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_method(void); + +/* + * Method used for thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_thread_method(void); + +/* + * QUIC transport error codes (RFC 9000 s. 20.1) + */ +#define OSSL_QUIC_ERR_NO_ERROR 0x00 +#define OSSL_QUIC_ERR_INTERNAL_ERROR 0x01 +#define OSSL_QUIC_ERR_CONNECTION_REFUSED 0x02 +#define OSSL_QUIC_ERR_FLOW_CONTROL_ERROR 0x03 +#define OSSL_QUIC_ERR_STREAM_LIMIT_ERROR 0x04 +#define OSSL_QUIC_ERR_STREAM_STATE_ERROR 0x05 +#define OSSL_QUIC_ERR_FINAL_SIZE_ERROR 0x06 +#define OSSL_QUIC_ERR_FRAME_ENCODING_ERROR 0x07 +#define OSSL_QUIC_ERR_TRANSPORT_PARAMETER_ERROR 0x08 +#define OSSL_QUIC_ERR_CONNECTION_ID_LIMIT_ERROR 0x09 +#define OSSL_QUIC_ERR_PROTOCOL_VIOLATION 0x0A +#define OSSL_QUIC_ERR_INVALID_TOKEN 0x0B +#define OSSL_QUIC_ERR_APPLICATION_ERROR 0x0C +#define OSSL_QUIC_ERR_CRYPTO_BUFFER_EXCEEDED 0x0D +#define OSSL_QUIC_ERR_KEY_UPDATE_ERROR 0x0E +#define OSSL_QUIC_ERR_AEAD_LIMIT_REACHED 0x0F +#define OSSL_QUIC_ERR_NO_VIABLE_PATH 0x10 + +/* Inclusive range for handshake-specific errors. */ +#define OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN 0x0100 +#define OSSL_QUIC_ERR_CRYPTO_ERR_END 0x01FF + +#define OSSL_QUIC_ERR_CRYPTO_ERR(X) \ + (OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN + (X)) + +/* Local errors. */ +#define OSSL_QUIC_LOCAL_ERR_IDLE_TIMEOUT \ + ((uint64_t)0xFFFFFFFFFFFFFFFFULL) + +/* + * Method used for QUIC server operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_server_method(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_NO_QUIC */ +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rand.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rand.h new file mode 100644 index 0000000..7272309 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rand.h @@ -0,0 +1,133 @@ +/* + * Copyright 1995-2025 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_RAND_H +#define OPENSSL_RAND_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RAND_H +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Default security strength (in the sense of [NIST SP 800-90Ar1]) + * + * NIST SP 800-90Ar1 supports the strength of the DRBG being smaller than that + * of the cipher by collecting less entropy. The current DRBG implementation + * does not take RAND_DRBG_STRENGTH into account and sets the strength of the + * DRBG to that of the cipher. + */ +#define RAND_DRBG_STRENGTH 256 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +struct rand_meth_st { + int (*seed)(const void *buf, int num); + int (*bytes)(unsigned char *buf, int num); + void (*cleanup)(void); + int (*add)(const void *buf, int num, double randomness); + int (*pseudorand)(unsigned char *buf, int num); + int (*status)(void); +}; + +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_method(const RAND_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RAND_METHOD *RAND_get_rand_method(void); +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_engine(ENGINE *engine); +#endif + +OSSL_DEPRECATEDIN_3_0 RAND_METHOD *RAND_OpenSSL(void); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define RAND_cleanup() \ + while (0) \ + continue +#endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); + +/* + * Equivalent of RAND_priv_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_priv_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +/* + * Equivalent of RAND_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 int RAND_pseudo_bytes(unsigned char *buf, int num); +#endif + +EVP_RAND_CTX *RAND_get0_primary(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_public(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_private(OSSL_LIB_CTX *ctx); +int RAND_set0_public(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); +int RAND_set0_private(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); + +int RAND_set_DRBG_type(OSSL_LIB_CTX *ctx, const char *drbg, const char *propq, + const char *cipher, const char *digest); +int RAND_set_seed_source_type(OSSL_LIB_CTX *ctx, const char *seed, + const char *propq); + +void RAND_seed(const void *buf, int num); +void RAND_keep_random_devices_open(int keep); + +#if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +#endif + void RAND_add(const void *buf, int num, double randomness); +int RAND_load_file(const char *file, long max_bytes); +int RAND_write_file(const char *file); +const char *RAND_file_name(char *file, size_t num); +int RAND_status(void); + +#ifndef OPENSSL_NO_EGD +int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); +int RAND_egd(const char *path); +int RAND_egd_bytes(const char *path, int bytes); +#endif + +int RAND_poll(void); + +#if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H)) +/* application has to include in order to use these */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void RAND_screen(void); +OSSL_DEPRECATEDIN_1_1_0 int RAND_event(UINT, WPARAM, LPARAM); +#endif +#endif + +int RAND_set1_random_provider(OSSL_LIB_CTX *ctx, OSSL_PROVIDER *p); + +/* Which parameter to provider_random call */ +#define OSSL_PROV_RANDOM_PUBLIC 0 +#define OSSL_PROV_RANDOM_PRIVATE 1 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/randerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/randerr.h new file mode 100644 index 0000000..6107cdd --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/randerr.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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_RANDERR_H +#define OPENSSL_RANDERR_H +#pragma once + +#include +#include +#include + +/* + * RAND reason codes. + */ +#define RAND_R_ADDITIONAL_INPUT_TOO_LONG 102 +#define RAND_R_ALREADY_INSTANTIATED 103 +#define RAND_R_ARGUMENT_OUT_OF_RANGE 105 +#define RAND_R_CANNOT_OPEN_FILE 121 +#define RAND_R_DRBG_ALREADY_INITIALIZED 129 +#define RAND_R_DRBG_NOT_INITIALISED 104 +#define RAND_R_ENTROPY_INPUT_TOO_LONG 106 +#define RAND_R_ENTROPY_OUT_OF_RANGE 124 +#define RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED 127 +#define RAND_R_ERROR_INITIALISING_DRBG 107 +#define RAND_R_ERROR_INSTANTIATING_DRBG 108 +#define RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 109 +#define RAND_R_ERROR_RETRIEVING_ENTROPY 110 +#define RAND_R_ERROR_RETRIEVING_NONCE 111 +#define RAND_R_FAILED_TO_CREATE_LOCK 126 +#define RAND_R_FUNC_NOT_IMPLEMENTED 101 +#define RAND_R_FWRITE_ERROR 123 +#define RAND_R_GENERATE_ERROR 112 +#define RAND_R_INSUFFICIENT_DRBG_STRENGTH 139 +#define RAND_R_INTERNAL_ERROR 113 +#define RAND_R_INVALID_PROPERTY_QUERY 137 +#define RAND_R_IN_ERROR_STATE 114 +#define RAND_R_NOT_A_REGULAR_FILE 122 +#define RAND_R_NOT_INSTANTIATED 115 +#define RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED 128 +#define RAND_R_PARENT_LOCKING_NOT_ENABLED 130 +#define RAND_R_PARENT_STRENGTH_TOO_WEAK 131 +#define RAND_R_PERSONALISATION_STRING_TOO_LONG 116 +#define RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED 133 +#define RAND_R_PRNG_NOT_SEEDED 100 +#define RAND_R_RANDOM_POOL_IS_EMPTY 142 +#define RAND_R_RANDOM_POOL_OVERFLOW 125 +#define RAND_R_RANDOM_POOL_UNDERFLOW 134 +#define RAND_R_REQUEST_TOO_LARGE_FOR_DRBG 117 +#define RAND_R_RESEED_ERROR 118 +#define RAND_R_SELFTEST_FAILURE 119 +#define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135 +#define RAND_R_TOO_MUCH_NONCE_REQUESTED 136 +#define RAND_R_UNABLE_TO_CREATE_DRBG 143 +#define RAND_R_UNABLE_TO_FETCH_DRBG 144 +#define RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER 141 +#define RAND_R_UNABLE_TO_GET_PARENT_STRENGTH 138 +#define RAND_R_UNABLE_TO_LOCK_PARENT 140 +#define RAND_R_UNSUPPORTED_DRBG_FLAGS 132 +#define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc2.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc2.h new file mode 100644 index 0000000..7da28f7 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc2.h @@ -0,0 +1,68 @@ +/* + * 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_RC2_H +#define OPENSSL_RC2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC2_H +#endif + +#include + +#ifndef OPENSSL_NO_RC2 +#ifdef __cplusplus +extern "C" { +#endif + +#define RC2_BLOCK 8 +#define RC2_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef unsigned int RC2_INT; + +#define RC2_ENCRYPT 1 +#define RC2_DECRYPT 0 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void RC2_set_key(RC2_KEY *key, int len, + const unsigned char *data, int bits); +OSSL_DEPRECATEDIN_3_0 void RC2_ecb_encrypt(const unsigned char *in, + unsigned char *out, RC2_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_encrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_decrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num, int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc4.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc4.h new file mode 100644 index 0000000..92dce0c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc4.h @@ -0,0 +1,47 @@ +/* + * 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_RC4_H +#define OPENSSL_RC4_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC4_H +#endif + +#include + +#ifndef OPENSSL_NO_RC4 +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *RC4_options(void); +OSSL_DEPRECATEDIN_3_0 void RC4_set_key(RC4_KEY *key, int len, + const unsigned char *data); +OSSL_DEPRECATEDIN_3_0 void RC4(RC4_KEY *key, size_t len, + const unsigned char *indata, + unsigned char *outdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc5.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc5.h new file mode 100644 index 0000000..2e91e98 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rc5.h @@ -0,0 +1,79 @@ +/* + * 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_RC5_H +#define OPENSSL_RC5_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC5_H +#endif + +#include + +#ifndef OPENSSL_NO_RC5 +#ifdef __cplusplus +extern "C" { +#endif + +#define RC5_32_BLOCK 8 +#define RC5_32_KEY_LENGTH 16 /* This is a default, max is 255 */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define RC5_ENCRYPT 1 +#define RC5_DECRYPT 0 + +#define RC5_32_INT unsigned int + +/* + * This are the only values supported. Tweak the code if you want more The + * most supported modes will be RC5-32/12/16 RC5-32/16/8 + */ +#define RC5_8_ROUNDS 8 +#define RC5_12_ROUNDS 12 +#define RC5_16_ROUNDS 16 + +typedef struct rc5_key_st { + /* Number of rounds */ + int rounds; + RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)]; +} RC5_32_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RC5_32_set_key(RC5_32_KEY *key, int len, + const unsigned char *data, + int rounds); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ecb_encrypt(const unsigned char *in, + unsigned char *out, + RC5_32_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *schedule, + unsigned char *ivec, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *schedule, + unsigned char *ivec, int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ripemd.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ripemd.h new file mode 100644 index 0000000..a72d1da --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ripemd.h @@ -0,0 +1,59 @@ +/* + * 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_RIPEMD_H +#define OPENSSL_RIPEMD_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RIPEMD_H +#endif + +#include + +#ifndef OPENSSL_NO_RMD160 +#include +#include + +#define RIPEMD160_DIGEST_LENGTH 20 + +#ifdef __cplusplus +extern "C" { +#endif +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define RIPEMD160_LONG unsigned int + +#define RIPEMD160_CBLOCK 64 +#define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK / 4) + +typedef struct RIPEMD160state_st { + RIPEMD160_LONG A, B, C, D, E; + RIPEMD160_LONG Nl, Nh; + RIPEMD160_LONG data[RIPEMD160_LBLOCK]; + unsigned int num; +} RIPEMD160_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Init(RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *RIPEMD160(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void RIPEMD160_Transform(RIPEMD160_CTX *c, + const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rsa.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rsa.h new file mode 100644 index 0000000..08335e0 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rsa.h @@ -0,0 +1,614 @@ +/* + * Copyright 1995-2026 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_RSA_H +#define OPENSSL_RSA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RSA_H +#endif + +#include + +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_RSA_MAX_MODULUS_BITS +#define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +#endif + +#define RSA_3 0x3L +#define RSA_F4 0x10001L + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +#define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 2048 + +#ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +#define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +#endif + +/* exponent limit enforced for "large" modulus only */ +#ifndef OPENSSL_RSA_MAX_PUBEXP_BITS +#define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +#endif +/* based on RFC 8017 appendix A.1.2 */ +#define RSA_ASN1_VERSION_DEFAULT 0 +#define RSA_ASN1_VERSION_MULTI 1 + +#define RSA_DEFAULT_PRIME_NUM 2 + +#define RSA_METHOD_FLAG_NO_CHECK 0x0001 +#define RSA_FLAG_CACHE_PUBLIC 0x0002 +#define RSA_FLAG_CACHE_PRIVATE 0x0004 +#define RSA_FLAG_BLINDING 0x0008 +#define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +#define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +#define RSA_FLAG_NO_BLINDING 0x0080 +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define RSA_FLAG_NO_CONSTTIME 0x0000 +#endif +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +#ifndef OPENSSL_NO_DEPRECATED_0_9_8 +#define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +#endif + +/*- + * New with 3.0: use part of the flags to denote exact type of RSA key, + * some of which are limited to specific signature and encryption schemes. + * These different types share the same RSA structure, but indicate the + * use of certain fields in that structure. + * Currently known are: + * RSA - this is the "normal" unlimited RSA structure (typenum 0) + * RSASSA-PSS - indicates that the PSS parameters are used. + * RSAES-OAEP - no specific field used for the moment, but OAEP padding + * is expected. (currently unused) + * + * 4 bits allow for 16 types + */ +#define RSA_FLAG_TYPE_MASK 0xF000 +#define RSA_FLAG_TYPE_RSA 0x0000 +#define RSA_FLAG_TYPE_RSASSAPSS 0x1000 +#define RSA_FLAG_TYPE_RSAESOAEP 0x2000 + +int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad_mode); +int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad_mode); + +int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen); + +int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int bits); +int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes); +int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +#endif + +/* Salt length matches digest */ +#define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +#define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +#define RSA_PSS_SALTLEN_MAX -3 +/* Auto-detect on verify, set salt length to min(maximum possible, digest + * length) on sign */ +#define RSA_PSS_SALTLEN_AUTO_DIGEST_MAX -4 +/* Old compatible max salt length for sign only */ +#define RSA_PSS_SALTLEN_MAX_SIGN -2 + +int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md_name(EVP_PKEY_CTX *ctx, + const char *mdname); + +int EVP_PKEY_CTX_set_rsa_pss_keygen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_md_name(EVP_PKEY_CTX *ctx, + const char *mdname, + const char *mdprops); + +int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, void *label, int llen); +int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); + +#define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +#define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +#define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +#define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +#define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +#define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +#define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +#define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14) + +#define RSA_PKCS1_PADDING 1 +#define RSA_NO_PADDING 3 +#define RSA_PKCS1_OAEP_PADDING 4 +#define RSA_X931_PADDING 5 + +/* EVP_PKEY_ only */ +#define RSA_PKCS1_PSS_PADDING 6 +#define RSA_PKCS1_WITH_TLS_PADDING 7 + +/* internal RSA_ only */ +#define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 + +#define RSA_PKCS1_PADDING_SIZE 11 + +#define RSA_set_app_data(s, arg) RSA_set_ex_data(s, 0, arg) +#define RSA_get_app_data(s) RSA_get_ex_data(s, 0) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new(void); +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new_method(ENGINE *engine); +OSSL_DEPRECATEDIN_3_0 int RSA_bits(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_security_bits(const RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_crt_params(RSA *r, + BIGNUM *dmp1, BIGNUM *dmq1, + BIGNUM *iqmp); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_multi_prime_params(RSA *r, + BIGNUM *primes[], + BIGNUM *exps[], + BIGNUM *coeffs[], + int pnum); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, + const BIGNUM **d); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_factors(const RSA *r, + const BIGNUM **p, const BIGNUM **q); +OSSL_DEPRECATEDIN_3_0 int RSA_get_multi_prime_extra_count(const RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_get0_multi_prime_factors(const RSA *r, + const BIGNUM *primes[]); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, + const BIGNUM **dmq1, + const BIGNUM **iqmp); +OSSL_DEPRECATEDIN_3_0 +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_n(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_e(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_d(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_p(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_q(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmp1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmq1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_iqmp(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +OSSL_DEPRECATEDIN_3_0 void RSA_clear_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_test_flags(const RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_set_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_get_version(RSA *r); +OSSL_DEPRECATEDIN_3_0 ENGINE *RSA_get0_engine(const RSA *r); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +#define EVP_RSA_gen(bits) \ + EVP_PKEY_Q_keygen(NULL, NULL, "RSA", (size_t)(0 + (bits))) + +/* Deprecated version */ +#ifndef OPENSSL_NO_DEPRECATED_0_9_8 +OSSL_DEPRECATEDIN_0_9_8 RSA *RSA_generate_key(int bits, unsigned long e, void (*callback)(int, int, void *), + void *cb_arg); +#endif + +/* New version */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb); +/* Multi-prime version */ +OSSL_DEPRECATEDIN_3_0 int RSA_generate_multi_prime_key(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, + BIGNUM *q1, BIGNUM *q2, + const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, + const BIGNUM *Xq2, const BIGNUM *Xq, + const BIGNUM *e, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_generate_key_ex(RSA *rsa, int bits, + const BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 int RSA_check_key(const RSA *); +OSSL_DEPRECATEDIN_3_0 int RSA_check_key_ex(const RSA *, BN_GENCB *cb); +/* next 4 return -1 on error */ +OSSL_DEPRECATEDIN_3_0 +int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +OSSL_DEPRECATEDIN_3_0 int RSA_up_ref(RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_flags(const RSA *r); + +OSSL_DEPRECATEDIN_3_0 void RSA_set_default_method(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_null_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_method(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPrivateKey) +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) +DECLARE_ASN1_DUP_FUNCTION(RSA_PSS_PARAMS) + +struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int RSA_print_fp(FILE *fp, const RSA *r, int offset); +#endif + +OSSL_DEPRECATEDIN_3_0 int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_verify(int type, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ +OSSL_DEPRECATEDIN_3_0 +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigbuf, unsigned int siglen, + RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void RSA_blinding_off(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int PKCS1_MGF1(unsigned char *mask, long len, + const unsigned char *seed, long seedlen, + const EVP_MD *dgst); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_none(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_hash_id(int nid); + +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +#define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +OSSL_DEPRECATEDIN_3_0 int RSA_set_ex_data(RSA *r, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *RSA_get_ex_data(const RSA *r, int idx); + +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPublicKey) +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPrivateKey) + +/* + * If this flag is set the RSA 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 RSA_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 RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +#define RSA_FLAG_CHECKED 0x0800 + +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_new(const char *name, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_meth_free(RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const char *RSA_meth_get0_name(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set1_name(RSA_METHOD *meth, + const char *name); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_get_flags(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +OSSL_DEPRECATEDIN_3_0 void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set0_app_data(RSA_METHOD *meth, + void *app_data); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth))(BIGNUM *r0, + const BIGNUM *i, + RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp)(BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth))(BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp)(BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_init(const RSA_METHOD *meth))(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init)(RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_finish(const RSA_METHOD *meth))(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish)(RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_sign(const RSA_METHOD *meth))(int type, + const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, + unsigned int *siglen, + const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign)(int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_verify(const RSA_METHOD *meth))(int dtype, + const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, + const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify)(int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_keygen(const RSA_METHOD *meth))(RSA *rsa, int bits, + BIGNUM *e, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen)(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth))(RSA *rsa, + int bits, + int primes, + BIGNUM *e, + BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen)(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rsaerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rsaerr.h new file mode 100644 index 0000000..8432f5f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/rsaerr.h @@ -0,0 +1,105 @@ +/* + * 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_RSAERR_H +#define OPENSSL_RSAERR_H +#pragma once + +#include +#include +#include + +/* + * RSA reason codes. + */ +#define RSA_R_ALGORITHM_MISMATCH 100 +#define RSA_R_BAD_E_VALUE 101 +#define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 +#define RSA_R_BAD_PAD_BYTE_COUNT 103 +#define RSA_R_BAD_SIGNATURE 104 +#define RSA_R_BLOCK_TYPE_IS_NOT_01 106 +#define RSA_R_BLOCK_TYPE_IS_NOT_02 107 +#define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 +#define RSA_R_DATA_TOO_LARGE 109 +#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 +#define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 +#define RSA_R_DATA_TOO_SMALL 111 +#define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 +#define RSA_R_DIGEST_DOES_NOT_MATCH 158 +#define RSA_R_DIGEST_NOT_ALLOWED 145 +#define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 +#define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 +#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 +#define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 +#define RSA_R_FIRST_OCTET_INVALID 133 +#define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 +#define RSA_R_INVALID_DIGEST 157 +#define RSA_R_INVALID_DIGEST_LENGTH 143 +#define RSA_R_INVALID_HEADER 137 +#define RSA_R_INVALID_KEYPAIR 171 +#define RSA_R_INVALID_KEY_LENGTH 173 +#define RSA_R_INVALID_LABEL 160 +#define RSA_R_INVALID_LENGTH 181 +#define RSA_R_INVALID_MESSAGE_LENGTH 131 +#define RSA_R_INVALID_MGF1_MD 156 +#define RSA_R_INVALID_MODULUS 174 +#define RSA_R_INVALID_MULTI_PRIME_KEY 167 +#define RSA_R_INVALID_OAEP_PARAMETERS 161 +#define RSA_R_INVALID_PADDING 138 +#define RSA_R_INVALID_PADDING_MODE 141 +#define RSA_R_INVALID_PSS_PARAMETERS 149 +#define RSA_R_INVALID_PSS_SALTLEN 146 +#define RSA_R_INVALID_REQUEST 175 +#define RSA_R_INVALID_SALT_LENGTH 150 +#define RSA_R_INVALID_STRENGTH 176 +#define RSA_R_INVALID_TRAILER 139 +#define RSA_R_INVALID_X931_DIGEST 142 +#define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 +#define RSA_R_KEY_PRIME_NUM_INVALID 165 +#define RSA_R_KEY_SIZE_TOO_SMALL 120 +#define RSA_R_LAST_OCTET_INVALID 134 +#define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +#define RSA_R_MISSING_PRIVATE_KEY 179 +#define RSA_R_MODULUS_TOO_LARGE 105 +#define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +#define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +#define RSA_R_MP_R_NOT_PRIME 170 +#define RSA_R_NO_PUBLIC_EXPONENT 140 +#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +#define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +#define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +#define RSA_R_OAEP_DECODING_ERROR 121 +#define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 +#define RSA_R_PADDING_CHECK_FAILED 114 +#define RSA_R_PAIRWISE_TEST_FAILURE 177 +#define RSA_R_PKCS_DECODING_ERROR 159 +#define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +#define RSA_R_PUB_EXPONENT_OUT_OF_RANGE 178 +#define RSA_R_P_NOT_PRIME 128 +#define RSA_R_Q_NOT_PRIME 129 +#define RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT 180 +#define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 +#define RSA_R_SLEN_CHECK_FAILED 136 +#define RSA_R_SLEN_RECOVERY_FAILED 135 +#define RSA_R_SSLV3_ROLLBACK_ATTACK 115 +#define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 +#define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 +#define RSA_R_UNKNOWN_DIGEST 166 +#define RSA_R_UNKNOWN_MASK_DIGEST 151 +#define RSA_R_UNKNOWN_PADDING_TYPE 118 +#define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +#define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +#define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 +#define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 +#define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 +#define RSA_R_VALUE_MISSING 147 +#define RSA_R_WRONG_SIGNATURE_LENGTH 119 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/safestack.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/safestack.h new file mode 100644 index 0000000..50acb0b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/safestack.h @@ -0,0 +1,326 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/safestack.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SAFESTACK_H +#define OPENSSL_SAFESTACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SAFESTACK_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define STACK_OF(type) struct stack_st_##type + +/* Helper macro for internal use */ +#define SKM_DEFINE_STACK_OF_INTERNAL(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_inline void sk_##t1##_freefunc_thunk(OPENSSL_sk_freefunc freefunc_arg, void *ptr) \ + { \ + sk_##t1##_freefunc freefunc = (sk_##t1##_freefunc)freefunc_arg; \ + freefunc((t3 *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *ossl_check_##t1##_type(t2 *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ + { \ + return (const OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ + { \ + return (OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ + { \ + return (OPENSSL_sk_compfunc)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ + { \ + return (OPENSSL_sk_copyfunc)cpy; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ + { \ + return (OPENSSL_sk_freefunc)fr; \ + } + +#define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_inline void sk_##t1##_freefunc_thunk(OPENSSL_sk_freefunc freefunc_arg, void *ptr) \ + { \ + sk_##t1##_freefunc freefunc = (sk_##t1##_freefunc)freefunc_arg; \ + freefunc((t3 *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + OPENSSL_STACK *ret = OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + OPENSSL_STACK *ret = OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + sk = (STACK_OF(t1) *)OPENSSL_sk_set_thunks((OPENSSL_STACK *)sk, f_thunk); \ + \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ + { \ + return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +#define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +#define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) +#define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +#define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) +#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) +#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) +#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) +#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) +#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) +#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) +#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) +#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) +#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) +#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) +#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) +#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) +#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) +#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) +#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) +#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) +#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) +#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) +#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) +#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) +#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) +#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) +#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) +#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) +#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) +#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) +#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) + +/* clang-format on */ +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/seed.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/seed.h new file mode 100644 index 0000000..8c2b20a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/seed.h @@ -0,0 +1,112 @@ +/* + * Copyright 2007-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 + */ + +/* + * Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Neither the name of author nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef OPENSSL_SEED_H +#define OPENSSL_SEED_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SEED_H +#endif + +#include + +#ifndef OPENSSL_NO_SEED +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SEED_BLOCK_SIZE 16 +#define SEED_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* look whether we need 'long' to get 32 bits */ +#ifdef AES_LONG +#ifndef SEED_LONG +#define SEED_LONG 1 +#endif +#endif + +typedef struct seed_key_st { +#ifdef SEED_LONG + unsigned long data[32]; +#else + unsigned int data[32]; +#endif +} SEED_KEY_SCHEDULE; +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_ecb_encrypt(const unsigned char *in, + unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int *num, int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/self_test.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/self_test.h new file mode 100644 index 0000000..6e671c1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/self_test.h @@ -0,0 +1,116 @@ +/* + * Copyright 2019-2025 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_SELF_TEST_H +#define OPENSSL_SELF_TEST_H +#pragma once + +#include /* OSSL_CALLBACK */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* The test event phases */ +#define OSSL_SELF_TEST_PHASE_NONE "None" +#define OSSL_SELF_TEST_PHASE_START "Start" +#define OSSL_SELF_TEST_PHASE_CORRUPT "Corrupt" +#define OSSL_SELF_TEST_PHASE_PASS "Pass" +#define OSSL_SELF_TEST_PHASE_FAIL "Fail" + +/* Test event categories */ +#define OSSL_SELF_TEST_TYPE_NONE "None" +#define OSSL_SELF_TEST_TYPE_MODULE_INTEGRITY "Module_Integrity" +#define OSSL_SELF_TEST_TYPE_INSTALL_INTEGRITY "Install_Integrity" +#define OSSL_SELF_TEST_TYPE_CRNG "Continuous_RNG_Test" +#define OSSL_SELF_TEST_TYPE_PCT "Conditional_PCT" +#define OSSL_SELF_TEST_TYPE_PCT_KAT "Conditional_KAT" +#define OSSL_SELF_TEST_TYPE_PCT_IMPORT "Import_PCT" +#define OSSL_SELF_TEST_TYPE_KAT_INTEGRITY "KAT_Integrity" +#define OSSL_SELF_TEST_TYPE_KAT_CIPHER "KAT_Cipher" +#define OSSL_SELF_TEST_TYPE_KAT_ASYM_CIPHER "KAT_AsymmetricCipher" +#define OSSL_SELF_TEST_TYPE_KAT_ASYM_KEYGEN "KAT_AsymmetricKeyGeneration" +#define OSSL_SELF_TEST_TYPE_KAT_KEM "KAT_KEM" +#define OSSL_SELF_TEST_TYPE_KAT_DIGEST "KAT_Digest" +#define OSSL_SELF_TEST_TYPE_KAT_SIGNATURE "KAT_Signature" +#define OSSL_SELF_TEST_TYPE_PCT_SIGNATURE "PCT_Signature" +#define OSSL_SELF_TEST_TYPE_KAT_KDF "KAT_KDF" +#define OSSL_SELF_TEST_TYPE_KAT_KA "KAT_KA" +#define OSSL_SELF_TEST_TYPE_DRBG "DRBG" + +/* Test event sub categories */ +#define OSSL_SELF_TEST_DESC_NONE "None" +#define OSSL_SELF_TEST_DESC_INTEGRITY_HMAC "HMAC" +#define OSSL_SELF_TEST_DESC_PCT_RSA "RSA" +#define OSSL_SELF_TEST_DESC_PCT_RSA_PKCS1 "RSA" +#define OSSL_SELF_TEST_DESC_PCT_ECDSA "ECDSA" +#define OSSL_SELF_TEST_DESC_PCT_EDDSA "EDDSA" +#define OSSL_SELF_TEST_DESC_PCT_DH "DH" +#define OSSL_SELF_TEST_DESC_PCT_DSA "DSA" +#define OSSL_SELF_TEST_DESC_PCT_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_PCT_ML_KEM "ML-KEM" +#define OSSL_SELF_TEST_DESC_PCT_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_CIPHER_AES_GCM "AES_GCM" +#define OSSL_SELF_TEST_DESC_CIPHER_AES_ECB "AES_ECB_Decrypt" +#define OSSL_SELF_TEST_DESC_CIPHER_TDES "TDES" +#define OSSL_SELF_TEST_DESC_ASYM_RSA_ENC "RSA_Encrypt" +#define OSSL_SELF_TEST_DESC_ASYM_RSA_DEC "RSA_Decrypt" +#define OSSL_SELF_TEST_DESC_MD_SHA1 "SHA1" +#define OSSL_SELF_TEST_DESC_MD_SHA2 "SHA2" +#define OSSL_SELF_TEST_DESC_MD_SHA3 "SHA3" +#define OSSL_SELF_TEST_DESC_SIGN_DSA "DSA" +#define OSSL_SELF_TEST_DESC_SIGN_RSA "RSA" +#define OSSL_SELF_TEST_DESC_SIGN_ECDSA "ECDSA" +#define OSSL_SELF_TEST_DESC_SIGN_DetECDSA "DetECDSA" +#define OSSL_SELF_TEST_DESC_SIGN_EDDSA "EDDSA" +#define OSSL_SELF_TEST_DESC_SIGN_LMS "LMS" +#define OSSL_SELF_TEST_DESC_SIGN_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_SIGN_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_KEM "KEM" +#define OSSL_SELF_TEST_DESC_DRBG_CTR "CTR" +#define OSSL_SELF_TEST_DESC_DRBG_HASH "HASH" +#define OSSL_SELF_TEST_DESC_DRBG_HMAC "HMAC" +#define OSSL_SELF_TEST_DESC_KA_DH "DH" +#define OSSL_SELF_TEST_DESC_KA_ECDH "ECDH" +#define OSSL_SELF_TEST_DESC_KDF_HKDF "HKDF" +#define OSSL_SELF_TEST_DESC_KDF_SSKDF "SSKDF" +#define OSSL_SELF_TEST_DESC_KDF_X963KDF "X963KDF" +#define OSSL_SELF_TEST_DESC_KDF_X942KDF "X942KDF" +#define OSSL_SELF_TEST_DESC_KDF_PBKDF2 "PBKDF2" +#define OSSL_SELF_TEST_DESC_KDF_SSHKDF "SSHKDF" +#define OSSL_SELF_TEST_DESC_KDF_TLS12_PRF "TLS12_PRF" +#define OSSL_SELF_TEST_DESC_KDF_KBKDF "KBKDF" +#define OSSL_SELF_TEST_DESC_KDF_KBKDF_KMAC "KBKDF_KMAC" +#define OSSL_SELF_TEST_DESC_KDF_TLS13_EXTRACT "TLS13_KDF_EXTRACT" +#define OSSL_SELF_TEST_DESC_KDF_TLS13_EXPAND "TLS13_KDF_EXPAND" +#define OSSL_SELF_TEST_DESC_RNG "RNG" +#define OSSL_SELF_TEST_DESC_KEYGEN_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_KEYGEN_ML_KEM "ML-KEM" +#define OSSL_SELF_TEST_DESC_KEYGEN_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_ENCAP_KEM "KEM_Encap" +#define OSSL_SELF_TEST_DESC_DECAP_KEM "KEM_Decap" +#define OSSL_SELF_TEST_DESC_DECAP_KEM_FAIL "KEM_Decap_Reject" + +void OSSL_SELF_TEST_set_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK *cb, + void *cbarg); +void OSSL_SELF_TEST_get_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK **cb, + void **cbarg); + +OSSL_SELF_TEST *OSSL_SELF_TEST_new(OSSL_CALLBACK *cb, void *cbarg); +void OSSL_SELF_TEST_free(OSSL_SELF_TEST *st); + +void OSSL_SELF_TEST_onbegin(OSSL_SELF_TEST *st, const char *type, + const char *desc); +int OSSL_SELF_TEST_oncorrupt_byte(OSSL_SELF_TEST *st, unsigned char *bytes); +void OSSL_SELF_TEST_onend(OSSL_SELF_TEST *st, int ret); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_SELF_TEST_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sha.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sha.h new file mode 100644 index 0000000..52b0266 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sha.h @@ -0,0 +1,139 @@ +/* + * 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_SHA_H +#define OPENSSL_SHA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SHA_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SHA_DIGEST_LENGTH 20 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! SHA_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define SHA_LONG unsigned int + +#define SHA_LBLOCK 16 +#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a \ + * contiguous array of 32 bit wide \ + * big-endian values. */ +#define SHA_LAST_BLOCK (SHA_CBLOCK - 8) + +typedef struct SHAstate_st { + SHA_LONG h0, h1, h2, h3, h4; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num; +} SHA_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA1_Init(SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA1_Final(unsigned char *md, SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA1_Transform(SHA_CTX *c, const unsigned char *data); +#endif + +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SHA256_CBLOCK (SHA_LBLOCK * 4) /* SHA-256 treats input data as a \ + * contiguous array of 32 bit wide \ + * big-endian values. */ + +typedef struct SHA256state_st { + SHA_LONG h[8]; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num, md_len; +} SHA256_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA224_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA224_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA224_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA256_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA256_Transform(SHA256_CTX *c, + const unsigned char *data); +#endif + +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); + +#define SHA256_192_DIGEST_LENGTH 24 +#define SHA224_DIGEST_LENGTH 28 +#define SHA256_DIGEST_LENGTH 32 +#define SHA384_DIGEST_LENGTH 48 +#define SHA512_DIGEST_LENGTH 64 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 + * being exactly 64-bit wide. See Implementation Notes in sha512.c + * for further details. + */ +/* + * SHA-512 treats input data as a + * contiguous array of 64 bit + * wide big-endian values. + */ +#define SHA512_CBLOCK (SHA_LBLOCK * 8) +#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) +#define SHA_LONG64 unsigned __int64 +#elif defined(__arch64__) +#define SHA_LONG64 unsigned long +#else +#define SHA_LONG64 unsigned long long +#endif + +typedef struct SHA512state_st { + SHA_LONG64 h[8]; + SHA_LONG64 Nl, Nh; + union { + SHA_LONG64 d[SHA_LBLOCK]; + unsigned char p[SHA512_CBLOCK]; + } u; + unsigned int num, md_len; +} SHA512_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA384_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA384_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA384_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA512_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA512_Transform(SHA512_CTX *c, + const unsigned char *data); +#endif + +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/srp.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/srp.h new file mode 100644 index 0000000..8dd7404 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/srp.h @@ -0,0 +1,291 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/srp.h.in + * + * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. 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 + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SRP_H +#define OPENSSL_SRP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SRP_H +#endif + +#include + +#ifndef OPENSSL_NO_SRP +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) +#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) +#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) +#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) +#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) +#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) +#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_freefunc_type(freefunc)) +#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) +#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) +#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) +#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) +#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) +#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) +#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) +#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) +#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) +#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) +#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_freefunc_type(freefunc)) +#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) +#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) +#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) +#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_user_pwd_new(void); +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, + const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, + const char *info); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; + /* to simulate a user */ + char *seed_key; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) +#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) +#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) +#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) +#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) +#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) +#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_freefunc_type(freefunc)) +#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) +#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) +#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) +#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_VBASE *SRP_VBASE_new(char *seed_key); +OSSL_DEPRECATEDIN_3_0 +void SRP_VBASE_free(SRP_VBASE *vb); +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); + +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g, OSSL_LIB_CTX *libctx, + const char *propq); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g); + +#define SRP_NO_ERROR 0 +#define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +#define SRP_ERR_VBASE_BN_LIB 2 +#define SRP_ERR_OPEN_FILE 3 +#define SRP_ERR_MEMORY 4 + +#define DB_srptype 0 +#define DB_srpverifier 1 +#define DB_srpsalt 2 +#define DB_srpid 3 +#define DB_srpgN 4 +#define DB_srpinfo 5 +#undef DB_NUMBER +#define DB_NUMBER 6 + +#define DB_SRP_INDEX 'I' +#define DB_SRP_VALID 'V' +#define DB_SRP_REVOKED 'R' +#define DB_SRP_MODIF 'v' + +/* see srp.c */ +OSSL_DEPRECATEDIN_3_0 +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); + +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ + +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +#define SRP_MINIMAL_N 1024 + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/* This method ignores the configured seed and fails for an unknown user. */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 +SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/srtp.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/srtp.h new file mode 100644 index 0000000..3b716e1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/srtp.h @@ -0,0 +1,68 @@ +/* + * Copyright 2011-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 + */ + +/* + * DTLS code by Eric Rescorla + * + * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. + */ + +#ifndef OPENSSL_SRTP_H +#define OPENSSL_SRTP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_D1_SRTP_H +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SRTP_AES128_CM_SHA1_80 0x0001 +#define SRTP_AES128_CM_SHA1_32 0x0002 +#define SRTP_AES128_F8_SHA1_80 0x0003 +#define SRTP_AES128_F8_SHA1_32 0x0004 +#define SRTP_NULL_SHA1_80 0x0005 +#define SRTP_NULL_SHA1_32 0x0006 + +/* AEAD SRTP protection profiles from RFC 7714 */ +#define SRTP_AEAD_AES_128_GCM 0x0007 +#define SRTP_AEAD_AES_256_GCM 0x0008 + +/* DOUBLE AEAD SRTP protection profiles from RFC 8723 */ +#define SRTP_DOUBLE_AEAD_AES_128_GCM_AEAD_AES_128_GCM 0x0009 +#define SRTP_DOUBLE_AEAD_AES_256_GCM_AEAD_AES_256_GCM 0x000A + +/* ARIA SRTP protection profiles from RFC 8269 */ +#define SRTP_ARIA_128_CTR_HMAC_SHA1_80 0x000B +#define SRTP_ARIA_128_CTR_HMAC_SHA1_32 0x000C +#define SRTP_ARIA_256_CTR_HMAC_SHA1_80 0x000D +#define SRTP_ARIA_256_CTR_HMAC_SHA1_32 0x000E +#define SRTP_AEAD_ARIA_128_GCM 0x000F +#define SRTP_AEAD_ARIA_256_GCM 0x0010 + +#ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl.h new file mode 100644 index 0000000..ccdfdac --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl.h @@ -0,0 +1,2947 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ssl.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SSL_H +#define OPENSSL_SSL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL_H +#endif + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +#define SSL_SESSION_ASN1_VERSION 0x0001 + +#define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +#define SSL_MAX_SID_CTX_LENGTH 32 + +#define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512 / 8) +#define SSL_MAX_KEY_ARG_LENGTH 8 +/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ + +/* The maximum number of encrypt/decrypt pipelines we can support */ +#define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +#define SSL_TXT_LOW "LOW" +#define SSL_TXT_MEDIUM "MEDIUM" +#define SSL_TXT_HIGH "HIGH" +#define SSL_TXT_FIPS "FIPS" + +#define SSL_TXT_aNULL "aNULL" +#define SSL_TXT_eNULL "eNULL" +#define SSL_TXT_NULL "NULL" + +#define SSL_TXT_kRSA "kRSA" +#define SSL_TXT_kDHr "kDHr" /* this cipher class has been removed */ +#define SSL_TXT_kDHd "kDHd" /* this cipher class has been removed */ +#define SSL_TXT_kDH "kDH" /* this cipher class has been removed */ +#define SSL_TXT_kEDH "kEDH" /* alias for kDHE */ +#define SSL_TXT_kDHE "kDHE" +#define SSL_TXT_kECDHr "kECDHr" /* this cipher class has been removed */ +#define SSL_TXT_kECDHe "kECDHe" /* this cipher class has been removed */ +#define SSL_TXT_kECDH "kECDH" /* this cipher class has been removed */ +#define SSL_TXT_kEECDH "kEECDH" /* alias for kECDHE */ +#define SSL_TXT_kECDHE "kECDHE" +#define SSL_TXT_kPSK "kPSK" +#define SSL_TXT_kRSAPSK "kRSAPSK" +#define SSL_TXT_kECDHEPSK "kECDHEPSK" +#define SSL_TXT_kDHEPSK "kDHEPSK" +#define SSL_TXT_kGOST "kGOST" +#define SSL_TXT_kGOST18 "kGOST18" +#define SSL_TXT_kSRP "kSRP" + +#define SSL_TXT_aRSA "aRSA" +#define SSL_TXT_aDSS "aDSS" +#define SSL_TXT_aDH "aDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDH "aECDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDSA "aECDSA" +#define SSL_TXT_aPSK "aPSK" +#define SSL_TXT_aGOST94 "aGOST94" +#define SSL_TXT_aGOST01 "aGOST01" +#define SSL_TXT_aGOST12 "aGOST12" +#define SSL_TXT_aGOST "aGOST" +#define SSL_TXT_aSRP "aSRP" + +#define SSL_TXT_DSS "DSS" +#define SSL_TXT_DH "DH" +#define SSL_TXT_DHE "DHE" /* same as "kDHE:-ADH" */ +#define SSL_TXT_EDH "EDH" /* alias for DHE */ +#define SSL_TXT_ADH "ADH" +#define SSL_TXT_RSA "RSA" +#define SSL_TXT_ECDH "ECDH" +#define SSL_TXT_EECDH "EECDH" /* alias for ECDHE" */ +#define SSL_TXT_ECDHE "ECDHE" /* same as "kECDHE:-AECDH" */ +#define SSL_TXT_AECDH "AECDH" +#define SSL_TXT_ECDSA "ECDSA" +#define SSL_TXT_PSK "PSK" +#define SSL_TXT_SRP "SRP" + +#define SSL_TXT_DES "DES" +#define SSL_TXT_3DES "3DES" +#define SSL_TXT_RC4 "RC4" +#define SSL_TXT_RC2 "RC2" +#define SSL_TXT_IDEA "IDEA" +#define SSL_TXT_SEED "SEED" +#define SSL_TXT_AES128 "AES128" +#define SSL_TXT_AES256 "AES256" +#define SSL_TXT_AES "AES" +#define SSL_TXT_AES_GCM "AESGCM" +#define SSL_TXT_AES_CCM "AESCCM" +#define SSL_TXT_AES_CCM_8 "AESCCM8" +#define SSL_TXT_CAMELLIA128 "CAMELLIA128" +#define SSL_TXT_CAMELLIA256 "CAMELLIA256" +#define SSL_TXT_CAMELLIA "CAMELLIA" +#define SSL_TXT_CHACHA20 "CHACHA20" +#define SSL_TXT_GOST "GOST89" +#define SSL_TXT_ARIA "ARIA" +#define SSL_TXT_ARIA_GCM "ARIAGCM" +#define SSL_TXT_ARIA128 "ARIA128" +#define SSL_TXT_ARIA256 "ARIA256" +#define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" +#define SSL_TXT_CBC "CBC" + +#define SSL_TXT_MD5 "MD5" +#define SSL_TXT_SHA1 "SHA1" +#define SSL_TXT_SHA "SHA" /* same as "SHA1" */ +#define SSL_TXT_GOST94 "GOST94" +#define SSL_TXT_GOST89MAC "GOST89MAC" +#define SSL_TXT_GOST12 "GOST12" +#define SSL_TXT_GOST89MAC12 "GOST89MAC12" +#define SSL_TXT_SHA256 "SHA256" +#define SSL_TXT_SHA384 "SHA384" + +#define SSL_TXT_SSLV3 "SSLv3" +#define SSL_TXT_TLSV1 "TLSv1" +#define SSL_TXT_TLSV1_1 "TLSv1.1" +#define SSL_TXT_TLSV1_2 "TLSv1.2" + +#define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +#define SSL_TXT_CMPALL "COMPLEMENTOFALL" +#define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() + * Update both macro and function simultaneously + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* + * This is the default set of TLSv1.3 ciphersuites + * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() + * Update both macro and function simultaneously + */ +#define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +#define SSL_SENT_SHUTDOWN 1 +#define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +#define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; + +STACK_OF(SSL_CIPHER); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) +#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) +#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) +#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) +#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) +#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) +#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) +#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) +#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) +#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) +#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) +#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x00001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x00002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x00008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x00020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* Typedef for SSL async callback */ +typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); + +#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) + +/* + * SSL/TLS connection options. + */ +/* Disable Extended master secret */ +#define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) +/* Cleanse plaintext copies of data delivered to the application */ +#define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) +/* Allow initial connection to servers that don't support RI */ +#define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) +/* Enable support for Kernel TLS */ +#define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) +#define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) +#define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) +#define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) +#define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) +#define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +#define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added + * in OpenSSL 0.9.6d. Usually (depending on the application protocol) + * the workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it + * in SSL_OP_ALL. Added in 0.9.6e + */ +#define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS SSL_OP_BIT(11) +/* DTLS options */ +#define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) +/* Turn on Cookie Exchange (on relevant for servers) */ +#define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) +/* Don't use RFC4507 ticket extension */ +#define SSL_OP_NO_TICKET SSL_OP_BIT(14) +#ifndef OPENSSL_NO_DTLS1_METHOD +/* + * Use Cisco's version identifier of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) + */ +#define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) +#endif +/* As server, disallow session resumption on renegotiation */ +#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) +/* Don't use compression even if supported */ +#define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) +/* Permit unsafe legacy renegotiation */ +#define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) +/* Disable encrypt-then-mac */ +#define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future + * version of OpenSSL may have this disabled by default. + */ +#define SSL_OP_ENABLE_MIDDLEBOX_COMPAT SSL_OP_BIT(20) +/* + * Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_SERVER_PREFERENCE + */ +#define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) +/* + * Set on servers to choose cipher, curve or group according to server's + * preferences. + */ +#define SSL_OP_SERVER_PREFERENCE SSL_OP_BIT(22) +/* Equivalent definition for backwards compatibility: */ +#define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_SERVER_PREFERENCE +/* + * If set, a server will allow a client to issue an SSLv3.0 version + * number as latest version supported in the premaster secret, even when + * TLSv1.0 (version 3.1) was announced in the client hello. Normally + * this is forbidden to prevent version rollback attacks. + */ +#define SSL_OP_TLS_ROLLBACK_BUG SSL_OP_BIT(23) +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. + * This is a server-side option only (no effect on the client). + */ +#define SSL_OP_NO_ANTI_REPLAY SSL_OP_BIT(24) +#define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) +#define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) +#define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) +#define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) +#define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) +/* Disallow all renegotiation */ +#define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) +/* + * Make server add server-hello extension from early version of + * cryptopro draft, when GOST ciphersuite is negotiated. Required for + * interoperability with CryptoPro CSP 3.x + */ +#define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +#define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +#define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) +/* Enable KTLS TX zerocopy on Linux */ +#define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) +#define SSL_OP_LEGACY_EC_POINT_FORMATS SSL_OP_BIT(36) + +/* + * Option "collections." + */ +#define SSL_OP_NO_SSL_MASK \ + (SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \ + | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3) +#define SSL_OP_NO_DTLS_MASK \ + (SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2) + +/* Various bug workarounds that should be rather harmless. */ +#define SSL_OP_ALL \ + (SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ + | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* + * OBSOLETE OPTIONS retained for compatibility + */ + +#define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +#define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +#define SSL_OP_TLS_D5_BUG 0x0 +#define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +#define SSL_OP_SINGLE_ECDH_USE 0x0 +#define SSL_OP_SINGLE_DH_USE 0x0 +#define SSL_OP_EPHEMERAL_RSA 0x0 +#define SSL_OP_NO_SSLv2 0x0 +#define SSL_OP_PKCS1_CHECK_1 0x0 +#define SSL_OP_PKCS1_CHECK_2 0x0 +#define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +#define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +#define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +#define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +#define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +#define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +#define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +#define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +#define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +#define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +#define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +#define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +#define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +#define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +#define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +#define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +#define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +#define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +#define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +#define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +#define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +#define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +#define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +#define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +#define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +#define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +#define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +#define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +#define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +#define CERT_PKEY_RPK 0x1000 + +#define SSL_CONF_FLAG_CMDLINE 0x1 +#define SSL_CONF_FLAG_FILE 0x2 +#define SSL_CONF_FLAG_CLIENT 0x4 +#define SSL_CONF_FLAG_SERVER 0x8 +#define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +#define SSL_CONF_FLAG_CERTIFICATE 0x20 +#define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +#define SSL_CONF_TYPE_UNKNOWN 0x0 +#define SSL_CONF_TYPE_STRING 0x1 +#define SSL_CONF_TYPE_FILE 0x2 +#define SSL_CONF_TYPE_DIR 0x3 +#define SSL_CONF_TYPE_NONE 0x4 +#define SSL_CONF_TYPE_STORE 0x5 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +#define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); +uint64_t SSL_get_options(const SSL *s); +uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_clear_options(SSL *s, uint64_t op); +uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_set_options(SSL *s, uint64_t op); + +#define SSL_CTX_set_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, (op), NULL) +#define SSL_CTX_clear_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, 0, NULL) +#define SSL_clear_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_set_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, (op), NULL) +#define SSL_get_mode(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, 0, NULL) +#define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl), SSL_CTRL_SET_MTU, (mtu), NULL) +#define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl), DTLS_CTRL_SET_LINK_MTU, (mtu), NULL) +#define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl), DTLS_CTRL_GET_LINK_MIN_MTU, 0, NULL) + +#define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +#define SSL_CTX_set_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_set_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_CTX_clear_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) +#define SSL_clear_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +#define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +#define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +#define SSL_get_extms_support(s) \ + SSL_ctrl((s), SSL_CTRL_GET_EXTMS_SUPPORT, 0, NULL) + +#ifndef OPENSSL_NO_SRP +/* see tls_srp.c */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, + int *ad); +OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); +#endif +#endif + +/* 100k max cert list */ +#define SSL_MAX_CERT_LIST_DEFAULT (1024 * 100) + +#define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024 * 20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB)(SSL *ssl, unsigned char *id, + unsigned int *id_len); + +#define SSL_SESS_CACHE_OFF 0x0000 +#define SSL_SESS_CACHE_CLIENT 0x0001 +#define SSL_SESS_CACHE_SERVER 0x0002 +#define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_SERVER) +#define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +#define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +#define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +#define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP | SSL_SESS_CACHE_NO_INTERNAL_STORE) +#define SSL_SESS_CACHE_UPDATE_TIME 0x0400 + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +#define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_NUMBER, 0, NULL) +#define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT, 0, NULL) +#define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_GOOD, 0, NULL) +#define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT, 0, NULL) +#define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_GOOD, 0, NULL) +#define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_HIT, 0, NULL) +#define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CB_HIT, 0, NULL) +#define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_MISSES, 0, NULL) +#define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_TIMEOUTS, 0, NULL) +#define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CACHE_FULL, 0, NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb)(struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb)(struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb)(struct ssl_st + *ssl, + const unsigned char + *data, + int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb)(SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +#ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +#endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb)(SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb)(SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +#ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +#define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +#endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *server, unsigned int server_len, + const unsigned char *client, + unsigned int client_len); + +#define OPENSSL_NPN_UNSUPPORTED 0 +#define OPENSSL_NPN_NEGOTIATED 1 +#define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +#ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +#define PSK_MAX_IDENTITY_LEN 256 +#define PSK_MAX_PSK_LEN 512 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +#endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +#define SSL_NOTHING 1 +#define SSL_WRITING 2 +#define SSL_READING 3 +#define SSL_X509_LOOKUP 4 +#define SSL_ASYNC_PAUSED 5 +#define SSL_ASYNC_NO_JOBS 6 +#define SSL_CLIENT_HELLO_CB 7 +#define SSL_RETRY_VERIFY 8 + +/* These will only be used when doing non-blocking IO */ +#define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +#define SSL_want_read(s) (SSL_want(s) == SSL_READING) +#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +#define SSL_want_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) +#define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +#define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +#define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +#define SSL_MAC_FLAG_READ_MAC_STREAM 1 +#define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 +#define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 +#define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +#include +#include +#include /* This is mostly sslv3 with a few tweaks */ +#include /* Datagram TLS */ +#include /* Support for the use_srtp extension */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) +#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) +#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) +#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) +#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) +#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) +#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) +#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_freefunc_type(freefunc)) +#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) +#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) +#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) +#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) + +/* clang-format on */ + +/* compatibility */ +#define SSL_set_app_data(s, arg) (SSL_set_ex_data(s, 0, (char *)(arg))) +#define SSL_get_app_data(s) (SSL_get_ex_data(s, 0)) +#define SSL_SESSION_set_app_data(s, a) (SSL_SESSION_set_ex_data(s, 0, \ + (char *)(a))) +#define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s, 0)) +#define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx, 0)) +#define SSL_CTX_set_app_data(ctx, arg) (SSL_CTX_set_ex_data(ctx, 0, \ + (char *)(arg))) +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); +#endif + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +#define SSL_ST_CONNECT 0x1000 +#define SSL_ST_ACCEPT 0x2000 + +#define SSL_ST_MASK 0x0FFF + +#define SSL_CB_LOOP 0x01 +#define SSL_CB_EXIT 0x02 +#define SSL_CB_READ 0x04 +#define SSL_CB_WRITE 0x08 +#define SSL_CB_ALERT 0x4000 /* used in callback */ +#define SSL_CB_READ_ALERT (SSL_CB_ALERT | SSL_CB_READ) +#define SSL_CB_WRITE_ALERT (SSL_CB_ALERT | SSL_CB_WRITE) +#define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT | SSL_CB_LOOP) +#define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT | SSL_CB_EXIT) +#define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT | SSL_CB_LOOP) +#define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT | SSL_CB_EXIT) +#define SSL_CB_HANDSHAKE_START 0x10 +#define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +#define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +#define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +#define SSL_ST_READ_HEADER 0xF0 +#define SSL_ST_READ_BODY 0xF1 +#define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +#define SSL_VERIFY_NONE 0x00 +#define SSL_VERIFY_PEER 0x01 +#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +#define SSL_VERIFY_CLIENT_ONCE 0x04 +#define SSL_VERIFY_POST_HANDSHAKE 0x08 + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OpenSSL_add_ssl_algorithms() SSL_library_init() +#define SSLeay_add_ssl_algorithms() SSL_library_init() +#endif + +/* More backward compatibility */ +#define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_cipher_bits(s, np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s), np) +#define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +#define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_time(a) SSL_SESSION_get_time(a) +#define SSL_set_time(a, b) SSL_SESSION_set_time((a), (b)) +#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +#define SSL_set_timeout(a, b) SSL_SESSION_set_timeout((a), (b)) + +#define d2i_SSL_SESSION_bio(bp, s_id) ASN1_d2i_bio_of(SSL_SESSION, SSL_SESSION_new, d2i_SSL_SESSION, bp, s_id) +#define i2d_SSL_SESSION_bio(bp, s_id) ASN1_i2d_bio_of(SSL_SESSION, i2d_SSL_SESSION, bp, s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +#define SSL_AD_REASON_OFFSET 1000 /* offset to get SSL_R_... value \ + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +#define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +#define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +#define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +#define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +#define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +#define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +#define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +#define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +#define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +#define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +#define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +#define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +#define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +#define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +#define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +#define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +#define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +#define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +#define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +#define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +#define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +#define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +#define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +#define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +#define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +#define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +#define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +#define SSL_ERROR_NONE 0 +#define SSL_ERROR_SSL 1 +#define SSL_ERROR_WANT_READ 2 +#define SSL_ERROR_WANT_WRITE 3 +#define SSL_ERROR_WANT_X509_LOOKUP 4 +#define SSL_ERROR_SYSCALL 5 /* look at error stack/return \ + * value/errno */ +#define SSL_ERROR_ZERO_RETURN 6 +#define SSL_ERROR_WANT_CONNECT 7 +#define SSL_ERROR_WANT_ACCEPT 8 +#define SSL_ERROR_WANT_ASYNC 9 +#define SSL_ERROR_WANT_ASYNC_JOB 10 +#define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +#define SSL_ERROR_WANT_RETRY_VERIFY 12 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TMP_DH 3 +#define SSL_CTRL_SET_TMP_ECDH 4 +#define SSL_CTRL_SET_TMP_DH_CB 6 +#endif + +#define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +#define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +#define SSL_CTRL_GET_FLAGS 13 +#define SSL_CTRL_EXTRA_CHAIN_CERT 14 +#define SSL_CTRL_SET_MSG_CALLBACK 15 +#define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +#define SSL_CTRL_SET_MTU 17 +/* Stats */ +#define SSL_CTRL_SESS_NUMBER 20 +#define SSL_CTRL_SESS_CONNECT 21 +#define SSL_CTRL_SESS_CONNECT_GOOD 22 +#define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +#define SSL_CTRL_SESS_ACCEPT 24 +#define SSL_CTRL_SESS_ACCEPT_GOOD 25 +#define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +#define SSL_CTRL_SESS_HIT 27 +#define SSL_CTRL_SESS_CB_HIT 28 +#define SSL_CTRL_SESS_MISSES 29 +#define SSL_CTRL_SESS_TIMEOUTS 30 +#define SSL_CTRL_SESS_CACHE_FULL 31 +#define SSL_CTRL_MODE 33 +#define SSL_CTRL_GET_READ_AHEAD 40 +#define SSL_CTRL_SET_READ_AHEAD 41 +#define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +#define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +#define SSL_CTRL_SET_SESS_CACHE_MODE 44 +#define SSL_CTRL_GET_SESS_CACHE_MODE 45 +#define SSL_CTRL_GET_MAX_CERT_LIST 50 +#define SSL_CTRL_SET_MAX_CERT_LIST 51 +#define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +#define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +#define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +#define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +#endif +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +#define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +#define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +#define SSL_CTRL_SET_SRP_ARG 78 +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +#define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +#define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +#define DTLS_CTRL_GET_TIMEOUT 73 +#define DTLS_CTRL_HANDLE_TIMEOUT 74 +#define SSL_CTRL_GET_RI_SUPPORT 76 +#define SSL_CTRL_CLEAR_MODE 78 +#define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +#define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +#define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +#define SSL_CTRL_CHAIN 88 +#define SSL_CTRL_CHAIN_CERT 89 +#define SSL_CTRL_GET_GROUPS 90 +#define SSL_CTRL_SET_GROUPS 91 +#define SSL_CTRL_SET_GROUPS_LIST 92 +#define SSL_CTRL_GET_SHARED_GROUP 93 +#define SSL_CTRL_SET_SIGALGS 97 +#define SSL_CTRL_SET_SIGALGS_LIST 98 +#define SSL_CTRL_CERT_FLAGS 99 +#define SSL_CTRL_CLEAR_CERT_FLAGS 100 +#define SSL_CTRL_SET_CLIENT_SIGALGS 101 +#define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +#define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +#define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +#define SSL_CTRL_BUILD_CERT_CHAIN 105 +#define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +#define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +#define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +#define SSL_CTRL_GET_PEER_TMP_KEY 109 +#define SSL_CTRL_GET_RAW_CIPHERLIST 110 +#define SSL_CTRL_GET_EC_POINT_FORMATS 111 +#define SSL_CTRL_GET_CHAIN_CERTS 115 +#define SSL_CTRL_SELECT_CURRENT_CERT 116 +#define SSL_CTRL_SET_CURRENT_CERT 117 +#define SSL_CTRL_SET_DH_AUTO 118 +#define DTLS_CTRL_SET_LINK_MTU 120 +#define DTLS_CTRL_GET_LINK_MIN_MTU 121 +#define SSL_CTRL_GET_EXTMS_SUPPORT 122 +#define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +#define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +#define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +#define SSL_CTRL_SET_MAX_PIPELINES 126 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +#define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +#define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +#define SSL_CTRL_GET_SIGNATURE_NID 132 +#define SSL_CTRL_GET_TMP_KEY 133 +#define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +#define SSL_CTRL_GET_IANA_GROUPS 135 +#define SSL_CTRL_SET_RETRY_VERIFY 136 +#define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +#define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +#define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +#define SSL_CTRL_GET_SIGNATURE_NAME 140 +#define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP_EX 142 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP_EX 143 +#define SSL_CERT_SET_FIRST 1 +#define SSL_CERT_SET_NEXT 2 +#define SSL_CERT_SET_SERVER 3 +#define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl, DTLS_CTRL_GET_TIMEOUT, 0, (void *)(arg)) +#define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl, DTLS_CTRL_HANDLE_TIMEOUT, 0, NULL) +#define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_TOTAL_RENEGOTIATIONS, 0, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_dh(ctx, dh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_set_tmp_dh(ssl, dh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_ecdh(ctx, ecdh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#define SSL_set_tmp_ecdh(ssl, ecdh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#endif +#define SSL_CTX_add_extra_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_get_extra_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 0, px509) +#define SSL_CTX_get_extra_chain_certs_only(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 1, px509) +#define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS, 0, NULL) +#define SSL_CTX_set0_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_CTX_set1_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_CTX_add0_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_add1_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_CTX_get0_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx, NULL) +#define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_CTX_select_current_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_CTX_set0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_set1_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_add0_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_add1_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_get0_chain_certs(s, px509) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s, NULL) +#define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_select_current_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_set_current_cert(s, op) \ + SSL_ctrl(s, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_set0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) + +#define SSL_get1_groups(s, glist) \ + SSL_ctrl(s, SSL_CTRL_GET_GROUPS, 0, (int *)(glist)) +#define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_IANA_GROUPS, 0, (uint16_t **)(plst)) +#define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS, glistlen, (int *)(glist)) +#define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(s)) +#define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) +#define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS, glistlen, (char *)(glist)) +#define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(str)) +#define SSL_get_shared_group(s, n) \ + SSL_ctrl(s, SSL_CTRL_GET_SHARED_GROUP, n, NULL) +#define SSL_get_negotiated_group(s) \ + SSL_ctrl(s, SSL_CTRL_GET_NEGOTIATED_GROUP, 0, NULL) +#define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +#define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, \ + (char *)(clist)) +#define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, (char *)(clist)) +#define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NID, 0, pn) +#define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NID, 0, pn) +#define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_TMP_KEY, 0, pk) +#define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_TMP_KEY, 0, pk) +#define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_RAW_CIPHERLIST, 0, plst) +#define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_EC_POINT_FORMATS, 0, plst) +#define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +#define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +const char *SSL_get0_group_name(SSL *s); +const char *SSL_group_to_name(SSL *s, int id); + +/* Backwards compatibility, original 1.1.0 names */ +#define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +#define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); +int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +#define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +#define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +#define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +#define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +#define SSL_get1_curves SSL_get1_groups +#define SSL_CTX_set1_curves SSL_CTX_set1_groups +#define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +#define SSL_set1_curves SSL_set1_groups +#define SSL_set1_curves_list SSL_set1_groups_list +#define SSL_get_shared_curve SSL_get_shared_group + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* Provide some compatibility macros for removed functionality. */ +#define SSL_CTX_need_tmp_RSA(ctx) 0 +#define SSL_CTX_set_tmp_rsa(ctx, rsa) 1 +#define SSL_need_tmp_RSA(ssl) 0 +#define SSL_set_tmp_rsa(ssl, rsa) 1 +#define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +#define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +#define SSL_CTX_set_tmp_rsa_callback(ctx, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#define SSL_set_tmp_rsa_callback(ssl, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, + const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +#ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +#endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb)(SSL *ssl, void *arg), void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, + const unsigned char *d, long len); +#endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +/* serverinfo file format versions */ +#define SSL_SERVERINFOV1 1 +#define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); +int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *uri); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, \ + NULL) +#endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +#ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +#endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); + +#ifdef OPENSSL_X509_H +__owur X509 *SSL_get0_peer_certificate(const SSL *s); +__owur X509 *SSL_get1_peer_certificate(const SSL *s); +/* Deprecated in 3.0.0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_get_peer_certificate SSL_get1_peer_certificate +#endif +#endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb)(X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb)(SSL *ssl, void *arg), + void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +#endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, const unsigned char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, const unsigned char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +#ifndef OPENSSL_NO_SRP +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb)(SSL *, int *, void *)); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); + +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); +#endif +#endif + +/* + * ClientHello callback and helpers. + */ + +#define SSL_CLIENT_HELLO_SUCCESS 1 +#define SSL_CLIENT_HELLO_ERROR 0 +#define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn)(SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +typedef int (*SSL_new_pending_conn_cb_fn)(SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +#ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); +__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); +__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); +__owur int SSL_set_async_callback_arg(SSL *s, void *arg); +__owur int SSL_get_async_status(SSL *s, int *status); + +#endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +#define SSL_READ_EARLY_DATA_ERROR 0 +#define SSL_READ_EARLY_DATA_SUCCESS 1 +#define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, + int flags); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +#define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + +#define SSL_EARLY_DATA_NOT_SENT 0 +#define SSL_EARLY_DATA_REJECTED 1 +#define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); + +/* This sets the 'default' SSL version that SSL_new() will create */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); +#endif + +#ifndef OPENSSL_NO_SSL3_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); +#endif +#endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +#ifndef OPENSSL_NO_TLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_2_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); +#endif +#endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_new_session_ticket(SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_library_init() OPENSSL_init_ssl(0, NULL) +#endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); +__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); +__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, + const char *CAfile, + const char *CApath); +#define SSL_get0_session SSL_get_session /* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +#define SSL_CTX_sess_set_cache_size(ctx, t) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_SIZE, t, NULL) +#define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_SIZE, 0, NULL) +#define SSL_CTX_set_session_cache_mode(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_MODE, m, NULL) +#define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_MODE, 0, NULL) + +#define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +#define SSL_CTX_set_default_read_ahead(ctx, m) SSL_CTX_set_read_ahead(ctx, m) +#define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_READ_AHEAD, 0, NULL) +#define SSL_CTX_set_read_ahead(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_READ_AHEAD, m, NULL) +#define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_CTX_set_max_cert_list(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) +#define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_set_max_cert_list(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) + +#define SSL_CTX_set_max_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_set_max_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_split_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_set_split_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_max_pipelines(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_max_pipelines(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_retry_verify(ssl) \ + (SSL_ctrl(ssl, SSL_CTRL_SET_RETRY_VERIFY, 0, NULL) > 0) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* NB: the |keylength| is only applicable when is_export is true */ +OSSL_DEPRECATEDIN_3_0 +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +OSSL_DEPRECATEDIN_3_0 +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +#endif +#endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_COMP_free_compression_methods() \ + while (0) \ + continue +#endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb)(SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb)(SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); + +int SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +#define SSL_ACCEPT_STREAM_UNI (1U << 1) +#define SSL_ACCEPT_STREAM_BIDI (1U << 2) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +#ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +#endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +#define SSL_VALUE_CLASS_GENERIC 0 +#define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +#define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +#define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +#define SSL_VALUE_NONE 0 +#define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +#define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +#define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +#define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +#define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +#define SSL_VALUE_EVENT_HANDLING_MODE 6 +#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +#define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +#define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +#define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +#define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +#define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +#define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +#define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +#define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +#define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +#define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +#define SSL_POLL_EVENT_NONE 0 + +#define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +#define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +#define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +#define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +#define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +#define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +#define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +#define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +#define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +#define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +#define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +#define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +#define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +#define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +#define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +#define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +#define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +#define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +#define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +#define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +#define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +#define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_cache_hit(s) SSL_session_reused(s) +#endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +#ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +#endif + +#ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +#endif + +#ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void)SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void)SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +#endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +#define SSL_SECOP_OTHER_TYPE 0xffff0000 +#define SSL_SECOP_OTHER_NONE 0 +#define SSL_SECOP_OTHER_CIPHER (1 << 16) +#define SSL_SECOP_OTHER_CURVE (2 << 16) +#define SSL_SECOP_OTHER_DH (3 << 16) +#define SSL_SECOP_OTHER_PKEY (4 << 16) +#define SSL_SECOP_OTHER_SIGALG (5 << 16) +#define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +#define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +#define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +#define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +#define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +#define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +#define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +#define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +#define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +#define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +#define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +#define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +#define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +#define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +#define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +#define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +#define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s))(const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx))(const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +#define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +#define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +#define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +#ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +#endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +#define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +#define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +#define SSL_TICKET_NONE 2 +/* Empty ticket present */ +#define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +#define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +#define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +#define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +/* store the default cipher strings inside the library */ +const char *OSSL_default_cipher_list(void); +const char *OSSL_default_ciphersuites(void); + +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +#define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +#define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +#define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +#define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl2.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl2.h new file mode 100644 index 0000000..67d1d02 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl2.h @@ -0,0 +1,30 @@ +/* + * 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_SSL2_H +#define OPENSSL_SSL2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL2_H +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL2_VERSION 0x0002 + +#define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl3.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl3.h new file mode 100644 index 0000000..f35b6ea --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ssl3.h @@ -0,0 +1,357 @@ +/* + * Copyright 1995-2025 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_SSL3_H +#define OPENSSL_SSL3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL3_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signalling cipher suite value from RFC 5746 + * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) + */ +#define SSL3_CK_SCSV 0x030000FF + +/* + * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 + * (TLS_FALLBACK_SCSV) + */ +#define SSL3_CK_FALLBACK_SCSV 0x03005600 + +#define SSL3_CK_RSA_NULL_MD5 0x03000001 +#define SSL3_CK_RSA_NULL_SHA 0x03000002 +#define SSL3_CK_RSA_RC4_40_MD5 0x03000003 +#define SSL3_CK_RSA_RC4_128_MD5 0x03000004 +#define SSL3_CK_RSA_RC4_128_SHA 0x03000005 +#define SSL3_CK_RSA_RC2_40_MD5 0x03000006 +#define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 +#define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 +#define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 +#define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A + +#define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B +#define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C +#define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D +#define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E +#define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F +#define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 + +#define SSL3_CK_DHE_DSS_DES_40_CBC_SHA 0x03000011 +#define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +#define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +#define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +#define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +#define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +#define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +#define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +#define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +#define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +#define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +#define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_RSA_DES_192_CBC3_SHA + +#define SSL3_CK_ADH_RC4_40_MD5 0x03000017 +#define SSL3_CK_ADH_RC4_128_MD5 0x03000018 +#define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 +#define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A +#define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +#define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +#define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +#define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +#define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +#define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +#define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +#define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" +#define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" +#define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" +#define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" +#define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" +#define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" +#define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" +#define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" +#define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" +#define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" + +#define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" +#define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" +#define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" +#define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" +#define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" +#define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" + +#define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" +#define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" +#define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" +#define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" +#define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" +#define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" + +/* + * This next block of six "EDH" labels is for backward compatibility with + * older versions of OpenSSL. New code should use the six "DHE" labels above + * instead: + */ +#define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" +#define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" +#define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" +#define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" +#define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" +#define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" + +#define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" +#define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" +#define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" +#define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" +#define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" + +#define SSL3_SSL_SESSION_ID_LENGTH 32 +#define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 + +#define SSL3_MASTER_SECRET_SIZE 48 +#define SSL3_RANDOM_SIZE 32 +#define SSL3_SESSION_ID_SIZE 32 +#define SSL3_RT_HEADER_LENGTH 5 + +#define SSL3_HM_HEADER_LENGTH 4 + +#ifndef SSL3_ALIGN_PAYLOAD +/* + * Some will argue that this increases memory footprint, but it's not + * actually true. Point is that malloc has to return at least 64-bit aligned + * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. + * Suggested pre-gaping simply moves these wasted bytes from the end of + * allocated region to its front, but makes data payload aligned, which + * improves performance:-) + */ +#define SSL3_ALIGN_PAYLOAD 8 +#else +#if (SSL3_ALIGN_PAYLOAD & (SSL3_ALIGN_PAYLOAD - 1)) != 0 +#error "insane SSL3_ALIGN_PAYLOAD" +#undef SSL3_ALIGN_PAYLOAD +#endif +#endif + +/* + * This is the maximum MAC (digest) size used by the SSL library. Currently + * maximum of 20 is used by SHA1, but we reserve for future extension for + * 512-bit hashes. + */ + +#define SSL3_RT_MAX_MD_SIZE 64 + +/* + * Maximum block size used in all ciphersuites. Currently 16 for AES. + */ + +#define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 + +#define SSL3_RT_MAX_EXTRA (16384) + +/* Maximum plaintext length: defined by SSL/TLS standards */ +#define SSL3_RT_MAX_PLAIN_LENGTH 16384 +/* Maximum compression overhead: defined by SSL/TLS standards */ +#define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 + +/* + * The standards give a maximum encryption overhead of 1024 bytes. In + * practice the value is lower than this. The overhead is the maximum number + * of padding bytes (256) plus the mac size. + */ +#define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) +#define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * OpenSSL currently only uses a padding length of at most one block so the + * send overhead is smaller. + */ + +#define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ + (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) + +/* If compression isn't used don't include the compression overhead */ + +#ifdef OPENSSL_NO_COMP +#define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH +#else +#define SSL3_RT_MAX_COMPRESSED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_COMPRESSED_OVERHEAD) +#endif +#define SSL3_RT_MAX_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_ENCRYPTED_OVERHEAD + SSL3_RT_MAX_COMPRESSED_LENGTH) +#define SSL3_RT_MAX_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +#define SSL3_RT_MAX_PACKET_SIZE \ + (SSL3_RT_MAX_ENCRYPTED_LENGTH + SSL3_RT_HEADER_LENGTH) + +#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" + +/* SSL3_VERSION is defined in prov_ssl.h */ +#define SSL3_VERSION_MAJOR 0x03 +#define SSL3_VERSION_MINOR 0x00 + +#define SSL3_RT_CHANGE_CIPHER_SPEC 20 +#define SSL3_RT_ALERT 21 +#define SSL3_RT_HANDSHAKE 22 +#define SSL3_RT_APPLICATION_DATA 23 + +/* Pseudo content types to indicate additional parameters */ +#define TLS1_RT_CRYPTO 0x1000 +#define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) +#define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) +#define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) +#define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) + +#define TLS1_RT_CRYPTO_READ 0x0000 +#define TLS1_RT_CRYPTO_WRITE 0x0100 +#define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) +#define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) +#define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) +#define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) + +/* Pseudo content types for SSL/TLS header info */ +#define SSL3_RT_HEADER 0x100 +#define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +/* Pseudo content types for QUIC */ +#define SSL3_RT_QUIC_DATAGRAM 0x200 +#define SSL3_RT_QUIC_PACKET 0x201 +#define SSL3_RT_QUIC_FRAME_FULL 0x202 +#define SSL3_RT_QUIC_FRAME_HEADER 0x203 +#define SSL3_RT_QUIC_FRAME_PADDING 0x204 + +#define SSL3_AL_WARNING 1 +#define SSL3_AL_FATAL 2 + +#define SSL3_AD_CLOSE_NOTIFY 0 +#define SSL3_AD_UNEXPECTED_MESSAGE 10 /* fatal */ +#define SSL3_AD_BAD_RECORD_MAC 20 /* fatal */ +#define SSL3_AD_DECOMPRESSION_FAILURE 30 /* fatal */ +#define SSL3_AD_HANDSHAKE_FAILURE 40 /* fatal */ +#define SSL3_AD_NO_CERTIFICATE 41 +#define SSL3_AD_BAD_CERTIFICATE 42 +#define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 +#define SSL3_AD_CERTIFICATE_REVOKED 44 +#define SSL3_AD_CERTIFICATE_EXPIRED 45 +#define SSL3_AD_CERTIFICATE_UNKNOWN 46 +#define SSL3_AD_ILLEGAL_PARAMETER 47 /* fatal */ + +#define TLS1_HB_REQUEST 1 +#define TLS1_HB_RESPONSE 2 + +#define SSL3_CT_RSA_SIGN 1 +#define SSL3_CT_DSS_SIGN 2 +#define SSL3_CT_RSA_FIXED_DH 3 +#define SSL3_CT_DSS_FIXED_DH 4 +#define SSL3_CT_RSA_EPHEMERAL_DH 5 +#define SSL3_CT_DSS_EPHEMERAL_DH 6 +#define SSL3_CT_FORTEZZA_DMS 20 +/* + * SSL3_CT_NUMBER is used to size arrays and it must be large enough to + * contain all of the cert types defined for *either* SSLv3 and TLSv1. + */ +#define SSL3_CT_NUMBER 12 + +#if defined(TLS_CT_NUMBER) +#if TLS_CT_NUMBER != SSL3_CT_NUMBER +#error "SSL/TLS CT_NUMBER values do not match" +#endif +#endif + +/* No longer used as of OpenSSL 1.1.1 */ +#define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +#define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +#define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +#define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +#define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +#define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +#define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +#define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +#define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +/* 0x2000 is reserved for TLS1_FLAGS_QUIC (internal) */ +/* 0x4000 is reserved for TLS1_FLAGS_QUIC_INTERNAL (internal) */ + +#define SSL3_MT_HELLO_REQUEST 0 +#define SSL3_MT_CLIENT_HELLO 1 +#define SSL3_MT_SERVER_HELLO 2 +#define SSL3_MT_NEWSESSION_TICKET 4 +#define SSL3_MT_END_OF_EARLY_DATA 5 +#define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +#define SSL3_MT_CERTIFICATE 11 +#define SSL3_MT_SERVER_KEY_EXCHANGE 12 +#define SSL3_MT_CERTIFICATE_REQUEST 13 +#define SSL3_MT_SERVER_DONE 14 +#define SSL3_MT_CERTIFICATE_VERIFY 15 +#define SSL3_MT_CLIENT_KEY_EXCHANGE 16 +#define SSL3_MT_FINISHED 20 +#define SSL3_MT_CERTIFICATE_URL 21 +#define SSL3_MT_CERTIFICATE_STATUS 22 +#define SSL3_MT_SUPPLEMENTAL_DATA 23 +#define SSL3_MT_KEY_UPDATE 24 +#define SSL3_MT_COMPRESSED_CERTIFICATE 25 +#ifndef OPENSSL_NO_NEXTPROTONEG +#define SSL3_MT_NEXT_PROTO 67 +#endif +#define SSL3_MT_MESSAGE_HASH 254 +#define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +#define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +#define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +#define SSL3_CC_READ 0x001 +#define SSL3_CC_WRITE 0x002 +#define SSL3_CC_CLIENT 0x010 +#define SSL3_CC_SERVER 0x020 +#define SSL3_CC_EARLY 0x040 +#define SSL3_CC_HANDSHAKE 0x080 +#define SSL3_CC_APPLICATION 0x100 +#define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT | SSL3_CC_WRITE) +#define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER | SSL3_CC_READ) +#define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT | SSL3_CC_READ) +#define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER | SSL3_CC_WRITE) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sslerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sslerr.h new file mode 100644 index 0000000..6993255 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sslerr.h @@ -0,0 +1,380 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_SSLERR_H +#define OPENSSL_SSLERR_H +#pragma once + +#include +#include +#include + +/* + * SSL reason codes. + */ +#define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +#define SSL_R_APP_DATA_IN_HANDSHAKE 100 +#define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +#define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +#define SSL_R_BAD_CERTIFICATE 348 +#define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +#define SSL_R_BAD_CIPHER 186 +#define SSL_R_BAD_COMPRESSION_ALGORITHM 326 +#define SSL_R_BAD_DATA 390 +#define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +#define SSL_R_BAD_DECOMPRESSION 107 +#define SSL_R_BAD_DH_VALUE 102 +#define SSL_R_BAD_DIGEST_LENGTH 111 +#define SSL_R_BAD_EARLY_DATA 233 +#define SSL_R_BAD_ECC_CERT 304 +#define SSL_R_BAD_ECPOINT 306 +#define SSL_R_BAD_EXTENSION 110 +#define SSL_R_BAD_HANDSHAKE_LENGTH 332 +#define SSL_R_BAD_HANDSHAKE_STATE 236 +#define SSL_R_BAD_HELLO_REQUEST 105 +#define SSL_R_BAD_HRR_VERSION 263 +#define SSL_R_BAD_KEY_SHARE 108 +#define SSL_R_BAD_KEY_UPDATE 122 +#define SSL_R_BAD_LEGACY_VERSION 292 +#define SSL_R_BAD_LENGTH 271 +#define SSL_R_BAD_PACKET 240 +#define SSL_R_BAD_PACKET_LENGTH 115 +#define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +#define SSL_R_BAD_PSK 219 +#define SSL_R_BAD_PSK_IDENTITY 114 +#define SSL_R_BAD_RECORD_TYPE 443 +#define SSL_R_BAD_RSA_ENCRYPT 119 +#define SSL_R_BAD_SIGNATURE 123 +#define SSL_R_BAD_SRP_A_LENGTH 347 +#define SSL_R_BAD_SRP_PARAMETERS 371 +#define SSL_R_BAD_SRTP_MKI_VALUE 352 +#define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +#define SSL_R_BAD_SSL_FILETYPE 124 +#define SSL_R_BAD_VALUE 384 +#define SSL_R_BAD_WRITE_RETRY 127 +#define SSL_R_BINDER_DOES_NOT_VERIFY 253 +#define SSL_R_BIO_NOT_SET 128 +#define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +#define SSL_R_BN_LIB 130 +#define SSL_R_CALLBACK_FAILED 234 +#define SSL_R_CANNOT_CHANGE_CIPHER 109 +#define SSL_R_CANNOT_GET_GROUP_NAME 299 +#define SSL_R_CA_DN_LENGTH_MISMATCH 131 +#define SSL_R_CA_KEY_TOO_SMALL 397 +#define SSL_R_CA_MD_TOO_WEAK 398 +#define SSL_R_CCS_RECEIVED_EARLY 133 +#define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +#define SSL_R_CERT_CB_ERROR 377 +#define SSL_R_CERT_LENGTH_MISMATCH 135 +#define SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +#define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +#define SSL_R_CLIENTHELLO_TLSEXT 226 +#define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +#define SSL_R_COMPRESSION_DISABLED 343 +#define SSL_R_COMPRESSION_FAILURE 141 +#define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +#define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +#define SSL_R_CONNECTION_TYPE_NOT_SET 144 +#define SSL_R_CONN_USE_ONLY 356 +#define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 +#define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +#define SSL_R_COOKIE_MISMATCH 308 +#define SSL_R_COPY_PARAMETERS_FAILED 296 +#define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +#define SSL_R_DANE_ALREADY_ENABLED 172 +#define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +#define SSL_R_DANE_NOT_ENABLED 175 +#define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +#define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +#define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +#define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +#define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +#define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +#define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +#define SSL_R_DANE_TLSA_NULL_DATA 203 +#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +#define SSL_R_DATA_LENGTH_TOO_LONG 146 +#define SSL_R_DECRYPTION_FAILED 147 +#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +#define SSL_R_DH_KEY_TOO_SMALL 394 +#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +#define SSL_R_DIGEST_CHECK_FAILED 149 +#define SSL_R_DOMAIN_USE_ONLY 422 +#define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +#define SSL_R_DUPLICATE_COMPRESSION_ID 309 +#define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +#define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +#define SSL_R_EE_KEY_TOO_SMALL 399 +#define SSL_R_EMPTY_RAW_PUBLIC_KEY 349 +#define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +#define SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG 419 +#define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +#define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +#define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +#define SSL_R_EXTENSION_NOT_RECEIVED 279 +#define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +#define SSL_R_EXT_LENGTH_MISMATCH 163 +#define SSL_R_FAILED_TO_GET_PARAMETER 316 +#define SSL_R_FAILED_TO_INIT_ASYNC 405 +#define SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE 417 +#define SSL_R_FEATURE_NOT_RENEGOTIABLE 413 +#define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +#define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +#define SSL_R_HTTPS_PROXY_REQUEST 155 +#define SSL_R_HTTP_REQUEST 156 +#define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +#define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +#define SSL_R_INAPPROPRIATE_FALLBACK 373 +#define SSL_R_INCONSISTENT_COMPRESSION 340 +#define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +#define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +#define SSL_R_INCONSISTENT_EXTMS 104 +#define SSL_R_INSUFFICIENT_SECURITY 241 +#define SSL_R_INVALID_ALERT 205 +#define SSL_R_INVALID_CCS_MESSAGE 260 +#define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +#define SSL_R_INVALID_COMMAND 280 +#define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +#define SSL_R_INVALID_CONFIG 283 +#define SSL_R_INVALID_CONFIGURATION_NAME 113 +#define SSL_R_INVALID_CONTEXT 282 +#define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +#define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +#define SSL_R_INVALID_MAX_EARLY_DATA 174 +#define SSL_R_INVALID_NULL_CMD_NAME 385 +#define SSL_R_INVALID_RAW_PUBLIC_KEY 350 +#define SSL_R_INVALID_RECORD 317 +#define SSL_R_INVALID_SEQUENCE_NUMBER 402 +#define SSL_R_INVALID_SERVERINFO_DATA 388 +#define SSL_R_INVALID_SESSION_ID 999 +#define SSL_R_INVALID_SRP_USERNAME 357 +#define SSL_R_INVALID_STATUS_RESPONSE 328 +#define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +#define SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED 333 +#define SSL_R_LENGTH_MISMATCH 159 +#define SSL_R_LENGTH_TOO_LONG 404 +#define SSL_R_LENGTH_TOO_SHORT 160 +#define SSL_R_LIBRARY_BUG 274 +#define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +#define SSL_R_LISTENER_USE_ONLY 421 +#define SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED 395 +#define SSL_R_MISSING_DSA_SIGNING_CERT 165 +#define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +#define SSL_R_MISSING_FATAL 256 +#define SSL_R_MISSING_PARAMETERS 290 +#define SSL_R_MISSING_PSK_KEX_MODES_EXTENSION 310 +#define SSL_R_MISSING_QUIC_TLS_FUNCTIONS 423 +#define SSL_R_MISSING_RSA_CERTIFICATE 168 +#define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +#define SSL_R_MISSING_RSA_SIGNING_CERT 170 +#define SSL_R_MISSING_SIGALGS_EXTENSION 112 +#define SSL_R_MISSING_SIGNING_CERT 221 +#define SSL_R_MISSING_SRP_PARAM 358 +#define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +#define SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION 420 +#define SSL_R_MISSING_TMP_DH_KEY 171 +#define SSL_R_MISSING_TMP_ECDH_KEY 311 +#define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +#define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +#define SSL_R_NOT_REPLACING_CERTIFICATE 289 +#define SSL_R_NOT_SERVER 284 +#define SSL_R_NO_APPLICATION_PROTOCOL 235 +#define SSL_R_NO_CERTIFICATES_RETURNED 176 +#define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +#define SSL_R_NO_CERTIFICATE_SET 179 +#define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +#define SSL_R_NO_CIPHERS_AVAILABLE 181 +#define SSL_R_NO_CIPHERS_SPECIFIED 183 +#define SSL_R_NO_CIPHER_MATCH 185 +#define SSL_R_NO_CLIENT_CERT_METHOD 331 +#define SSL_R_NO_COMPRESSION_SPECIFIED 187 +#define SSL_R_NO_COOKIE_CALLBACK_SET 287 +#define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +#define SSL_R_NO_METHOD_SPECIFIED 188 +#define SSL_R_NO_PEM_EXTENSIONS 389 +#define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +#define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +#define SSL_R_NO_RENEGOTIATION 339 +#define SSL_R_NO_REQUIRED_DIGEST 324 +#define SSL_R_NO_SHARED_CIPHER 193 +#define SSL_R_NO_SHARED_GROUPS 410 +#define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +#define SSL_R_NO_SRTP_PROFILES 359 +#define SSL_R_NO_STREAM 355 +#define SSL_R_NO_SUITABLE_DIGEST_ALGORITHM 297 +#define SSL_R_NO_SUITABLE_GROUPS 295 +#define SSL_R_NO_SUITABLE_KEY_SHARE 101 +#define SSL_R_NO_SUITABLE_RECORD_LAYER 322 +#define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +#define SSL_R_NO_VALID_SCTS 216 +#define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +#define SSL_R_NULL_SSL_CTX 195 +#define SSL_R_NULL_SSL_METHOD_PASSED 196 +#define SSL_R_OCSP_CALLBACK_FAILURE 305 +#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +#define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +#define SSL_R_OVERFLOW_ERROR 237 +#define SSL_R_PACKET_LENGTH_TOO_LONG 198 +#define SSL_R_PARSE_TLSEXT 227 +#define SSL_R_PATH_TOO_LONG 270 +#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +#define SSL_R_PEM_NAME_BAD_PREFIX 391 +#define SSL_R_PEM_NAME_TOO_SHORT 392 +#define SSL_R_PIPELINE_FAILURE 406 +#define SSL_R_POLL_REQUEST_NOT_SUPPORTED 418 +#define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +#define SSL_R_PRIVATE_KEY_MISMATCH 288 +#define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +#define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +#define SSL_R_PSK_NO_CLIENT_CB 224 +#define SSL_R_PSK_NO_SERVER_CB 225 +#define SSL_R_QUIC_HANDSHAKE_LAYER_ERROR 393 +#define SSL_R_QUIC_NETWORK_ERROR 387 +#define SSL_R_QUIC_PROTOCOL_ERROR 382 +#define SSL_R_READ_BIO_NOT_SET 211 +#define SSL_R_READ_TIMEOUT_EXPIRED 312 +#define SSL_R_RECORDS_NOT_RELEASED 321 +#define SSL_R_RECORD_LAYER_FAILURE 313 +#define SSL_R_RECORD_LENGTH_MISMATCH 213 +#define SSL_R_RECORD_TOO_SMALL 298 +#define SSL_R_REMOTE_PEER_ADDRESS_NOT_SET 346 +#define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +#define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +#define SSL_R_RENEGOTIATION_MISMATCH 337 +#define SSL_R_REQUEST_PENDING 285 +#define SSL_R_REQUEST_SENT 286 +#define SSL_R_REQUIRED_CIPHER_MISSING 215 +#define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +#define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +#define SSL_R_SCT_VERIFICATION_FAILED 208 +#define SSL_R_SEQUENCE_CTR_WRAPPED 327 +#define SSL_R_SERVERHELLO_TLSEXT 275 +#define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +#define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +#define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +#define SSL_R_SRP_A_CALC 361 +#define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +#define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +#define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +#define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +#define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +#define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +#define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +#define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +#define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +#define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +#define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +#define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +#define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +#define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +#define SSL_R_SSL_COMMAND_SECTION_EMPTY 117 +#define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +#define SSL_R_SSL_HANDSHAKE_FAILURE 229 +#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +#define SSL_R_SSL_NEGATIVE_LENGTH 372 +#define SSL_R_SSL_SECTION_EMPTY 126 +#define SSL_R_SSL_SECTION_NOT_FOUND 136 +#define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +#define SSL_R_SSL_SESSION_ID_CONFLICT 302 +#define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +#define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +#define SSL_R_SSL_SESSION_ID_TOO_LONG 408 +#define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +#define SSL_R_STILL_IN_INIT 121 +#define SSL_R_STREAM_COUNT_LIMITED 411 +#define SSL_R_STREAM_FINISHED 365 +#define SSL_R_STREAM_RECV_ONLY 366 +#define SSL_R_STREAM_RESET 375 +#define SSL_R_STREAM_SEND_ONLY 379 +#define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +#define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +#define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +#define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +#define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +#define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +#define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +#define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +#define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +#define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +#define SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL 1120 +#define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +#define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +#define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +#define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +#define SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY 1115 +#define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +#define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +#define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +#define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +#define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +#define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +#define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +#define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +#define SSL_R_TOO_MANY_KEY_UPDATES 132 +#define SSL_R_TOO_MANY_WARN_ALERTS 409 +#define SSL_R_TOO_MUCH_EARLY_DATA 164 +#define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +#define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +#define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +#define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +#define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +#define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +#define SSL_R_UNEXPECTED_EOF_WHILE_READING 294 +#define SSL_R_UNEXPECTED_MESSAGE 244 +#define SSL_R_UNEXPECTED_RECORD 245 +#define SSL_R_UNINITIALIZED 276 +#define SSL_R_UNKNOWN_ALERT_TYPE 246 +#define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +#define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +#define SSL_R_UNKNOWN_CIPHER_TYPE 249 +#define SSL_R_UNKNOWN_CMD_NAME 386 +#define SSL_R_UNKNOWN_COMMAND 139 +#define SSL_R_UNKNOWN_DIGEST 368 +#define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +#define SSL_R_UNKNOWN_MANDATORY_PARAMETER 323 +#define SSL_R_UNKNOWN_PKEY_TYPE 251 +#define SSL_R_UNKNOWN_PROTOCOL 252 +#define SSL_R_UNKNOWN_SSL_VERSION 254 +#define SSL_R_UNKNOWN_STATE 255 +#define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +#define SSL_R_UNSOLICITED_EXTENSION 217 +#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE 414 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS 415 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE_OP 416 +#define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +#define SSL_R_UNSUPPORTED_PROTOCOL 258 +#define SSL_R_UNSUPPORTED_SSL_VERSION 259 +#define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +#define SSL_R_UNSUPPORTED_WRITE_FLAG 412 +#define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +#define SSL_R_VERSION_TOO_HIGH 166 +#define SSL_R_VERSION_TOO_LOW 396 +#define SSL_R_WRONG_CERTIFICATE_TYPE 383 +#define SSL_R_WRONG_CIPHER_RETURNED 261 +#define SSL_R_WRONG_CURVE 378 +#define SSL_R_WRONG_RPK_TYPE 351 +#define SSL_R_WRONG_SIGNATURE_LENGTH 264 +#define SSL_R_WRONG_SIGNATURE_SIZE 265 +#define SSL_R_WRONG_SIGNATURE_TYPE 370 +#define SSL_R_WRONG_SSL_VERSION 266 +#define SSL_R_WRONG_VERSION_NUMBER 267 +#define SSL_R_X509_LIB 268 +#define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sslerr_legacy.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sslerr_legacy.h new file mode 100644 index 0000000..8cf1ebd --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/sslerr_legacy.h @@ -0,0 +1,467 @@ +/* + * Copyright 2020-2024 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 header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public sslerr.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_SSLERR_LEGACY_H +#define OPENSSL_SSLERR_LEGACY_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_SSL_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * SSL function codes. + */ +#define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 0 +#define SSL_F_ADD_KEY_SHARE 0 +#define SSL_F_BYTES_TO_CIPHER_LIST 0 +#define SSL_F_CHECK_SUITEB_CIPHER_LIST 0 +#define SSL_F_CIPHERSUITE_CB 0 +#define SSL_F_CONSTRUCT_CA_NAMES 0 +#define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 0 +#define SSL_F_CONSTRUCT_STATEFUL_TICKET 0 +#define SSL_F_CONSTRUCT_STATELESS_TICKET 0 +#define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 0 +#define SSL_F_CREATE_TICKET_PREQUEL 0 +#define SSL_F_CT_MOVE_SCTS 0 +#define SSL_F_CT_STRICT 0 +#define SSL_F_CUSTOM_EXT_ADD 0 +#define SSL_F_CUSTOM_EXT_PARSE 0 +#define SSL_F_D2I_SSL_SESSION 0 +#define SSL_F_DANE_CTX_ENABLE 0 +#define SSL_F_DANE_MTYPE_SET 0 +#define SSL_F_DANE_TLSA_ADD 0 +#define SSL_F_DERIVE_SECRET_KEY_AND_IV 0 +#define SSL_F_DO_DTLS1_WRITE 0 +#define SSL_F_DO_SSL3_WRITE 0 +#define SSL_F_DTLS1_BUFFER_RECORD 0 +#define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 0 +#define SSL_F_DTLS1_HEARTBEAT 0 +#define SSL_F_DTLS1_HM_FRAGMENT_NEW 0 +#define SSL_F_DTLS1_PREPROCESS_FRAGMENT 0 +#define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 0 +#define SSL_F_DTLS1_PROCESS_RECORD 0 +#define SSL_F_DTLS1_READ_BYTES 0 +#define SSL_F_DTLS1_READ_FAILED 0 +#define SSL_F_DTLS1_RETRANSMIT_MESSAGE 0 +#define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 0 +#define SSL_F_DTLS1_WRITE_BYTES 0 +#define SSL_F_DTLSV1_LISTEN 0 +#define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +#define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 0 +#define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 0 +#define SSL_F_DTLS_PROCESS_HELLO_VERIFY 0 +#define SSL_F_DTLS_RECORD_LAYER_NEW 0 +#define SSL_F_DTLS_WAIT_FOR_DRY 0 +#define SSL_F_EARLY_DATA_COUNT_OK 0 +#define SSL_F_FINAL_EARLY_DATA 0 +#define SSL_F_FINAL_EC_PT_FORMATS 0 +#define SSL_F_FINAL_EMS 0 +#define SSL_F_FINAL_KEY_SHARE 0 +#define SSL_F_FINAL_MAXFRAGMENTLEN 0 +#define SSL_F_FINAL_RENEGOTIATE 0 +#define SSL_F_FINAL_SERVER_NAME 0 +#define SSL_F_FINAL_SIG_ALGS 0 +#define SSL_F_GET_CERT_VERIFY_TBS_DATA 0 +#define SSL_F_NSS_KEYLOG_INT 0 +#define SSL_F_OPENSSL_INIT_SSL 0 +#define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_POST_WORK 0 +#define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 0 +#define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 0 +#define SSL_F_PARSE_CA_NAMES 0 +#define SSL_F_PITEM_NEW 0 +#define SSL_F_PQUEUE_NEW 0 +#define SSL_F_PROCESS_KEY_SHARE_EXT 0 +#define SSL_F_READ_STATE_MACHINE 0 +#define SSL_F_SET_CLIENT_CIPHERSUITE 0 +#define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 0 +#define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 0 +#define SSL_F_SRP_VERIFY_SERVER_PARAM 0 +#define SSL_F_SSL3_CHANGE_CIPHER_STATE 0 +#define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 0 +#define SSL_F_SSL3_CTRL 0 +#define SSL_F_SSL3_CTX_CTRL 0 +#define SSL_F_SSL3_DIGEST_CACHED_RECORDS 0 +#define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 0 +#define SSL_F_SSL3_ENC 0 +#define SSL_F_SSL3_FINAL_FINISH_MAC 0 +#define SSL_F_SSL3_FINISH_MAC 0 +#define SSL_F_SSL3_GENERATE_KEY_BLOCK 0 +#define SSL_F_SSL3_GENERATE_MASTER_SECRET 0 +#define SSL_F_SSL3_GET_RECORD 0 +#define SSL_F_SSL3_INIT_FINISHED_MAC 0 +#define SSL_F_SSL3_OUTPUT_CERT_CHAIN 0 +#define SSL_F_SSL3_READ_BYTES 0 +#define SSL_F_SSL3_READ_N 0 +#define SSL_F_SSL3_SETUP_KEY_BLOCK 0 +#define SSL_F_SSL3_SETUP_READ_BUFFER 0 +#define SSL_F_SSL3_SETUP_WRITE_BUFFER 0 +#define SSL_F_SSL3_WRITE_BYTES 0 +#define SSL_F_SSL3_WRITE_PENDING 0 +#define SSL_F_SSL_ADD_CERT_CHAIN 0 +#define SSL_F_SSL_ADD_CERT_TO_BUF 0 +#define SSL_F_SSL_ADD_CERT_TO_WPACKET 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 0 +#define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 0 +#define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_BUILD_CERT_CHAIN 0 +#define SSL_F_SSL_BYTES_TO_CIPHER_LIST 0 +#define SSL_F_SSL_CACHE_CIPHERLIST 0 +#define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 0 +#define SSL_F_SSL_CERT_DUP 0 +#define SSL_F_SSL_CERT_NEW 0 +#define SSL_F_SSL_CERT_SET0_CHAIN 0 +#define SSL_F_SSL_CHECK_PRIVATE_KEY 0 +#define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 0 +#define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 0 +#define SSL_F_SSL_CHOOSE_CLIENT_VERSION 0 +#define SSL_F_SSL_CIPHER_DESCRIPTION 0 +#define SSL_F_SSL_CIPHER_LIST_TO_BYTES 0 +#define SSL_F_SSL_CIPHER_PROCESS_RULESTR 0 +#define SSL_F_SSL_CIPHER_STRENGTH_SORT 0 +#define SSL_F_SSL_CLEAR 0 +#define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 0 +#define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 0 +#define SSL_F_SSL_CONF_CMD 0 +#define SSL_F_SSL_CREATE_CIPHER_LIST 0 +#define SSL_F_SSL_CTRL 0 +#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 0 +#define SSL_F_SSL_CTX_ENABLE_CT 0 +#define SSL_F_SSL_CTX_MAKE_PROFILES 0 +#define SSL_F_SSL_CTX_NEW 0 +#define SSL_F_SSL_CTX_SET_ALPN_PROTOS 0 +#define SSL_F_SSL_CTX_SET_CIPHER_LIST 0 +#define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 0 +#define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 0 +#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 0 +#define SSL_F_SSL_CTX_SET_SSL_VERSION 0 +#define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 0 +#define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO_EX 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 0 +#define SSL_F_SSL_DANE_DUP 0 +#define SSL_F_SSL_DANE_ENABLE 0 +#define SSL_F_SSL_DERIVE 0 +#define SSL_F_SSL_DO_CONFIG 0 +#define SSL_F_SSL_DO_HANDSHAKE 0 +#define SSL_F_SSL_DUP_CA_LIST 0 +#define SSL_F_SSL_ENABLE_CT 0 +#define SSL_F_SSL_GENERATE_PKEY_GROUP 0 +#define SSL_F_SSL_GENERATE_SESSION_ID 0 +#define SSL_F_SSL_GET_NEW_SESSION 0 +#define SSL_F_SSL_GET_PREV_SESSION 0 +#define SSL_F_SSL_GET_SERVER_CERT_INDEX 0 +#define SSL_F_SSL_GET_SIGN_PKEY 0 +#define SSL_F_SSL_HANDSHAKE_HASH 0 +#define SSL_F_SSL_INIT_WBIO_BUFFER 0 +#define SSL_F_SSL_KEY_UPDATE 0 +#define SSL_F_SSL_LOAD_CLIENT_CA_FILE 0 +#define SSL_F_SSL_LOG_MASTER_SECRET 0 +#define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_SSL_MODULE_INIT 0 +#define SSL_F_SSL_NEW 0 +#define SSL_F_SSL_NEXT_PROTO_VALIDATE 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_PEEK 0 +#define SSL_F_SSL_PEEK_EX 0 +#define SSL_F_SSL_PEEK_INTERNAL 0 +#define SSL_F_SSL_READ 0 +#define SSL_F_SSL_READ_EARLY_DATA 0 +#define SSL_F_SSL_READ_EX 0 +#define SSL_F_SSL_READ_INTERNAL 0 +#define SSL_F_SSL_RENEGOTIATE 0 +#define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 0 +#define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_SESSION_DUP 0 +#define SSL_F_SSL_SESSION_NEW 0 +#define SSL_F_SSL_SESSION_PRINT_FP 0 +#define SSL_F_SSL_SESSION_SET1_ID 0 +#define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 0 +#define SSL_F_SSL_SET_ALPN_PROTOS 0 +#define SSL_F_SSL_SET_CERT 0 +#define SSL_F_SSL_SET_CERT_AND_KEY 0 +#define SSL_F_SSL_SET_CIPHER_LIST 0 +#define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 0 +#define SSL_F_SSL_SET_FD 0 +#define SSL_F_SSL_SET_PKEY 0 +#define SSL_F_SSL_SET_RFD 0 +#define SSL_F_SSL_SET_SESSION 0 +#define SSL_F_SSL_SET_SESSION_ID_CONTEXT 0 +#define SSL_F_SSL_SET_SESSION_TICKET_EXT 0 +#define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +#define SSL_F_SSL_SET_WFD 0 +#define SSL_F_SSL_SHUTDOWN 0 +#define SSL_F_SSL_SRP_CTX_INIT 0 +#define SSL_F_SSL_START_ASYNC_JOB 0 +#define SSL_F_SSL_UNDEFINED_FUNCTION 0 +#define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 0 +#define SSL_F_SSL_USE_CERTIFICATE 0 +#define SSL_F_SSL_USE_CERTIFICATE_ASN1 0 +#define SSL_F_SSL_USE_CERTIFICATE_FILE 0 +#define SSL_F_SSL_USE_PRIVATEKEY 0 +#define SSL_F_SSL_USE_PRIVATEKEY_ASN1 0 +#define SSL_F_SSL_USE_PRIVATEKEY_FILE 0 +#define SSL_F_SSL_USE_PSK_IDENTITY_HINT 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 0 +#define SSL_F_SSL_VALIDATE_CT 0 +#define SSL_F_SSL_VERIFY_CERT_CHAIN 0 +#define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 0 +#define SSL_F_SSL_WRITE 0 +#define SSL_F_SSL_WRITE_EARLY_DATA 0 +#define SSL_F_SSL_WRITE_EARLY_FINISH 0 +#define SSL_F_SSL_WRITE_EX 0 +#define SSL_F_SSL_WRITE_INTERNAL 0 +#define SSL_F_STATE_MACHINE 0 +#define SSL_F_TLS12_CHECK_PEER_SIGALG 0 +#define SSL_F_TLS12_COPY_SIGALGS 0 +#define SSL_F_TLS13_CHANGE_CIPHER_STATE 0 +#define SSL_F_TLS13_ENC 0 +#define SSL_F_TLS13_FINAL_FINISH_MAC 0 +#define SSL_F_TLS13_GENERATE_SECRET 0 +#define SSL_F_TLS13_HKDF_EXPAND 0 +#define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 0 +#define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 0 +#define SSL_F_TLS13_SETUP_KEY_BLOCK 0 +#define SSL_F_TLS1_CHANGE_CIPHER_STATE 0 +#define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 0 +#define SSL_F_TLS1_ENC 0 +#define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 0 +#define SSL_F_TLS1_GET_CURVELIST 0 +#define SSL_F_TLS1_PRF 0 +#define SSL_F_TLS1_SAVE_U16 0 +#define SSL_F_TLS1_SETUP_KEY_BLOCK 0 +#define SSL_F_TLS1_SET_GROUPS 0 +#define SSL_F_TLS1_SET_RAW_SIGALGS 0 +#define SSL_F_TLS1_SET_SERVER_SIGALGS 0 +#define SSL_F_TLS1_SET_SHARED_SIGALGS 0 +#define SSL_F_TLS1_SET_SIGALGS 0 +#define SSL_F_TLS_CHOOSE_SIGALG 0 +#define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 0 +#define SSL_F_TLS_COLLECT_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 0 +#define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_CERT_STATUS 0 +#define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 0 +#define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +#define SSL_F_TLS_CONSTRUCT_CKE_DHE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_GOST 0 +#define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_RSA 0 +#define SSL_F_TLS_CONSTRUCT_CKE_SRP 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EMS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_ETM 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_NPN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PSK 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SCT 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SRP 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_FINISHED 0 +#define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 0 +#define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_ALPN 0 +#define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 0 +#define SSL_F_TLS_CONSTRUCT_STOC_DONE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EMS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_ETM 0 +#define SSL_F_TLS_CONSTRUCT_STOC_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 0 +#define SSL_F_TLS_CONSTRUCT_STOC_PSK 0 +#define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 0 +#define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_FINISH_HANDSHAKE 0 +#define SSL_F_TLS_GET_MESSAGE_BODY 0 +#define SSL_F_TLS_GET_MESSAGE_HEADER 0 +#define SSL_F_TLS_HANDLE_ALPN 0 +#define SSL_F_TLS_HANDLE_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 0 +#define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 0 +#define SSL_F_TLS_PARSE_CTOS_ALPN 0 +#define SSL_F_TLS_PARSE_CTOS_COOKIE 0 +#define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 0 +#define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 0 +#define SSL_F_TLS_PARSE_CTOS_EMS 0 +#define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 0 +#define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 0 +#define SSL_F_TLS_PARSE_CTOS_PSK 0 +#define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 0 +#define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 0 +#define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 0 +#define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 0 +#define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 0 +#define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 0 +#define SSL_F_TLS_PARSE_CTOS_SRP 0 +#define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_PARSE_CTOS_USE_SRTP 0 +#define SSL_F_TLS_PARSE_STOC_ALPN 0 +#define SSL_F_TLS_PARSE_STOC_COOKIE 0 +#define SSL_F_TLS_PARSE_STOC_EARLY_DATA 0 +#define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 0 +#define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 0 +#define SSL_F_TLS_PARSE_STOC_KEY_SHARE 0 +#define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_PARSE_STOC_NPN 0 +#define SSL_F_TLS_PARSE_STOC_PSK 0 +#define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 0 +#define SSL_F_TLS_PARSE_STOC_SCT 0 +#define SSL_F_TLS_PARSE_STOC_SERVER_NAME 0 +#define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 0 +#define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_PARSE_STOC_USE_SRTP 0 +#define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 0 +#define SSL_F_TLS_PROCESS_CERT_STATUS 0 +#define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 0 +#define SSL_F_TLS_PROCESS_CERT_VERIFY 0 +#define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 0 +#define SSL_F_TLS_PROCESS_CKE_DHE 0 +#define SSL_F_TLS_PROCESS_CKE_ECDHE 0 +#define SSL_F_TLS_PROCESS_CKE_GOST 0 +#define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_PROCESS_CKE_RSA 0 +#define SSL_F_TLS_PROCESS_CKE_SRP 0 +#define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 0 +#define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 0 +#define SSL_F_TLS_PROCESS_FINISHED 0 +#define SSL_F_TLS_PROCESS_HELLO_REQ 0 +#define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 0 +#define SSL_F_TLS_PROCESS_KEY_EXCHANGE 0 +#define SSL_F_TLS_PROCESS_KEY_UPDATE 0 +#define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 0 +#define SSL_F_TLS_PROCESS_NEXT_PROTO 0 +#define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_SERVER_DONE 0 +#define SSL_F_TLS_PROCESS_SERVER_HELLO 0 +#define SSL_F_TLS_PROCESS_SKE_DHE 0 +#define SSL_F_TLS_PROCESS_SKE_ECDHE 0 +#define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_PROCESS_SKE_SRP 0 +#define SSL_F_TLS_PSK_DO_BINDER 0 +#define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 0 +#define SSL_F_TLS_SETUP_HANDSHAKE 0 +#define SSL_F_USE_CERTIFICATE_CHAIN_FILE 0 +#define SSL_F_WPACKET_INTERN_INIT_LEN 0 +#define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 0 +#define SSL_F_WRITE_STATE_MACHINE 0 +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/stack.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/stack.h new file mode 100644 index 0000000..542de76 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/stack.h @@ -0,0 +1,92 @@ +/* + * Copyright 1995-2025 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_STACK_H +#define OPENSSL_STACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_STACK_H +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void (*OPENSSL_sk_freefunc_thunk)(OPENSSL_sk_freefunc, void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +OPENSSL_STACK *OPENSSL_sk_set_thunks(OPENSSL_STACK *st, OPENSSL_sk_freefunc_thunk f_thunk); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, OPENSSL_sk_freefunc func); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_all(OPENSSL_STACK *st, const void *data, int *pnum); +int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); +void *OPENSSL_sk_shift(OPENSSL_STACK *st); +void *OPENSSL_sk_pop(OPENSSL_STACK *st); +void OPENSSL_sk_zero(OPENSSL_STACK *st); +OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, + OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); +void OPENSSL_sk_sort(OPENSSL_STACK *st); +int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _STACK OPENSSL_STACK +#define sk_num OPENSSL_sk_num +#define sk_value OPENSSL_sk_value +#define sk_set OPENSSL_sk_set +#define sk_new OPENSSL_sk_new +#define sk_new_null OPENSSL_sk_new_null +#define sk_free OPENSSL_sk_free +#define sk_pop_free OPENSSL_sk_pop_free +#define sk_deep_copy OPENSSL_sk_deep_copy +#define sk_insert OPENSSL_sk_insert +#define sk_delete OPENSSL_sk_delete +#define sk_delete_ptr OPENSSL_sk_delete_ptr +#define sk_find OPENSSL_sk_find +#define sk_find_ex OPENSSL_sk_find_ex +#define sk_push OPENSSL_sk_push +#define sk_unshift OPENSSL_sk_unshift +#define sk_shift OPENSSL_sk_shift +#define sk_pop OPENSSL_sk_pop +#define sk_zero OPENSSL_sk_zero +#define sk_set_cmp_func OPENSSL_sk_set_cmp_func +#define sk_dup OPENSSL_sk_dup +#define sk_sort OPENSSL_sk_sort +#define sk_is_sorted OPENSSL_sk_is_sorted +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/store.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/store.h new file mode 100644 index 0000000..2f14704 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/store.h @@ -0,0 +1,372 @@ +/* + * Copyright 2016-2025 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_STORE_H +#define OPENSSL_STORE_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OSSL_STORE_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * The main OSSL_STORE functions. + * ------------------------------ + * + * These allow applications to open a channel to a resource with supported + * data (keys, certs, crls, ...), read the data a piece at a time and decide + * what to do with it, and finally close. + */ + +typedef struct ossl_store_ctx_st OSSL_STORE_CTX; + +/* + * Typedef for the OSSL_STORE_INFO post processing callback. This can be used + * to massage the given OSSL_STORE_INFO, or to drop it entirely (by returning + * NULL). + */ +typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, + void *); + +/* + * Open a channel given a URI. The given UI method will be used any time the + * loader needs extra input, for example when a password or pin is needed, and + * will be passed the same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + */ +OSSL_STORE_CTX * +OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); +OSSL_STORE_CTX * +OSSL_STORE_open_ex(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/* + * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be + * done, and depends on the underlying loader (use OSSL_STORE_get0_scheme to + * determine which loader is used), except for common commands (see below). + * Each command takes different arguments. + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, + ... /* args */); +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, + va_list args); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* + * Common ctrl commands that different loaders may choose to support. + */ +/* int on = 0 or 1; STORE_ctrl(ctx, STORE_C_USE_SECMEM, &on); */ +#define OSSL_STORE_C_USE_SECMEM 1 +/* Where custom commands start */ +#define OSSL_STORE_C_CUSTOM_START 100 + +#endif + +/* + * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE + * functionality, given a context. + * Returns a OSSL_STORE_INFO pointer, from which OpenSSL typed data can be + * extracted with OSSL_STORE_INFO_get0_PKEY(), OSSL_STORE_INFO_get0_CERT(), ... + * NULL is returned on error, which may include that the data found at the URI + * can't be figured out for certain or is ambiguous. + */ +OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); + +/* + * Deletes the object in the store by URI. + * Returns 1 on success, 0 otherwise. + */ +int OSSL_STORE_delete(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[]); + +/* + * Check if end of data (end of file) is reached + * Returns 1 on end, 0 otherwise. + */ +int OSSL_STORE_eof(OSSL_STORE_CTX *ctx); + +/* + * Check if an error occurred + * Returns 1 if it did, 0 otherwise. + */ +int OSSL_STORE_error(OSSL_STORE_CTX *ctx); + +/* + * Close the channel + * Returns 1 on success, 0 on error. + */ +int OSSL_STORE_close(OSSL_STORE_CTX *ctx); + +/* + * Attach to a BIO. This works like OSSL_STORE_open() except it takes a + * BIO instead of a uri, along with a scheme to use when reading. + * The given UI method will be used any time the loader needs extra input, + * for example when a password or pin is needed, and will be passed the + * same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + * + * Note that this function is considered unsafe, all depending on what the + * BIO actually reads. + */ +OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, const char *scheme, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/*- + * Extracting OpenSSL types from and creating new OSSL_STORE_INFOs + * --------------------------------------------------------------- + */ + +/* + * Types of data that can be ossl_stored in a OSSL_STORE_INFO. + * OSSL_STORE_INFO_NAME is typically found when getting a listing of + * available "files" / "tokens" / what have you. + */ +#define OSSL_STORE_INFO_NAME 1 /* char * */ +#define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_PUBKEY 3 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_PKEY 4 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_CERT 5 /* X509 * */ +#define OSSL_STORE_INFO_CRL 6 /* X509_CRL * */ + +/* + * Functions to generate OSSL_STORE_INFOs, one function for each type we + * support having in them, as well as a generic constructor. + * + * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO + * and will therefore be freed when the OSSL_STORE_INFO is freed. + */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new(int type, void *data); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); +int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PUBKEY(EVP_PKEY *pubkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); + +/* + * Functions to try to extract data from a OSSL_STORE_INFO. + */ +int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +void *OSSL_STORE_INFO_get0_data(int type, const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *info); + +const char *OSSL_STORE_INFO_type_string(int type); + +/* + * Free the OSSL_STORE_INFO + */ +void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); + +/*- + * Functions to construct a search URI from a base URI and search criteria + * ----------------------------------------------------------------------- + */ + +/* OSSL_STORE search types */ +#define OSSL_STORE_SEARCH_BY_NAME 1 /* subject in certs, issuer in CRLs */ +#define OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 2 +#define OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 3 +#define OSSL_STORE_SEARCH_BY_ALIAS 4 + +/* To check what search types the scheme handler supports */ +int OSSL_STORE_supports_search(OSSL_STORE_CTX *ctx, int search_type); + +/* Search term constructors */ +/* + * The input is considered to be owned by the caller, and must therefore + * remain present throughout the lifetime of the returned OSSL_STORE_SEARCH + */ +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name, + const ASN1_INTEGER + *serial); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest, + const unsigned char + *bytes, + size_t len); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias); + +/* Search term destructor */ +void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search); + +/* Search term accessors */ +int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion); +X509_NAME *OSSL_STORE_SEARCH_get0_name(const OSSL_STORE_SEARCH *criterion); +const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH + *criterion); +const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH + *criterion, + size_t *length); +const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion); +const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH *criterion); + +/* + * Add search criterion and expected return type (which can be unspecified) + * to the loading channel. This MUST happen before the first OSSL_STORE_load(). + */ +int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); +int OSSL_STORE_find(OSSL_STORE_CTX *ctx, const OSSL_STORE_SEARCH *search); + +/*- + * Function to fetch a loader and extract data from it + * --------------------------------------------------- + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; + +OSSL_STORE_LOADER *OSSL_STORE_LOADER_fetch(OSSL_LIB_CTX *libctx, + const char *scheme, + const char *properties); +int OSSL_STORE_LOADER_up_ref(OSSL_STORE_LOADER *loader); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); +const OSSL_PROVIDER *OSSL_STORE_LOADER_get0_provider(const OSSL_STORE_LOADER * + loader); +const char *OSSL_STORE_LOADER_get0_properties(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_description(const OSSL_STORE_LOADER *loader); +int OSSL_STORE_LOADER_is_a(const OSSL_STORE_LOADER *loader, + const char *scheme); +void OSSL_STORE_LOADER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(OSSL_STORE_LOADER *loader, + void *arg), + void *arg); +int OSSL_STORE_LOADER_names_do_all(const OSSL_STORE_LOADER *loader, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM * +OSSL_STORE_LOADER_settable_ctx_params(const OSSL_STORE_LOADER *loader); + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* struct ossl_store_loader_ctx_st is defined differently by each loader */ +typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)(const OSSL_STORE_LOADER *loader, const char *uri, + const UI_METHOD *ui_method, void *ui_data); +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_ex_fn)(const OSSL_STORE_LOADER *loader, + const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); + +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn)(const OSSL_STORE_LOADER *loader, BIO *bio, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, va_list args); +typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); +typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, const OSSL_STORE_SEARCH *criteria); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); + +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open_ex(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_ex_fn open_ex_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_attach(OSSL_STORE_LOADER *loader, + OSSL_STORE_attach_fn attach_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +OSSL_DEPRECATEDIN_3_0 +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); +#endif + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_do_all_loaders(void (*do_function)(const OSSL_STORE_LOADER *loader, + void *do_arg), + void *do_arg); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/storeerr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/storeerr.h new file mode 100644 index 0000000..a61bee1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/storeerr.h @@ -0,0 +1,47 @@ +/* + * 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_STOREERR_H +#define OPENSSL_STOREERR_H +#pragma once + +#include +#include +#include + +/* + * OSSL_STORE reason codes. + */ +#define OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE 107 +#define OSSL_STORE_R_BAD_PASSWORD_READ 115 +#define OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC 113 +#define OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST 121 +#define OSSL_STORE_R_INVALID_SCHEME 106 +#define OSSL_STORE_R_IS_NOT_A 112 +#define OSSL_STORE_R_LOADER_INCOMPLETE 116 +#define OSSL_STORE_R_LOADING_STARTED 117 +#define OSSL_STORE_R_NOT_A_CERTIFICATE 100 +#define OSSL_STORE_R_NOT_A_CRL 101 +#define OSSL_STORE_R_NOT_A_NAME 103 +#define OSSL_STORE_R_NOT_A_PRIVATE_KEY 102 +#define OSSL_STORE_R_NOT_A_PUBLIC_KEY 122 +#define OSSL_STORE_R_NOT_PARAMETERS 104 +#define OSSL_STORE_R_NO_LOADERS_FOUND 123 +#define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114 +#define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108 +#define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119 +#define OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED 109 +#define OSSL_STORE_R_UNREGISTERED_SCHEME 105 +#define OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE 110 +#define OSSL_STORE_R_UNSUPPORTED_OPERATION 118 +#define OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE 120 +#define OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED 111 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/symhacks.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/symhacks.h new file mode 100644 index 0000000..d041395 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/symhacks.h @@ -0,0 +1,39 @@ +/* + * Copyright 1999-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_SYMHACKS_H +#define OPENSSL_SYMHACKS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SYMHACKS_H +#endif + +#include + +/* Case insensitive linking causes problems.... */ +#if defined(OPENSSL_SYS_VMS) +#undef ERR_load_CRYPTO_strings +#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +#undef OCSP_crlID_new +#define OCSP_crlID_new OCSP_crlID2_new + +#undef d2i_ECPARAMETERS +#define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +#undef i2d_ECPARAMETERS +#define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +#undef d2i_ECPKPARAMETERS +#define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +#undef i2d_ECPKPARAMETERS +#define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +#endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/thread.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/thread.h new file mode 100644 index 0000000..6d86e0e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/thread.h @@ -0,0 +1,31 @@ +/* + * Copyright 1995-2023 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_THREAD_H +#define OPENSSL_THREAD_H + +#define OSSL_THREAD_SUPPORT_FLAG_THREAD_POOL (1U << 0) +#define OSSL_THREAD_SUPPORT_FLAG_DEFAULT_SPAWN (1U << 1) + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +uint32_t OSSL_get_thread_support_flags(void); +int OSSL_set_max_threads(OSSL_LIB_CTX *ctx, uint64_t max_threads); +uint64_t OSSL_get_max_threads(OSSL_LIB_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_THREAD_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/tls1.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/tls1.h new file mode 100644 index 0000000..34d3768 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/tls1.h @@ -0,0 +1,1222 @@ +/* + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. 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_TLS1_H +#define OPENSSL_TLS1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TLS1_H +#endif + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Default security level if not overridden at config time */ +#ifndef OPENSSL_TLS_SECURITY_LEVEL +#define OPENSSL_TLS_SECURITY_LEVEL 2 +#endif + +/* TLS*_VERSION constants are defined in prov_ssl.h */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TLS_MAX_VERSION TLS1_3_VERSION +#endif + +/* Special value for method supporting multiple versions */ +#define TLS_ANY_VERSION 0x10000 + +#define TLS1_VERSION_MAJOR 0x03 +#define TLS1_VERSION_MINOR 0x01 + +#define TLS1_1_VERSION_MAJOR 0x03 +#define TLS1_1_VERSION_MINOR 0x02 + +#define TLS1_2_VERSION_MAJOR 0x03 +#define TLS1_2_VERSION_MINOR 0x03 + +#define TLS1_get_version(s) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +#define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 0) + +#define TLS1_AD_DECRYPTION_FAILED 21 +#define TLS1_AD_RECORD_OVERFLOW 22 +#define TLS1_AD_UNKNOWN_CA 48 /* fatal */ +#define TLS1_AD_ACCESS_DENIED 49 /* fatal */ +#define TLS1_AD_DECODE_ERROR 50 /* fatal */ +#define TLS1_AD_DECRYPT_ERROR 51 +#define TLS1_AD_EXPORT_RESTRICTION 60 /* fatal */ +#define TLS1_AD_PROTOCOL_VERSION 70 /* fatal */ +#define TLS1_AD_INSUFFICIENT_SECURITY 71 /* fatal */ +#define TLS1_AD_INTERNAL_ERROR 80 /* fatal */ +#define TLS1_AD_INAPPROPRIATE_FALLBACK 86 /* fatal */ +#define TLS1_AD_USER_CANCELLED 90 +#define TLS1_AD_NO_RENEGOTIATION 100 +/* TLSv1.3 alerts */ +#define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +#define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* codes 110-114 are from RFC3546 */ +#define TLS1_AD_UNSUPPORTED_EXTENSION 110 +#define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +#define TLS1_AD_UNRECOGNIZED_NAME 112 +#define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +#define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +#define TLS1_AD_UNKNOWN_PSK_IDENTITY 115 /* fatal */ +#define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +#define TLSEXT_TYPE_server_name 0 +#define TLSEXT_TYPE_max_fragment_length 1 +#define TLSEXT_TYPE_client_certificate_url 2 +#define TLSEXT_TYPE_trusted_ca_keys 3 +#define TLSEXT_TYPE_truncated_hmac 4 +#define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +#define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +#define TLSEXT_TYPE_client_authz 7 +#define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +#define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +#define TLSEXT_TYPE_supported_groups 10 +#define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +#define TLSEXT_TYPE_ec_point_formats 11 + +/* ExtensionType value from RFC5054 */ +#define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +#define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +#define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC7301 */ +#define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +#define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * Extension type for Raw Public Keys + * https://tools.ietf.org/html/rfc7250 + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml + */ +#define TLSEXT_TYPE_client_cert_type 19 +#define TLSEXT_TYPE_server_cert_type 20 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +#define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +#define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +#define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC8879 */ +#define TLSEXT_TYPE_compress_certificate 27 + +/* ExtensionType value from RFC4507 */ +#define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +#define TLSEXT_TYPE_psk 41 +#define TLSEXT_TYPE_early_data 42 +#define TLSEXT_TYPE_supported_versions 43 +#define TLSEXT_TYPE_cookie 44 +#define TLSEXT_TYPE_psk_kex_modes 45 +#define TLSEXT_TYPE_certificate_authorities 47 +#define TLSEXT_TYPE_post_handshake_auth 49 +#define TLSEXT_TYPE_signature_algorithms_cert 50 +#define TLSEXT_TYPE_key_share 51 +#define TLSEXT_TYPE_quic_transport_parameters 57 + +/* Temporary extension type */ +#define TLSEXT_TYPE_renegotiate 0xff01 + +#ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +#define TLSEXT_TYPE_next_proto_neg 13172 +#endif + +/* NameType value from RFC3546 */ +#define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +#define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +#define TLSEXT_ECPOINTFORMAT_first 0 +#define TLSEXT_ECPOINTFORMAT_uncompressed 0 +#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +#define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +#define TLSEXT_signature_anonymous 0 +#define TLSEXT_signature_rsa 1 +#define TLSEXT_signature_dsa 2 +#define TLSEXT_signature_ecdsa 3 +#define TLSEXT_signature_gostr34102001 237 +#define TLSEXT_signature_gostr34102012_256 238 +#define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +#define TLSEXT_signature_num 7 + +#define TLSEXT_hash_none 0 +#define TLSEXT_hash_md5 1 +#define TLSEXT_hash_sha1 2 +#define TLSEXT_hash_sha224 3 +#define TLSEXT_hash_sha256 4 +#define TLSEXT_hash_sha384 5 +#define TLSEXT_hash_sha512 6 +#define TLSEXT_hash_gostr3411 237 +#define TLSEXT_hash_gostr34112012_256 238 +#define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +#define TLSEXT_hash_num 10 + +/* Possible compression values from RFC8879 */ +/* Not defined in RFC8879, but used internally for no-compression */ +#define TLSEXT_comp_cert_none 0 +#define TLSEXT_comp_cert_zlib 1 +#define TLSEXT_comp_cert_brotli 2 +#define TLSEXT_comp_cert_zstd 3 +/* one more than the number of defined values - used as size of 0-terminated array */ +#define TLSEXT_comp_cert_limit 4 + +/* Flag set for unrecognised algorithms */ +#define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +#define TLSEXT_curve_P_256 23 +#define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +#define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +#define TLSEXT_max_fragment_length_512 1 +#define TLSEXT_max_fragment_length_1024 2 +#define TLSEXT_max_fragment_length_2048 3 +#define TLSEXT_max_fragment_length_4096 4 +/* OpenSSL value for unset maximum fragment length extension */ +#define TLSEXT_max_fragment_length_UNSPECIFIED 255 + +/* + * TLS Certificate Type (for RFC7250) + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-3 + */ +#define TLSEXT_cert_type_x509 0 +#define TLSEXT_cert_type_pgp 1 /* recognized, but not supported */ +#define TLSEXT_cert_type_rpk 2 +#define TLSEXT_cert_type_1609dot2 3 /* recognized, but not supported */ + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +#define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +char *SSL_get1_builtin_sigalgs(OSSL_LIB_CTX *libctx); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +__owur int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +#define SSL_set_tlsext_host_name(s, name) \ + SSL_ctrl(s, SSL_CTRL_SET_TLSEXT_HOSTNAME, TLSEXT_NAMETYPE_host_name, \ + (void *)name) + +#define SSL_set_tlsext_debug_callback(ssl, cb) \ + SSL_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_DEBUG_CB, \ + (void (*)(void))cb) + +#define SSL_set_tlsext_debug_arg(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_DEBUG_ARG, 0, arg) + +#define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE, 0, NULL) + +#define SSL_set_tlsext_status_type(ssl, type) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, type, NULL) + +#define SSL_get_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS, 0, arg) + +#define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS, 0, arg) + +#define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS, 0, arg) + +#define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS, 0, arg) + +#define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP, 0, arg) + +#define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP, arglen, arg) + +#define SSL_get0_tlsext_status_ocsp_resp_ex(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP_EX, 0, arg) + +#define SSL_set0_tlsext_status_ocsp_resp_ex(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP_EX, 0, arg) + +#define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ + SSL_CTX_callback_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_CB, \ + (void (*)(void))cb) + +#define SSL_TLSEXT_ERR_OK 0 +#define SSL_TLSEXT_ERR_ALERT_WARNING 1 +#define SSL_TLSEXT_ERR_ALERT_FATAL 2 +#define SSL_TLSEXT_ERR_NOACK 3 + +#define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG, 0, arg) + +#define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_TLSEXT_TICKET_KEYS, keylen, keys) +#define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_TICKET_KEYS, keylen, keys) + +#define SSL_CTX_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB, 0, (void *)cb) +#define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB, \ + (void (*)(void))cb) + +#define SSL_CTX_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG, 0, arg) +#define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG, 0, arg) + +#define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, type, NULL) + +#define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE, 0, NULL) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB, \ + (void (*)(void))cb) +#endif +int SSL_CTX_set_tlsext_ticket_key_evp_cb(SSL_CTX *ctx, int (*fp)(SSL *, unsigned char *, unsigned char *, EVP_CIPHER_CTX *, EVP_MAC_CTX *, int)); + +/* PSK ciphersuites from 4279 */ +#define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +#define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +#define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +#define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D +#define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +#define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +#define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +#define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +#define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +#define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +#define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +#define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +#define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +#define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +#define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +#define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +#define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +#define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +#define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +#define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +#define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +#define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +#define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +#define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* AES ciphersuites from RFC3268 */ +#define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +#define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +#define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +#define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +#define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +#define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 +#define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +#define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +#define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +#define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +#define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +#define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +#define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +#define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +#define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +#define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +#define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +#define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +#define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +#define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +#define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +#define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +#define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +#define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +#define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +#define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +#define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +#define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +#define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +#define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +#define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +#define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +#define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +#define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +#define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +#define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +#define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +#define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +#define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +#define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +#define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +#define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +#define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +#define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +#define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* CCM ciphersuites from RFC6655 */ +#define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +#define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +#define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +#define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +#define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +#define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +#define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +#define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +#define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +#define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +#define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +#define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +#define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +#define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +#define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +#define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +#define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +#define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +#define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +#define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +#define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +#define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +#define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +#define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +#define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +#define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +#define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +#define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +#define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +#define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +#define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +#define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +#define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +#define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +#define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +#define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +#define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +#define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +#define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +#define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +#define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +#define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +#define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +#define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +#define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +#define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +#define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +#define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* ECDHE PSK ciphersuites from RFC5489 */ +#define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +#define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +#define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +#define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +#define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +#define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +#define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +#define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +#define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +#define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +#define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +#define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +#define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +#define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +#define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +#define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +#define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +#define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +#define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +#define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +#define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +#define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +#define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +#define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +#define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +#define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Integrity-only ciphersuites from RFC 9150 */ +#define TLS1_3_CK_SHA256_SHA256 0x0300C0B4 +#define TLS1_3_CK_SHA384_SHA384 0x0300C0B5 + +/* Aria ciphersuites from RFC6209 */ +#define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +#define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +#define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +#define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +#define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +#define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +#define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +#define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +#define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +#define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +#define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +#define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +#define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +#define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +#define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +#define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +#define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +#define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +#define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +#define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +#define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +#define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +#define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +#define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +#define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +#define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +#define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +#define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +#define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +#define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +#define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +#define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +#define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +#define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +#define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +#define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +#define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +#define TLS1_3_RFC_SHA256_SHA256 "TLS_SHA256_SHA256" +#define TLS1_3_RFC_SHA384_SHA384 "TLS_SHA384_SHA384" +#define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +#define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +#define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +#define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +#define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +#define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + +/* + * XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE + * ciphers names with "EDH" instead of "DHE". Going forward, we should be + * using DHE everywhere, though we may indefinitely maintain aliases for + * users or configurations that used "EDH" + */ +#define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +#define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +#define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +#define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +#define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +#define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +#define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +#define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +#define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +#define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +#define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +#define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +#define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +#define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +#define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +#define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +#define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +#define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +#define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +#define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +#define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +#define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +#define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +#define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +#define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +#define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +#define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +#define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +#define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* SRP ciphersuite from RFC 5054 */ +#define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +#define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +#define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +#define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +#define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +#define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +#define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* SEED ciphersuites from RFC4162 */ +#define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +#define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +#define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +#define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +#define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +#define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +#define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +#define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +#define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +#define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +#define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +#define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +#define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +#define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +#define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +#define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* CCM ciphersuites from RFC6655 */ +#define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +#define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +#define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +#define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +#define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +#define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +#define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +#define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* ECDH HMAC based ciphersuites from RFC5289 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +#define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +#define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +#define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +#define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +#define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +#define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +#define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +#define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +#define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +#define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +#define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +#define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +#define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-GCM-SHA384" + +#define TLS_CT_RSA_SIGN 1 +#define TLS_CT_DSS_SIGN 2 +#define TLS_CT_RSA_FIXED_DH 3 +#define TLS_CT_DSS_FIXED_DH 4 +#define TLS_CT_ECDSA_SIGN 64 +#define TLS_CT_RSA_FIXED_ECDH 65 +#define TLS_CT_ECDSA_FIXED_ECDH 66 +#define TLS_CT_GOST01_SIGN 22 +#define TLS_CT_GOST12_IANA_SIGN 67 +#define TLS_CT_GOST12_IANA_512_SIGN 68 +#define TLS_CT_GOST12_LEGACY_SIGN 238 +#define TLS_CT_GOST12_LEGACY_512_SIGN 239 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TLS_CT_GOST12_SIGN TLS_CT_GOST12_LEGACY_SIGN +#define TLS_CT_GOST12_512_SIGN TLS_CT_GOST12_LEGACY_512_SIGN +#endif + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +#define TLS_CT_NUMBER 12 + +#if defined(SSL3_CT_NUMBER) +#if TLS_CT_NUMBER != SSL3_CT_NUMBER +#error "SSL/TLS CT_NUMBER values do not match" +#endif +#endif + +#define TLS1_FINISH_MAC_LENGTH 12 + +#define TLS_MD_MAX_CONST_SIZE 22 + +/* ASCII: "client finished", in hex for EBCDIC compatibility */ +#define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +#define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +/* ASCII: "server finished", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +#define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "key expansion", in hex for EBCDIC compatibility */ +#define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" +#define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +/* ASCII: "client write key", in hex for EBCDIC compatibility */ +#define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "IV block", in hex for EBCDIC compatibility */ +#define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" +#define TLS_MD_IV_BLOCK_CONST_SIZE 8 +/* ASCII: "master secret", in hex for EBCDIC compatibility */ +#define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +#define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +/* ASCII: "extended master secret", in hex for EBCDIC compatibility */ +#define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +#define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/trace.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/trace.h new file mode 100644 index 0000000..ff0fba7 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/trace.h @@ -0,0 +1,325 @@ +/* + * 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_TRACE_H +#define OPENSSL_TRACE_H +#pragma once + +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * TRACE CATEGORIES + */ + +/* + * The trace messages of the OpenSSL libraries are organized into different + * categories. For every trace category, the application can register a separate + * tracer callback. When a callback is registered, a so called trace channel is + * created for this category. This channel consists essentially of an internal + * BIO which sends all trace output it receives to the registered application + * callback. + * + * The ALL category can be used as a fallback category to register a single + * channel which receives the output from all categories. However, if the + * application intends to print the trace channel name in the line prefix, + * it is better to register channels for all categories separately. + * (This is how the openssl application does it.) + */ +#define OSSL_TRACE_CATEGORY_ALL 0 /* The fallback */ +#define OSSL_TRACE_CATEGORY_TRACE 1 +#define OSSL_TRACE_CATEGORY_INIT 2 +#define OSSL_TRACE_CATEGORY_TLS 3 +#define OSSL_TRACE_CATEGORY_TLS_CIPHER 4 +#define OSSL_TRACE_CATEGORY_CONF 5 +#define OSSL_TRACE_CATEGORY_ENGINE_TABLE 6 +#define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT 7 +#define OSSL_TRACE_CATEGORY_PKCS5V2 8 +#define OSSL_TRACE_CATEGORY_PKCS12_KEYGEN 9 +#define OSSL_TRACE_CATEGORY_PKCS12_DECRYPT 10 +#define OSSL_TRACE_CATEGORY_X509V3_POLICY 11 +#define OSSL_TRACE_CATEGORY_BN_CTX 12 +#define OSSL_TRACE_CATEGORY_CMP 13 +#define OSSL_TRACE_CATEGORY_STORE 14 +#define OSSL_TRACE_CATEGORY_DECODER 15 +#define OSSL_TRACE_CATEGORY_ENCODER 16 +#define OSSL_TRACE_CATEGORY_REF_COUNT 17 +#define OSSL_TRACE_CATEGORY_HTTP 18 +#define OSSL_TRACE_CATEGORY_PROVIDER 19 +#define OSSL_TRACE_CATEGORY_QUERY 20 +#define OSSL_TRACE_CATEGORY_NUM 21 +/* KEEP THIS LIST IN SYNC with trace_categories[] in crypto/trace.c */ + +/* Returns the trace category number for the given |name| */ +int OSSL_trace_get_category_num(const char *name); + +/* Returns the trace category name for the given |num| */ +const char *OSSL_trace_get_category_name(int num); + +/* + * TRACE CONSUMERS + */ + +/* + * Enables tracing for the given |category| by providing a BIO sink + * as |channel|. If a null pointer is passed as |channel|, an existing + * trace channel is removed and tracing for the category is disabled. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_channel(int category, BIO *channel); + +/* + * Attach a prefix and a suffix to the given |category|, to be printed at the + * beginning and at the end of each trace output group, i.e. when + * OSSL_trace_begin() and OSSL_trace_end() are called. + * If a null pointer is passed as argument, the existing prefix or suffix is + * removed. + * + * They return 1 on success and 0 on failure + */ +int OSSL_trace_set_prefix(int category, const char *prefix); +int OSSL_trace_set_suffix(int category, const char *suffix); + +/* + * OSSL_trace_cb is the type tracing callback provided by the application. + * It MUST return the number of bytes written, or 0 on error (in other words, + * it can never write zero bytes). + * + * The |buffer| will always contain text, which may consist of several lines. + * The |data| argument points to whatever data was provided by the application + * when registering the tracer function. + * + * The |category| number is given, as well as a |cmd| number, described below. + */ +typedef size_t (*OSSL_trace_cb)(const char *buffer, size_t count, + int category, int cmd, void *data); +/* + * Possible |cmd| numbers. + */ +#define OSSL_TRACE_CTRL_BEGIN 0 +#define OSSL_TRACE_CTRL_WRITE 1 +#define OSSL_TRACE_CTRL_END 2 + +/* + * Enables tracing for the given |category| by creating an internal + * trace channel which sends the output to the given |callback|. + * If a null pointer is passed as callback, an existing trace channel + * is removed and tracing for the category is disabled. + * + * NOTE: OSSL_trace_set_channel() and OSSL_trace_set_callback() are mutually + * exclusive. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_callback(int category, OSSL_trace_cb callback, void *data); + +/* + * TRACE PRODUCERS + */ + +/* + * Returns 1 if tracing for the specified category is enabled, otherwise 0 + */ +int OSSL_trace_enabled(int category); + +/* + * Wrap a group of tracing output calls. OSSL_trace_begin() locks tracing and + * returns the trace channel associated with the given category, or NULL if no + * channel is associated with the category. OSSL_trace_end() unlocks tracing. + * + * Usage: + * + * BIO *out; + * if ((out = OSSL_trace_begin(category)) != NULL) { + * ... + * BIO_fprintf(out, ...); + * ... + * OSSL_trace_end(category, out); + * } + * + * See also the convenience macros OSSL_TRACE_BEGIN and OSSL_TRACE_END below. + */ +BIO *OSSL_trace_begin(int category); +void OSSL_trace_end(int category, BIO *channel); + +/* + * OSSL_TRACE* Convenience Macros + */ + +/* + * When the tracing feature is disabled, these macros are defined to + * produce dead code, which a good compiler should eliminate. + */ + +/* + * OSSL_TRACE_BEGIN, OSSL_TRACE_END - Define a Trace Group + * + * These two macros can be used to create a block which is executed only + * if the corresponding trace category is enabled. Inside this block, a + * local variable named |trc_out| is defined, which points to the channel + * associated with the given trace category. + * + * Usage: (using 'TLS' as an example category) + * + * OSSL_TRACE_BEGIN(TLS) { + * + * BIO_fprintf(trc_out, ... ); + * + * } OSSL_TRACE_END(TLS); + * + * + * This expands to the following code + * + * do { + * BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_TLS); + * if (trc_out != NULL) { + * ... + * BIO_fprintf(trc_out, ...); + * } + * OSSL_trace_end(OSSL_TRACE_CATEGORY_TLS, trc_out); + * } while (0); + * + * The use of the inner '{...}' group and the trailing ';' is enforced + * by the definition of the macros in order to make the code look as much + * like C code as possible. + * + * Before returning from inside the trace block, it is necessary to + * call OSSL_TRACE_CANCEL(category). + */ + +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_##category); \ + \ + if (trc_out != NULL) + +#define OSSL_TRACE_END(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out); \ + } \ + while (0) + +#define OSSL_TRACE_CANCEL(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out) + +#else + +#define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = NULL; \ + if (0) + +#define OSSL_TRACE_END(category) \ + } \ + while (0) + +#define OSSL_TRACE_CANCEL(category) \ + ((void)0) + +#endif + +/* + * OSSL_TRACE_ENABLED() - Check whether tracing is enabled for |category| + * + * Usage: + * + * if (OSSL_TRACE_ENABLED(TLS)) { + * ... + * } + */ +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACE_ENABLED(category) \ + OSSL_trace_enabled(OSSL_TRACE_CATEGORY_##category) + +#else + +#define OSSL_TRACE_ENABLED(category) (0) + +#endif + +/* + * OSSL_TRACE*() - OneShot Trace Macros + * + * These macros are intended to produce a simple printf-style trace output. + * Unfortunately, C90 macros don't support variable arguments, so the + * "vararg" OSSL_TRACEV() macro has a rather weird usage pattern: + * + * OSSL_TRACEV(category, (trc_out, "format string", ...args...)); + * + * Where 'channel' is the literal symbol of this name, not a variable. + * For that reason, it is currently not intended to be used directly, + * but only as helper macro for the other oneshot trace macros + * OSSL_TRACE(), OSSL_TRACE1(), OSSL_TRACE2(), ... + * + * Usage: + * + * OSSL_TRACE(INIT, "Hello world!\n"); + * OSSL_TRACE1(TLS, "The answer is %d\n", 42); + * OSSL_TRACE2(TLS, "The ultimate question to answer %d is '%s'\n", + * 42, "What do you get when you multiply six by nine?"); + */ + +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACEV(category, args) \ + OSSL_TRACE_BEGIN(category) \ + BIO_printf args; \ + OSSL_TRACE_END(category) + +#else + +#define OSSL_TRACEV(category, args) ((void)0) + +#endif + +#define OSSL_TRACE(category, text) \ + OSSL_TRACEV(category, (trc_out, "%s", text)) + +#define OSSL_TRACE1(category, format, arg1) \ + OSSL_TRACEV(category, (trc_out, format, arg1)) +#define OSSL_TRACE2(category, format, arg1, arg2) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2)) +#define OSSL_TRACE3(category, format, arg1, arg2, arg3) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3)) +#define OSSL_TRACE4(category, format, arg1, arg2, arg3, arg4) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4)) +#define OSSL_TRACE5(category, format, arg1, arg2, arg3, arg4, arg5) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5)) +#define OSSL_TRACE6(category, format, arg1, arg2, arg3, arg4, arg5, arg6) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6)) +#define OSSL_TRACE7(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7)) +#define OSSL_TRACE8(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)) +#define OSSL_TRACE9(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)) + +#define OSSL_TRACE_STRING_MAX 80 +int OSSL_trace_string(BIO *out, int text, int full, + const unsigned char *data, size_t size); +#define OSSL_TRACE_STRING(category, text, full, data, len) \ + OSSL_TRACE_BEGIN(category) \ + { \ + OSSL_trace_string(trc_out, text, full, data, len); \ + } \ + OSSL_TRACE_END(category) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ts.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ts.h new file mode 100644 index 0000000..edb6ca1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ts.h @@ -0,0 +1,521 @@ +/* + * Copyright 2006-2024 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_TS_H +#define OPENSSL_TS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TS_H +#endif + +#include + +#ifndef OPENSSL_NO_TS +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct TS_msg_imprint_st TS_MSG_IMPRINT; +typedef struct TS_req_st TS_REQ; +typedef struct TS_accuracy_st TS_ACCURACY; +typedef struct TS_tst_info_st TS_TST_INFO; + +/* Possible values for status. */ +#define TS_STATUS_GRANTED 0 +#define TS_STATUS_GRANTED_WITH_MODS 1 +#define TS_STATUS_REJECTION 2 +#define TS_STATUS_WAITING 3 +#define TS_STATUS_REVOCATION_WARNING 4 +#define TS_STATUS_REVOCATION_NOTIFICATION 5 + +/* Possible values for failure_info. */ +#define TS_INFO_BAD_ALG 0 +#define TS_INFO_BAD_REQUEST 2 +#define TS_INFO_BAD_DATA_FORMAT 5 +#define TS_INFO_TIME_NOT_AVAILABLE 14 +#define TS_INFO_UNACCEPTED_POLICY 15 +#define TS_INFO_UNACCEPTED_EXTENSION 16 +#define TS_INFO_ADD_INFO_NOT_AVAILABLE 17 +#define TS_INFO_SYSTEM_FAILURE 25 + +typedef struct TS_status_info_st TS_STATUS_INFO; + +typedef struct TS_resp_st TS_RESP; + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_REQ) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_REQ, TS_REQ) +DECLARE_ASN1_DUP_FUNCTION(TS_REQ) + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, const TS_REQ *a); +#endif +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, const TS_REQ *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_MSG_IMPRINT) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_MSG_IMPRINT, TS_MSG_IMPRINT) +DECLARE_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) + +#ifndef OPENSSL_NO_STDIO +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_fp(FILE *fp, const TS_MSG_IMPRINT *a); +#endif +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_bio(BIO *bio, const TS_MSG_IMPRINT *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_RESP) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_RESP, TS_RESP) +DECLARE_ASN1_DUP_FUNCTION(TS_RESP) + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, const TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, const TS_RESP *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_STATUS_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_STATUS_INFO, TS_STATUS_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_STATUS_INFO) + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_TST_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_TST_INFO, TS_TST_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_TST_INFO) +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); + +#ifndef OPENSSL_NO_STDIO +TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a); +int i2d_TS_TST_INFO_fp(FILE *fp, const TS_TST_INFO *a); +#endif +TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a); +int i2d_TS_TST_INFO_bio(BIO *bio, const TS_TST_INFO *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_ACCURACY) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_ACCURACY, TS_ACCURACY) +DECLARE_ASN1_DUP_FUNCTION(TS_ACCURACY) + +int TS_REQ_set_version(TS_REQ *a, long version); +long TS_REQ_get_version(const TS_REQ *a); + +int TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i); +const ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a); + +const STACK_OF(ASN1_UTF8STRING) * +TS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a); + +const ASN1_BIT_STRING * +TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *a); + +int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a); + +int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg); +X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a); + +int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len); +ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a); + +int TS_REQ_set_policy_id(TS_REQ *a, const ASN1_OBJECT *policy); +ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a); + +int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a); + +int TS_REQ_set_cert_req(TS_REQ *a, int cert_req); +int TS_REQ_get_cert_req(const TS_REQ *a); + +STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a); +void TS_REQ_ext_free(TS_REQ *a); +int TS_REQ_get_ext_count(TS_REQ *a); +int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos); +int TS_REQ_get_ext_by_OBJ(TS_REQ *a, const ASN1_OBJECT *obj, int lastpos); +int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos); +X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc); +X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc); +int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc); +void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx); + +/* Function declarations for TS_REQ defined in ts/ts_req_print.c */ + +int TS_REQ_print_bio(BIO *bio, TS_REQ *a); + +/* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */ + +int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info); +TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a); + +/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */ +void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info); +PKCS7 *TS_RESP_get_token(TS_RESP *a); +TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a); + +int TS_TST_INFO_set_version(TS_TST_INFO *a, long version); +long TS_TST_INFO_get_version(const TS_TST_INFO *a); + +int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id); +ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a); + +int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a); + +int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial); +const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a); + +int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime); +const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a); + +int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy); +TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a); + +int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds); +const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a); + +int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis); +const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a); + +int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros); +const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a); + +int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering); +int TS_TST_INFO_get_ordering(const TS_TST_INFO *a); + +int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a); + +int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa); +GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a); + +STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a); +void TS_TST_INFO_ext_free(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_count(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos); +int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, const ASN1_OBJECT *obj, + int lastpos); +int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos); +X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc); +X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc); +int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc); +void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx); + +/* + * Declarations related to response generation, defined in ts/ts_resp_sign.c. + */ + +/* Optional flags for response generation. */ + +/* Don't include the TSA name in response. */ +#define TS_TSA_NAME 0x01 + +/* Set ordering to true in response. */ +#define TS_ORDERING 0x02 + +/* + * Include the signer certificate and the other specified certificates in + * the ESS signing certificate attribute beside the PKCS7 signed data. + * Only the signer certificates is included by default. + */ +#define TS_ESS_CERT_ID_CHAIN 0x04 + +/* Forward declaration. */ +struct TS_resp_ctx; + +/* This must return a unique number less than 160 bits long. */ +typedef ASN1_INTEGER *(*TS_serial_cb)(struct TS_resp_ctx *, void *); + +/* + * This must return the seconds and microseconds since Jan 1, 1970 in the sec + * and usec variables allocated by the caller. Return non-zero for success + * and zero for failure. + */ +typedef int (*TS_time_cb)(struct TS_resp_ctx *, void *, long *sec, + long *usec); + +/* + * This must process the given extension. It can modify the TS_TST_INFO + * object of the context. Return values: !0 (processed), 0 (error, it must + * set the status info/failure info of the response). + */ +typedef int (*TS_extension_cb)(struct TS_resp_ctx *, X509_EXTENSION *, + void *); + +typedef struct TS_resp_ctx TS_RESP_CTX; + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +TS_RESP_CTX *TS_RESP_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +void TS_RESP_CTX_free(TS_RESP_CTX *ctx); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key); + +int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx, + const EVP_MD *signer_digest); +int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy); + +/* No additional certs are included in the response by default. */ +int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs); + +/* + * Adds a new acceptable policy, only the default policy is accepted by + * default. + */ +int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +#define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +#define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +#define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +#define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +#define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +#define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +#define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +#define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +#define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +#define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +#define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +#define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx TS_VERIFY_CTX; + +int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response); +int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token); + +/* + * Declarations related to response verification context, + */ +TS_VERIFY_CTX *TS_VERIFY_CTX_new(void); +void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx); +int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f); +int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_data().") +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +#endif +int TS_VERIFY_CTX_set0_data(TS_VERIFY_CTX *ctx, BIO *b); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_imprint().") +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +#endif +int TS_VERIFY_CTX_set0_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_store().") +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +#endif +int TS_VERIFY_CTX_set0_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TS_VERIFY_CTS_set_certs(ctx, cert) TS_VERIFY_CTX_set_certs(ctx, cert) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_certs().") +STACK_OF(X509) *TS_VERIFY_CTX_set_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); +#endif +int TS_VERIFY_CTX_set0_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); + +/*- + * If ctx is NULL, it allocates and returns a new object, otherwise + * it returns ctx. It initialises all the members as follows: + * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE) + * certs = NULL + * store = NULL + * policy = policy from the request or NULL if absent (in this case + * TS_VFY_POLICY is cleared from flags as well) + * md_alg = MD algorithm from request + * imprint, imprint_len = imprint from request + * data = NULL + * nonce, nonce_len = nonce from the request or NULL if absent (in this case + * TS_VFY_NONCE is cleared from flags as well) + * tsa_name = NULL + * Important: after calling this method TS_VFY_SIGNATURE should be added! + */ +TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx); + +/* Function declarations for TS_RESP defined in ts/ts_resp_print.c */ + +int TS_RESP_print_bio(BIO *bio, TS_RESP *a); +int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a); +int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a); + +/* Common utility functions defined in ts/ts_lib.c */ + +int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num); +int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj); +int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions); +int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg); +int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg); + +/* + * Function declarations for handling configuration options, defined in + * ts/ts_conf.c + */ + +X509 *TS_CONF_load_cert(const char *file); +STACK_OF(X509) *TS_CONF_load_certs(const char *file); +EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); +const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); +int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, + TS_RESP_CTX *ctx); +#ifndef OPENSSL_NO_ENGINE +int TS_CONF_set_crypto_device(CONF *conf, const char *section, + const char *device); +int TS_CONF_set_default_engine(const char *name); +#endif +int TS_CONF_set_signer_cert(CONF *conf, const char *section, + const char *cert, TS_RESP_CTX *ctx); +int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_key(CONF *conf, const char *section, + const char *key, const char *pass, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_digest(CONF *conf, const char *section, + const char *md, TS_RESP_CTX *ctx); +int TS_CONF_set_def_policy(CONF *conf, const char *section, + const char *policy, TS_RESP_CTX *ctx); +int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_clock_precision_digits(const CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/tserr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/tserr.h new file mode 100644 index 0000000..0bec94a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/tserr.h @@ -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_TSERR_H +#define OPENSSL_TSERR_H +#pragma once + +#include +#include +#include + +#ifndef OPENSSL_NO_TS + +/* + * TS reason codes. + */ +#define TS_R_BAD_PKCS7_TYPE 132 +#define TS_R_BAD_TYPE 133 +#define TS_R_CANNOT_LOAD_CERT 137 +#define TS_R_CANNOT_LOAD_KEY 138 +#define TS_R_CERTIFICATE_VERIFY_ERROR 100 +#define TS_R_COULD_NOT_SET_ENGINE 127 +#define TS_R_COULD_NOT_SET_TIME 115 +#define TS_R_DETACHED_CONTENT 134 +#define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +#define TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR 139 +#define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 +#define TS_R_INVALID_NULL_POINTER 102 +#define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 +#define TS_R_MESSAGE_IMPRINT_MISMATCH 103 +#define TS_R_NONCE_MISMATCH 104 +#define TS_R_NONCE_NOT_RETURNED 105 +#define TS_R_NO_CONTENT 106 +#define TS_R_NO_TIME_STAMP_TOKEN 107 +#define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 +#define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 +#define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 +#define TS_R_POLICY_MISMATCH 108 +#define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 +#define TS_R_RESPONSE_SETUP_ERROR 121 +#define TS_R_SIGNATURE_FAILURE 109 +#define TS_R_THERE_MUST_BE_ONE_SIGNER 110 +#define TS_R_TIME_SYSCALL_ERROR 122 +#define TS_R_TOKEN_NOT_PRESENT 130 +#define TS_R_TOKEN_PRESENT 131 +#define TS_R_TSA_NAME_MISMATCH 111 +#define TS_R_TSA_UNTRUSTED 112 +#define TS_R_TST_INFO_SETUP_ERROR 123 +#define TS_R_TS_DATASIGN 124 +#define TS_R_UNACCEPTABLE_POLICY 125 +#define TS_R_UNSUPPORTED_MD_ALGORITHM 126 +#define TS_R_UNSUPPORTED_VERSION 113 +#define TS_R_VAR_BAD_VALUE 135 +#define TS_R_VAR_LOOKUP_FAILURE 136 +#define TS_R_WRONG_CONTENT_TYPE 114 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/txt_db.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/txt_db.h new file mode 100644 index 0000000..64e9d4c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/txt_db.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2017 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_TXT_DB_H +#define OPENSSL_TXT_DB_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TXT_DB_H +#endif + +#include +#include +#include +#include + +#define DB_ERROR_OK 0 +#define DB_ERROR_MALLOC 1 +#define DB_ERROR_INDEX_CLASH 2 +#define DB_ERROR_INDEX_OUT_OF_RANGE 3 +#define DB_ERROR_NO_INDEX 4 +#define DB_ERROR_INSERT_INDEX_CLASH 5 +#define DB_ERROR_WRONG_NUM_FIELDS 6 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OPENSSL_STRING *OPENSSL_PSTRING; +DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING) + +typedef struct txt_db_st { + int num_fields; + STACK_OF(OPENSSL_PSTRING) *data; + LHASH_OF(OPENSSL_STRING) **index; + int (**qual)(OPENSSL_STRING *); + long error; + long arg1; + long arg2; + OPENSSL_STRING *arg_row; +} TXT_DB; + +TXT_DB *TXT_DB_read(BIO *in, int num); +long TXT_DB_write(BIO *out, TXT_DB *db); +int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(OPENSSL_STRING *), + OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC cmp); +void TXT_DB_free(TXT_DB *db); +OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, + OPENSSL_STRING *value); +int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/types.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/types.h new file mode 100644 index 0000000..f9c4373 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/types.h @@ -0,0 +1,250 @@ +/* + * Copyright 2001-2026 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 + */ + +/* + * Unfortunate workaround to avoid symbol conflict with wincrypt.h + * See https://github.com/openssl/openssl/issues/9981 + */ +#ifdef _WIN32 +#define WINCRYPT_USE_SYMBOL_PREFIX +#undef X509_NAME +#undef X509_EXTENSIONS +#undef PKCS7_SIGNER_INFO +#undef OCSP_REQUEST +#undef OCSP_RESPONSE +#endif + +#ifndef OPENSSL_TYPES_H +#define OPENSSL_TYPES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#if OPENSSL_VERSION_MAJOR >= 4 +#define OSSL_FUTURE_CONST const +#else +#define OSSL_FUTURE_CONST +#endif + +typedef struct ossl_provider_st OSSL_PROVIDER; /* Provider Object */ + +#ifdef NO_ASN1_TYPEDEFS +#define ASN1_INTEGER ASN1_STRING +#define ASN1_ENUMERATED ASN1_STRING +#define ASN1_BIT_STRING ASN1_STRING +#define ASN1_OCTET_STRING ASN1_STRING +#define ASN1_PRINTABLESTRING ASN1_STRING +#define ASN1_T61STRING ASN1_STRING +#define ASN1_IA5STRING ASN1_STRING +#define ASN1_UTCTIME ASN1_STRING +#define ASN1_GENERALIZEDTIME ASN1_STRING +#define ASN1_TIME ASN1_STRING +#define ASN1_GENERALSTRING ASN1_STRING +#define ASN1_UNIVERSALSTRING ASN1_STRING +#define ASN1_BMPSTRING ASN1_STRING +#define ASN1_VISIBLESTRING ASN1_STRING +#define ASN1_UTF8STRING ASN1_STRING +#define ASN1_BOOLEAN int +#define ASN1_NULL int +#else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +#endif + +typedef struct asn1_type_st ASN1_TYPE; +typedef struct asn1_object_st ASN1_OBJECT; +typedef struct asn1_string_table_st ASN1_STRING_TABLE; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +#ifdef BIGNUM +#undef BIGNUM +#endif + +typedef struct bio_st BIO; +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +STACK_OF(BIGNUM); +STACK_OF(BIGNUM_const); + +typedef struct err_state_st ERR_STATE; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_md_st EVP_MD; +typedef struct evp_md_ctx_st EVP_MD_CTX; +typedef struct evp_mac_st EVP_MAC; +typedef struct evp_mac_ctx_st EVP_MAC_CTX; +typedef struct evp_pkey_st EVP_PKEY; +typedef struct evp_skey_st EVP_SKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct evp_keymgmt_st EVP_KEYMGMT; + +typedef struct evp_kdf_st EVP_KDF; +typedef struct evp_kdf_ctx_st EVP_KDF_CTX; + +typedef struct evp_rand_st EVP_RAND; +typedef struct evp_rand_ctx_st EVP_RAND_CTX; + +typedef struct evp_keyexch_st EVP_KEYEXCH; + +typedef struct evp_signature_st EVP_SIGNATURE; + +typedef struct evp_skeymgmt_st EVP_SKEYMGMT; + +typedef struct evp_asym_cipher_st EVP_ASYM_CIPHER; + +typedef struct evp_kem_st EVP_KEM; + +typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +#endif + +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; +typedef struct rsa_oaep_params_st RSA_OAEP_PARAMS; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; +#endif + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; +typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ossl_http_req_ctx_st OSSL_HTTP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +typedef struct ossl_lib_ctx_st OSSL_LIB_CTX; + +typedef struct ossl_dispatch_st OSSL_DISPATCH; +typedef struct ossl_item_st OSSL_ITEM; +typedef struct ossl_algorithm_st OSSL_ALGORITHM; +typedef struct ossl_param_st OSSL_PARAM; +typedef struct ossl_param_bld_st OSSL_PARAM_BLD; + +typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata); + +typedef struct ossl_encoder_st OSSL_ENCODER; +typedef struct ossl_encoder_ctx_st OSSL_ENCODER_CTX; +typedef struct ossl_decoder_st OSSL_DECODER; +typedef struct ossl_decoder_ctx_st OSSL_DECODER_CTX; + +typedef struct ossl_self_test_st OSSL_SELF_TEST; + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_TYPES_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ui.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ui.h new file mode 100644 index 0000000..59331da --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/ui.h @@ -0,0 +1,409 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ui.h.in + * + * Copyright 2001-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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_UI_H +#define OPENSSL_UI_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_UI_H +#endif + +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#include +#include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifdef OPENSSL_NO_UI_CONSOLE +#define OPENSSL_NO_UI +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +#define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +#define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * + */ +#define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. + * phrase_desc is a textual short description of the phrase to enter, + * for example "pass phrase", and + * object_name is the name of the object + * (which might be a card name or a file name) or NULL. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {phrase_desc} for {object_name}:" + * + * So, if phrase_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" + */ +char *UI_construct_prompt(UI *ui_method, + const char *phrase_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)(void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +#define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +#define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +#define UI_set_app_data(s, arg) UI_set_ex_data(s, 0, arg) +#define UI_get_app_data(s) UI_get_ex_data(s, 0) + +#define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(const UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +#ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +#endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) +#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) +#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) +#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) +#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) +#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) +#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) +#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_freefunc_type(freefunc)) +#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) +#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) +#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) +#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener)(UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer)(UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader)(UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator)(UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor)(UI *ui, + const char + *phrase_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method))(UI *); +int (*UI_method_get_writer(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method))(UI *); +int (*UI_method_get_reader(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method))(UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method))(UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method))(UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method))(UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/uierr.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/uierr.h new file mode 100644 index 0000000..5201b03 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/uierr.h @@ -0,0 +1,36 @@ +/* + * 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_UIERR_H +#define OPENSSL_UIERR_H +#pragma once + +#include +#include +#include + +/* + * UI reason codes. + */ +#define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104 +#define UI_R_INDEX_TOO_LARGE 102 +#define UI_R_INDEX_TOO_SMALL 103 +#define UI_R_NO_RESULT_BUFFER 105 +#define UI_R_PROCESSING_ERROR 107 +#define UI_R_RESULT_TOO_LARGE 100 +#define UI_R_RESULT_TOO_SMALL 101 +#define UI_R_SYSASSIGN_ERROR 109 +#define UI_R_SYSDASSGN_ERROR 110 +#define UI_R_SYSQIOW_ERROR 111 +#define UI_R_UNKNOWN_CONTROL_COMMAND 106 +#define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE 108 +#define UI_R_USER_DATA_DUPLICATION_UNSUPPORTED 112 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/whrlpool.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/whrlpool.h new file mode 100644 index 0000000..cff9134 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/whrlpool.h @@ -0,0 +1,62 @@ +/* + * Copyright 2005-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_WHRLPOOL_H +#define OPENSSL_WHRLPOOL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_WHRLPOOL_H +#endif + +#include + +#ifndef OPENSSL_NO_WHIRLPOOL +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define WHIRLPOOL_DIGEST_LENGTH (512 / 8) + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define WHIRLPOOL_BBLOCK 512 +#define WHIRLPOOL_COUNTER (256 / 8) + +typedef struct { + union { + unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; + /* double q is here to ensure 64-bit alignment */ + double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)]; + } H; + unsigned char data[WHIRLPOOL_BBLOCK / 8]; + unsigned int bitoff; + size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)]; +} WHIRLPOOL_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, + const void *inp, size_t bytes); +OSSL_DEPRECATEDIN_3_0 void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, + const void *inp, size_t bits); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *WHIRLPOOL(const void *inp, size_t bytes, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509.h new file mode 100644 index 0000000..7009129 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509.h @@ -0,0 +1,1302 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/x509.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_H +#define OPENSSL_X509_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_H +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Needed stacks for types defined in other headers */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) +#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) +#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) +#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) +#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) +#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) +#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_freefunc_type(freefunc)) +#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) +#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) +#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) +#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) +#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) +#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) +#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) +#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) +#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) +#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) +#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) +#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) +#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) +#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) +#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) +#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk), ossl_check_X509_freefunc_type(freefunc)) +#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) +#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) +#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) +#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) +#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) +#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) +#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) +#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) +#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) +#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) +#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) +#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) +#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) +#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_freefunc_type(freefunc)) +#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) +#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) +#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) +#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) +#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) +#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) +#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) +#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) +#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) +#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) +#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_freefunc_type(freefunc)) +#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) +#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) +#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) +#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) + +/* clang-format on */ + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +#define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +#define X509_SIG_INFO_TLS 0x2 + +#define X509_FILETYPE_PEM 1 +#define X509_FILETYPE_ASN1 2 +#define X509_FILETYPE_DEFAULT 3 + +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +#define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +#define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +#define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +#define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +#define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +#define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +#define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +#define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +#define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +#ifndef OPENSSL_NO_DEPRECATED_3_4 +#define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +#endif + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) +#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) +#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) +#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) +#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) +#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) +#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) +#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) +#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) +#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) +#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_EX_V_NETSCAPE_HACK 0x8000 +#define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) +#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) +#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) +#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) +#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) +#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) +#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) +#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_freefunc_type(freefunc)) +#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) +#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) +#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) +#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; +typedef struct x509_attributes_st X509_ATTRIBUTE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) +#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) +#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) +#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) +#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) +#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) +#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) +#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) +#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) +#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) +#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) +#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct X509_req_info_st X509_REQ_INFO; +typedef struct X509_req_st X509_REQ; +typedef struct x509_cert_aux_st X509_CERT_AUX; +typedef struct x509_cinf_st X509_CINF; + +/* Flags for X509_print_ex() */ + +#define X509_FLAG_COMPAT 0 +#define X509_FLAG_NO_HEADER 1L +#define X509_FLAG_NO_VERSION (1L << 1) +#define X509_FLAG_NO_SERIAL (1L << 2) +#define X509_FLAG_NO_SIGNAME (1L << 3) +#define X509_FLAG_NO_ISSUER (1L << 4) +#define X509_FLAG_NO_VALIDITY (1L << 5) +#define X509_FLAG_NO_SUBJECT (1L << 6) +#define X509_FLAG_NO_PUBKEY (1L << 7) +#define X509_FLAG_NO_EXTENSIONS (1L << 8) +#define X509_FLAG_NO_SIGDUMP (1L << 9) +#define X509_FLAG_NO_AUX (1L << 10) +#define X509_FLAG_NO_ATTRIBUTES (1L << 11) +#define X509_FLAG_NO_IDS (1L << 12) +#define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +#define XN_FLAG_SEP_MASK (0xf << 16) + +#define XN_FLAG_COMPAT 0 /* Traditional; use old X509_NAME_print */ +#define XN_FLAG_SEP_COMMA_PLUS (1 << 16) /* RFC2253 ,+ */ +#define XN_FLAG_SEP_CPLUS_SPC (2 << 16) /* ,+ spaced: more readable */ +#define XN_FLAG_SEP_SPLUS_SPC (3 << 16) /* ;+ spaced */ +#define XN_FLAG_SEP_MULTILINE (4 << 16) /* One line per field */ + +#define XN_FLAG_DN_REV (1 << 20) /* Reverse DN order */ + +/* How the field name is shown */ + +#define XN_FLAG_FN_MASK (0x3 << 21) + +#define XN_FLAG_FN_SN 0 /* Object short name */ +#define XN_FLAG_FN_LN (1 << 21) /* Object long name */ +#define XN_FLAG_FN_OID (2 << 21) /* Always use OIDs */ +#define XN_FLAG_FN_NONE (3 << 21) /* No field names */ + +#define XN_FLAG_SPC_EQ (1 << 23) /* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +#define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +#define XN_FLAG_FN_ALIGN (1 << 25) /* Align field names to 20 \ + * characters */ + +/* Complete set of RFC2253 flags */ + +#define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | XN_FLAG_FN_SN | XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +#define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_SPC_EQ | XN_FLAG_FN_SN) + +/* readable multiline form */ + +#define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | XN_FLAG_SEP_MULTILINE | XN_FLAG_SPC_EQ | XN_FLAG_FN_LN | XN_FLAG_FN_ALIGN) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) +#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) +#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) +#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) +#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) +#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) +#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) +#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_freefunc_type(freefunc)) +#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) +#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) +#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) +#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { + /* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define X509_EXT_PACK_UNKNOWN 1 +#define X509_EXT_PACK_STRING 2 + +#define X509_extract_key(x) X509_get_pubkey(x) /*****/ +#define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +#define X509_name_cmp(a, b) X509_NAME_cmp((a), (b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init)(X509_CRL *crl), + int (*crl_free)(X509_CRL *crl), + int (*crl_lookup)(X509_CRL *crl, + X509_REVOKED **ret, + const ASN1_INTEGER *serial, + const X509_NAME *issuer), + int (*crl_verify)(X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); +int X509_self_signed(X509 *cert, int verify_signature); + +int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, + const char *propq); +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, + EVP_MD **md_used, int *md_is_fallback); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ +#define X509_http_nbio(rctx, pcert) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) +#define X509_CRL_http_nbio(rctx, pcrl) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) +#endif + +#ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, const X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +#endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, const X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +DECLARE_ASN1_DUP_FUNCTION(X509) +DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) +DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) +DECLARE_ASN1_DUP_FUNCTION(X509_CRL) +DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) +DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) +DECLARE_ASN1_DUP_FUNCTION(X509_REQ) +DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +DECLARE_ASN1_DUP_FUNCTION(X509_NAME) +DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, + const ASN1_TIME *start, const ASN1_TIME *end); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) +EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, + OSSL_LIB_CTX *libctx, const char *propq); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSA_PUBKEY) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DSA, DSA_PUBKEY) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) +#endif +#endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) +X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) +DECLARE_ASN1_FUNCTIONS(X509) +X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(const X509 *r, int idx); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509, X509_AUX) + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); +void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *x); + +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) +X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, const ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); +OSSL_DEPRECATEDIN_3_0 +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey, + const EVP_MD *type); +#endif +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); +int ASN1_item_verify(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey); +int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_MD_CTX *ctx); +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey, const EVP_MD *md); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, EVP_MD_CTX *ctx); + +#define X509_VERSION_1 0 +#define X509_VERSION_2 1 +#define X509_VERSION_3 2 + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME *X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_get_notBefore X509_getm_notBefore +#define X509_get_notAfter X509_getm_notAfter +#define X509_set_notBefore X509_set1_notBefore +#define X509_set_notAfter X509_set1_notAfter +#endif + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); + +#define X509_REQ_VERSION_1 0 + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, const X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, + const STACK_OF(X509_EXTENSION) *exts, int nid); +int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +#define X509_CRL_VERSION_1 0 +#define X509_CRL_VERSION_2 1 + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, const X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +#define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); +#endif +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +const X509_ALGOR *X509_CRL_get0_tbs_sigalg(const X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +#ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +#endif + +#define X509_ADD_FLAG_DEFAULT 0 +#define X509_ADD_FLAG_UP_REF 0x1 +#define X509_ADD_FLAG_PREPEND 0x2 +#define X509_ADD_FLAG_NO_DUP 0x4 +#define X509_ADD_FLAG_NO_SS 0x8 +int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); +int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) +OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, + const EVP_PKEY *pubkey); +#endif +unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, + const char *propq, int *ok); +unsigned long X509_NAME_hash_old(const X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +#ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +#endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, + char *buf, int len); +int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(const X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, + const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, + int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, + const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, + const ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); +int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); +X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid, + OSSL_LIB_CTX *libctx); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); +X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen, + OSSL_LIB_CTX *libctx); + +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); +int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, + int type, const unsigned char *bytes, int len); + +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, const X509_PUBKEY *pub); +int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509_acert.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509_acert.h new file mode 100644 index 0000000..298c3c3 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509_acert.h @@ -0,0 +1,304 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_ACERT_H +#define OPENSSL_X509_ACERT_H +#pragma once + +#include +#include +#include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +#ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +#endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +#define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO *X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +#define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +#define OSSL_IETFAS_OCTETS 0 +#define OSSL_IETFAS_OID 1 +#define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +#define OSSL_TGT_TARGET_NAME 0 +#define OSSL_TGT_TARGET_GROUP 1 +#define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + +/* clang-format on */ + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509_vfy.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509_vfy.h new file mode 100644 index 0000000..e7fdda9 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509_vfy.h @@ -0,0 +1,922 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/x509_vfy.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_VFY_H +#define OPENSSL_X509_VFY_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_VFY_H +#endif + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +#ifndef OPENSSL_X509_H +#include +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +DEFINE_STACK_OF(OCSP_RESPONSE) + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, + X509_LU_CRL +} X509_LOOKUP_TYPE; + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) +#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) +#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) +#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) +#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) +#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) +#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) +#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_freefunc_type(freefunc)) +#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) +#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) +#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) +#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) +#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) +#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) +#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) +#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) +#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) +#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_freefunc_type(freefunc)) +#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) +#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) +#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) +#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) +#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) +#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) +#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) +#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) +#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) +#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) +#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) +#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) +#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) +#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) +#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) + +/* clang-format on */ + +/* This is used for a table of trust checking functions */ +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust)(struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) +#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) +#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) +#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) +#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) +#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) +#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) +#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_freefunc_type(freefunc)) +#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) +#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) +#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) +#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) + +/* clang-format on */ + +/* standard trust ids */ +#define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ +#define X509_TRUST_COMPAT 1 +#define X509_TRUST_SSL_CLIENT 2 +#define X509_TRUST_SSL_SERVER 3 +#define X509_TRUST_EMAIL 4 +#define X509_TRUST_OBJECT_SIGN 5 +#define X509_TRUST_OCSP_SIGN 6 +#define X509_TRUST_OCSP_REQUEST 7 +#define X509_TRUST_TSA 8 +/* Keep these up to date! */ +#define X509_TRUST_MIN 1 +#define X509_TRUST_MAX 8 + +/* trust_flags values */ +#define X509_TRUST_DYNAMIC (1U << 0) +#define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +#define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +#define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard rejection OID and as a wildcard trust OID */ +#define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ +#define X509_TRUST_TRUSTED 1 +#define X509_TRUST_REJECTED 2 +#define X509_TRUST_UNTRUSTED 3 + +int X509_TRUST_set(int *t, int trust); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +int X509_trusted(const X509 *x); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +int (*X509_TRUST_set_default(int (*trust)(int, X509 *, int)))(int, X509 *, + int); +int X509_check_trust(X509 *x, int id, int flags); + +int X509_verify_cert(X509_STORE_CTX *ctx); +int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, + X509_STORE *store, int with_self_signed, + OSSL_LIB_CTX *libctx, const char *propq); + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) + *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef STACK_OF(X509_CRL) + *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +#define X509_STORE_CTX_set_app_data(ctx, data) \ + X509_STORE_CTX_set_ex_data(ctx, 0, data) +#define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx, 0) + +#define X509_L_FILE_LOAD 1 +#define X509_L_ADD_DIR 2 +#define X509_L_ADD_STORE 3 +#define X509_L_LOAD_STORE 4 + +#define X509_LOOKUP_load_file(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_FILE_LOAD, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_dir(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_DIR, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_LOAD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_V_OK 0 +#define X509_V_ERR_UNSPECIFIED 1 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +#define X509_V_ERR_UNABLE_TO_GET_CRL 3 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +#define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +#define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +#define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +#define X509_V_ERR_CERT_NOT_YET_VALID 9 +#define X509_V_ERR_CERT_HAS_EXPIRED 10 +#define X509_V_ERR_CRL_NOT_YET_VALID 11 +#define X509_V_ERR_CRL_HAS_EXPIRED 12 +#define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +#define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +#define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +#define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +#define X509_V_ERR_OUT_OF_MEM 17 +#define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +#define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +#define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +#define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +#define X509_V_ERR_CERT_REVOKED 23 +#define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 24 +#define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +#define X509_V_ERR_INVALID_PURPOSE 26 +#define X509_V_ERR_CERT_UNTRUSTED 27 +#define X509_V_ERR_CERT_REJECTED 28 + +/* These are 'informational' when looking for issuer cert */ +#define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +#define X509_V_ERR_AKID_SKID_MISMATCH 30 +#define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +#define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +#define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +#define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +#define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +#define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +#define X509_V_ERR_INVALID_NON_CA 37 +#define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +#define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +#define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +#define X509_V_ERR_INVALID_EXTENSION 41 +#define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +#define X509_V_ERR_NO_EXPLICIT_POLICY 43 +#define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +#define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +#define X509_V_ERR_UNNESTED_RESOURCE 46 +#define X509_V_ERR_PERMITTED_VIOLATION 47 +#define X509_V_ERR_EXCLUDED_VIOLATION 48 +#define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +#define X509_V_ERR_APPLICATION_VERIFICATION 50 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +#define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +#define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +#define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +#define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +#define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +#define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +#define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +#define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +#define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +#define X509_V_ERR_HOSTNAME_MISMATCH 62 +#define X509_V_ERR_EMAIL_MISMATCH 63 +#define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +#define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +#define X509_V_ERR_EE_KEY_TOO_SMALL 66 +#define X509_V_ERR_CA_KEY_TOO_SMALL 67 +#define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +#define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +#define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +#define X509_V_ERR_NO_VALID_SCTS 71 + +#define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +#define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +#define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +#define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ + +#define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 76 +#define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 + +/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ +#define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 +#define X509_V_ERR_INVALID_CA 79 +#define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 +#define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 +#define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 +#define X509_V_ERR_ISSUER_NAME_EMPTY 83 +#define X509_V_ERR_SUBJECT_NAME_EMPTY 84 +#define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 +#define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 +#define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 +#define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 +#define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 +#define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 +#define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 +#define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 +#define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 +#define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +#define X509_V_ERR_RPK_UNTRUSTED 95 + +/* additional OCSP status errors */ +#define X509_V_ERR_OCSP_RESP_INVALID 96 +#define X509_V_ERR_OCSP_SIGNATURE_FAILURE 97 +#define X509_V_ERR_OCSP_NOT_YET_VALID 98 +#define X509_V_ERR_OCSP_HAS_EXPIRED 99 +#define X509_V_ERR_OCSP_NO_RESPONSE 100 +#define X509_V_ERR_CRL_VERIFY_FAILED 101 + +/* Certificate verify flags */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +#endif +/* Use check time instead of current time */ +#define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +#define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +#define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +#define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +#define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +#define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +#define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +#define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +#define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +#define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +#define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +#define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +#define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +#define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +#define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +#define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +#define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +#define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +#define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +/* Verify OCSP stapling response for server certificate */ +#define X509_V_FLAG_OCSP_RESP_CHECK 0x400000 +/* Verify OCSP stapling responses for whole chain */ +#define X509_V_FLAG_OCSP_RESP_CHECK_ALL 0x800000 + +#define X509_VP_FLAG_DEFAULT 0x1 +#define X509_VP_FLAG_OVERWRITE 0x2 +#define X509_VP_FLAG_RESET_FLAGS 0x4 +#define X509_VP_FLAG_LOCKED 0x8 +#define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +#define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, + const X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, + const X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); + +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx), (func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, + X509_STORE_CTX_verify_cb verify_cb); +#define X509_STORE_set_verify_cb_func(ctx, func) \ + X509_STORE_set_verify_cb((ctx), (func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn +X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, + X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY *rpk); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(const X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +#define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +#define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +#define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +#define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +#define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +#define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +#define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); +X509_LOOKUP_METHOD *X509_LOOKUP_store(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_ctrl_ex_fn)( + X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, + OSSL_LIB_CTX *libctx, const char *propq); + +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, + const char *propq); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char *bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn)(X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret, OSSL_LIB_CTX *libctx, const char *propq); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); + +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(const X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); +#ifndef OPENSSL_NO_OCSP +void X509_STORE_CTX_set_ocsp_resp(X509_STORE_CTX *ctx, STACK_OF(OCSP_RESPONSE) *sk); +#endif +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_policies(const X509_POLICY_TREE *tree); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_user_policies(const X509_POLICY_TREE *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(const X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) +*X509_policy_node_get0_qualifiers(const X509_POLICY_NODE *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509err.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509err.h new file mode 100644 index 0000000..7123a72 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509err.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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_X509ERR_H +#define OPENSSL_X509ERR_H +#pragma once + +#include +#include +#include + +/* + * X509 reason codes. + */ +#define X509_R_AKID_MISMATCH 110 +#define X509_R_BAD_SELECTOR 133 +#define X509_R_BAD_X509_FILETYPE 100 +#define X509_R_BASE64_DECODE_ERROR 118 +#define X509_R_CANT_CHECK_DH_KEY 114 +#define X509_R_CERTIFICATE_VERIFICATION_FAILED 139 +#define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +#define X509_R_CRL_ALREADY_DELTA 127 +#define X509_R_CRL_VERIFY_FAILURE 131 +#define X509_R_DUPLICATE_ATTRIBUTE 140 +#define X509_R_ERROR_GETTING_MD_BY_NID 141 +#define X509_R_ERROR_USING_SIGINF_SET 142 +#define X509_R_IDP_MISMATCH 128 +#define X509_R_INVALID_ATTRIBUTES 138 +#define X509_R_INVALID_DIRECTORY 113 +#define X509_R_INVALID_DISTPOINT 143 +#define X509_R_INVALID_FIELD_NAME 119 +#define X509_R_INVALID_TRUST 123 +#define X509_R_ISSUER_MISMATCH 129 +#define X509_R_KEY_TYPE_MISMATCH 115 +#define X509_R_KEY_VALUES_MISMATCH 116 +#define X509_R_LOADING_CERT_DIR 103 +#define X509_R_LOADING_DEFAULTS 104 +#define X509_R_METHOD_NOT_SUPPORTED 124 +#define X509_R_NAME_TOO_LONG 134 +#define X509_R_NEWER_CRL_NOT_NEWER 132 +#define X509_R_NO_CERTIFICATE_FOUND 135 +#define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +#define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +#define X509_R_NO_CRL_FOUND 137 +#define X509_R_NO_CRL_NUMBER 130 +#define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +#define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +#define X509_R_SHOULD_RETRY 106 +#define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +#define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +#define X509_R_UNKNOWN_KEY_TYPE 117 +#define X509_R_UNKNOWN_NID 109 +#define X509_R_UNKNOWN_PURPOSE_ID 121 +#define X509_R_UNKNOWN_SIGID_ALGS 144 +#define X509_R_UNKNOWN_TRUST_ID 120 +#define X509_R_UNSUPPORTED_ALGORITHM 111 +#define X509_R_UNSUPPORTED_VERSION 145 +#define X509_R_WRONG_LOOKUP_TYPE 112 +#define X509_R_WRONG_TYPE 122 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509v3.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509v3.h new file mode 100644 index 0000000..fa8f10a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509v3.h @@ -0,0 +1,2013 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/x509v3.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509V3_H +#define OPENSSL_X509V3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509V3_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE)(void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D)(const void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; + /* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; + /* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; + /* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; + /* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; + /* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string)(void *db, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section)(void *db, const char *section); + void (*free_string)(void *db, char *string); + void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info for producing X509 v3 extensions*/ +struct v3_ext_ctx { +#define X509V3_CTX_TEST 0x1 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define CTX_TEST X509V3_CTX_TEST +#endif +#define X509V3_CTX_REPLACE 0x2 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; + EVP_PKEY *issuer_pkey; + /* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) +#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) +#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) +#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) +#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) +#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) +#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) +#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) +#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) +#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) +#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) +#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* ext_flags values */ +#define X509V3_EXT_DYNAMIC 0x1 +#define X509V3_EXT_CTX_DEP 0x2 +#define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +#define GEN_OTHERNAME 0 +#define GEN_EMAIL 1 +#define GEN_DNS 2 +#define GEN_X400 3 +#define GEN_DIRNAME 4 +#define GEN_EDIPARTY 5 +#define GEN_URI 6 +#define GEN_IPADD 7 +#define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_STRING *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) +#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) +#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) +#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) +#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) +#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) +#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) +#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) +#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) +#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) +#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) +#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) +#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) +#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) +#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) +#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_freefunc_type(freefunc)) +#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) +#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) +#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) +#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) +#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) +#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) +#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) +#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) +#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) +#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) +#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) +#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) +#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; + /* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) +/* All existing reasons */ +#define CRLDP_ALL_REASONS 0x807f + +#define CRL_REASON_NONE -1 +#define CRL_REASON_UNSPECIFIED 0 +#define CRL_REASON_KEY_COMPROMISE 1 +#define CRL_REASON_CA_COMPROMISE 2 +#define CRL_REASON_AFFILIATION_CHANGED 3 +#define CRL_REASON_SUPERSEDED 4 +#define CRL_REASON_CESSATION_OF_OPERATION 5 +#define CRL_REASON_CERTIFICATE_HOLD 6 +#define CRL_REASON_REMOVE_FROM_CRL 8 +#define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +#define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) +#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) +#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) +#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) +#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) +#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) +#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) +#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_freefunc_type(freefunc)) +#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) +#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) +#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) +#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) +#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) +#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) +#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) +#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) +#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) +#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) +#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_freefunc_type(freefunc)) +#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) +#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) +#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) +#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) +#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct ISSUER_SIGN_TOOL_st { + ASN1_UTF8STRING *signTool; + ASN1_UTF8STRING *cATool; + ASN1_UTF8STRING *signToolCert; + ASN1_UTF8STRING *cAToolCert; +} ISSUER_SIGN_TOOL; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) +#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) +#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) +#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) +#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) +#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) +#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) +#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) +#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) +#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) +#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) +#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) +#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) +#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) +#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) +#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) +#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_freefunc_type(freefunc)) +#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) +#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) +#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) +#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) +#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) +#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) +#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) +#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) +#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) +#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) +#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) +#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) +#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) +#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) +#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) +#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) +#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) +#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) +#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) +#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) +#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) +#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) +#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) +#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) + +/* clang-format on */ + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +#define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +#define IDP_INVALID 0x2 +/* onlyuser true */ +#define IDP_ONLYUSER 0x4 +/* onlyCA true */ +#define IDP_ONLYCA 0x8 +/* onlyattr true */ +#define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +#define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +#define IDP_REASONS 0x40 + +#define X509V3_conf_err(val) ERR_add_error_data(6, \ + "section:", (val)->section, \ + ",name:", (val)->name, ",value:", (val)->value) + +#define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, X509V3_CTX_TEST) +#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0, 0, 0, 0, \ + 0, 0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table } + +#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0, 0, 0, 0, \ + NULL } + +#define EXT_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ + 0, 0, 0, 0, \ + NULL } + +/* clang-format off */ +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +/* clang-format on */ + +/* X509_PURPOSE stuff */ + +#define EXFLAG_BCONS 0x1 +#define EXFLAG_KUSAGE 0x2 +#define EXFLAG_XKUSAGE 0x4 +#define EXFLAG_NSCERT 0x8 + +#define EXFLAG_CA 0x10 +#define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ +#define EXFLAG_V1 0x40 +#define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +#define EXFLAG_SET 0x100 +#define EXFLAG_CRITICAL 0x200 +#define EXFLAG_PROXY 0x400 + +#define EXFLAG_INVALID_POLICY 0x800 +#define EXFLAG_FRESHEST 0x1000 +#define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +#define EXFLAG_BCONS_CRITICAL 0x10000 +#define EXFLAG_AKID_CRITICAL 0x20000 +#define EXFLAG_SKID_CRITICAL 0x40000 +#define EXFLAG_SAN_CRITICAL 0x80000 +#define EXFLAG_NO_FINGERPRINT 0x100000 + +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +#define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +#define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +#define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +#define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +#define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +#define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +#define KU_CRL_SIGN X509v3_KU_CRL_SIGN +#define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +#define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY + +#define NS_SSL_CLIENT 0x80 +#define NS_SSL_SERVER 0x40 +#define NS_SMIME 0x20 +#define NS_OBJSIGN 0x10 +#define NS_SSL_CA 0x04 +#define NS_SMIME_CA 0x02 +#define NS_OBJSIGN_CA 0x01 +#define NS_ANY_CA (NS_SSL_CA | NS_SMIME_CA | NS_OBJSIGN_CA) + +#define XKU_SSL_SERVER 0x1 +#define XKU_SSL_CLIENT 0x2 +#define XKU_SMIME 0x4 +#define XKU_CODE_SIGN 0x8 +#define XKU_SGC 0x10 /* Netscape or MS Server-Gated Crypto */ +#define XKU_OCSP_SIGN 0x20 +#define XKU_TIMESTAMP 0x40 +#define XKU_DVCS 0x80 +#define XKU_ANYEKU 0x100 + +#define X509_PURPOSE_DYNAMIC 0x1 +#define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose)(const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) +#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) +#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) +#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) +#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) +#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) +#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) +#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_freefunc_type(freefunc)) +#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) +#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) +#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) +#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_PURPOSE_DEFAULT_ANY 0 +#define X509_PURPOSE_SSL_CLIENT 1 +#define X509_PURPOSE_SSL_SERVER 2 +#define X509_PURPOSE_NS_SSL_SERVER 3 +#define X509_PURPOSE_SMIME_SIGN 4 +#define X509_PURPOSE_SMIME_ENCRYPT 5 +#define X509_PURPOSE_CRL_SIGN 6 +#define X509_PURPOSE_ANY 7 +#define X509_PURPOSE_OCSP_HELPER 8 +#define X509_PURPOSE_TIMESTAMP_SIGN 9 +#define X509_PURPOSE_CODE_SIGN 10 + +#define X509_PURPOSE_MIN 1 +#define X509_PURPOSE_MAX 10 + +/* Flags for X509V3_EXT_print() */ + +#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +#define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +#define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +#define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +#define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +#define X509V3_ADD_OP_MASK 0xfL +#define X509V3_ADD_DEFAULT 0L +#define X509V3_ADD_APPEND 1L +#define X509V3_ADD_REPLACE 2L +#define X509V3_ADD_REPLACE_EXISTING 3L +#define X509V3_ADD_KEEP_EXISTING 4L +#define X509V3_ADD_DELETE 5L +#define X509V3_ADD_SILENT 0x10 + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); +char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); +ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, const X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); +int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, + const char *value, int is_nc); + +#ifdef OPENSSL_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); + +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +#endif + +char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); +/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ +int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* The new declarations are in crypto.h, but the old ones were here. */ +#define hex_to_string OPENSSL_buf2hexstr +#define string_to_hex OPENSSL_hexstr2buf +#endif + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck)(const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +int X509_PURPOSE_set(int *p, int purpose); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +#define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +#define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +#define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +#define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +#define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +#define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +#define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) +#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) +#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) +#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) +#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) +#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) +#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) +#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) +#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) +#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) +#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) +#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) + +/* clang-format on */ + +#ifndef OPENSSL_NO_RFC3779 +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +#define ASIdOrRange_id 0 +#define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) +#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) +#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) +#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) +#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) +#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) +#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) +#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_freefunc_type(freefunc)) +#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) +#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) +#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) +#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; + +#define ASIdentifierChoice_inherit 0 +#define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +#define IPAddressOrRange_addressPrefix 0 +#define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) +#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) +#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) +#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) +#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) +#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) +#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) +#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_freefunc_type(freefunc)) +#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) +#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) +#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) +#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; + +#define IPAddressChoice_inherit 0 +#define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) +#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) +#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) +#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) +#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) +#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) +#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) +#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_freefunc_type(freefunc)) +#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) +#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) +#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) +#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +#define V3_ASID_ASNUM 0 +#define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +#define IANA_AFI_IPV4 1 +#define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) +#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) +#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) +#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) +#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) +#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_freefunc_type(freefunc)) +#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) +#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) +#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) +#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) +#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) +#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) +#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) +#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) +#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) +#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) +#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) +#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) +#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) +#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) +#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) +#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) +#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) +#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) +#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) +#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) +#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_freefunc_type(freefunc)) +#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) +#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) +#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) +#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT *namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING *namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING *namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +#define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +#define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +#define OSSL_NAMED_DAY_TYPE_INT 0 +#define OSSL_NAMED_DAY_TYPE_BIT 1 +#define OSSL_NAMED_DAY_INT_SUN 1 +#define OSSL_NAMED_DAY_INT_MON 2 +#define OSSL_NAMED_DAY_INT_TUE 3 +#define OSSL_NAMED_DAY_INT_WED 4 +#define OSSL_NAMED_DAY_INT_THU 5 +#define OSSL_NAMED_DAY_INT_FRI 6 +#define OSSL_NAMED_DAY_INT_SAT 7 +#define OSSL_NAMED_DAY_BIT_SUN 0 +#define OSSL_NAMED_DAY_BIT_MON 1 +#define OSSL_NAMED_DAY_BIT_TUE 2 +#define OSSL_NAMED_DAY_BIT_WED 3 +#define OSSL_NAMED_DAY_BIT_THU 4 +#define OSSL_NAMED_DAY_BIT_FRI 5 +#define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +#define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +#define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +#define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +#define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +#define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +#define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +#define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +#define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +#define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +#define OSSL_TIME_SPEC_DAY_BIT_MON 1 +#define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +#define OSSL_TIME_SPEC_DAY_BIT_WED 3 +#define OSSL_TIME_SPEC_DAY_BIT_THU 4 +#define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +#define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +#define OSSL_TIME_SPEC_DAY_INT_SUN 1 +#define OSSL_TIME_SPEC_DAY_INT_MON 2 +#define OSSL_TIME_SPEC_DAY_INT_TUE 3 +#define OSSL_TIME_SPEC_DAY_INT_WED 4 +#define OSSL_TIME_SPEC_DAY_INT_THU 5 +#define OSSL_TIME_SPEC_DAY_INT_FRI 6 +#define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +#define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +#define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +#define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +#define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +#define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +#define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +#define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +#define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +#define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +#define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +#define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +#define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +#define OSSL_TIME_SPEC_INT_MONTH_APR 4 +#define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +#define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +#define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +#define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +#define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +#define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +#define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +#define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +#define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +#define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +#define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +#define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +#define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +#define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +#define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +#define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +#define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +#define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +#define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +#define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +#define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +#define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + +/* clang-format on */ + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +#define OSSL_ATTR_MAP_TYPE 0 +#define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +#define OSSL_AAA_ATTRIBUTE_TYPE 0 +#define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509v3err.h b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509v3err.h new file mode 100644 index 0000000..19f9386 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64-simulator/Headers/openssl/x509v3err.h @@ -0,0 +1,95 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_X509V3ERR_H +#define OPENSSL_X509V3ERR_H +#pragma once + +#include +#include +#include + +/* + * X509V3 reason codes. + */ +#define X509V3_R_BAD_IP_ADDRESS 118 +#define X509V3_R_BAD_OBJECT 119 +#define X509V3_R_BAD_OPTION 170 +#define X509V3_R_BAD_VALUE 171 +#define X509V3_R_BN_DEC2BN_ERROR 100 +#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 +#define X509V3_R_DIRNAME_ERROR 149 +#define X509V3_R_DISTPOINT_ALREADY_SET 160 +#define X509V3_R_DUPLICATE_ZONE_ID 133 +#define X509V3_R_EMPTY_KEY_USAGE 169 +#define X509V3_R_ERROR_CONVERTING_ZONE 131 +#define X509V3_R_ERROR_CREATING_EXTENSION 144 +#define X509V3_R_ERROR_IN_EXTENSION 128 +#define X509V3_R_EXPECTED_A_SECTION_NAME 137 +#define X509V3_R_EXTENSION_EXISTS 145 +#define X509V3_R_EXTENSION_NAME_ERROR 115 +#define X509V3_R_EXTENSION_NOT_FOUND 102 +#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 +#define X509V3_R_EXTENSION_VALUE_ERROR 116 +#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151 +#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152 +#define X509V3_R_INVALID_ASNUMBER 162 +#define X509V3_R_INVALID_ASRANGE 163 +#define X509V3_R_INVALID_BOOLEAN_STRING 104 +#define X509V3_R_INVALID_CERTIFICATE 158 +#define X509V3_R_INVALID_EMPTY_NAME 108 +#define X509V3_R_INVALID_EXTENSION_STRING 105 +#define X509V3_R_INVALID_INHERITANCE 165 +#define X509V3_R_INVALID_IPADDRESS 166 +#define X509V3_R_INVALID_MULTIPLE_RDNS 161 +#define X509V3_R_INVALID_NAME 106 +#define X509V3_R_INVALID_NULL_ARGUMENT 107 +#define X509V3_R_INVALID_NULL_VALUE 109 +#define X509V3_R_INVALID_NUMBER 140 +#define X509V3_R_INVALID_NUMBERS 141 +#define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 +#define X509V3_R_INVALID_OPTION 138 +#define X509V3_R_INVALID_POLICY_IDENTIFIER 134 +#define X509V3_R_INVALID_PROXY_POLICY_SETTING 153 +#define X509V3_R_INVALID_PURPOSE 146 +#define X509V3_R_INVALID_SAFI 164 +#define X509V3_R_INVALID_SECTION 135 +#define X509V3_R_INVALID_SYNTAX 143 +#define X509V3_R_ISSUER_DECODE_ERROR 126 +#define X509V3_R_MISSING_VALUE 124 +#define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142 +#define X509V3_R_NEGATIVE_PATHLEN 168 +#define X509V3_R_NO_CONFIG_DATABASE 136 +#define X509V3_R_NO_ISSUER_CERTIFICATE 121 +#define X509V3_R_NO_ISSUER_DETAILS 127 +#define X509V3_R_NO_POLICY_IDENTIFIER 139 +#define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154 +#define X509V3_R_NO_PUBLIC_KEY 114 +#define X509V3_R_NO_SUBJECT_DETAILS 125 +#define X509V3_R_OPERATION_NOT_DEFINED 148 +#define X509V3_R_OTHERNAME_ERROR 147 +#define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 +#define X509V3_R_POLICY_PATH_LENGTH 156 +#define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157 +#define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 +#define X509V3_R_PURPOSE_NOT_UNIQUE 173 +#define X509V3_R_SECTION_NOT_FOUND 150 +#define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 +#define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 +#define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 +#define X509V3_R_UNKNOWN_EXTENSION 129 +#define X509V3_R_UNKNOWN_EXTENSION_NAME 130 +#define X509V3_R_UNKNOWN_OPTION 120 +#define X509V3_R_UNKNOWN_VALUE 172 +#define X509V3_R_UNSUPPORTED_OPTION 117 +#define X509V3_R_UNSUPPORTED_TYPE 167 +#define X509V3_R_USER_TOO_LONG 132 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64-simulator/libcrypto.a b/Frameworks/openssl.xcframework/watchos-arm64-simulator/libcrypto.a new file mode 100644 index 0000000000000000000000000000000000000000..91e67daca0bb2a3bf110820606b2be3b543806f5 GIT binary patch literal 7936392 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⩔Z1ykzFKd~ z6JNPd+gd!jMaxtCjj4R^{|bL&)=2YwKw&I{;n*IB;xx?POn?8EqrNO9K8QE)M?Gsv z%wA8j);D@$WP5$ieq?EBfNilCj>74<6nEkgJcqaNDQ@nf?ceg36gBCYzdTg^Ui-@t z(lf;B_VC_cK9inXW6_rs_~OZ;`n#l!4ssDA^~FZ1zapg_#^DrPj=S+3KE!m)9BA4p zjAe0iw65nH(Q*=R<8hu3y^EhPzqdZea>7A8=jrkJbve18p!-u=IeCGfFoWh>(tD_q zF-Uw=mk;Hn3|7HNOjbQyg5-iKIfLXDKE?|5&3dedU2!zd!!NwwFjJ6uFQOkd!~r-J zSKujpg?DG_b21Ne%L_a@OP_Pm-yvPb2lyI)W7gTGoF@ihG`7X=I1H!aJlvnd@*I-A z+{91#J-a?1Y-=yB8e1%b5x7Iwk87HPoW?sCk)ZEIift@y@g3ShTJUWj_ z_A;0JWHo(2W4VJ>`Q2?jY>nSn>G8UD1+iakbi?9U4WqF&_Q5e~T(1hUWsTmK(U(%p zCSHz8P4!^v2U{FTIq@j8A)m+hv1 ze{4j(4md)Wll|k$GJtq0F2$XA8gJtpl=WuZZ?&Bu+bUwc%jiP7E3qHe!h+FBz{EXPXdOZ^aR zPI`ZA$2{YS2NKV~Rh*wj8J>%R%dnUg zzmB)4pGJN*={z=rxD}KL+pbUFdF~H{x}g=;UVlodpC(cp)dX0>Hcn6 zF9q=$^R!nJFIN^fEJyxF=F@19F3+?;>42;GeAtWU@HJ+gV?KZ0$LjGSOMqnTYRrWt zFdUm=EDpiBxDK0Wdx?Mir3X&JHMo~@7x6Lv!PAtxjk&s+aWzTN^MtD*k{qYkE5U(s zT<2-|y<#fX8mQm1F3^~KmjpfknB^*~d+T|W{=V_2I{r+6B+pXkmy>K=4={FSeGkGZxImXz>uUkB4=>|$l)fh4xt95z zv?o@?)upT@_+X@*!?&2-&!m^d#y9{M;}LuvtmnhU>&h>53Ni5(z1|ofSzpfMGmNTi zEgfy^N_U)sZqy6H2G|p);#xd`PtmTb>DL=;VJxOrvzC}zb;T;w=#9zhyO_H20v+`| zmzH>71AWf=g^NtXWw;B^;S>CWc^aB}Wibk4aRkoB-FO4j(Y29jCkPv1Uz~v(@iacg z42?~F53GXCaUjmYEqE3m<1fq=W7;c)HLxWPz!|s}kKi5rjG3F5_B^o?*7!$%x0*kj zw8uD{huiT2K1b^grd}beimh-IF2VzN6MvvvN7GIaMq_83jEiv(-okXu-pRC67HeS- zywX?azdF0jAl`@<@D18_HtiI{n%EA9;{x1?=kW<<=wjOO#87ODqi_-K!|V7NbH$o= z0x%kT;}l$v$MG(HN7t^Voy4B{bFD(zrFnn7K6{c~8nGSp#TmE-&tj48`undh*`zwQ z#V6$d#4JtCc2*dxU@IJf^KlQ}#V_d6%(N4THLwW|z(sfnZ{Y`YX>QsH!1~w$$Kgsm zj@L1X<#iU{p<^$z9LH#!mMyzHqr4~S<*+7p#wqxX@-8jR_&o71Y=B*G6wbvBcnGiH z3$$%%+Rcal7>@055XR#wJcF;%u@&RQ5NwG9a5iqnQ<#Ro(6zN`FA$@!8&1M^?6-FP zw7l-WUKoz8a4^omz4#DabbGhduZ)A){uA5l`vdl8m0frNAN`l!O@HTjJe!=yS7@W# zza>2;PJh?om_uT57|z4l^z(!Enhg-~@X8@^I6Fbl7uUGTUQEM`^Gtd%tb)-ib-yi; zM>^mbY(#z+9Dxfl2`}SoTuXh2`KG^<#BVU$D$`$iY>Qr$55X2V2G`?de2b0?Og~;Y zp7u6k3RWY(C4M4(AaSnMW?b`#ci~lhjz6&y<(uF%+=VU+&A1BVCDMOj!8NA8x;Pk@ z;t70-8P}Tf53Z0k`8he1g`CP5r!B4%^{0+=utkYKf^=1gl|d9Evk>74F5G_yuz$G7pSI>-GBi zHz<$f#5XPU{=B{f(5|I1KbFOs*c|)6(%(J5D=f3|%v-&VEmuUg5~tu>%<W%5I2-d=WnB$!p??PgK;u^S>^khuK zCgjIqJZ{1>_zl9k&w5;ZTts>kpCUg0RnI$e zdCDuCL;eoDir>)VlWF%Z^&QepeIJa(URag#ZEy^3z*PKBd#+#1I7?s^Y>EAF7H+}Q z_!PfmPMw!!-hb#PhxTJxEGyYG{!$fNVn3XNyYK?OK&#HCem<;(U2qQe?xNf0VSm|6d=~HH8?@GPmhnua zd^Y0ZSPjQ6*Y70?#>g5>#^>m?!sHjl`q&re;|@&0SLkE8|5G|p!tf^RGaYkQG3z@3 zYho+h^pAdTHNAnH!l&ri!KC|O2-cZlEy+HOr7Ol`a(5j^jR3igztE$HNiT=d*cJ!j z0^Eh&TbkqYXq<~p7)O6xh)KBRzwr#y@ACr7$X$Go4#Q2lCx&2C?2GZZ4o~Atv>RdC zDU6k{3HHT!+=MCUJwfjmeJUgSM(X|F-eu$}zDK7~CfyT5um#3p0`9|9{ERN6O*_6= z6aT?6xPQEUFY&01oWs?m@5M{_7=K{aF{XVl48|5X6ldcGJc6nC7H!6w_VQx|Y>Hj+ zF5?_a9LDloK)eah<0DMR%;QWyMX)^9#~wHf*W*#Vfp5@8$75NK?ih%D+0SO-R!p6! z_h-G!%D^f5p2ALLWg+gwkK|t_c9>+!dtnu9jo&FZoOnL&!SnbCGfXz^<(q2y&r2ML zQP>_2H?h|D!q$^VXxr4p#jpncjsMQj=M1dM$ydxV)5P8wjIFRQZYinH0rZKKXL>(3 zJi4a*#yk!t4!}t4i!*Q|p25c`j;6jFmciyY0B7M=Jd0`g9kc5{da{hq7bCDO4#N*w z_5b>0uO&}1>3!iX`8%krp5 zTpL?rPaKIeaRs_lKZ&>;@m1oq(%SF!NU`!adSEct$9C8c$72Gn=X2>O-oV%B)XIF0 z6~$0&fqif?uExW73qPTAYtx=524fTKjni=>p27S00Xw(V&v}OiG9Fjp(d@b(maHYI zxTK3YFZxP+P50NJtmWj|T>ZZ4L^*kiKhR0Pce11x!y4EM`{PtxiJv0P^Hv$6jM=du z=Hq*ol6WttzCWgfy}ZGn7_NG_+e>3?hfcXn`F!Y$m9Z|i#;0fX`@ha1^6{X~_h=Q# ze^|d4%oQxwhfJIey>R(4{T*7zVA+O;aj@2Zx2B53;~G4Mx3Dtp)Wfbg45#2i+=<8W z%@}=7M&GymR=?L>(@>ueNHV%%DXfOgu{VyxHCS5bYo9k*LNLcsonNJ3@x<~NiAmJE zh)@5EbvZoi8Z6g1Ps?>&pQG**EI-N5vd4_m6E85IpUfwS^eF6tqj4eb!K?TRv+gzR zw_+Z>@gK%L2xsC3OvVT3Njo9f9Pcx~7tF61^Xp6gWL$-JnBQy6Jl3qY1LR-AC-?_* z?lbf7!BA|DJ#i+^W}d6?2&Ul*%I(5m%rm=XyVdo4mh?yX6F)HD3?0pNLNN2qw%?4; z3oBtXrZZoCrK=pyZ72Ddw;y(*+z6bHyYUjfK>Guxzam%(+v3+$Jx{+;RsJyF97oLd z9Dt25j`CBn1oN+ft#JshrrdE%Lu*|QmhC(b%cTL!0U14q#BEbL9cQ*kvO#*;c+H^_gAex!dVb~Suu!th0$+w z%&(s-hl4|;IPRqW6m37;H$+z9QM`@Wb-S?i+eqsLg@;II9D%cO10KObjOQ@@jL~@f z+z|1ly-^G=qMuim^}2)c9L5{ihH|z#F3a-w zpuAO1y={4$ap6^5VJ>S%JIM^i3gh0wXwn6{lVZ zw!}d=8JFV?>OaNAhI-#{d_76R3)nqeuV?iCB@M@ExCD3LDXggVdJL*34KWr=Hq!K& z^`t5`#?I(c-aK#bg^}0?=i?!KhCeZD1yjE~w!$&E4#OJg^?vty(gDZd3fzs!nDv%^ z{&`fBg6M}KcyA{8krLnVp$EZ)O+Xq#s0pQXGfu^)zD zL+psXaV#d_c07f5F&%Hy&nwlnU8t0Kq}y3ssQe<%t#M+vP;pc(`Qa9ago?LXw^yh% zQ)5PiN^3Py{|RDOyr;f97%BtRXG=n55-z|kIOwr{u4k(*Q!x>@;W504ud(?jUEUpQ zi1iawKPMK$${3A(f9U?QB1|S=88vuen6!DO;~!XEVsR+Gd#dAZTV4L(x>tHWsPDa* zM*cox$LBiFG1aAb7klC~T!5=_KXzxiBop7n z=jiyx^!x8yy|3+AL*C&Z%>B-!7spU+f?aVq&c^k44jo0A z3(w$P{DAf!O#8(!7#m|(9EEexo#jyk$Fcl&a{hA(-M;93mAqk61|MiSkBv3-`#@tD z+tVN|pB7$2K2Xm^^DXC5`97O+m9Pcnr&B(V{;jnA_?%(ljPu#vHsf(j#W3nM#qKx) zr(pu~+CY2&&*3ZDv-zg|M~2DpblpEHgo)_(Y}r5V{8tXMP;MdR8nRrv;0VskX5(t? zv_;=np2L`M3gIf9rbxCtQkR8LWPsl* z&S}n@y|H8g&96~gYG6yOKz@JXX}B6Qxaobc9kryQt3L1Ezm_z_jyM>n;tJf2xA7y| z=P~UR#V~Avy>T2S;y%2BwHS9R9H-;-I9p2+u@C9_8GjP#moSL*=fvM|JoTL2O?$J5 z^AY=FRcwMia565#U3d!b<9oErYx-GAKYeu^b&u5&chdbZ9GhYfTvb?qA2F}CBx~II zr+y!Yzc6b)lU@w}!Uot4hv7`zh{y32+UGazmB5Qs>&z599F~^`2vC%Gby4_?!H>v_FCL6}Shp zGxnsMbqe~iTLI1!iQ9=wjP(XNnbuMk$iy4W7eFpjN^e<C+Yj)bchi`9`P*b^sfy}0DsvJ`jXSxmzZXzyjp=fhGM zgtf3W_Q8p`1h?WTyogWnH)bws`t!sJ=*GP25VyddI2`BTMm&xW@H0Ajn|^#S0$XE$ zoPwM21m4E?=u*tIR}?E_1MG*BaT%^d8=YT_QytkuT$=fwAijo=@FU(1H}_p$;gA1x z6#Zd?t=KvlmuY*clj_JuJc?KFA$kna>vZQb5`+;LgWYf_#^VY+gy-=-zQ>G1P5bT` zh!NNXJK<1Vf_v~HKE!Y6I?S|R2^(X7oQ>--vW6ZyYcbnA^Zty&7=#{P`u|);Ifx$yV>JGay>JxHz-71{ zGsf!iZDyrEpjmfiGt{-uHR#b>1F8EY-WLmNpg zma8B2D`OpOheve1q*rV#xA8M(nPt+wu`2$epDex2c)T$LTVa2Uph>5@D^eO@2fRc(FYyTFZDyPK+#@bP+=G6GVHwgx@eAcIF4ODD z+%YnJwDw!Fk!;3Cq^IL~(qCYPF{XT`<)*#|<|q9xY=BqU?^f&iQv4bR*^R~eT1#+D zL#cwzZ~#un4R{cpitD_0)sZX2kI}lHY45X-o`=n;BYB8>57za%u%S%Em3SB*qVo__ zt{gVU{x}DB;#quxRzpqwB3K9Ga1kcq4J^($D`FFzsq+lKR7V`==)7t+mSPx=kt=n- zs1PG8}jVWP6P!p22ptjCMPbzLoe04kvx~fBASG zpW!mv--*|#{}8|Ea=N&tp?n~2V5h%J*=eKCZWuGHGRvWRKePTvU;=K()A$&_VDA2= zUI5m__E_3m|1Z@=2MIx^2y_0|RQr_;bmOG z_HmW=o{|19@q3ivrk`9G+TNW1lp>D6=GYJ8aV?(2`}hf6Mws@CV>bPqvdp&t`r<%6 z&OU1vDHCxKRwh4$`b{woGbHH!g?}20D+b_B=6@U=bpAbdHIy5~&u|K#Cu{H^+AZUA z5*yAo$NAnk8*fnlH9Gb&pI=2W0^4H=+N*>+Y3Dlb*LkhE+fY)lu5RxhsSeT#yWtR= zh~8t(=W{SN#O^o|*JBF4K*w>WesLVu-}--_3!%jGiQ5wIBpynfLOh>%H(tXpn0vhG zry|DS0Gx^2F$F(jmI=ozfVEU2rrm#yxlgv&NbA=YAkF6~AK+6ll0*ab)7Qap$^F&%SGH|>XVkOmZrb_P*ql#f zjxjdj^S28Q#z~luayh8)N8Fn2pakin>)Ud@mK(h=k@5bVr=Mr~zDbAq#^>wI_2gpu zDN8$z@FV%5|MiE1@i+PZ^0}3c&Lhp|SuE{TTW!v-*0Y?3lJ36V^q)X`1*vy}a^;9O zGrq$ZM*7E|*5X~dp=8nPNQ*ugf$eb&`qAH3md7EyiqA1aU-NmM8@DmO6r98OpA-MW zEKSV%+(3Q>mj40b7L2ON-(xwx#eBuh z^;=o2haGSjy0LwmJS}{UdQv)=x!r(BrJ-yvq$sV>ni( zzX%Lx94#=G}cW9qt(%T71!WiJcHM5^f`>)HWHX!^!E{V z5`iPtw3l|`-%R%_eb4sA_U5|lK89;}@k>Ton@8WzGs|9f_~?DiZw_)4FQJus@q>fh zCH5_${kS~Z~F#lT=0g41y^Zo-3j86V&$v^ing86BWst2jH!bSzm)$+ghevPAq}*DA$($zc4Pl>Sn%qaW&<3;czX#=0g^lflKiO`ITw^3UMss zn8k+zNZ+6kLJ3aIk~!SFdg446&28lTgA&ZW4b)o5H4FH+;#suQAWF zf9ZR;mqp2+tol6Nc00+Q&3L@JKG)o#t`v^Y{Y{_OEZjm9(qrl85$RviFG}wh4~>@kR{DLR{{QxN z7>CnvCFZK5&#mbH8>mXX2H1$>dKVmybMSq%KEI*wy`Rc*xvT3Vb%UL}!fzGK_UNL& zbFsXKy?G8@ulm0A0a#40Uo7uguY?s@Z;dwS^Q`*5@6I>~<1rDp;xW92&+#W_+GyJI zz_M5iTj46^@z~G$fA2wcC~Yi`Q>&WyiDqoB_l@*DrYTj-drKCPz6Y=4SF9VVpI7>x z(c-#&THYhNwzYY$+yT6YzcA0=Cci8;!0tF66EO)d;v2MTW7=8T%e)70J9>~_79+6@ z#^F?4hbQqq{=hDY=6zQ2xC)QpUHpa~OHKKT*c7|s2waK>@IHRSOv_9=-dF=W;cVQF zwtwq!LEop92j8&%TvzIOvcCW37jgDrvtCP6t~BwGrg~nh@0XZ|YyHjd^7rB`tWLdV z*c~V13OtB6@I4-BtKYlo@7+7FA70{jVMld8vix2=jrcvDEd#RiF5`SaPD<;1f*1+c24acCv0&{)oiUW?A->=TV9j@m0JYM8i!&cZ0A2-zV zW&Qn4Esg`tFw0-&IC86j`Q6Gl9K`W&F!jd~PbOZ1ThWKliNnMdh_4dAM5~2nKAkjw z_$fPS&+jO5kX{_)NDm=yj1x&;f^!&GEcwH6FVBVd+MxUAzC3cwTDLEK&UbSQ^Ze;v ztdYw+r`8y|;3%Art8f>dz{~g$KcZc3)2=J}Vt1DN+V$po@KG1@9KcM*y&6yQeff3l znW*O>`hEF!>IG~x*KJ3Lqn4Tb?JaOG?VQ8F<>q_NaLl$!?{Db$ZUu1_%keJdKVU1p zFJbw9`a9N#K2n@^s$e~AOg}xaJLyv~xQvwq z|0*F{%jt9X-oA1Mw*~0<_5aJJV9vkveeb<|#S1H71MG?8FafvXd3=a}FkeN}Zh4Hx zPB;+baRna4i}(=J@t)4ZzP7LY#JoW!u88e$5YECqn1(+vYk5<@JVs#`9EI!9rIMM~ zv=DthJffsb57y`OiJ4qN~K zaI~HNe(k51^u(tzX8W~nVw^&HA>vKMRf!wn8n*KawA&cFqHC!B4oLqGs6UP(J%#oX zh!Z3A_jdaKe>V{O>h@~+znH<;5If@==9Sb!w?q9u(>HK@Q=Omw-$l1pIuHGSkfpE= zw!=YKcAJRDQa7;)$RK`keI+Lr#$Y^fQvV;pt9)_-ui+hhf^RS#ZBLncuK14YmS)+_ z{ed2s&UMsGjV<>H@^BsQg=MiO+UxnYzA%L0_Wfs zOvXF-1|4k8eT`qlIf|I;GH za-DaZ>$+ilF4f?=t}NGe(OlO}8f&iW67XOxbA9)M<9a$irQe@;g>nyZY*J%rJ3m(Vom_Yqa_>A;Z^mB~#>)4O;!h=@k`Yr_@ z;&*hhHu)v%SpV<(Zanqo<2tV64&haNfp+!G^<6s4Wrc31t-sjGcC5+vSAy%i$z0d1 z#kySAwZjC~U!RTUdTcz-!%cV)Q}6+PM7vFi=>FCnVwBwDz*b;l< z>0ajg?l#7gz6uZGWqgLe(XBn#n;3;%@FLewpV4W#x$g49s@M|8;8HwJSy#|!u!U00fRGPg0;cLlK<>o0)oyCK9gu{`Cr67T1_E)`#KJ@*Uq1(@r- zI@D{6{c#p|0%zu~>M=K5|U`=Pa72Uy+@c9HA5ti**dTeAM{QQy0hA4_2<9{lgR z4i|G>wifr{1$>O(FxORcz2}7$F%sM3GmbxXZkpc{ekDH1@xW%WIqxon>yDV~z+-qD z)A2mlg_SAa4Ey6){Mpc47p~^`u^U@+{BhEJ%liy`@H)rMS=3*FxBokS5ud`B|D|)i zc8m1)c#?FxC1!s4FqQPz_%HqXlV1bRbDcMw>%1G*<~r|G3v-=!8AG`Ks)zsJP@IiR zaVs9i^LP*6ptY;H&dZM8c$VdOalN_D`_#o;=QUy6UGb@xdA|B9j!87vdAF!ngX_F! z#3PrP>%4dzPCGNO#d33<*AvTfeODbnupF0DJ_(0&eK!@)k$w-C)88tt^EPvx_m=!$ zXt%@M@BKVm*QY+eyn2NBp6)B-|H0?)RMyvAT#4`7TmSDp)l2mAB)o03T+sb^&9Z2H zFSSV@p`RbFZR?9mJN^BtYXfn!HRn-QHLNALUtI}prpsHu4{C(|)%0_;LES2+ts?XZy>T${8eaYJXX))}7H`PF2ky&zAR>7i!|_{?e~n2I;u9zbwW#x_)~k zG?Oc#86@pMf2mA6Z7_SS4D#;Z{?cHRo@cCVCUI)&nr3pG`Y-=$udiM&J_(RLn2dMu zGurkuf4<=y*QY@dWPOt`A}A@ zcj)saf0~O29!=8cR(rIN(Yy5f`Iar@1@Ri<9D7WD+5hA0%>(N!s{ZkTf-JI%>|0q> z1eG*h2#e4(N!!pi2}z0+D7QDsO>^5MH@!FM0w_BoFTNt8fQnW`7L`R%K}BRy1VKS% zQ$avfKx9`$dC~9ZocYW=Gtcwf;P3ZG^0{-)nKS#DeV*^b4ooaHhtS_*;u!H<;^oBG zAwTxnrRLZl!2dN%&Bt!RyzaH7=2r5bgS%huy1XS@c9=M%da&uzYA(|G`KE^!(0MB+AxpTu)5<9RXTc_H~z5D$sxeT>gD#ElUz ziT6IlYbk#p@%xO=FPM*ip!-$2w?I54-&Zicf2O|;z?bsbjW~rG9{3!7Y#D{^Bug^A4F>7lRc+&^=`|=aau2tBllct+S;(1svxcH_C)A%E# z_nRoE+hO1Td4gF)cbRw=aXs+|#77`Mf184NnC@4I=TgrWw^_aW5nG7`;)%ppspqqF zUr+oR_1sJMGsG#NOMLer9!%Ww4jZ3dx-pG3H~(ZKvpunac;NU3coT8D+44PTPZOJ& zJ&BFPxx{0MtB7Y2FDKqZe3p13nq|W#8=D<=F=qCQ_k*@eSgNCX~l}w=icDze2nm{r&oH9%l~! zyZtW6ezd1c=w3^_jdF8-fdYPdnfWX5oK1>mDc$CN>)wvIKe2^aCZ0#UhIk_V|BUWw z@10_fxoFH>MEVn;H#HQ^4RpUo_d6c2^xcWGh{qF8A+9IhPyaupdm+L(=f*Mf4c3z% z!48bQIAMNI{10)D8J7OFg*ac*x3&2(aib2*`!3(w+}4S6BwKA`9wt6d{0-$UlX^F@ zB`T|xdpB`E;$g%t;s9|i@pgoB>H}Mw&+%Nzw}^kI{?mExQ{}xt?F|ZXO`MM%?T!OMf5n2;$CnqW_#; zFozM3Bc4S30`dFA-w@v*?)YQt{}AF5;yU6b#G8qa5ML*5{}b!KiTDxX8sbI7?-Cy( z{*8Dq%6a|PtIadSjb~c-Uc^s!p`SQ=t@#r1TH?r2Q_OAGtu^Nnzd`&l@p0m&$plOy_PaM4o{qMk1vy)(P zso6osJu8-)Ti||j`BF0k_md+_&HeB{`^|!RnfR`|t$POX{fnlUQ}P;|pLhfD7sTg?8+BO!`w{08R}nu)yn%Q>@kQdhI<5ahiN_I7B3?>7tOxUaT)Q*pCkW&y3F(wPbFSL+@JX|n|K^?f_NL__YCoX zbtor%4|qB3&!hK`nH9ZgPY-TmUf64jX?lIsd}j^T;ql$f>(_#g@BV$FWY_l|p!*ev zTrV7*fPMJnc4n)ZT}ONm@lfI*@nqtq#6w2x_c}j9tP(FEev^0~@fG5hqt@R6#7^QU z@iyw;b`bUs-#z>w@yrVBC%*6bAof6a1ygSZRI zP0IDd#P3ki)!q#HGX^0Hxe#GTvWje4jZT=PF0GH=CVd@i^|c zRETF0uOeQ23ih?O-QIkc_%Lzyso2+AyuDdQJd^k#>Rm`IpJmVGZFvszxnT#>NZk1o zh<{-Ra|E$OJde2NC*kj|9n1*ze2O^tQ|K!Hvx6xTPa%Gl_;cdv4EJ89<0;~s#MhCI zuHCjbTOi)^o3=OWDSsowxtI9v^Xxgp=jh(_Oq*}}lRk&IgxHJpO~pqX#_0YY_3lM~ zhY>&F{3D&GKC^>aLVS_&zl{9v5KokRf9u`mXLN6O0oIjn+R=Ojcry;0Tmszm)*a2d ziy?<|q*H7}6+2;_{uh+IP2N4$#3&b_V&k(OA-a-5g@g?Fr4z>EevljCu zd=LJRHF!sI^BMTAuf?t3g>!McEHED;&Lsf>J@S7^e2!?gv-)=< z{+aTXcVpgj*aGtj;+DXM=?ly(${kJo5b5ja{tB^!^vme~u`95DKj#p0-EXnZHnYXt zOZ+QwHtlr_=S%;4C-#Tmzq`4W_&RaBA6xo?#CgOL@lxW0#1%h5{XBVh^Ag=tvEMv( zvpviq#E%fy5icTsoA?0nFT{=Rw*L1Zo=g4vaGm5J;zDAPcp~xB#6|D2=W(y5`*z|Z z#HUBGUU}ej^MAzcF|HK%&tA3PpZp{7E#m7hqW!(RkJEOCR`R^Kkf>BNP^67gfii-^|~_r4bMw9Ae&_t5@|)9r0JhzY}*l(((@_ z7KmpMuO!|}e2I7j)7M8li+B}rC+sUoyO>5ilGsl?nfO`awZwbr|8K-?=GlClK|Gdt zD)9>9eZ<#^2QVKFX8r#W=3~nmR^vX4#g~bj&$8})h=&r-yAkI~UfRXH{#}ftKfSBj z3^?_aUClRdK>u>-@n-YyU_GjBSF<K8rUqiX`iQoG^;`^&z&7a9X<&PVhWvBI<%Zc|8r~Jv%KTIqUKS{im_!9BG zf41^(Y>$1U?+=-!bYDpPGV}QxjOQ;Hk9)~~mALaWR!=YSQ^ebeuMrP;*2?u0&m-=- zgAM;XbiY761@pCM|Gn0HnYhLESO*-*J+z;zLH?K0g(|r)}C}NHH6UeRKylS2h`L?QggZOdsw|u{)Uqtt}h<6hA$2p^8 z%x>mKtcRQ3f^lcZZf0-d!NhLj3S!soINy5lZsxo2-!ywSbIz@B*LE|%1^>yx-ON@$ zM7R)Xf$=Hs%^XJed!Do9x{z2SUQ2wAxa(i6+#=#x#6i@*W4<(G&LbYd z`tU>YUnF+lgZW5#PqUJECh=0@EyUju|3%#IXVzaAag2BY@h0Nq#J7lh-)sFHPV6I| zLHs$!Wp5m{r}-=Ka?o8j?yv6xdxP(j-$A_a zSLjFncdGe4-M7*I5%jl&_}D{ou5mAO#S@qZp1qeDC;i8C|CabS;(6p>M!b=DFYyiP z+w5VhcQ4{o0nSauKF!{Uw(xzuI-DAXaiC-t)Nqma9;UhMj{fYC4Ps0wa z-+9!W_7uW9Y;UvulQw;aGn^&Fabf}di#OccoKN@7#66$4_M(+oCVrLpIB~1LTDc>L ztBKbTA0qAv`?Bo(A=6L$@)qecUa9}odZ}SUD&(PlH$LPP;zfv~; zB7LVnVE+EGz0I+(hYd|Na|-ba;?IeHBkukID>s)|Azn;8i2CLe3&bChKTh`r#A}K7 z5uYILf^vAEdBkk;bIkv)+S7dMd6e^I`U>7M=7npw$m`a1DB;+`+s@>@*&H1TYf^SRWs!3V9L_Y&X3a1UWT4yC(rm)#Fp zN4$i1B>nxI`Zs^chC7dV67f3XbHr;IkFQhD3hMbF=h<_K1>(Ygz<&H`UvuH#VYjc| z*Ocf!i}*F-lBcn5vPHkS=S_P*=H)F>&V_fFm-a{bZNIsBib_U2m`K<@S(%|Abbdc4n0X6Dzh9=sjCXHmoX|L;vV zm2Y4ibIHzT6~?_c5AJHdigC%QC+ucc+yVDXyP3^@jde1M2l?Ib{61#;*MOJrYp&fC=d)UlG{sxN z|H2XG@%wRq;LpwGZ@HDaGSBUd@!{7NnCg3=_qK)R{6Vqmam6y=3k~M$xVJF-wgz)A@g?F`;0t|!;(THs(e&ef#rD(8dx;kU z$J(ZuBk3L^-c0&_MeHm5v%xeIk0uTi&quiDe7nIsM)`9|znpjv@d@JV#I5?Q-u;Lz z!~$_O@j~LY#5Wnvuj$@xz{dZ1y3b}he*)a})durN;)V!U+^eQzJb&hd`8>z%ZSa40 z&opxu>iz85)6GNOn3w)#t@%6l$!@-Bt@#Vx8(?2Y=T;aRz5ify zHt`F@rR48SJr%k?K=(OxUqSpKaRtt|9rNaN(}j4;y_8$HzSx3uad$sC9d8R+93h@g zT#EI>i+A7MtRS97+~Rk3J+gs#@_V88`7!eo?%y81rM+MDY0z)pbd|Y?=ija&{+RfC z;y;N;BOi}BdYUN_Cx~YeFC>10_&wrX#D|Gb6JIC3vt;$|OKc+ExdGZe_L+~|80q}L z#->Po{i+T1{MP1ITilb_MC>FkCmwmw6f<>fwJ8x#CtgZ?<3;;@r~%C9-k3JSoJ~BM z>$gM1vxtYGeVe^|P3u&Y3-0$V=K5|waTW3G-En?s!3uL3@mAutsF$*SuvOWfOS};M z!m}@onyZLEApQ>W$K1Zc><(N%V}uQYpt{=mQ*^A_A=&#p9wGn}2!AMdoou$c}VYZ^Aa z;7dGKz}BYvLEpwVjHnQJezpQt|-@1*^DAR=j>B4haw%DZZdB6d3i%!_Zc95jrcfm`&TT# zhxj1J9p_U|fqFho{;!DJy=wg}Af7?Io%nC+xq*7lpq~GbKl?T7|1{$Fh_4V2{F~+P zx1(L>`5w~OHCi?g5WoLpw z#7l^qK#zpe%kbOiZz=IyhBHC;dBpwb?~CMrmGr-$UJMl~W`yN@J@GZ-2mfx%e>w3= zVmIrY1WY$Q&**zQ*!efNfD>ekE5)#x9tKkqp6p9iq7wW4T7uEM?G z>LKRY(@R~&$I zS$|q&?j-(>*z`f1yV|hBybAaAe_LcW`+&udfIhZqhp7?ICw`rHJMlNfhozrgyvjTz z=cJ!rYF;FsfOXqbZ>^ej#90@hzkXqsxn#Y)_tX1Z^eg+dm?7fH#Lp26k3;^77V|Xo z=VZFSNW6vkAn|45KPbOF+>*Zy#La&XdwWfb*@M_d`YgJSCQcB~C7y|MNZbVH(q})n)O_|Psf88#Pf;Q5r0nn3-S90LH_L3=27As z#2uO}{bAsfx2`s?5#M#NbstFl5%8RUt~QqfAAMo9ITGWv`R`t1hKQdaUP^D7aN+XPb@PHtatN>D~QdgpXaPS-W*Td|C6w1^JkeB;*ATiZ~p@34aDb( zTQ9Wq{fTYFe&Wf*PZ4h83GoKv&xlVEH@d;LpPh-*h>vkU?C->Fv5zME za1F!`Vu|>|E>q0)$Cu5^Xs1u!d7PPGx;MahQ0RLS4<#-ko=3THy6?CK@%ij==19h) zNIaAH;NEsT-HZNF#w%Z;|Id-XCCdNFmSyI{z@eUHruBbuZ?8Pd98Wxs`TsGxKTo`d z_*3HdcwYB;y0`n3)ze69BQ7C6MEMcA&n14H_+#SliEk12Jm2b_O?;Vpj-|UwJcsyI z;;qDA5&uNo=+jo;RN}$JZsIE91;lR>e?okm_#fg_^iz_5TO!}&9P=``!j=8*UVP4$sa84MLd|em^e&4gSejf8IBWfqx%u!OT=xTwt5?g-*EE8HqwtL zjuAfrG>clzSBN(=U9(`H*M54n=^~C0KTf=y_(Ng`>~+IESoa~G1f2iqYV*&}p}ydr z?A8}q+=JLiY$GlqR)}X3FCm^wd+>j&?0Uowzr=mwS`lM2`kk??7c>1g5bq}5PyVaK9S^kf zhY^d!bBNawA11yrXh3@euLB9l35p{;R|%n7`XT3%lCiWWoO-TT^ld%&AE+%oY>;;)JSApxmFZNzQgg5AaU%#Wx0RN_U%D}ROg(6@@_HsWuHuM!W2 ze_5wJl6Wj}CGlg#YpL%Z;vb3c{I%8p9^y-wZ#E6BGGF)_>d|(Gm~RqqCq6>_D{%vy zs}{NKiTe`|BQ7HL5#PTJ_8V~zbld;Heq1=;{OI3^|9SJxZ;7uHKS2H*;<3b4#Pf(> zC*DDPocIQDM}v7J!kI?wB(5QTmUun!F5+Xvw}{(sVD%hG{IlTG^GyfcCE|3{=k@c( z%(tceZaQI}VEx?hEn9C_5x+%zg?P}vEq~9QY`a=YJx@~4N6Ej7xb=Umd?)c!#D|DS zQP0PzXNzezKD(MJcDLjHQe**Y>u-d36Y&k=!CP7Wsl*+3vHARt_uBHhlzM(j{B&27M)9-D7|Mf?x&m{;bTT{g7XKx_pz zY}{^+A=Zey^PJ2dFwPo#=6Lfw=<@#Sx+xo)W%Jt2#z1jjNcR=Q9ZCN_-M=C(1zt6~ z-TZqh@&o6g-cPxoAz$upn=mVx-YbYt5x3jc=0h8CnD`muy~H`_pXEH$N10z!-evtA zO8mQozoy-6vysIkVE1o+u4tyxeIT)gxDxBQLsOTT*MQF+yv&?M_hrOei2KO=xP6&< znC`#8y;J`((+fSbzuImFiED|={%GGbd0>zXr~K;YhRV*2w28 zjx+}oPauApa^E7(tJ(GFBJui*?0jJ}tk+!Cx7sYl`c2b0%giY8@Ox4IUtDI6C!R>W zn79|@9{uPt^If_hBL0nd1o`j6x{l~Mm3lu-yqtI|@j>Ei#Eqdx;{ne4@dm(=ro5Nk98?|XMHxx{~cZC@)oRzAJBy}JJ2`3%dBrj{w(M+BW?Cw^;d!N z{{QdVp$G5(&tv#Yh{qfSx%-YX--lb?Z5k#0KiA`&+52}f*Y%*jY}akdl$${OZXW40 zCo|qBQ~s7t(7%Z9El~af(%;#IdUowm=1};TcREj|o(q6){PHNXdpF{b_wsj`i}d0h zsIEbKe&BD^vsEwhb#AxWS8!ps`2)g{cctD>`STc$({DmK%{~Hej#&IA@ebm{#6zHG zZFjfX?r8gd+L?=?_oQy~F}TM*({0{77WM`2nYS~(BgpTamiCy71@V5>Bfw2p^_ayh zhbNZW_sR~Oj{JML!|c$He8zj~i-9lyv&Xy%ly}SDGl26?c=zfRjAwV6wZ?pz=i#2h zepAD~E3ijo&*6QO^cwBQw}>wh_ubCgmnFmtiC>}pdG}9nJ`(rn_9PxgG&q+a;jCde z3rN48{@?j-t9KspMB+8XKNIg}I3K+l<%D;FZW=>=;=5q?6Zd`}&H>{cp+|Xs^bop_ zCf11G{3PBF!FRfzrN8f7hI)i*Z~XM-$8Qb&U5->wL2b`a!`fr(=Ed*AwQ)y?DRio$Jh>hzGO2u4a2a zhxi5Jr}u}wKWvd1XE>WKo?;5kZ9RqlzWzdKw7h7KF)NOJPsg;voc7*APj7d7$Gk%SP^o_eElG7;$!pbFD zX$`o)v7Gj13d$)r_GdX7!T|jAl`B*&uE8-n%HySxLd*|Ih0@xzVAkv4n2Hr^qtjGX zwNxAk!$VQkT)M1sQfy9&w}6}kIWQ5&(mUt1b+mOiFKj=yt+ls(QCp!nu!6BnbHV~h z^Ah!G&RDfP>LQ%xB}J6ODb&W{b-By3#xNVoaK(8il%!ZR3-X0VP)3PhTgT!>NPcfy zYXKFBVa3D(;y-IfmX$<4ke3QxM}E9gnA1Tu?H#>s^V+%#{Ufea93{y}M@ixpP@+IW z`a~GIV`8H>%aU!#60vkMjAf;D zhO!#WNT01Rh5pKzSVS=go;Df~JLeqP*3w((N7EWFQINF3YAHn-Ev+$yA}W{avtmKo z9HHD;j3uPMmH#-sU+A+Y00B#$2js zOT$LFxTF2(w(g$hh2)`p%B<41CGJB1cx2F&=51WyBMdaLNGWR4o|AYi z?w#9Y3dhWBIJnT!4BMp9Rt;HN#=lK_abSS)rdmtxA1)O~y$y_5NqZw%dYFOIU~yu2 zyf9L%xju+oX)%543LWjOaX3Ps+*img6l?wTpR&U03{9^kjEoh=%OjpgcGjDo(16vV#h*Zr_orODn(DNb9UrM~cJc6Qcmas-#j$AtgSOTB#zEH&Go+ zQMJg!SffrZFO8O}8v1}FJjER!2^ytnGX>uQtuyH#HQxrSm63w@O3{1qpXcds~;YNO7vV*koQt+Z+aV;Ub>kqfed&S|06iP1cti+fu%i;~XSQNo(xY3a)0 z7)jwfN?3Z1mc%fi`0`4!Wn#SFRzaIH(pV)IP>=QJ82C(?nvB(@YI)EZ=75qmBUUc4 z6V6}T(OreE1#L^vR4~XvyKXRr46T3~QpC75W?17N(+10k+WhE3*9G6Jz?YrIsz2t<^`#MRSDfv3ixZ)xvsTNGFn zbq-f5E7LuebYoQ(zG`Ntl#DAKAsG{qGEf{ZGH^#pYY#dHifGESK8H)A%g2XeZI%|8 zJE}$ZD?Z(BFlD2|pGbFD`FXOVx#%vIf<^B(oZ;4)l^V&z?mxq3f>>4{}Uw2|A^e z>~#{JphnjU*?8FBR(7165n^q;*f(5?>Dnns z_s7y#x9t$K6b*Pzd#CLVteqc^fV;}V&yXKqy#$JdV5-$ zF~Do76XXbfOnu3 zWA@p0)M9vQqdlv`l=(s(RyNL&-c66i!K|nISX3nrov^a!> zV!b5pIQfmXtMv&|ccHvGNW3FODPK7-nDXi4-lmP7X?*Hjoox@0ng8O^v%JZu0l)vqtqV`A|r@+rf#3_$}x zw-qRXIfk6}FxgnLDDxOkuR*CmX|1G?GBRw^-2$CNTE33j5)tPK6*W|xa*ks4MwS>t z5rh;BnN?4EFc^fGW+DGZ%H!qLB`OKJ*V4$?Fs4lz?Fdk-Qj!~4r{+eY%cTy2()*UG zZdtFZrT3UH0Ch{B-e0O>emPuR?xr-JlS>>O$rqMUV6F#@QL>CA9U7X{mHc=JC!ZajpMj)&${SgCtbIizmMq2kzBA)FM6oY2E~d0|n@O5|!m}Ys^X-1--oNRhyMp_f)6Fu$CGqXApqW7PW0>9h<3R1!mY?6(Rkof9Y zyl`QdrRw(Ks4Ee+I|_-qXq!MLG<8@(lp-%aoQRr)=l2`3nUZFCRcS_!wlKY3Jc)Wj zO8okvYt%wK)ra1LO_oTcch#ZO_SHU*mI>Kcebn~A1M7c4@fACyVVfdwrmA4bvDGW0xat)Uqe@`u zsiJj6UvPFPnkh7yN~83IWFrwJt(w<<_gVIY@vB)Txgyg6k3*+2{|q_ z@4*+Erv!zT(6rFJGgD{@#}!&YNeayqQ-vni1A^|}1#WBV0|JtR>0CgN zd<&dv{sK2*7|TnPM=+%k6Pd`R-95HBh5}Obi5mi%KM4ipitX0XGIT3vt!(M*+KdjA zCCoH^WI&FTj4U5?yDWhpq00HU%782FfQeMv;6&@3_IWtrqgmY&{MMKSllR1}d4!SI z^hWiBU$bWDFFD0RqWmQF*n}!S9W@X>HjrM}iF0gHD98F=8gj7im$;MC>S>?HhM`<> z21QLLCKaCR%UyV?$CoH5LGh_8oM1P%Fr*YwG^R+ZH>9=acx~6@#!@~)A-TE5Rq*8Rc4` zzc?n_7EV;#ODtNft%DhZX)6vFfvxK9jTVXQb|cXfnBiNg4h?7=v-YL+Id)e@HR zS5#m&lZdS;mSI)wxf@X+wlU>f0|@L9V5~D_S#^>- zY_!4lr$ou_Ip|`6I6u;iBb+iL=3b>wrDwPyYa}fZC=L%71_!d5G;(0}ajPifv45yI zx?Hy6>UbW^MnZHVW#bds;I!V@BJgom<6bWc!mOi9SXzb>1)I07NDJuGz|~^{h{T+^ zh5o@l7!)3gRZ4W47ZU!Qu1JT+j^XyFhw(eqf#bX>tr9GjA?NV#=uO@{Q{;R4Xz%F^oeA_V-w@wKj+(q1zACHMh3nR2tSyvEqs3N-`0Mrw$fJ z%EOFDLe%}#NN!X&Nh8u&wK87muP`3oa}7;S!b%0?$lU0SGzrgcI6Jbfx`_(zrh2w^ z%-)qw1g)ay4^?X8x?t)y=R9YmxDuwtJGI_<*I03Uh;1v7sTS8{va$eTN);$$l`3qw zS63@lSL?8dhinr@CdUdsw?>h}Iy%Zo2N~(kDTs{ytxJ&Nw7b}n0TR5?9czl%!Jr5Y zpt>!GrFHE)OY{2dez*!?XB;iSCQ!(F9ME%c)(6Hk;95fLgETo;EFOojy6TEZ2PfXn z3D;XWak$9BGRyHCCE1f1cG*-37|x*!T04$LF2xUz~!k`%i zFp6<(s07sy1I=O?E4kuNqKU3*v@%*4#2F9QGLbqS1Qj7`bKNhowAOQMT7@4{aIPQc zu`^UzZ+Aqy4(eR8_O9nl9Km)Z&Ly@b@v8YEiqa%lky?eRlju~(D(D#oO4u1HkLi%! zDXa}mj1N@S1hT02`LeV*rw45>?~B( z23iFq$l-}`*~pSuk5yRRFs%pzADgJ*JdFxW$e||rWrqmvmk+R7>R&xFQe(l?P=!Jl zQWUi$?P5qtiZi0R;uK<1dg6+TQwUt)mNQ^UKR(ecJ)N?4oPt6qRp8U{D9O5&MyVN2nG%0;nUMbz6S*SCr`*F>%?E=Y>Bjl3) z#Dlj1o`kA8Uahdrdn&ZEWIYMTi_)Z|)V-9DeDMd=upW4FTp>I;$hnvnEA~}fg`~t> zbqXqL!b|6edWiEwNZI@lYAQd3l*$hwrSij(;%HlHCO?FnlOIA(=ZB}MVjc0w0Tv$O z?9(EEEtXD9y^3LmLu!KV8L`&ZMnl)?$Px33{rx4mFeVzL-dVTyy>dX#k)`u2lxZ_W zF6r0d5^mqR#AHb-#{0(#sOG~()<5aZrIV1Q5Yeh`duTOqx)vr}C@JIQ54#9bWE7Yv zfQW6Cl2fYDO>OiTkSJz?Tzl(7+q3@rhby&`)k=cx66k~KBz#Dy#GQ3FXt2GPB`VM-Vx=(VBB z1Qy$Zv6AKos|*s#UrH^@l-%X18^1xu({bvu!VXeA=pC>L*F?qXVu-WEfh(EVh_A5r z)nb=4soa!kQ;5@|CE&`GRy3yBo-U?Y;~3MDwCB)e!3|Y_b95hGl>FG6HMTKL+kiCL znCv>{nCi`2Ot$Sz+kJ;j{E*ijIBh9|^^U@XBTOg-$3Q?Rtf^FG>JHZc&aNk}kqO)_ zjrc<8uZ;8+XQ;S$HhJerMMnNmCA>scZ575_iAV3W9>p2R;&3=!i1M6;?H#RpBNZke zha)r{X`=0qLSbYjj&NWKqzxzFa9|Tq#IC!cRX{H11ZQcP&}6NOD@bl_DU3O1TY+xW zi#Q$9bxfv0_&IT$7|rUQ7=y)-7TRG=@?d}C46Og6GsLl>X$_4ix?I*lvrrfbXZp;> zS9gvv8XIQR^EJKUpvF4B5TAMqXHAU-->$gDska|^7M?y6QY0wLfNaQU4N}L3 z%YC|*2!H;bf|iN~j5?HcU`|=X?8R@9^x+~PPI#f`!ng#Pp-rE}fgvf}!n9cp1sLBt z91LaZa8{)`QnZCeXv}EyoQyWlsiSS?ta{qOsiO^?l(xaafuWKHmGY7>@_a~zOb4Pq zl#%B{>S?YIW#svg>YM9B8F@aWR_FRqM#={c_Ky{&p*f~~B#b;Cd3mKil#%BnFR#=` zUS269FRv0tUKn|Kr9SfVN*Q^1l`s$nnije+-<9Dm0@kI+Wzw&;K3P*jm#9l|GXLv9 zyM+W0y3)Tv)1@rWRDx}R_GV<_FU2aXwdRUiEmu0WFf5F@`lG$+W1(X zL1L018=)1YnM+(w)m0V)-qS>UIU60w+-gF6&UA~0PUiq zqqwfnibJ8zLG>)^E5kNVi+wd&2KBWY^G(<7qKk%0{n?*mEC;xTOJD`=QKVpX$q{r9 zOFi1%EImq$`ej{yAg9;wge<+H-jS`XDcUw=ucCryHw`+H1WQtr0hPFPtZ40lIDJx( zECeh$tWkk;6t{vTp3Yri!vPCf?5LpvTTY0FCfMbSTtO7wHc*>($8#Ak-F+fLM-sVY z@S(w~Gr63J0Hu&zzRB+-&EkquB7`6l#Oc!@?+d_`2F2713PO*}*MoJz^75d=vIET+b!Rh(39k(f!>5RwsL zFB(Q!5<<}wnYA#a+QGCWU3W9q7D|4k6A)dLVev-Ba5+K>Z>;Q^x)uaO4YH1u;mR5; zcF0o@Hs=vFA)%&DRBLL4D3}t`s-BgKDNb6R?4zRbO3o>CNGKe?>My%dEAwXE{lQwSZ8R=gg@Ia8*4E?|4Wtl$ zRwD!od6%XuWQ)x5low0$qP5ZlHdGT`i97J@+494A)!+EX01{`Ey+}b4`Mf5Y#9noU zB1j6(MR&!k0-oY+lBYPEc|ll%h9SR ziNW$%ZCcZ;!VGNUpeR@^>&ZwKARshpsakea5%d@Kr)_Q3q#Ln6L53Z%B4O5mXazzd z@=JRRFo7Y5l)x5=Kwxy>Rl5ltIJ=~>_EoBA{7K>xYLF`lab_S{tzeDRu5EdpmZnQr zF-<1DX}>b9P1EcuRqR)$rfIokU5aa^TFh=KRUMLKKbDd@;T>Xuz2lgJr^`vpq@-OF zPzIA;DjYM0P6innQ?<~OCXvi_7takQyKpSR8wTuo=~`Z`$a-YpvRk?d&DMAdz+oc> zceR8?S(#b3VCQ}q&%qR0?K_Hd?8;;=xzLT*S!C4ZxotQRh4h6K`=(=BO#Jspa5#}lWT$rcG7+cSRc}n{E$Cl=v-t^Hl zrNx1&RCpv!Ws)ceKM7u3se@@M-&4?cA{tN(B0?ujL+C_137ykpCt63yMI#NJ7#f7m zgXm1MVW`+LRBUXJjhg8a5NVra9NBJ1_ngDAr($v#IvdLI0wZ2rP+GT8npo^j8gp(y!l>&@PRyWQ#Hvt?s5+k3 z(u_;ni@REzJ33l02WZ1Iz?RZv5>ck*Xoz!A-Z6mgx$WJHToADW@Z0CMx3wZBUCr&? znFyr$ll#sF-r0?%5PeM{oiu1pm>IPRE331+t!q(RPfzna_Zmc!Ur-uwGg<>)p4y}E z&Jpf!_14jwuyYhA%skCKU7a00b<~oVqm!Jh!k*sd-o=?#CD}|)Mj7cTRr8w{E^O<_ z$w$wK6?t+>Pxr#04#!@)7xr{6?)DFNBt_*Jb>uTaFbVFV%t%vyejo_T5Ni=OJkQ94 zZRP8Q4SLw9+q%0uyBGD$b4@E%#nbF4urxCc60@*CZ{!gyRAU!p#A=7F&Du+)>iV9~ zG9{&At2Em!6kD*5jL}CdZ+YN!RV(%^Lmt06+@t5#7h;B-uc11euew^PjJIgex&AC0 zHrn++IiaV_ev+iL*>{|2dXK-mw5r$Nd5_g*^EWOiRRj`xWhTo#NZ`0z zZqXjkxfMOS}BTA$bk95rGY+aJ>*Bm)lHVzh|^V^zR@jP-WF$p8Bh4L9aJ?*LJLIr49 zy&$G_f|S)~tyL`Axo}}n0C~JjfYwVYND@(ga<`Pz@l(|%MsNu6Dtt!*u+ z2QAXm)CtAObhq{7o58N`&R*Q&ZfnJ}JDDL>%#5=q@)sw(yY1+pi%XSQ%#3u#tc=dq zw%+FUg_)ilz8oj5&CxTef2CN*N`9KGNAwE$hY)T7eWu(73hQKQN7*aWhSq$;O* zahTbk$VTbdEpx0si% zZ@Ne-8?5@!7e>-@&?Fe!$l$RBFY@XYFkcBvYfJsIA+rd()Zv&}>D}FVR8fTU<$-G4 z?$WWTQhhv1YwfL6Wl6|fw3Rq|9*^bw_{agjzKJppLQ632mRH11bv@!k=M7l9ltcXm zsU~4kyns9W7im+k=pba!8zjkl0;@}x2eZDg&M&LLS%$p|+rx{7S^ju+0!RD@dhCM^ zSw5c4wi0>DG0!N=>C%Co>gxPRW5!X$OQ|_|Fbx?$UbO@K_HY@B$(<&nC9M9*S&?+K zd@-T|*%K-miNRudxE)2%qR$j$*hAyva%HiOXS-vT6Ryq890pP{TEoTNe4X0qM{&UF zJa&k+#-;PdPC~*OlnT!ajA;GJ<>Hi4SzfA*1C>=e*^-wxmz#&jJM?y4BvR!?^b~Pb z+gjWMsmX=>!VsSMDD*UUq?Frh8)3B536t5A6lzW#Ru-CU5==_F3QSU0!MBs!tUsw} zV@NR0tH|{uIq(#vPQ4~|v2!Bb_Eex;t4-v49mSQDYGrLYv(*>QL*=v!WsOa1XzA(B zi;KKJnMeWw^sv!ea*grK9C!OrBnx62eW7N!XHU9d;8qs~?w%%f;ai zy>6MWy^1ZN`kXFYtCX!FOm`vR*@Oj_DBp zG%PuO>zf?$hbuC1ZzyI^7`e7c7;=ldRPEB6<>@pQ0(+Dbm4IuL;X6ufj_}9_+UZ1} z*2IX3khKxpYMo`p{Y{#mbO%{Z(gdYD$npovRh&YxO_;SYE0pvZS)MkNx<0dgSy}_m zT!ei}hV42B&#*>bFFz^G@4?DWkw0+k%MRVYL;4KFb?P(=(>N_uMCHqnBpBO%lYOjAhd< zzL@J4F1 zd;qVhdAlgnTZ7T;O6AfNE9XnuB~M=MvW6w70{yTZI@{9JdOt$0md0!zq^T^@Fzah$ z82w=YkrG{%tH272cQ-7HyjfEz{hKY=`9*ng!Hej)IHebs0#{^ZiQJ2Ul#V_OjrFW2 zf8|!RKI!4T;Hd_`WfT#iiw4L}?Q@ya+=MRTYAW1>F3kyQo@b4%EaPzcU@A58Rz`QG zJS;Vx$wEchK?{cEdU?MAchQv=TjUIZk4jbqk*ncMY9f)&V!Ut?7XwbR z^#`Uk@GH43H%61LJ;kI!4ya;s@P%lkftIxe*jE8sQz_8val<@t6|PT!e| zvw$xyB%Y+x4@%xE%Qa$JEm13QWd+anmt`n6A(Pceg%#4`t}_nx690t~*$C7p$$Z*$ zkS-4<1SKZ43LXjyNa5r@9@JY7jC6209QD$^9ViDxq`6p&84hoB8BIU`LhCM;b6Svh z`2zTK0gm+sViH%J@2=s~Kc(@aeO|^l^z8SL)F4WTLE79f*{+GnyI6TleG$iNR->yW zXS>QEM%o0{$wNG-3N4Fz3eETsL%9!kqH2X6`OKwkrljacOS4&*a3;ow+Hg607^N`K ziq{c52mU&{+cEZ7(6*>^9B03Dn2EWtt_g`&v4?1a{aC|l(bqyT)?Su;R@7mX)-^B3fVD2SSC+W)xt&${N?Q?Yi2kccJ|>#+3!vN;Y|M!j+QFYB zTD`?gm+~BzS{m`zRjk$I{A|8YP)m5U3KJ=Lk;F%YH~ymyS#TM zmK|?_u{L#=R^!CCE=kCuqk$sXwAiIr?U;)>pbxd+OSU@=}&WH1?&nP`{nT6V_>gm8F%{vYk=NThv(% zRsf%>!IDfaA63eZJ0=s*c;E;#20l4Khzga^rVIm}8xz!t2A;&vq*HlzjXta2t}zH5 zHliU}$Vrr`?WnrG*~T%ZX%a0%V;W_1GMuaBRHJm0$yT(aA_lcN96Y5}#8oQCdlWr9 zyEy>~e zrimO1*-3YwVrXt)2#(=Pu3q2&YmJIM`x-S(8g39=GCWArWz{Jg`ye0bpUkev_gj!7o~+ExQj;M4KszF@^ae|=u`+-j^sr*9PC6qYzmO)`hivX_Nu;+r5x`< zpI~K^Z?k#<`xsV^1W8h!!N*$@?ZLNOB|pRvhhJya0NfZ$J0+KMX@?I%)FAhA#+kA% zmtz5apCn^Ztq1w0Yh@8NcM=P(eA}vq@sv*#54HY@Ks`GyA*hB5#{G3HXriTBTA5VV zU`C=6)R2?jBrcO0T-D+w3UW_$tRzdozCrt3PBi*nY%(D+b%C0dcxv96lH6=7jUZd< z6rK%QB{bve??B2uocba8G*2p0m{^%?SJaXk7evU{m3o<>k$T%KOQNpPo>ZC5 zTB&;B7kG|sD&iiCNw%zo*o=S9Sg(xul1&R8)&Q1tV0Jm4 zLG{4Fhm2N`13_o9f-FqtgAvgerwo~yxQLcsRd<8^X88szUg5we9pn-0xYM_WJ`u?o zUG&?mN)4`|#^zgU*&Pq>ISy7Zd@O3jBcqU9AtJorrp;tud z>8Rd|$Zhk)+C^mP)NM%Us@(!b(xL;R8x=@>RkB@>NHQ?R&?18MV4V)UC zFK-1U1YwcjJx5WXLl^Ut31UP|TCZxfcj>K%WC|MlfC&kPLF!G{r{lPVq$GBh8rI(^ zW9abmtQHc6{=^G!%k_0iq11fSkYC=9I;wU8VlxgOvx%}a44!Sq%gby4A4$Q6*f2IJ zTRL%&CdVP~KjGb9KYW9FiY0H;TTLgzGE-0LXPyob$!MsJi`|fzoEZPi)c}!1gVyn6 zLMb|u8Kt;nvyH*cCM zoOb+y)OE}iQ^nYsf~82z_>lrj5HC1QD9hYVCLk5u#5EAs`LmOiX`XFQRzlofom?89 zTlh$Ohdcye9ry}#abnn&a*&S@4Dt~!{V0jf#Z-&`Mv1yy218D>fJYgX7erq&jv`h$ z3Bwh6z)pGc(~eXUr@V-*E|@6{y)?!_0ZLRQ-!aa?p>(E8KB1zq4cwx~I&FND-^?>h zK!h9o)3Tma;MXtE0VcFm)&@z{Y5)Tl$g-d;#U?rV9Y$93Ac?G2Ln|r8DKqEJuC@+& zFQL5yAE&a3iAd@tqDT%&24S{|&oJ9MT2Dak>bfW2CX=yRk}|b9l*G=KC652&1c|&+ zGcl}dF02CbE{iQn#>-w2)`BiuX{}6rdoDw_BCHvq2iE{mFGBJ}t;%A~sM1!I(j*y{ z7qrk*su)?cZt4hPpD$WhNlkizvYh16NLoem`nzu+Aqm3ru4zV8>9)I&%ywSnZELT` zZeq*V3EWuO)($5e*D6~?v7}x|QTvPY+blz+$?rm~rXMgc%5g3%QXr2!UrI_644NIQ zu!4%2gm)Viw>jRuXfECc>FsWxv$(fSzD3;J(TdOBEp7|1$krEPdi0f%`ckr9Vb3bm zm$8k@E0RYP+FR3+AT=E-$#F0w=IHHiJ8CgLPn@URvGPK2ylgOzlM|MI$|AV=FPR{* z^Sr#!JTn`dXQjf!6Cb$i^^x}8`N+BURy<@PZ;HehrX}opa&buYq$UeAosdY!B^gcaGo=~lAmf|ElE+GnwJ0g;H(d=O zmPxbFGRo{oDrr}pUA^s{9nA|7$@bRv-fYfg1Y(sLb}Fu2a~9zyck`mQ-kdrWF=M?E zE3I=ud)H!oC84ER;;x6YQVj*CuhJ6fvda-k#UQIA6A!%LlwUKt7I;=#t7oLO;Q~EA z>wI)x^##ZCQu+c;jzWBu6&W-SI@>$C7ULWBi_y;ItBINHfS$U-*&yqR{ugohZ-RdN z5GM`jZIYL27LvP3g3>KSxVidrv}F9EJns49O7lXCKN&CRpK`>!6|c+FwwmU`Oy-b! z(zLXpOY=j6mEmPfNmjy{g$xJPFONo3k;h8v^5k4K3IBzNw;CDQsEVe!QAG=HbWc*r zlA8fxCCgHMCCjpsN*43tN>-m2RkDm&P|51>Sjl3pR31UC4Xe zdLTRwS2MXClu1Xc-bPsx#W6*s?5arU{e>qeu$O1ob-<4l41@+_bZ{f9qSaa zFMCPRH>orm%RCL(wwt6#Rl@tv#7fzEUjUz=$k8tM9RG{LgqlRMZed1JZ(o?P_~eBd z$<`}OCp1}MMly8^6H<9i%wA~E$;SKw9_!<6xuncN;$5zm-i4id`4OXZ`BGuAR+=>f zOL2K*U5V>y>6L+cES~B)dXs*`D(cY-Eq3k_QnYc%RTP}z);(7Z)=KNDt6N&-0%4k+ zCF_tp3_{|nr)AY|7zH1A60(xG?yB-iu-yZ<<&+$R;`GZ{Uh-yPdrz+&nS`#2@Pw>C zypVOtJ{b3;D^?5E5hHcZ6-Xi|ygJq1vZR0q+VJ9VvOSb#XezjAU5D$s$sDylpKvWs z_sw%v6zn&za{M#1GSPK8m*Yj7N8Jc3cajK8v#IGt3f5z-P*SNgaS%}(aaUTn@1~2t z;tqbQ@zP!nbzAO&v5MpL9|Wb)InDJ>`oOxjkZi@1Uz(kvsq{o?2vQe4At-Lr^l=F3 zKG$(W&e6T7z0U5*m5Hi+vB9||t%$#zOmU=4$^sT1aMukyk;S2!IaQdyt5c>!77Zr1jczvQ65aMBneYItLWn^IA5|!dH^3!I7LL%GGuZk5V3Th(YBQy>7o;?eXgA zI3!cR;c9fpt!+KHeu#t7EAeW1;`Cek!Y>V!;A60F){NwsQAm%eIf5X?GCf^-6W)f$ zQRsB*vVn!~(rZxmcoXh31}<#!1}^#^jUMz@et+NeIQZxxd=c@VKM@DdImypK{G0}(m9a3xD{H`11gRt8LXqBv6cO`CLdeLWu@EcRwzAQiD}FZQIgAW@~!i2 zNlB*hwv>!jyu+n9MbH6FLc@nbY{57kFccbD(dD9PkKxNVzt@!g+YKlc(&ckLsw5>( zO^C=i-geTcVbX@@Tx4b@<$>X& z29t;+8eP^eXq}6%tQ2OzIJqF?oVJp*R%=W;aT^@lX!=_^Px-*3FRH|iG!G1Dvkdae z$w}JXFxZ{;k^IdeyO{J%3`+A&q85eiq(SAe^Zab*K z4?CtA#m!$|8v3na#|qMdGpedoy^O8Gv34f}bHO_3DM8Ivc}$8e55>Sk5OfchMwg3a zfm6pN7X9fOIB~{hLaZuIsA!L0oM$Q!kh+ey+Np%d{He!&R^g#qAHqI7Xhc78*X+StWlVo8+ zwzD6nL_)`xn{a{w0osCdqB){B%W}bh?CT)8&d-PcciP==a+YTPZR3xo_WE^lQ%gwLD5#f_yE{>c$yw-#tsO-_vZPXls%7#y!nl zXrQqB3&gTGlCJ)R6qhvZiDN&Gl=vaV`SEcHx@g2K+ed>aIg#z814h{Kf}G#~1q?g3 z@KMO`7ZZ7Bn$jLJ9cE8+QX@2>`8_7Yk}fmfPtfKO4`0pFohAw|VIrG?GWLE#lP~hL ziTD-Uco0w)u&P=ooWa)sWX|U-z9Wb=cfU1c?-JYLIM&K~S7P=($z`thB8J~`1G`Lu zZx3)=b6|fY4F&GB^;Z&-;A4p<=*l5SG(^ zdc4txqr_B>2rZQ(LdxWb5VJWV)SMgLidzFN3D}5|f!1ichYQ!Zq*;WB@`7#v;qDvOzX62GB zO4k+684xv>HSEkJTuvy#REJMtl4wa2LUMjpBANK~bcSZU6NVL6-Rw7JTfxJTQFxT< zg8`%+kqA{Ux(k1xR_R-Z$pH4T#OW=LJ47QyDYw}F^5IG!-q#$iR94ys(TU%3LRQ4_ zVQl$6s{CZWb)s604~5}Kk;f{X0TXXHe>T6fRiC!PaaMLG%LnCS$dO}>e-(@Xv zk1+aPU79hYN%t6#gBS&ru#Qn2E>`8cm-w_SiV`>FG5e3@$0|C7FX=_`;quB7R;uJ< zv~s~$d}6AH>1f$MAm+kx{?M&fTqo!wL8itcKS2Mz=9HhZUS^VQth{K35z-i9iA^rJ zC-MIO;cqRnE#I3iL}pmHBV#9*nA5rprcj_texjkH`^BtR$7HrQ)MP0$Y2@mpkR5f| zvEXDu%U)8Nzh<HR=o(1Fe=;g(7X z7%F4HroYNHmk+!J53vH<^?jY}SvAmb>(i`AYDyaXpZfrvQ`iqKsxGJ-+ix!W@aTfSuR|2K`|10CJu zS*yxxg(w5@VS2w-?nc~by>bSg18gQkIw-%q!=kT^G={Xc78%#dc-qb(6F0I5eqP(S7OBCg{+miOlYyzzK-XRpVlBpLG4j?pS^{ErV+%}!K}stzW>+Vj8FJ=<3vGw zOQH88ZscE=9eBoV%HHOV&PDAw5Mqnb`U>ePE)yPKJa#b;xgF$LK=W11)3OxX|1EF} zgUHY%b#_J-geHrA>Cika&`nyF5`<=DQlV8ueX__Xhi77fT*`y#vK@l8uX4Q^hc6oK zq|7yc9h%6qRYGo*?WGJy>q^A33R9~*2#x`TTZN!X+f0@_NwEEYu=^O$gLO?(GwY+I zSLC5vjbCQbi4w}RwR-K$hJ)pqAvr?n5;=xhA)f0OyPwXPgq6vfgq6)3?SOQfJIHoT zZJhBUr_VL^R|aw1tx}cs5!YuVQI(}(7&1F((I%{Ans#%4j~$b5?$Tm0c~mm@2kP^5 z@fB=JONQv3(|}YP2Mu)uBV|>{*^;!oXzatXnGF>$wd;902>4ZI{Fbhwzle#quCO_RJBFY^sE8d4+0`v4 zrF}0Qc7DJ;S!@*PCo=qkrW2C23I2ASjK;vPN~0}!3F&tH0yBLnO)E|;7EBpaj9^-u z=+LRA*6dJPPH(scmq3z1?NDJnto@|x@>fT3lU%V=0IHTorNaP8lh>zB63bF?hG+xKWQb7X3=v9PB0|Y4 z5T$3!BPQn#ofv($B<0#sSZ#0?1h2BW+HS3?E+ji)F|%5I!pER!1*NgNh4oP09hR^i zMXcPVkoG3>W)t}~oWiOJe7hu8io8hnaYL1y^w|zeYex<@%#V~_J7@F)T$!k+D5-Ke zp@g*xn~AO}hEBw^H1AS@>x7Hy&h>9iKb4v1}q zi>J&8nM~U&=#(@e%F)uqFb9deB%o+?Ct{{$dCri!?8S&CbB-uh{Y>a zX{=_*yN@xkR+1AoAuVMLeKcf&5(5kS;!WfsKYF&ePU+6=!KH8=Bh06SZihippaUg4 z?T?6dK_n-NBX}i`=Q<(}IeCKTF-P%eSY-q!yKI_MX|OX|yD%%~Vv{Z+$t%fLISrHY zDv!kEE7p%j=5=CLr>&ob3Qo%S_`4=+C8W060kTXDxMHP)KTRX|vc2c}K}mCn`$HRm z(6y9;D0rGKj@4m=MVfd>6{#@tYOc`VF2hA8RgbZ95R4#YKp~aMA6`N>2u(bOw7^QH zYLXp4>dGGcS{K)2TuUdBEuAjc(yde1`MiJE?k&%^d+U_w9*JIAzCVDS%IX)CR39N%Poa@-7pBz`d7$E7QH+*wNS&1j4QW|jxK6?f3B)qo)p`E zmp3ArO}f_8L{(NGoj3VvQh6gn(SntWeP(^iCL3hgDTEZ-qIR@gop61SoeN@9RdXHR zq(MVYMlhBut=^w`!@$i_B`U7^$J*RFxpW0I2~NPaGJHEuULj2_eM7U4q^q_e%~oEg zDcOi945P{T$A;l!O-J)w`+?ky0dl@oBwEu}N=DvgZ@B31X`JcFQOy)hSN}ata!STH zb(Z{-N|G;>S5fLpqS3lEMkfP&WQIy>>r7d}k%VAm$rHA-FuSKR90cYW+gZ~?Vl;G1 zWZj@SIcJ-A!uBy9$t_i}4}e)b_Hn|^nts_`&LxN)m07F{gmNOBBI+iM=*aaFaPxiI zL1IR)8#@N!hmv-Y%^!n^oSbsX3aw3=~I(P)A_(vD^c9daUXhw$F-oCDG(k>}X#x%Z9D-WtR3DHOiD)TEAqA zF{?VY5yjM4i&bxLBNj?+Y(&iLu13U8Z%{-`wE}hnh#4*QKR2V5VKX|D9RV+sR^>6R znPddaAS$fRS_;l?=k0Hfq3UYWu|`h~T#jGWT;J45c~Vba1tTl9x9Pp)bQ?KQNNs?6 z->LmiPq+D;sgjIKol=OnnQ|caZHHGmv1jS&I$%8ct1nzY zEjP=Sa?6f#C($P!qOokf z97&CBbHqf|q=R+(S)1AOv6P%mpM(+Z`dD%$DPP(frMw4Ev;;7$(Dy)(p%A`es}r>5lHt%dh#sChaBmO z2A4KUJh_wc;7;^pL(sEYS@}Bp-A0POrO?{e(%Fiq`TUkjM3oD<=tW?QMqjI^p zH(kZE;TfJV%x}nViq%pj;umb?YLCm6VK#)M**9oY2>qZ@$W%#62D(AHo>#NUE;7YcJAWN6Avo-;yPa+>yKjg9RPeKu?XLu_C6%;iz zqd*ELpDXH$qy2dG+fRs`TF(k5%Nbr`M)Fv)(ug%7jL@T$N|UlmGi245p-TMS`as0Q zBnhSuvzE$g9O%VrL&O~{jrZetXiU@PuZV=aYe4If17&0OrSmM?uKs1|vJZvBR%JPI zm&=uSrHzIZR&H{@7%$3!>Rhf2N>ZUnv~XWrb0Nh-o>^T|gL3snX5AIvU{SuKsv$+y zNNcSgERb)%r0SR?$UV0m`9iq(-ma97&!vd3Z;@c{8aou&k(}^{d0lKQzgilpU`cV3 zl9n1JOG~J4+MT5GLfEzr)oNoyRXw;Il~z_D`OLHH9&%(R@X3OFJ@~ei`_hAIic(!a zz2qe416@Y&;&W+@8xBN07#A@UTA}&3cok_dOnBfLJSjc19I^V9Iha!@-arctp zrn;B9{IGjT3sok@^ZJ)MVnGL!mPmInjvv|j{M^bD2|AcuO>YzLNF`-+B9Gy1(wDe! zKn!}4fa?1Z__2#R!QD01p@cPD>_eX`UpiQhW?Y{w%adA@nK{}UY4;JBa~BJ#c6G>! zl@En8R^Bo5t-RxgR^HPREAL3C$9YyhVh2_}qKEcN+k2WDTKRw%+ueYXW91z;u=0+S zW91#IzLj?pk(GDlmND3lQO{sIem#R7^XnUI7b~e8IR-mqt5qqF;qV)cY?>(sHnQgR z1rlpMiHx`A8JV;-Z|m;17PVSMhhtk{OygsYLbOYT7?|k}HwgNZvkk12rYHs3g9S}) zo8^c~$pyN+Q+h}1F(F}V1d9uzET#o97RD$hFANFiXR5`j9N(fRc_oWFsOxz& zKXVdqAq7)b9j^)4!`MhO`x{AjvlSeT~$tR$_`- zRBsziGdv|-w{zf>q2!d79qw1~bt>VCJ$D*m{4wJZYHg^5>ph@rT@ebtD<08orvZl4 zH4E_MC5!`@+?cqlh^m2aFf-2vsV(Qikf>mrsa~Cbc81-ow$5CDyw8pM;`J2 zvG!fdaUIFF^GO6G$~;0OBq2n12vDPW>S#C;hj4=iDC&IuT`OH>R@H7mGdDsadapE< zmF4}1benF3C$D1-R>-4Eqh5I*WdieB<(VD4nr+aHm9+`TrJsQnD+CiTyE@{r|NFZM zFCMm^p)U@n%zSS`uYMduJG%>n?jWmnfG?)}}xT*VXzC+Xg9fa`V74c7szP4&ky~ zrQt`VP+{YfUcIzIS7@T7dq|B9zW>U7V1TgS4}pkj=)w1hG>-$wKBV?`pg=2))Nu<8 zOVN6xWXHQ%^MKL>OffpdgR!_TANP%~e&5wOi2aIb53&Q*{fSZ6_!BUSh0MX>;Rnq2 z9pZ2X4p@X_g`0fELkrH>@Kp&lKil3Dnx>v2XIx-&kI%yhLks(Y_Ni*oD`!TUqwF+D z1CS04D{*gdwqTBm7CF_?G}{T11{9_)D3`54%}~)2jfJ)&2qVh8W_wk zW?Xuvx&emoZ=tQ~B=BE-yG2h!Hn7c=D_ht98zSsl>*5L>*Bd>@*@BX}OYX zf&$=?nvp3i3pG9|Ib&)mp6#b7eYRCxtIsYv;%Q$2 z=>rtvG&-bgi4MtrkYW99T5mon${F+`!%Uj?OEti$0WhG}(~V*`au{og`tX@&t2(NS zvNSExFw>^{ofl+nQ+B2zPFt+X)X^&X!y+_Tm1t9|5`AtJHS3wR&Ri03D`n>e(q<)~Nz)&=x*ywUkX}+nCVP#50PcYx_WL1N1gkxaHxg+LrxtcYgAGX9v}9 z$p~uA*HuuZ2LW#}o>bPImCO{jeR5Qk8ui6{)vmvP#-#+DiV30sf4u#9z@qI^!Gmb! z+V_M75V~kh{o%hK&dzv$YJ)!9Vj94Z*DvKR>l5AC4Wkke+8v8Z&;adpHlfy57(*+` z8h(T86en#nTGY?>jqw9-3rZYJ9IZQgc&c>T;ezti&*E2fukbN38_>MZqU_UCz?p7t=Vu$P%tv+UbZMy-{Nz*wLY@DWS}hf^gnsUNK3W69E=uGS~J zSEucU(yP;5Vhhy;w!%iWptlJ!U7}u=Vv~7rSL{NSkh$hHUgeNQLXJ(hhWBsV1iqbX zscy+3wi;uNCDff=TwQdGE*ljGaAIvs0O!ZJ)V#0&*~P6+9o8fF*86rvxYNAKeC&g| z={aySc@_EdZp~SOWG|6c-FsMHc~5Sz{kYr3lRycaK#iv%C7z1qcoHe`1W@A%pvDtG zjVFN;PXJv!4XN?meg0jImH;_g0+eVulA~omLp@d zYVv6|U9kl7ag3B3se#wIPe_)zg9O%=BYL?;yt`O;VF=(ckIuJD zipX_3JU=&1F>p{byKRTXAS+QO>KOXvp@P)uTtwk$edy4S5dtoJIl*{&ZX`z#I0zww z4DKn@)Xw5T=1^RZ+0O?nkH%HQGE;`Q7V0#vg+t@2>jCBdAhdtJD+-rU@l=-HGu4J% zh;PJ0?i;eHTfe|cWpILv7Y`|oY4%cfod1NGWUdqjkmnbKBh4GgcOL!gR+erCAc1XE zoWK~NXN>#8XvDtUgqy5VAX%kAvr50+DvnUk^fq0Nbm`+Xg{pJhA9+vI1LwXOqRjwv zUa-w#WH4qe5*RZV32Tu}ATxBHY^bDh*q`X(r-bn}D4q-%Oi$AsiJj5sVFt{X$-^gI zd`af3GFY)16e`W`PN;4IY0+?A6m@%Xi`50$HPZyA()6iE|X zG&Q2Zj50~1JjL=tmTgilOh8O?Db{jk`(7Pl1o$wJ?p*!(?@F zvSmrmX`C0+4M|O)&4OVO6Zwa4UtRvS!d~*bOS~Q+g{oUQMsbLhV>;ch;AuNRQF+N0 z{qu`kn^&3eAUx8I*XG|*6m}*GHP^8;kBW4TZ^W|^E!r}Vk5lkkl2z6*E5USUf%+v* z7Gt}JKE)Y6QFXc+Of7Z^#$-e2K%H&}C0AWVCNg(JYZHI^3%45|-TdYitkgPxa_;cz z)+UiHq}3R@@Gr1T+@=OC zse`TP(9Y!~Z!FU|a!&o+d#)+wY+Mt zHDuCRE4f6_F%bMrf0sNd*#Kb6tEtw&depS0F&ySTi-BFmeA6+CP9yA0m~}IYtTEBv z#w;~OwBLsN$jUyuY?x5rS)g%E1TC7YbE}n&(&tWtM`nrgkSoD1gq9;6sku?nA;%e< za+@I%iDHB#Tj$x2G^@b4g+P7#I zbnphzi8lluy+L^NhN3*Dw%`piEP8{)&KqO(0grr@i}jE+F>xZ9rF9ZUyfit5tao~} zViH7JGd5R+JeB<)*170qYM0TPtkS4R6~g|W5%qYZA2>k2I?*I%tPIy@czD@|fgOXN zK230`Ui$zgYEz|HJ(orH7)$`52_6C~#CJdKuU<%%+y;CVi#n1pe8|mvn!yv0niZlY z{}Mo6OhWuBYGIYB#0L5wc9|~ycjE^U9N=>nY`BC?@anx!NJ_#6#!Haj9K4*dlY~P7 zOC;TN?wRuxCkt^gMHdWg$5VNwS0KR)&Z^UI@^&>$f>DP+qovL~8X6SYb+7qM-iO|m zYW?!;7vMaFdmW=uvih1&9Jfopb6 zqCw_?V6;cAGBJbmlD3a2 zi@;Ex?Yt8)<_t9cXJ1b~&9~4y5x$SiC#i~;*jc;Ayge_Dtkta}6y@Sl>jh>?$ttD; z-0Bu*j2hN~G&}DQz z(D4Kpo&X%_(gyM(8fh@~)|nZfj1~uRzv5|uAcrWTKRYl<=l$`pdERItdNH0VPGQN$ z@&Ja`wyRjP>kvL3%A7=1E)iUCH{J{4^8r{8cMivA;5buVUkR4#j;lW^)IiF zmdfbAgjmX{L8+`N0!OsUq*TTGjUmd@oMEBe7bB!T$fe%3LZ~nKL7LQFW=*P}4Vl#d zs%Wd#UJK+Dk=8N;vs|i}3^uz=ApS;mSPr>){$edT=EWf!GC5-8noY5EiUzBv>D)<= z!Uc;Gq}`w4yp(j!t0dljk+B;G+cnp+h~#dr$B($@j;w1aDgfkKfvVOscNSG_=4qZw zt@4xdgEiD4_U6XU-(c|2wz}z|nnQgf3*(6P{d1cEZD5<(saW)m8~h<1w^8(Wbehj? z9w8$`NXpoU)zB_9CFJm4@4cw~W(Qg)#}TR6uyI^-L_){8Z&S)5B0J4veK1RT;bHae zcyz2C$l2E!(HQy(DYD6DoR1*C`$f2P?qGmVmlQge&I6X}^_HsXdg>XbbrzPO1%(!Sk+YA@*q(w)Oo_ zO68V^u^*ZZy1*93G%lLO3bfjwFW_?_n8MDC@mZKK6UCC)E@9gyDDlc}vxCn?@*sQdC8?*=n~YhKM6K7k24tKI}4y$L(qR)JfS zv22r{40I1d4IixHS=*|-KjbHj*tW>0Cpu2w8>Rl8ts3+kLtxyFe8cN;u>KV9CuSSl zlS>)Z>-^gSfji9Jv}rX`5QdN$=qyrr5&^E!jc8MbTz!Z7yES(*U3}q$0IGt{Q9@lx zh0Pf@DC0r!nd5`T3&ybvsaM>l;ldI^t9jHO?$3YN60@;^6s4`Xmd~pT6l1*SD{kn^ zWpqJ=6<@0tY{aTZ2rv6GNewGKgQ)7)*{pIfS z=Q}_8iHVMe>-wjZKbD355E;7WEv~{z11x^Ffz{#J`Z5vunTQw^W}<&axz%x3Vo5+S zvD=1A#L;cCd=cM`1$`uchc;5Pf1oxI(B4hh1NGNun}k*Wa@SSLo!0zrg9lwUp20z+ zq{u-O0M75|RBHrpqns+@Q&PdzCOHQP3d>DT&KhH*gLLJ?EQflt?(OyW$nz}bC&w$i0dc+2*{RS$pU9?)Ph7K_I82E5mzy1wP%LW2 zda*QLl*WlMo6jf^ThU~`bFLmxZvDt)2-MytdAm*~A?aEA6Urq5Lg6A`by*0phUjcj z5nTM9o46(rl~ErKHa+Ivph*zr=H4-o*djL}>1{P>EBRujEaVuGFvVr10LL}p!?ukE^*6c5@YHAox$id_4Qg1zE|ZujKLhh?srIi{em zB_!D8+)Q%#dghxgc^y?!pVwu-CF(evPZmcC*7m42?7Z!GV@oM~T}34rE0^Sp!20^t z2}2{=2v`-AXK|vIXr$OS+6+X%dSUA%^uD4FMK+l-6Ukc#YA80KJ$b+hn>^@kT4hFo z)zVb4P`{*k=&IhPa%Q4k8yo>@O)-;@+`a5$Z$_u0I_BtmCK2dT{D@<&a;9=Q(n`Vh z+Y_DvTb7+Du2r#^r^lLlEi69M*a%^s+k`a9ZGzX3z>?fS*9XB&s3yr$y7nE-L>$|LU%XlvrI*u3z>?ftBB>Z_P-6%4n=e|8tS9ZG(*>joQa7(MuRuNWdBF&>-)lq9s8TM5}}yL@PgTs z%G}giE#LcmLY+n@i-Ws-H z1)vhTOq+??O=B6?I>Smuu%r?Y7{jUaP0di$E{~}!<;9D{xLn9ei&;{KQ>@kUTB?`g z1rJ*p&ugP0QERBSn`d;dYZ32q{1dS&&MIuEOP<1((yEAeN#(SZ3=U0F!AZr#UOjqE zEq--ySfs7gvbiTJ+E%9*Zm)1<r$6xz zi?FcQj}R9nCMi6W*`fk742z-<9EVP+NbyXOtGqW`O^2?nboX9eg^9p@$IheVw5Tu< z4l2tvuQW)pu--xJ#|m*LT;-&2PgR)ZhdV!fx57<>sIs&r8!akaHbuIm>Dwo160S!y?MA9ETlDP~o^#wuwuNjD zQoBFLFr0$7hr}^*dHyOg==GPKHQqpt7bZW&I9^Jk2W=kdV`#|ROWSR#?od5NyKnMr@Twy@ER*mWU5n-`6OHK5t2V5pJ2o$xgaYe%|^Wv&{UXR z+N-NG+}Mm;Fc3YNPjA7aB}TQ9wPKfd`QBjFEYmsNw|PLmDAAPR_i}ac z=I6I^tW`#ci$tDTnTts4@9#i15_NB>pbcDmD`~M?_Mi-lKR+^R9 zNaoS3_4UU{vMid*TgH*QaHoVnF*WLB?n8}mt1C1k{kpwe`fJupe1#W@W_G3mokgTj z-?j4J(NMYE;_>i!3c3WxN(!^-Vk+JxJX?J_#Zz~<2Ms-x(ddEOyQy)_lP2iZ|Ql{{lo?I3gX$&X6{>3dz*NATxb`Q~-jLYKWd9-MJrcYi= z5*HzxVM9&v!}@fM4S*6%R)ekxJomsQNii;cAH3Y(FhbMc3Qb^ zeGdc{0!E2 z)q2u{Ov3Oe@2L`!osCg4;sG*nWi;fy02rg%!NJi!*s4uCYp*PQxKZB2%>> zK~taZ@)J`Scha6I_(GplL{a*9jV4bf@8FiZHFAs5PHaZcKjn-Vs#ebPb*xu2aLy`Q z<~Xma(}kwo(5go&b>w5_Le$u+Q@l}txe;qO5&^6FXCI^VCW2Q>q6v9_t|<|!rbH;3 zj?viP@dTLYWy^rd=IR#J{07I(?fN%=go-zrN+~;jK(F}%CxRL)Q%uU*!B2gs?v+8( zzSymEwq3ImVh%)IcaEXa`s4M@=KkWO*DIM+rm#zJVirZ|)Iw=3jN1VO9hVF4dG0x7 zt^=WOZuMMTp(A&44)1)8J8n8rX57(m@hKnFWm6s-RL|0|*ohW#u6UyrDRM2sBW&}D zyfbbf+O|5o=C5Nw(_A@p$>5q%aR-7(9X|{oQcU-SJ2I z%#4=HX)f+RUD;gW0K-K)=x^SkT~2dITnDWTU-vhec8|$Sp?UC_YmoYo72hdqMRc3EjMmey*8j`GIKUUzGuSH`i?#=X z+83QyDH2eH!5QmSBMty3)h+(4DR4asd%C9=UL_FJYnD5ZJxx^TmGe*3O}v}r@)E^{ z!&6iJ5-(oft>}FqO`Ge2a=qkR5Q} zAV(!Zc#cid#U)1u3Fl_HVCAIRDYuj3eo#!X;3m~;-si$c!oK_Q`yZpzpdEqOoouB6 zTkJ6UuvJvUq}f~o?dc?Al{D(a4P&!ZnThmj+0q0iQIx%?xL!~?Ge&|UM9}?j9KIS2 zPFF!b^OP~U0vaXittziv9%Hc=$||*w(7=!))@V2?=7Faca zV(;kfds#GK@9TKYxie|28&R6%AWBqV?FEiE+~6&9#LgviCAq*Mm8BPI-Q20JzkPrQ z&*gFQR_ZZg|H?|q1!A7w0Y(o)du$=b4F(RzbMM@9HUXQXJRMcSU5_qCQDHGgNQFI$?Cn7>6U~KDw9_1) zy%wh0T=4%S_cyO`FltaZ)36nUQwi2n*?eBHiVBqwI zm$6s%M$#O=NW%IL4%-a2VOz(5^{#k%@E)xK*gQ`WV1Er6N1Fgla_bDBH@`BIYqr4O zva8rlyT9u`ujSj7<1*!4Y=uQ=LQiWCgfI_sjzTfGJv}7T3r!sMDn80&t-Zz|Mxb2!M>KSKh9sNNvubN{U;uw1HSA z1>OR~i4we>*?*%yip4KCNO>?2Ifozq`EKvUZ~I4D!y}90Xo_qSb=>NM#%PmKPR9}l z#%*$O8j4y&(fVQF=ijWfF>8wWWyA-I8N0th2LW&0T->8pZtR+col&Y1nVc+$c)1|j z`VSDA=wym$;|vN~>#AZSXa9MLce8{&R;IZt#W$*s_AU2z(ub>61ONR1-FS<1(apl3 zW0xA#VwEF4IpuliM zh_%;5=JW=uGCWc-BVFF`ZH^g5`=qy0;Z1_eUDmk*=7kljtcf&h ziX|F5wR0)&?#?v&xsfStIhJy|Z84JR?Au@w_uT1;Ua2DGH;OCAQ7jF|-boz^n($L8 ziTaeHQJ9jhFmH3g`Qqh3YidokEX6hE8Tzc;2$THUh}uTCJkTh8Iu}ZpmkX`S%#Ajr zb0f{Ob5BQeDEEh^T+~=58M+ZCIl2*tEL};9ah+u9B)KKF(`=nY+cD;nuh~|16&9gM z`V#Kb&#*2whIVO2bg-Y`Je?Y4l0rRk)t6^7OcIaqB-scL3FhD=a+5?7?rHR<2_x)V zk|Y()A#U2cFR7@IP7oFX=1VSc?!UG=tgN~;C&a<@!}X%XBuh}L&k}}pUNf}I5<~}| z5u9glUzY~$Q2Gw;y1|^!aa@QG*<|F&K0TJMvmEG0%J^2 zPL5lDUE3UCTCDj8s;&`Oo0cj-9S5}vT!)8=;p*&;3-ZZ4=`eD$q23~2XpEK(Dur5d zs0?>G6p&MbI#HKG(u4lgdx04S4G?P{GFs=kyxUKA++QLm0=Cd~j?=}lDk4uJbqb^% za30%ExQ&H{xY1ka4Qn$qSpVA2fO*KofH?(f`Sa$EgIlgv@ztL%pC>52s~pK4*dpXo zq&JH?JcT2NptI1!g)N$SdcA-9J65;f%X)*YoAo5WBuP`y1>h(wH`S%6cZJ9mfL@nK z`6gstL>bh=!ME$vR|hXN~^OK`n4vMeWqUnv)EeRsQLFSR+l zJjWG)v9Td+<8_m>U>w)^ff5u~phmkMt_Kq&5oJ+~yCJ^Fnw=Km8AZl1n(lU>1OrwX zrRH_DNCzsSSFt|gdCA2@2zL)o<#Z$XD5;B$Tvkjbs@YsVC1GMAm%LCJ;zdw0p;7ELuNFwZ9!a`%Sc`#j#M|2=HVIvt&%$|R&qnb zy!HvQZb9_7mRNouK%)4GyG%nGN&iA zd8k&l;ppSb!ZHU1;@u>vdux_(F6>JscDVoQ=he~v;gPwr1GTi3#jGaLrp+35b1mz! zgLd?GZ|?3Mu&a;V%L%#7G&E(*1im0b5qA zQXK^bX*JPl{StdF0K!jh;5s#OptO~6d>}%`7W*66lIR!+dBoN;j(&a59m_I>j_MaK z=t)c$AxP(WZhWKpo-XdZiDiR6Ly6TkD&LDtq2NWE3pvUSaYc z?MA3*5J%4)ALq?0qBBp`l0oi44pml^G`lG=^?+_5aeZ6gKIVIoo?akW}Wr6ea~h|9YOtrbq(mC7wJiC8PMo&f(} zvsvhH>>WA3;4&Sn2{nOwHV@|mY?Ghj9_6&s3Ta}7^Qo%mmRx>2I0g*d z=`9fo49#k6w+fKixM%dv?dz8>u&}~^o00hK5ynrCq6Ty++hA`$*QWO>;L@%-e1oT* zZCk9Ku)tn_9@WVzv9ornllV;OW^MxD8TX%l-)Rjrj)lrL^=uAT9At8+2eFZ=d03-O z-qZ+MtcfDWKf|$u)K#rS44p1R9uD;Hx z7&O~*=akM9SPO(@tuh0~D@(aIL$4*B=}1R2yXY{@WyQD`!{+hP9=WbRdK*bq>*FS{ zztXP{LIyFDP{ffkg*RG&<6XJ}JtbYDnUg6$s(?pECa%gx3DrEsY7Dj8G++7-ZYeK# z$b)-k`e+2tr;CrD7V=c^U>oIQEb<=7r?!NbJQ`|lxl?m@g;V8htQRffy(Xh3q~hJh z*A>_Muy67N8@{RvUV*&2zVF=RDB65(w(J}cRBG+i$!uBbm|BF)46CMaMRtyc=v%D8 zgt}Sd5e&ZigX@!{Ct$iYTIiDURNCsW>b`o=dqdDR4}@HSYxV%Q*WlSe6dWJEMVR{B zfphVKG*rbr@0cOfnb>*EA?ysVC6y|)jztblcN%y4c-XU(E=J7Aanirqg!s||*{77P*C92$;nmfO5=-a7PK2Ym(d(p!$zcdc(;Oh>AgYc z#|%%J-WnezOiWS2VB!7U)bIkcKg6{vx95ICnZZE?){a&$GX^iJ+(EXoW8rW+@<~w| z>PAu*USjCO97&z*$1zVB)JM6(otuo<2Vdd24Ema~8O8$Dl`)87qfE$blmDAx*EFlt5WZfGl72?vyA-~93l`KOkR!-GJRbYLQm3nx~!ApK(%n3jnS(43w@ z=H&FP`7{BR2P?w-RS?TJ9mX8dK_xK8nJHO#B6Skle4at~Wx?D-|5#n@o(|p#%)L_p z_f7-VJMrz_2_U?a5%o?&!aD_1?-YpMDS&z>LCHITX74nxc_(4bJCbiwCX<#->Uvfx zvJj}3SYc)g%@aYt7z7Q&Gg*1*QS3vLd!Y)B9?FhSZf7kz_%>GDxFYwGMMwbHw)Eea z_rqO_YuLPQIm!x(g_s6)g_Tr;F z-C0Qb7(hUBX$vgh;j>W}JS6NP2&Kf54+LS3L=wmeU1Lt+SoRZDt-VERVMvKvn2-%D zoI)gR!1d0KDM_rRKE3XSK{tIME(wVZ=p?*hChu%CF|6jYSG0|c%SCZOhEvK5Dsncm zMt9F~-fhRSBV2e~VTA=DEhWz-z z+iG~?J7J!kFkLC+ag~$P&*C zAp@BTLphY!7rB=3B@x>s%jl#uO>J>Py#*0_6i+R219XBzxZq0UYc%;XsVopq`7#9+ z_GZO%0j^k~N;zCWn;bWxoNYT2_4R&@A$W@()-L2xVll;4bf7ozVu>$~eE9}jgFVYtZ4|J6#9(jhB68 zeD&_bPq-hsf`fwn7w>+1$MqO)UqvS;G=MNuj0a5zy>Ir94qxoO!{wA160Z)~dc1jo zet78O6RzK$ouss&J=jTG^34n z7-4WM@kQqvapqtp&BJ-r(G>2TO>D{GPMbL0NOMCb&L{so0fG{VpnGO&3OI%ZI^9dp z++*OFCP66n1v=`OC55t&8Qt-T?rkZcV#)mmq+*y6sefA}CrPB-W1$FqVqi@fWBJ9CbiSU6E_730dNJE%Dg{A*)p^HeU(Ow9{&~s$csKO$ZuNaS#;TXS? zuw^=J_N9W;v(MIpkuTm@p*PF&ll^wSR$&jl(^IMk^8+XLek%Ez_o^lS6`o45jL2Bm z;ug#1+Q;^dchnrNYOWBa%*a2eE$w^t?)|~2%N#+-$)A$OYm}5P z!hkGNLs_PD;a4$kfjz}^(v55aWpW&1*z&XP3H8qd*$wJnzPmHhjx}ORN(Rs%jYa=m zc_eA1Ufuif$3)XA;HIs|T%+R0$nr1Q0{#A*X2K2-pAahy_R)wbsf0Pco6^+t7Zz_1 z8;7)n*^UHAP#3$$&5rcZh+VkCQv;H=4+dEMN>dpB^*P2zQOi3MTlFOp{OCF^Z;oR% zS46QIO&58i;TU$e90$mHV`tYl(X99w4N`OjC31%ILSZbg;{*b)fjj1YAfpJ#TmMPm zI8PM`eEYplOjis`@>}2>>cjPdb|ZB91MNfD`*8H@;oi?!S>z&>S@YB0FTT>4k)A^) zdyIikImr5q=M!uy)cHpK{$93U87o{5%5}+f3Clq^oU>rU zrmQ(b1}`t;NGXTWFLzVF`w7K$hi3ADXuNQ-%MG$?j!86yX(rxQPTwe%8Q{aq*vO6v z@s_xp7|uNWzC8xwfrL6xaCS8F>a1viP>J!{2Ng>j8{;#Lb(YAt#_jc0t!*By!3ri;vA*Qzir+s~n9E`Ae&w2_<^kEF2R&?6PT#_|UluCoEaT7ex#Lu<4vh1vmp>`D`r0c~6YK_OP5)Qn3X zFn#AC9`cKjQ%g*;)KIar&KwuhFFzf;<)W43O3tVwrr)pjj*i~1_#$QWn+*GX|NX(w z|4Qh~gJ0T)FBLY(`z7D642T}g_bbfi^T~+R`Ds{_bFM15dhzzn(f*r3IPjt%(4ypb z?4-i#LhDB{cmuPzK}q)D@bCk!lG%In63Y_r5B6RaB_p+I8)-@H`+ZF9*b7Lqze`=2 z;HD^nNdr@B-*+LZv_VbMfL`kT7_e{}-pL!TA%ea$;6AF zQEbTK^mI@uKa8 zDkBk}#ssLvC&M0}hE3wrh;Lr*|D1!$@oQWjzYg*ERXD{@(;IzB9Rc9A4z7w~Tanyu z=5-S2cx4W?D(L=hV@Nsyx8UGLT zAMH;GmvOZ%2RyKb^Qzt-@jh_Ig*v5T;Y_7aT<$H~sL8XI{v0?YC@_n&y< zkp|uJ7~_MiacOf8-(yom)RqX&1#$|xM1-7)NrnR$b{lZnAdk1YDuKPjpg9Qd8eH6B z2pPeVCqSRNm*gUaF0eg#8XX5)1f{zoDJcHBD>^(Qr}|D$hrV$a64CX?c7j$Zl5p+t zih>w$++1Rd&?FFv@f^qSLj%s5TUs+~#IgXVDAltb$-~zNI2EGP*i6-bta?Nm9|djt zSovB#N3E_;wZ|zO{Vb!@?|smkS~YAk4aS=MxnF$-m#;3HbbLxM$fg z)y0sIyhZ64O9S@yY!xP5OX)IQ>+C9rW0tt}%NLU>4J~h62U98Oj*4)TOrXMqK3ZlK z`!2bpg z>CV&^62YZVf|f&wZ2g{tO7#-jCi#+TL4L_z0z-9Q0c&(2K`SP#?k=v@cW_35^n!{6 z$;wn?k~;$8wp8K!jQhd_M$hu}j8A|u&#ER73g`OJBP0VF08BQ>M+?11g$q zzTOicRB63oda_fYY$p)x(m=|?B4ig<7RY=qzk2!pr(dj_5}2g9Rz-=E0pq;p!yRr! z(lVj~c4nicp>BWZg2c^PxC)HBQ=Y)c>Z@brYh0N9Y?p3m#;g~J2G&Z5K$6B{KeG;c zC3yQ0-Qlo=!vJ<=^VOmfxwl9DgNhMIZ6}FR}}-L1;=aamWj+f+DGm_hruP5R-f} z^WlIJZ;6#}?VlQeTcFC@!S4Y?zmy-*E0vG@WH12~M=m=-GZobbg9&wS2)}>vEm^;{ z)`vA4KAMsPbi!ZmeD};Rta=}Sb~W2~x~!{#-T}S4z`mtZ>X8c_T!8Eqq62Wd!47fh2`3uC5bAK&>$Z>*y2vjWt~_P>dN1Y<;gE)K5FEUb zw>0YM<_fU`K_oU6$Q)TgjAiw9Z~vXX>f#IBU@Pd1Q*tC3v1`|~31WMV8D&0Fw^n78BzLhnLj z*vELi>68>Rk6+ToyXo}qm4Nym|3=gZI zydL*Vt2v2N>!g9+`e+@qc6&0Y58kkImbKA&LQw+xGx7#KcX+@gXCpYWMd$|Ly7=UDWCQ(?7 zBRJ6agBOrbxj2mk#)Vs5Kx|ABk7lzzpv)m|N5#LDXIn^DQ`V9sM{3G zUG56#a`V`bu2Y_^K_z8d%pHY}@fj7Wgqq9$ z)U3=f>bAO2ROLYEk|BneVl^vJ5816R4#ZeUBc`>F3>weCjE$x~v*7}0e0Y(is*D~2 zezegdRNW%B(rePWX$r@6k*&5zjvEt2z!GCY!hQ0Uy_4e$VvQq#lp*+;qb!%6CwjTT z{NfxpI^uuce28_LJ_gaI>8LPF4qQ@4X0o`KCif?WQYNQaO=)UI3a-9+mO2dd@Sk{T zT|0*nhInHdhERqu1nqMPJrX@k@sCZ^Fx`ZxQMtvGt#o=Su9HC-!z*rl$O1`WnbVc< zas;_etZ=6U2u7VCD{NYEY0eA2c`!MDOvTuBV0WO?CNO#gJ&c<_C(J-cUe2+1;?iN` zz{uSh^{++0nUz%42=nMVX3CoJ+Zh za|Irp>u7Z@(ayPq+__OCB<*o8$NG|6(s)gV&$LRXh{ltOoY{-W`xJT19^El`3{Odu zggm_hh_(=Kf4AvUNDNG$}%w-A(^E=i6IjZ%J;#>&YS-t+{ zXKS#Whm$`_;}}r0;GDK%@1!zl088RM)f9vWwge+iWCTsO&qWbJRfDp2zUB?F%&<4s zK=U!$0xcj(iX#4IAEjSq+kP=gt|;lS0MZOP0;fm`M-xn7ct98$G2# z)V$_gPf|59t&UzDrkpD+wEH)_BP|2Uba6DwEmyZCy8J1pfO6!UYcO=Kekr7s#kAB~ z`iE4HKAxpGR@aPM;~*_AT2K_iwh};B=jL_AJ0@lOz=ANw^bglqWX7D&iM&6)z{h*e zF$&qH%2*x?F?zfUA*D>8E0r28GCdj)c%Et#Sf64SdW)D@yuiKuaZQh78LP=-O!EQjE z_8d5DZYbh?esR0m`Qf|Ox154uqmHMv>4aPani8Ehv2l=1zhMj%+8XC%LZ`;bC%5d$ zyNQaJ>p~@Aw`elI{PE*AJ5mPanwP$^B(>I)nz9WSd5efF=()~pva}C}`};51In}F| zlZho0~g49v~kZtf-%HhX=k8 zJ^Z`7i#dM&eg2*D{Gi{@d3s2kiTYPrcYL0o!uBwQ{7kd^^6eA*A&wCdcVsb`-FVK! zzI3U;K3tNY&%aCI@vCv-qlQVc%X+B9c7EKop0uE!&rVL(Jgd!lZs+@ko$`1|04j|GB z9A4c1%KMpr*2wv%={KUQb1GL+bTZWuHc}nrZI{97g3C|REnJ`8VUiuAt3Xd#1GOpl z4HyZPO4mUNj5f5X{DG7@{{yY{@12y(VrLZlP-8em^UETxi1;LEh097qmXJYt8R2(S zzHe4sMTM-wQ(M@Juy$UMA}KxCF-XQMA`{9MxtJL0-Vy1wAf2~pVUKxYHxhk$c!UPY5=ToRCz- z;p^Sii;G)q0;Zp>sB|D}-42pu=IUa_b&asc)G=3Bx^4lb4T~F4qLmHaXlVnvy~N%F zu`&tADiH&XRicoQ%%{B~?M1mGX^l-j{$K2E4>4??$sVSGH(iK%-i8_Q?cmOD+XjQ+VR3+akhJe{ z%L%7+a5HcG{we>~-jK7MTyjr#C)>cv%sbGq|EmUshtndUhsuvBpdft>((kepe}ySi zOntsl7Q=qZnD+HP<1IGqeto0;ROM#b^(l>yt^v1{%Awz9vVF|d3aCv6E%{x(A&!e# z{~GwHb^=>d9^z75s7?1JXjZ!5o~jAB`pN9;n1P2wdJ;RbR3+QsZvW)jYi{Q)P#6(R z$O72ij7F*O0p;DasNH)QK5ggg9PMCC>Fg<5q`DMlx#HE5V<c)U;N729{Y3H_f64mG&}BvszQ!>O?lWUK~?wh><+!uu8cHI zI+7R_Xw5$2QW|X2?*i4&8ZD5QLKMx*F;cQ^-kYi(^NDZ1OzgN4m|LAPBC`(((Ce8C z&)E%jGbI+(QGEC=BVTXzZI_lIt(|Fr?i@}+y8XHXr1eeM=Hd1hl`5JQY>wbQ+eG`K zQzr>|^>*(ijxp;I5YDvO5sZ<=&Voz`+R8P%O{b*5QohYR2sKXajOs;=8CHF0IxuOE zeR-oGGtS0hHlw3(-LH?aUzT$OzNuhTQ?>}`Asr?Rx{t8Tj%auvS{fRoDr-8pv&=L- z1T$J9p74z*3*-$tn^!f%nwwD1EO>#3H)Wgjs8bsFp$M2pA@-#q(fU%5Nkf6i#IbB7 z>QGD)Z74B`HWZ$Y)|VqI5}KN|V!gvF${SwVrNrV^t{-(&9o$IXKykp46C5#;9JJwJ ztz-*HVkHi=PVYb;LLNBuxoZg=2O2l>dS*&<=?TdUh7MWHGJ7%$M+#2AV7t}v9c({Y zZ`|;XoTjxpiey0XMMvPEHl|EF+Mnx~U7b+mT=>mHXUY{e?|ii$ZVpdzj&WrZ@ytuqbXz0gTcsouus9c?Wt-$xv~5N|YV7@*{r*V^%c>W3;;Q&i z#yHCHjTUza#5^H&eafO4mJGoC0N-lfxYrl9|zkc~!Ct@pmxuqcP#$`o@Ki#D*{DvzNo9ggbl2LMnqU z?0$%V0tm4{M21sv$sf9Jzs7xr>7_L$oL$1pYYdhPhTHEVB3{a@hwqXcyb*Wiz!pAc zAR8M@S&DcFd8`JYXmT#m#xn&a>IS6f=yYUthbkO-vrdV+u`sG}#gD`W83a)eGNYb8 zI%bQyF_fqq=8+054irrRGHjTE8+m?~ZqYs0Y0$xyouf`*yJojy4G`+6g2~jJBdnS5 zaLB{m`UEqB8RgXpNz}S4n8d{0WGDIpJBAnX^m-PG#oYSwY%+D3c0ZFBP z`4KZdodwd)ZPc|{Kr+lsK-xGHV3^#l1ZzYwzw=W&2#Zi#fG~i8N`AnL9wA6DE3$76 z%;m<)Buj;WE@o*#g+KBFxtuEq)rQj>|aPI=E-&c zw_#GmkQdQ`Y_T`D4gnFb0TCGkB3c7N4OR0)s-!wfR6Ldn9pWJ1@ov9Jvs{3!69AqC;|xrzM>0X?L+;UBwL)hi_o?LmkBw68CQh_v!rnf$ z;ftm%5#mvEq(p+F9ZQ(58CO1UsuCOGiLKYs8Sg2&?o_piNbZ^RLU!fPAhj5d9ab6z z?7Y!PSPmYwr(8I6^vBWag;3!~++MBu=6otE{zaqL{E{u*8R^312u& zgYFjgq@a%sR%-(N903uT0LBlW+DtUeG^}LlBZp70H(#;d{Dvm82v+lnjOJ_Nz%FT$ za9EQalcYyrOdWRK5!mNOU0S~fX*o>TtE{#$SHu}iRfotkOv{soC8tru0`!|hjLA^U z(dkyB4n}5^`_?L~_Qe|!Ml@76(E-!&WxyaSURY?UsB8+7Bu0+lTGovGaEl@JdP2@F zNI{)nV$%Wln^a|-sUK0zh1l3(*>W_3#cPz4a#q4%r98%xsK#;{4U#9(AUuf%;V~LS zw?~5F1SXh{7FmvMxUG7dE3jwbX4K%zvpmfwk0gV6;5W!*puL*v<^`lz& z&7A4Gl{#e;_`}h`D~ZeM77I@h&p<9qg8zB9#%)tbz?D2Zh2vbucx&Vzt3N+o++FJZ zKspQm&tDJTzk2ufEp}eS&(%*C_rCeKfj{eBmuFwjF12>mJ)R?xI120o7r8Q3aH(mr?227`i&UGUo6G+D z0b3q$_=tz_GY8IP*em2>;u2A!Av17uVcm~L3+7B3e~Vpqm!^o6xb^LAI~`Q~#+E&8 zjV&~;a88KoP3*Rkq{tx(WlT4L?OETtriPh$ldZcAy z>>1K&8Vex4CoD2^Evh(al~u=glWGv>oNe`T@5OJcw?AuC)DNOgH+XTDN2i9Ym%uT- z(AN)G_}9%Y^36AQG0B^u;diq{b)uG~AtJ9xd`3SW3n#o9LUO;@7taFZ?=t@y#+57bYKJk&L#)b8v)9 zbJf{fS+<2EI<|&#_^&rddw)C9Ioz=xFc#FZ)M0Qz@&P?_cj79lU*$ zT|8$9_s+>J8I^uGYSh=ak`0GimnCErk~bzYM@>TwEG5U(x`BR}63119pBGegbf|Ez zV*wh?8LE02+1#Pdm4&Z^cYCLJL4LD&@#zNlXIk8Plz#0oiDQ62udgmH{lrj@7IEXO z;&1QX%N>GRSVP|7qQJqbVJfd+kyc1#S=li^!T~ajy|_kCpUgc06VvAx=ymq^9c`}g z$r@8TGRDcw?3S+2u?*6K6AfmC^%&ef?7~phxI?0<**qLeFDa{z6QH;2du*?pl91?n zy{JgD!U?x)UeF8~pr%^~T3U3d_*ipqh`Uba&;VU$0Yhg&O{ZsPCfYw%doN$(EeKQ% zUXl|aowxPr6*iV4r|;qMzZ)bjR#ST(tTv)pY+=Bt1+NBD%K_GAkT6LDvrGDve3ic8 zTf7Fa-3Z~?W`r;-8?my6L(5JC?(pM&D4ZC)@>Pn>+w(m)JIC00OS~Pdv3K-w9~92H z0oY;8)_{*BzI}gi^e?NZ23TY3iG6^%tVdXmWcvIOrVrd@J@C*611LTiQ1!u9vntDi zS(Qo5diVY<9*txnC{N>bsO5swcO@_5+Wi^dkQt|3DM#YrO=OZsxZWPTTw>CFgSf{K zW$caIC_ZYVxBC#p**$3a?a`oz+ZIgQK>6BPDwe5cO{suJ?P=D zc?5uWW9%IsoO(yVD!znBi0NA^CIG0}WISGaJJi(?TtNp9dT{nz#+_LOw#>3oNJ??U zlslXE4y6$b5&cqT{ViWg~TS`QpglVUV_y=zVz|w>gE37 z3*5nsBU+YB(yfp2Yo;^dmZ_4ILjHB{@Yk$NzC&2P8nbMFv338XUg*>~^vl-F9^ELz)W*5r37l%q72F6NY+Oj9D;O-xy)S!ZFZDHG|=lrd9Z z={z$k^`JeR;#p!mkbx$d!!ivr8vbTAYMC;^c>-fgyRG`V6x_y}{kfg5#m`2ZX`)MG z%LM_8FV4sxywE31u`wCfi0z@$DkXM-BVxEfuTh&br8q4ycw~+-S;u9~f8bShT09y% z;xutY!?1y*=1kx)LM^!1{i54{e>!M4uQ?CBi zbMW)Qi@l?L>3tkvEn%6$yf>4O-1p|~5tbm{@BeHH+Be18moRHrN1A&LE&*gupNao} zKJ2|3WCCn*0g3DfJkzVen`H^0O!^dlI^O$YZ{EJ#_hljWsV1@4MkL~=pUwXK?RF{F z!qqZ5)y-BR>E>tF-M*V{Vp+GB*b}TZqN-tme0hKqPSTZ&gnE9KgVS5gH(l7bDv+UD{#C(uLs^1n8!C6SeXCZlJTCe3PS+0DX^3}Xs98!cU zoXjl}pKjuIP|UXzxw!s;3nr zu3oN=_I`S`-=rA;_K|FOWjz|6eY{xwa)k*Ll!ZMEt~4i12u#5V94R=`)Za7QZN~mp zJt@-m8e|eyb-(D|)AnE`T*PUh&$x`pS-C3Bt*~$lT(JKV6a4Rw{w1Z(Vv`|>M+PJY zzwEz(yIx6Zds(j-QPIM3 zSGDvAv`FD>T0Fmeyt~1U$TcqHiQ;mw_uOyMbuK)vda-^kZ(aUlwejBDgb|xjE^wI6 z-;Bmg+lv>N5|7E6wst%r&}9=?eAi|&r7<@)b^4qp+G2o^r6MuLz|`AQh4j#RVxPKp zriw0KQ00#0-qu!lH}#XX6E=A?I?gKKwzXQ*U4Od3n;EP1^XQDu^vw}Gt_e$>bN2pm+~oRneJ4l#^oSBV zKo$r)#!Z$zX4gV3-3afqIJY z#0y{0#y|%(tnHEIy@ZIT^ROMpanWUlEtDJXBEjx{+120*@euOe*%v)+--5Y4L4sk4 z;}5)Eg;9krn@J-nt7uxhm+6e_GF2k2WbOW1hA&W4VLXx17ZqzAk+ou18`Mo>fC=_%UEZAJ7=l zsj`yq<2Vvl?>@YL_g1f4RMtRBWfUm8G99DzZnXbVR0_VC6Xc|b)stB_@gxBx6M_@g1y&scQ`+VR}Ri>=$2=dz2TR}*eaqmy3QGASYIAN z(0BLH@EqblR-8PoI(h^WJ%n`kIR{^0#cA4cyX-)WWQbLOkgLfs(32l0w20DXb8~Vb zy^-4aWzoen0rmr8IWF}~&`16VpQC1C05-y}Z-2P%jTd_Xq=eulNP;>o8UvXH@f*xn z#C8N+CHu!4Y=rej)W7H;|1BPo58p0e_hJ}}qw5XETZQl8@`jgwD5m8?e`}?Uj*;B2 z;T(o0J%$uLVVaJHIgS*iT0rFI!Angh!&xc<4>x|jmYZBzT3+t`Yjwo;et+V#^Qiz= zLgbnXx5^;!nTk=m39>Z36f=@!14FbyO;!vqJs~OO84mdjb{eFz-23V9?JI1f&pr^D zO0D`TZKjrfNfB!rNth@jJk#^~?VF>r)uCxp(nOaMX4*t}YL-wYx&)u8`se=sZ$78g zyf2PX(nOgOX4?LcoPfg|Q{#d<(HXRv+NrjQ5|NeZnOrtf`xDum#UXZ!jvE>Fr~O3Q*G~&oc8sy@KimD$*EcszV6hBOG z^TULqewYx<4--oBgIAk!BM7?&*ye_Ft}+_ND{HHt_xFxI;M!@;WEqj{6yleg)j3{( zmy`WcQn)^2>pGLBdqRyIJE7IAJ2Iq1ni1VfIrnybbB_ZHl(6Rb!_m(_^izlr_vb(K z6Ns5lqL}+Nhk5LUfg1A)oW^G^{H`$exIy8pjm_Qmh@5cO-gagbc$JorLj~3wY;aTf zA8?nKjYxpY+N!3X1<2-COsD}iIIG1u#?6`eg7R{66j*mwXIHp-sEnOP5R3p^HTcJhy;H0gynKoKCD4Z~pQ|^hfg*w1ib?{bk0P0a z(ieP{(7La-tkE;aoOy)r3ddA&?pwOfk_F`z5_Rewja*4m#3(8MtxG5K{ zRxhMw*3Ui+R7|m0qg+X2-atT_R+y)gYyBny%rX#=#3?fia>`mth#j?7tCM4C)c zlP4zBR7ipO1oJ)OivgjMY65V(>_7TMx4(qX+}A3AwB(;8jbaY*SKH;1ukDtE$LpGH~FI zRGmT@aXT&42$~hS6^Hd1W)dwK^zI0`?IqpW(xEa3D^W}Y+*2cCL(gV2(p0dWC$^`F zBy_v;r4L2mUJX|t{3;%5t0oN8CeG~Pg5o~h%izi9T1q_^;8B}Cw}sv!*&OpuYX8`)AHDG_t^W3b){nFDM6Ok-hH zv#56S>EZqqk0F|ENDq#RlWm5;wr5h2RK|c=&IXdb>Lk{go{Q73%+}SXMr)QEaCe5? z__*3?Q6d;}|HOo)N6Db8Spkn0YbT?0vbDY7twj>koB)Ni;}>B{Tzk?TH+hegFOcVW8%8LElXJ6;H%*w0?3Op>ID zO_HP$7m`F6CP_m4^z7Dec(EQC(OE(f&pS)P0n_9o_d@cK=aK2il!2_-V3Uy>f(%PJkjrMp zhMtsam!4$COxkD(k7Q$6Y_NOAEvunPRxPKD)fQ_9;XjG{i~< z-EWCtM-R)ialx4DTd#8l2@s{1n6GEC8WLQgsS<;5dCsBu9wLRJp zClv)pl0T~x3)CSfx1{CyQX^i*axhob zvihPw%oC}dWH!-P2E;u_?>}J85Y>X&rr&j!vSRSWv%*Bco_$KHfU=myKHm^7gOP^j z?oC5;*FsUmx`a+I*wm8YT1#a~?{jeCu3i`~2Djq_vt@@FwN)OC$_RJE{7Os%;7Z7A z1bRqN&N47&iwY&$Z55*_Bq1xbrSF*DXy2vs2i(tl0Aif7q!OF@L5!90M4T{8#znz1 z4oEUd)cb*Y>-0Ce+((Vg^=IBg=nTBO^$V3d0+!IYBmc}xZy{qKzZ7SjWsyHCl$dmWimQ*)w2;=qw$df zRJxPFqVs4?QRfRXZA+Rgj@?||8T#>?({Va*wKccQ2I(&B^{6kZwIoa3*kZkBs2wVqQ%eTgdrG)1VDB|Mju_A7>U<>MuaDz3i=MiJdmLhuVj;5azbjd#kW&|+ z;OqsMBL=)|njEQ1mQZEx=Z=!MXJ>b*gWfZswZ*~t*lF35S3J*#mvr#%#e(If>pY0( zLO2j}_j({Q##q`7tT0WsE&_ihH`3rF{KDqP%<_na zh0Tu=xb_j>w6;OF`w6X^k*Jh1FOf)-d555O(+swgU^2xMl*{!do=lQfIw;o|PnMUF zf)cYcR!D;|Oa&PQlU1@spz_xtjk7Kpgjw9VJ!uxHO-wQTc|Yq(oynkiJlozlMoYgP7+}B=Bh{;Rmns< zM(4ioOH>6|CQ>x)LhB-1XkAQw_NEUDmB<}-&ZJ$oVgg+vq#Q+p^1|fAu0reVB8~6r zE{Hj)N!bi`o&9uhVIG|RjdF)`wTCbEaPjQnyWb90$KQR6#_j~qf#D{TfpUhM2}cTT z_Q}^O!+@M3Ws5yuJ(6{1+dn!1OvCp9`xxNeZ!ZqN_sem30v1QIc#vdP^@|z_(P~}* z?fOOAn(d0CRxO%XzGPe9r~7;FmPm!tbo*!0EIFd+VOk6TE9j^$umn-fqewBX0d0g) zbm|B7nAYBM8|xIIWJG6x2hI)XFAw+L>7L8qaCjSMN_1a(h53?}G2<4CpLjP(=5);2 z_Fv3Y7PPUta45ue2^NMkY1Rk^{mjH4a0AT2?{d4GTt-z`dtw#rScBNb(k#M+RufPb zK%G#0PW+l2Q*<@ftgoT2^Zh)zDx8@gjxoztl9s%ICRX=)L=cRQIa?}o!IrSX#^O_% zh!mDSFNvxy@daZEsk(?1U6o7{o70+)g=d5lvqv~{I_7L8BL`za8>m&eh0bb*ruRi&Q`N)a8@`oM}955 zfhJaWZf11M*;0-TwuBY7$iR`#jduSAxEaV0KA13OMFDpqUK0SVTZyr2gJNcT?CpA zp3wxRLV`>zCBBG625lk%g-DtR#hzzG{25MSAIG)WZN*mKAC$YGlbrl6{6qFe6Vb&=g!CNlr^+)0Wi|nDSae zBeNw;qSSPD+Il_WVR;X|iBzqfK66XshAUD|rXk(uO2*+S6Dv=Y&}O^UJ=SD3%MCdD zcV$R%F%HD0vM_ohqRTE7k4T%U7VQSKy3;U;ySSnOSU_20v8QU+{32a~bb3sjZ=)mJ z<%$~%)OF|=TCYIAW6+_W8dm--hB5cGUa^vsZJGdCHB%s|=BKOX@2o2l%Ne9LP1;dY zo$#63+R<55Ke!XbdCgkHAUdDq-xRSZ|0cxC7p+(CGU ziCj8MD>Cb-&uCiXO~tMsa2RSPLkueytGkD5-X3b9NCvvQ!+VF=9~18{@LGsJWg9Y% zseZaTi0ctouV4NX2pWt1>yx{`Zqx10H2(%(#EzFQXNRwMBN_^Cu69>{LUeWb`WquH zhtkBi@~FbsFHIi?tg^pfZjU;_tsgo&A>JfSJ;2Si{Nh-L7ZwXyNJRB8M8&is=rP<- zh1v`!s!#CrP9-8EA!k*LWm=CqkNDNu)$s#%P*#fcy+-t5)Ga4xxDTr;@U^Cjewpjl z>wT&cR#_+O+x79qB~B}!d7Nwtm{dG6hHQncQL@}70U7n`l*c3*EFQK!p|Xf^bL&lZ zA>lP|UNY8fW-wgz==cc_yqmMLQ#MkP17@k?x8vSoRSs5jqrK#CkD8itaf^Lxs}uQ? zO;H5vGM(wle|G&*j)^qWjh{2*6E!k%E|y9ca%KW{OtFvKG@5gJ3k)7DFv9s+mrD)r zElaTaaJ0-=u1bsyTr!uHOcl7o+a)*>)`y?qrSMT!q={}m5$&SSJaziXcA}ydcW8qL z733IU!+4voo-AaI#Y3bwf3orx%|XO1bPs&SoEHkfzdZXV44+TWn?^M3|L2(&ahMbC zvJF{+1emqDxn&c?YU&MSf!mSQEOd8~vqwGfnrSpB%W6ssS17h<*h{JSl& zGU_B&q%6crNz+&priez^d8`V>4^!@Ut{#t@=@1T* zce#cv9I{x|yJvIt?LxoFD9Am#V^J{TB%3Q`mcx~z={va66fQNUAlJ53`4<~S<6mqO zNndOdg(&eh&vof6^rfs$;$ki*v1D)naPO>7JPEUPckfRzFh4sz!?P*KGkuyi>MR+A zn#+>{54WvwsDf0w1mMbC$HVz?E-jRm3t^VIb#B)29=fA;L~$yFWxFl_E;q~r0A-sh zIA?dOb3mQUP;1O7yXZR6JgcHz7Kt)zT?%xeD>J%J^V#iXrsEjUpM z>SNJw;fS#^cAu5+Ss2c2VH{tsKcDR$bE>ef9gHNaUqjJy;11Ha}_89F__wZ|JB5hV09&d0lbj;?f`McZ{+VwnsU0Ekrr9Orx9`hA3}v_%`)lu1?3^ z6S3*C5<4nbb?r0m-Nh}Iqj$c0Hc+No0PgO7JL6>r#%v3GhucArkV`zh0nqr(4^xdS zXA6M|X;NaKY*soypPihnKTnl8X`;+XGwY1BC9Ka}-uB&f`Bz^hoADB;+chOEiVXL5=g&kM5vHvuf#UUv<;pJ*S{cVBeI4uOR#qznt-;TxEscyRcdvQNI<(AyPCv$bVIz@cG z^+V2M!p@^)a^F4w&%*oR`@b*u`Rr=7^9&W!-;NmcJJiByKmG zzbUl2L|#WwD9*bq=jZ>W{C^kzkGua}_&?&g&cElh5`WZY|5f;q|1ZMViuS)SKo$I# z7W`L9Knwn>G=PHtE)i70-}V9agZ;gH^YuTeTfc6rT6rkN+MjJ@|4{GQjicmGY`3d&F{|~lot)8E3%hs0iiCVO|TW&A^ zmYV|{5{gppn?=3C6zDo^% z6~Hvj?fT-*1-DgCRqz^zaUPCcZcE#@O^h4XpJu171$b~c9`K)uE%ylQFx1)Ud`!nK z%u#59c4{a*8J+!Zynf`brF@o(0+V=H0IF-^t&d%J=sThMv!3Gvo|JGm!^H}%((L!C-L z5_Zhe|L6XGii*EsMd!OmVxI%=B>zU3Q_ua4kf-whkG1oFi{f}2@Z24}BNpsnKWt!y zMDzfSa3U5=Vu?XO6ch!q$A%rn0%{VIn8cchQKN}TFx3`gjIpLyONvHgk5QxXduDGB zj^hrFeEtfX|Hs`| zrGl#5BCGMWB4gNWh*kb7*KgCVRc?jNQmWFH{|uM4Q7SB`$}O_8ZdL4}G{h=@mFu@@ z*DANdW+{%hMLw4CKVhemf~wpiE9*LL7quZ)`Kw&NO}kdP6*fz$N?R&)`KmOh!h)*Y zA}i}wxgl2ht6aZLyH>dsHcN51Ey~j={|k01E2zpXva+tjb}=`^Du0#hw`tcZx58#A zRcT9wE?<@AR9H}zTV!S3DmTO`f0gUEY1b;Z!e%KBw#EF|+y5UP2TH1Xo2(4%plK|c zVpTxZTVT_;Rd0vQVye`d3O&C{4XUuDs<+9?#8q#KRRL9RflcF9y&X1-sX}WiIq#}M zgDNSh>TR+zan+k*RY28SVAHr&Z->ods??eay}wEgs<5Q0x5>)HRd0$_0ab5-P2*O* z9X5+`yfx-ipZ{_T-{NPg>1pE%e^OPwO;#p$+&1P;Srt(A7T7dy)!SjSm@2iVLhr9q zgDNbk>TR+zan+k*RY28SVAHr&Z->odDr^nUb^q5Bxr(zoP^*>ID(tSQGOHX8)WO#+ zD!lqHA8f|}Qq7Ul?7jSE@4~jZcw6}#sITk=aR(lQQtPvsucG?YmmdD3D^#A_vAV5x zZ$%DKTBTJc$7-?(ievTJ%vxcsl{~{#VYQXyb);S^136NiRTf8Tv1t}Z>av-!q8d$4 z5-RU&RDxZFI`Tyi{9S#g!(K_MmV6t-o{D-iu9AXOt%?dVy;Grl4BlQ{a`FlqU9pa- zV-@O{Y*?{M>9dWM=&3$hp;np4z8ujsJ+kD8rs;8;$}}w>5^+RVeX_w3RrQ8^g{tcA zuS`e1hgYGR#TlzQWkO{hVVy%ceX2qo>W|AR<)~sE=CfVL>mWy!>ae)P<7g$OELEv=`kJ^*0j_q6=mhc=Zf;mV&&w%W#{%)iMHFKF_}|`st z+$NHhf!MmM@_ZB!ZKqMDy);Z@FG>D{wU=g|Qp|q3JmlC*Egg1jw%0uD*i4i@z=Vd$ zd@3)^JS%faT_tbBU+S8FLq*>N&jw-F%98;!dM+z^QJk4(P zCJoNWE79Og+@6MVd{qy47Hu{iiIfS^?B!H_TMlZKsL1nhdn)GoB?XrCGkLKbZe{dn zn>${jlPyQwid9N{tDn$waar^hcq#~ zgJmjbt`3xGKF4=h)uEP}PS71{s`*^ru?9G50MqHd{kE!e&`Q{?2WWL-SzAfU$YZTP z(w3%jW?-!;=LNMnZ7A^)DQkW6toY>;#xp;D^7!(nkjklu^2ukW4len$rV?xV+9sbg zO&wkOd1WOph^gw#!)hVQ zIHcA#HZ7-givQ9CK7ceKdF+G?TWQKyc$E%X9EVD?mL`{uaiyv9ld&asERCMXC#tP$ z%t;Q=h0NPN?a#_i8*BC`27J!v!<4VhDqplO*IM~QQ2r!f#?aCa z+FN(YtORwHD#=4xl7pf{+U6r=1&3RPp#@spv@i9H`bVvPxY{ zt8RZMTmP&WQ3YK-4Pm$DvgOJjA&%=hT&{8+?qIpfPZ5W7%|Aw}pzL6a%|A#SE?NF0 zb5z-JW0-%IR8TV4a_pz_P1dCGHhw87r-d1*C0G5;vguUREOD`3ep1Br6(I8$h%6FI zZy1;(ZPlfm-HpiLbK>JCWN|`heQK3FR=L=ol`@LYla9>F$(WGN$Arg^&s09?V*aW~ z4&M{VF@I=_yUvqGWQ`OmYW7fC- z!K+dYS)Sz&6&t0Lex=4Q z6gAm=^UKOhWU5_T%0x>`D&IjOa*9oRT9sTzS#`gR;c5213v5oZ>3nLUEeoqj4jEbM z+V?zDs(r^(((T$xNwqXqPHHx1m%@*icFw@j3qhvmOgt0eI}mUSueVY94^;d~e~saNl)n8!I(C&otg>Ve7C2HDf# zl&8GLnBnbgMVj}rMOpI4O?g$*?-|?iw(3KlUoAHEmCr2MOR-m${5fJL4@YF1DHX)a zA0zhi$WLb2OdFkM)AsaKNs(V#vy;z$iKN)b$4O>X=1B9$CN1_2*L%uWAuj?=#yyma zZxtuo?6zfon=Q3eu(=z`DA=~Gm5MDBmsN3~BAYwdvXoMV?mhY^O)fp>jpLT{gp3gx zFvgUts?93YF%dxJ*bm34TjuE-y)bhZU&0U_ivgze1D4SmD;TEGr zT58GnY^?S_2NR3@a*Vc3YdIxbyjm-jZ>x>!$~TzjNyen{$Y8mBS(0GAFG~`v_ob3x z%PmS0Y!+q9ElfE&b}DI={n4REOr--zj~F?#v*I%4h7gR@!*mU~{LbnjKOa{NmRNgnVeLQE%s~(9-eWH5wEx$8KOT=mVCMK3o z8#8i*^|(VbvlFw^Qsq(2eC@{E0MfYTIiB+bg6 zt0+VHoyQ66Lb`xoyy+n?{F})MpckhvCk=t~kh5OYOkIR(A@k~-EFAi{bAti$s&eA5N zXPJ*THgx0@Oy=7e%2lYcI_W%3l4*VdwQN#mMoQ^N>@Aa$QsjdzN};ML%B0#%D1F4I zM3=iQmG+}l$9_K)9ozj-lFIZWEhmQuwUUP?_3hv1F>cc2@W7YZyVTng>N^=WAN?w; zLh_LC~=o4MiT3~p6C z>86`y<(`kTr&z`ft(0V2GbY*YqfFzzp6x{W6q>RZY$rRii_mebC-ROT_vmPjoyuf- z1!l+H(vo?=-@Y@b8n(P)QgV)b4wj2t@;;?qzbmU&alg1xnW^|^+3sW~54RD^iwzUU z+DXbu&d3BL`9yo!qRQt;9g}3*^=3sP%9s?nj0ur#yQ?X|UJpr?JF0X9OC`p(;YtBG&}@E?myk>=K8uPUg*AJIM-PBQ30CE|yLtC!0rn*(-~L z5`;z)U&hWd!qU!CwzRX9ZQ5B)uwx#XTGq}o#-^RsgbE6>VP_?i4Li$ttdLa3_%c!* zS1cK`h%Tp|HI`fT=~?Feqg0nxZX`;doRpeAaqQ?a_dC>@EYmFScGyfdUrQ*TSmsto zX|j3WatqAt3OwJ;WmBpxNu$~d6HD$`*eG{IO8GXG6g(lvZn>p5Zps&0rZ2-YM#^Vr zho_B5o|rj7@v$-og7WDm4>2p1JRFgeHYQ8H{**i%KOUJRA1US`IgzBiaV2jN+EEaq zaah}S;X$QKSm*He5go(Yherejbqoz7pTWMt}QGaX6D}BjS`5Y?wlsrnC$atBbaH!;ywYB6^#uF&<210g$OOP58 zC^F-klbhDd&rKVs3<*yYZ^`d+Dbs56{)|Aj`rR=FhFtZJ{+u#$wbg92@>>bMZrJ|fg~gta*? zaB0IdFxWc29+HL(Vr7xX*KkY2DzT;i0_C8^a$eOj%lMLV{81U?cq%8JP*jzF_KvUF za>ugB@)RcqSm_JEl`8}DB9E`U17#M=9k0#hv8nqXPx9_Qb?qT_1K8A=T$^J(F ze`8OLld=bLl)rJOduV=`3){gm?Xgo~4Q8%5kufg(bVhn{m{u5P#d|4}_IYCY~spO(#1hZp8$*gRR154b;@alB z;pe{in~`lJK5oRvW0T!NJn*+saUuCe{M#+qBg6xLGtQWKN}n+*+)d*i;)Z{@X*B&m z)wmgBn*{1N6E0G=YwHyjYpW~x*iQqzoTR zf{|wgCPu@DHa#W0ae78^w9ql8XpKkl(f9~~{e6sABp;C)eYa$B?evci2An02xsDkB znfjDrTH`tD)fr7JMjLd-bJW{d%GC2Kb#9^#=k&Dj=pdajS~wf$3av5PTdR+rout$m zE8L9H!8*NhHe(j!*3kzKYTfMfVbT3*nxgwLqVR@J%UCZ~?eV+aIpexvcQ4Q)N#dUhW0%r$Hged!`V}li_b>Jo{C0}&PWMgKQ*QJ z3ghgRzh<85laUoJ$F5^jvx@r&Ut?RXuhBQEVX-gAge&!Du8`?jr1?MD_f*)enWtp= zg_N)98e3BSI?DHJU|8Wtdf$xf@Z(dni)A^X!jFCIXY|ERzS!t0ZS>#qj`?oW#vnjV;YM)GtgEmb&iOw`HaqOmsm-@x+U@cR{<|HXD=>bS{vd&+PnZ!`MpOdAfM)7x2e zh!`}rIB?LE;y_((*IPrLR3ITJJYU6ozSQ89NP{R9s`w z#NxNKHI1?zLbVU)Y{s>m)96H?F=)_);($Tpi-#ePq+drFLlUsjW#MD=VGW|sE`!pF zKi1SXUM4Mze#rDalp$>|bq;9i7`L(So?|SDukMvUCN3g>8{_!4`fiDRD&BWsDAw3w94_p>YdY)SBaq#@#4cXu)~w%|0&i%-gZ8w4+$dm06PIE-|;k8{bB%l50}c@;n57aF`s z&RmRZ$tSrRK^>A2=^HNi@&dLOs``=_e%c$G!HWzfFOrE(0OuB%8~V)?qV-{L zCi8A0pSeGRwn>}0N#7!mwDV@{&o3~ew7nb0Unfm~@ruezTy^(+&-(*UnfGfi{7CxR zk|+9}iqFUlA06ct;?*VAv>ogfa)jfQ60h+JX$3Q*Ie!?9pS6UU&nU;7--~03IsX!i z{9g4e^219>et7Y`SDOEbMSd@iK}uQFzr->>td!)3m3)i*UKZ^?qUPtkYej5EdiW^H ziG>q=IZpN}Y@{CClsf(Pyy=rKKR0>Wt)*K-!ABPU>8>-Rj zG$W4|jcobYjF$iYUi;s#-%9!VwcfwIHtEvylMXNMad=L{7w3Gs$nfcmy9;OBy;9@u zpf@fK>bdOGo>%|zyt*yw(zY+&9Qnoir2Fe%@A1d$YZ`yFW@F;t8*_enCTGtJL-xEg zao;=l&(yoWGIIOMX7Qt%b;=yvsoTt`Zh!x!{rkw=K1VvFKha@RznhzWJ<;LUYj@nP zjXS$?+&8a{|0XOYF|0;Nw;E1vUQVAp-T#xukEAu;|KgMT14CN`KGS*KGtM5q&d;}f z>v>lnch_o7I#tW9`$F#7pCiv+{Jh!4<_Q_i-#fjiC*JT~8W?D%`5k6-yXG&zk?lEciI4_w!%( zZa?DD_VfK$&F``JSdTjw{O)L-T(qdko8+7cXDYZQF_$gWrEKJUcf0uWL?!y`TE?`)^O)`}TLQPy8-8IyKlYDAe!4 zuXP^WxbJi0kp9>J2>NR(v1l;^pDeBsR0j6UDzgvG3)f`%Zl@_SDvxD_c_z zypmEFvAOW+u#Hdua;oz$Q?KVw{r$^!zaPqvIn;UVpw45yduPm2&61^G?i~JQ!kUu_ zMRBK#GQZiC`PkOGkKMfCdh?HCP5($c{Ce6`Hp8u@z`5)I!|8c_kH4_?k4Q|-$nIC(7ko?03 z`Q8ii7yHg%oPD|=yX*Amu5XPy@YaYUTSmkdd=sm4an{}XTXV~&UNxWOeH)THj!NqI z`1U)G@6I^BdqJ(j1$&%spV__qcBdElQ2{tEx#|0nndf&V@5-wFOhz<(6@e+K>^f`0_~8^J#w z{0D;nG4MYQ{#U?%3;6#7{xRU+8~odY|9tT80seQuUkm=Tz`rl}cLD#G!GAOO_XGb8 z;BNr`<>0>p{9gqBaPa>N{ND%vx558A@DB!mKk$D5{x`t?B=~<0{$Ai80RET2KMDMw z1^@2gUkm&Xfd8xDKNI{T!GAdT4+a0);6EPxhk^fW@b3fuKY)KD@DBn10`SiR|3|?8 zGWZvRe|7Nx3H+Y~e^2oL9{f*(e>?Dh2>d<3KMwp|z`qIjKLP&x!2cBZZw3Dp@Gk`a zr@{Xh@Sh6)zk~lF@b3)%W59nY_y?Q|8DSK0RDTyzdrcC1pa5h|2Fuq27iC>&j9~#!G9U}uLA!U zz`p_bF9iP!;C~eS9|ivw;QurDF9H8`;J*m`y}|z@@c#|`qrpEN{G-7CIq+`{{=VS9 z1N;Yo|9jwH6Z{W?|84NU4F0#k{{i@a1^z#Qe-v$3G;Qt2rF9ZL7z&{H7-vs|8@b3Zsjln+={C@%e7r=ia_@4p)Nbrvb z|4i_o3I2b9|6K4-2mgNHe**mPfd5(We+~Roz&`~1-N658@P7pSUj+Y9@b3)%9^l^= z{C&W`3Ha9q|DVDCbMQ|9|5@Pw2l!V5|N7uR5d1rUe<$$&0sMD?{}Axs2>z46{~hq3 z0sj5L|3~nD68rV7fqyXgXM_JW@J|K*$>9Gw_(y|(5cvNJ{`bNEBk-RM{(<1%4E*FN6OF;2#722f#l9{KLTi z6!>2U|1ZHmAND67Wh90{ttnFbMXHb{4aukOYm<5{wKk|2>e~azdiW32LCSL zUjzI<1^tZ;I9M!BJiI9{vy||04K*3jUtpe+m3Yg8zN+{{#F#0{_3k{~7Qf0{;8JzaIE+2mevvKN$R@ zz+VggeZc<-@V^QE9l+lW{8xhic<@gI|8C^)fPKMnk!1pgM`zYhF;!T&ArcL)DY z;Qs>nM}mJd@XrAM&%ys?@UIL0FM4t!{HK9` zSMVPP{?CH{U*MlE`3L`2;6Duf8-o8K@c$G1KLr0r!2etD?*;xpf&Ulae;)je;6EDt zL%{!6@UIE}AA|qb;QuK2uLA#L;O__iF5o{K{I7z4ckq7~{Lg{^4ehn{}bRp3;aib|4i_I4gBYV|6%agga0Y;?*jf) z!T&7y*9ZSe;QuiAKL-8@;NJlJzXyL0@XrMQU%-DT_>TquE8zbM_-_XPjo{xI{PV%T z9r(w9{~+*x2mF_S|8Vd>3I3nIDfd8A|-yZzm1OIIBUj+WIg8$p#-w6CyfPWD9 z$ASL?@Sg(yPl5k(@V^cIx!_+5{J#VLFz`PJ{>9+GAN+TK|77s@2mjB&{~q{%1^y4= zw%le>Zg0!m)?5-+9;*o=G_dBf)@AL~_tl&I64Rn)?%!Ce&NELof9SK(uRVON$BPYL z8+do?O5M3$kKPRpx;19fw!%qA@|wnL|GM|}uYJD$Eaco?f$}#>J<`eDvL*{!h1_`{5U- zf+q~rXPl1fe(2L>qZaL(IA!Xxo1?o9eD23_yPLn==gfz-w&h(Nu{G$^T@M|d5or85 zbxv5FUx&5t_iT?@i7BTi58pX&`{?)Tt)2bvs+Mkd2Bybm*S_Cl`NGVfR=sn3TK~qU z#=mw}+bies7&N)j?!tLm{ar5 zmi3M;Ua@QHt5>hP-dJ}wBjNL#-=%%|p|eZFlny5r|NF{;7ZclbSo`RW_3h3qcAj|g z*2aiSb3M0Q8D?;KdEArz{KkH8XK`@XNS7a<+3wu+$45T+t@m3?2NXIFJuoio3m2yc zHTn)~^3Uqp&tCZ8t0OUnMU!9pcH{@q=Xd1gFLDhZQv3JsFCUuP(_{L&3%=3QKW#AY zHv2=&U6AV@`)A8`TeJNeB;*Xv{O5ts{l~)R`!@J;dt~#7)}4lb>+2Ex$`k1)1`K)O zp*EeG>>TOg<@@{ND^EUidDlyYFVyYx@t)lEK|dsC^qM@lW}RyFJlQcW}-D;lR?mpW-$-lmP^V_Wt6*Z_nzxK7q<6S4d{@#zzUA{kT)`pjxY5soyubd}7 zet1Op4m1B5GD#nk|HHw?pQYdX^X=4YzZ4(-A?$0v`Ki%{M$ZNW`5&A&qlt0;?a22| z`nS8Yeat%jC%xLfRR2ck8$Vp?zrg$WxxJG!Yrfg?x!u`CcVk!iHyVDS=Yb{nHrMHP zb?rB;W;}MKpnaoH65E!vv>SMG2dZoorPi<zAqd}8kO?M%mMoXmfkvF{7u1=e@C?W>-GI}KFl5Z^7NI*Gm2V&ne}G1rpF$B zZtI~}X9W6?p3=Qjffjn%yK{H4v$_nDhE_UYed{`O#t+p+h9e>-2} z%C|54{_fFES;jBiU;g8(={xkVzp*hatZ}!H&{dlb?isPZW9Ro1CcJWZ&b=MS3r^Sg z=GFGb)lS#`{_awgPv6gHwY^nXYw1_LC-vTOC1ybHEk}NKdghmNZ=HClZr-T);)bpE z&gz%;h|?cWzBshw63zGt3-7jx^89CT{gH3>Kl%NN_K*2p2)_4?5|(btLfSI^W(a-h{(A854*sLSe+u}I2LB(y|84NE1^y$ze;4=%g8v-w9|rzC!2dM(&jbH@;J*s| z2ZDcX@Lvf2?|^?}@IMRwkAr^*_`8C?4*Z`7|4rb39sJ(_|98Rv3Gi{_VhjBKSvu{}%9f0snsBe+T>{!GAmWKLY-5fxk2OXMz6% z@NWYC&w~FE@ShC+AAo-z_=ki4_u$_X{4aq2r;>m0p9}u6;J+386Ttr;@P7>a8-Rav z@E;ET!Qg)a{2v1Uo#5{a{wKlzCGhV9{_DX%1N>`(zX$mL3jQ(RUmyHE!G9b0?*{)v z;6ESy ze>3=}f&WbKcLV?5!2etDKMMX|fd5zE|2p`Gfqy9Y?*aeL;QtEv?*RWA;BN%~zro)J z{M&;6Qt82o2}zZ3Wm1^@Bj-v;~#gMWYUZx8+f;J*a?p9247 z;J*m`FN1$a@c$G1yMX^7@b3oxQ^Efu@c#q+hk$=|@LvG_v%$YB__qT8B=FAxe=qRQ z2mdJW9|!(Ff&UutF982!@XrSS3E&?M{;z_68u)Jn|0ltJH2C)b|AFAI1OL0=KL-3K zfqy*se+~Yhfq!@K-vIuD!M`r}`+)x*@Sh0&SHb^T@V^88N#MT*{GS53mf)Wb{`bK@ z6Z~(3|0(d-g8y>xe+~Rwfd4-5p9cPJ;J*<3H-Y~s@Sg+z^}v4@_+JPAv*3Rd{67T$ z6!8BS{1d_dQSd(l{ujaj68K*M|Chnv5BwK{zYF*~gZ~HMzZCq3g8vubUjzLA0sjl& z9|Qg`fqyjk=Y#(c@V^ZH9^mf_{tYDm;J*O;{{;VR@XrDN2jCwL{$GNB1o(do{;z=l z0Pt@E{v*Nvckq7({0qVVWAG0G|6br<2mId!{}Av$4gR&j-y8ft0sqb5Uj+WO!QU19 ze+2(w;NJ}V{{sJq!G9+B>%spZ_}>HnYvBI__|FIbM&R!c{!PF?68zhN|2pt*3;vm0m{wKhHJ@|Wq|7`I83H+CV|3~2eBKWTW z|0Cf42>1tpe=+#~4gRl#e=hj11pn6HUk&`91OFM|p9=o(f&Ucn4+Q^r!2fyh9}E7! zf&Ve^KM(#dfPW|OcL)FJ;Qt2rHwOPz;6DQV-v|H0;C~$azXAW%;Qt-?_XYo3;Qtl) z?*RYa;O_+fZ-IXv_%{Uqe&GKH_;&>V3E&?E{`JBCB=|oD{yo7z8T`G#zdHDL0srRU z|0($Y3jRC6|7Y+Y5B^8NzccuM4*pxfKMVZ72mc%3e*pYDfWHC!_k({^@Q(xkr@>zX z{%?Z+FW|oy{O5uH+u;8M_&*N*H^Dy&{A+=KbMSu+{9gqByWoEg{6oQi68Ikhe=Yd` z3jQJB-x2&%z<($BzYG3KUjY7l z!T(M0&j$Zh;C})9?}7hS@Sg$x?ZH0|{KLWjF!+A~{(pi0Q{ev&_-_OMhroXd_$Pt? zOz>X{{@;Lq1o-a<|DoW29Q?lo|EA!-75oFie+~FQ4F1i)e-QXT5B`0?|7q}l0RHcT ze+}^e9sIMv|7Gys0sb4ozZ>{(0{`{kp8)=Iz`p?eUj=_B@V^B9pM!rP`1c0?E8xEc z{GS2;6W~7z{9A#48u&j6{!74rA^3ZO|48uv9{l~l|10qS8vNIR|84LO0RJNJPX_;b z;NKJcPlEq-@UIU3pMd}0;C~EPc4{5ODqeegdE{$0S|8~itezZdxL z0{_Rr|11Hids=*znTq8(;r3{anPH7ur5p*kM^r_X9s&_-w$m zRqbBc*EsTW{L`M%clRf_wOKc!#kWn~m^5U4+?f0mO>=JF8onTXbhGb4Ir+JBnrOZ17 zGD3|P;iPauMP5rOvjoa3D=b}j(ZbhIKK}q7E|N<<(lvhN)6;qIlIK?9hnvF4UFh>X zU;GYJ7`c^@D&jYr!pOCRyxS4K#uP>t5b}Od{1Q_bIS*x;8lP(lBc~J6?)WLDFfyBv zPQ+)L!pLESG%fxKQy96G!esrMO=09lLXzUwn!?C6gtGqCrZ939A%F1&rZ92|p)5bo z6h>aft~>|a+K-UGc%Dy`VWb=Xq@I&0jFgeG9ruVNjJ!=K`*G70MqVY9{kUWbBjx*= zY{u_0g^?QxW&X9MFp_6lmHc_8FmehZfAJGcVdVSl6RM2op(3R{y9i}@J4|8ZRzg|c zW>Xlskx;g0ttpILLnzBzZ3-iYnL-zX8V0E$fz)$x)fQ{s*SKnTXm;^`vt}#**J?KM zf3;=}|99z%b;Rg4@;^_vg#S0Sx3#X?B_0JHuG)DXdHlcUp3DE6?zi1twU^wl@_)1U zR&R27Z{+`K?=}1{@Lt9LJntp^&-I_@@2b7+ch3)fzpMQJ!S6KxchuTdi@deA@_$XO zwftXFtAPK%)Hz@0Dcb8pgU!n@HspI@=J$E}n&oOHja;)_(l&TfU6 zuga@cd7@cv#0EW)54b zvYA`iY?*!Qw0u4lmD1G*YwI6GB3Ih7;b(e6**MOp=yJw`W{-RlDEQby@$pd z?xxq!%Dv|e3nE?GA;?s*d=KrsY18I^bNeK3axu&1_t4m-%HrsIXnv}`%CC^TD`nVt z53Qp2yv^kVspYMv9Na@3B2=4dZknQD@4Ydp6v%p*U;uxt0d?lJ|V=g2b4 zNsNoaUD2(su1YqwALWYVc~#jT^ZVL7_G=n%WIrr9ZY5=Mo9!X{Zt3UN?^{c}Rr|2T zqHrMR(=OxTWdyUkTfRJ5Re$Xm7S@SL30Q3TEAuSa@mIM|KZV0NhJc!YrxR<5lnQtea{dVRVa2MW_aOGVax1#$xZQ)sevFjG^R<5lkcKxN( zY)K}(sncy~On5`*wB;AlKXMb}QmTmoNnVEQX9x%0>wfAZI16?X1Af-lxVRSHHfwA0 z{!>6mLwCdVTvst*n9H8XzjXmyPU~_bPiyx??q&UM#NN%KUhvp6bH%p5=ZeD9tZWya z)m7g@r&gWz+!J|5wjXK?_+XFxLEV{p6TgW*!@2X0B8}6KMj(z)?{COSW4g5Kk z@TSgrOH;z1@#ppZq>pH~NT1g97Xu^%KjYK0>k=O=uIUoQfJ0hC#3EMqiIII6!9I*w z#Hz?H$h=dsh*gn2ka@3n5vwBmAXh_XRpe^OHIZ2rxh8TQWL8D4gWLd_RgoJYH$rAr zcF{17s$B0q%O6`56$yNZZX z9}Q6W%!@We6j|6~(IbY4E!YD;HR3N3i;T$FLy@t^q6B2@p~%={QGaCYp~%={(PPNi zLy@t^qQS`6Ly@t^q9>8DhazK-MJdSGLy@t^q7lg0Ly@t^qEX1$Ly@t^qOr)>Ly@t^ zq8w!Gp~%={(IjN-p~%={(NoCSLy@t^qM69pLy@t^1N(UhT)4A@V;(9Qn=h_aRCj(7cVwM^lF?GK8kmnjEx(H=Pxrv z#J5ih&*$C0UhNx(FIi!T=pB<3zLj@a;$s?yFMY-kk&u`a{<(Y)HnCy&vgZvEeNvOc z<$GocsSU%IzhsE$J3cAgm-ij}jBglTu-*{SZ*Ee!VP#Udd{?sX+=k(WuNWfayZQZA zHVn_*Vu*;^kQ5%o`$&cj$lHdwF$`>#8#BwfedFw>s5I@GMp8? zp~`O{!&%WjRo;gTXGJGf`6M!&6`fV(v&e8(bX}FNHw-_+`GMKj^Y)RZRnxTS9z?FD z%GHn$BR5jzM#x8z+o^Ip@)7?vMN(a*8UaApeA%qslqRXOZWq@*L#f zkXNYk3gkbK*Q@e+BS$R}0#B=TM4v#NX+`CsJgs(ig+xI7N( zm;>cZL&N>koedv|jc#pk9WzAS{>%_@=MzK3t~ug_JjXxHI3myg%|1F?YuF~wxpO%l zoaUVW46E6uXLN>b!3}i@nug8^dmFeWXc%wg`87Y1d^Ap8!dRbN|M_Y^K z06$8(<{>Y0m04uGT;BKK`iQQ4`gDHhbIqmo6heOMw$3IbOMIp&jFi{&DO9E~YRtoRCWj@f}QIq#)!k^B#>L9J-N^rnc@& zW*K_%55H-BoF5c29Il2xa6Mki69}bVERB=lB^ocwJ8uey?je-zC?@1DewQhX+(9V& zwbc|x@_RzjTWd;>UtbPp(ud|2$yXqA4|BE``@c&4ibs74kT!%CJT@6(xP!^`ClKn1O@9tcFI*l+t&@pWQxST~EV4Y@O0?jg41q0I2Iht9d=*|dG?$~gp}1-3 zBov~QX)cVgvg?LHs;)V7qX5}A^**RfEmLG=*9{G5GZZPAb2ju$Nm86!%r zqchIPu}1N8^|lOBl^5mOjl7P-A*TgX?M}!@&eU6%qS~!YU!;y&f4tnrl#y!4eLN*e z1QTI7PDtD(=jQz&AFj8QCD)SsAVRsw-D7$E-Na>9wmj61S7A|a5m{bNukt*EojR+R z(`{Z)XBOiMuBXd;rsf9A>*?oN?JefRtGvG=7qe`64Oqrkl?z#(+&PB`6}HNAQQ7xcpi6yl3V_C3VWj(U(Whz2;WZ{5U za8R9})KcG`-^#Y(yUM(v)R`&s5L(RNYx3W2#9R7rgp_HZ*hOLvR;9f6R4`$Co~hP*$>eLYJgsDW}agWfzuF$`^aA7?o|T>V4e^J}GTF zK`VD(Hzy-mJqS^*ElwpHX2Z$jP@bhBkS&++Ad?g>^RSp@GpA+;aP&A7uHJu@<;fzm z8wtU!PU$SUGB7Xle5#`PaLwiPRR`GY()+LGBFco7ouB1N2Vohe{1;+Ru!(!O#-@;H z)dD7kq@=WTKDCrQCe19Dz3+TpEw8UyUJ(71<46$Y$%5cMT}@Jg%EpmU^2z5TWL|l` zmyYa3*rJJ03}-ox@HG<}I{#$}(u-Xh*0U|du0DQIyB|b}aV?nd&@K2_9e1&~ zzh11(;Xa3l({qNW_HYm6(#vk`%yaF9F!z&tt0;YILOBmqT)06W%6$*oq|E=yc&N-H zdsJS7?;fS^&9(I~t*24WpBXY}RIw*>e0dHUT|A6*Pv-36_o_0dZVYj99xnQ-%q^R( z&d24)oLhUCUn__?uJ$uWmX5i#-$IPM{BLOaX)j$wbA+* zcWQJ-^Zaq4(S-pAu!VQ@=SCmq;p^L-xw@DOEC{`R)noK0m@D-1%c9*Yr7(+J( z*-6!v@lL9)oO4gmr(D`D+uxWzO5G;(QI;!pWj|%PvY&G9K-tG}tU6WK$wJpj)s_3k zk9{KNN0alQF)ADVnFmluJDInXzRGz9wZ=KYejdkz`+D?cj^Px;+<-8TJ%i*g=*n z+oV%{Lze3#ZGb)GoN!Xtk9{p|A^Rcw7lTcBN!_TWz0zlLgZ({D1o!h`JH%j^6X1s} z8lmS;o{gGlJrpZ;+*CUTe{nYUK$dNi+sDz7Wo={LRQ#jg1Aj5@{N)D&GU-SBpv>a2 z^h5go(V>BfN9+4lJCf`bGM0X{A?`^1!1iP5mwB#1<|hu>9%<0ad5V3=pMZ{*{3-Zb z^b`19J-=!R!+b)tA@epDkuBrDQJaxTlZ*hJ2Md4;;KQ1_K& z(y@zV$(OvA^DSOsuEm`lqx6FOM$+XRf1?SBH~N!DkN+vY#r%wJ%u8ATznou06wL5T z40RF_qp4#wbrj5SOAK`r5v{yL#1V8_`N_~Pu~l^$x+S&>6cKIeiHJ)wEl7r>H4zb` zl08B~utzNOzg<92-$F#RZ6zYy;MpBreW-|VM_1oLhNOp!h!$N$g#0bsLO6x#r#t!U zcjnb`V=nQvUB#|BtSxNJN4_pn45;Y&8~qID0Jj+~CF5P3pJw;qel7Cdgdu|C$!_=h zjD=2yh>$3c5O+7`9QNWqP_TQ*AHHI@Uc>yueujuY>WbY)^gOF`pEJrc#3PV_~oI z!PlkktN6NESI#H72|u4dB&~QPd2VoQlk+LwWPCozICPZpUFQ85KUeC5MS1`CxM4xS z6~_2aSOb|KvR3pl<8P#ObJC8x*4SD9i?5SDhB@hd4AJ^y=t$PPIqAlo<9R6`5u-m! zTy3{KgE?=n?#r>(kJX2@HtT8TwCvM3nt5G?@fx-$95Sx>9Jbg&J5qAo+e5wTzRI2ab%<2kKmmPUMZyF=r%W zmYgT@(2(?EWxSsim?-;JKpk>kU;iZLcc<>l9JlhAH&WNlE%6Y?_GOH#x`v|Ke)N<% z=*f4KW0`EH54xe`lXh>6{#N(W`~c z1C9L*PR!ZrVyufFobUZYKz5%c0dCCM>!+<_jAcImtBs@dn|tR4g!V2__OYCQKi1$v zyg?sJd^-Cjo3sKY-c^5odM^3hjegVT2grRIYjD$Vp1y!MPvi0F3yJe4&Rrin>sjK2 z@#@Ug#5oh^p?9109C0qj&{@wD=SrNXK5qtX*VHl|pRt^{K;pdg=V!b?Ty10atR=+B zc6!sE7`@vJ*F-mG?-1#WeluMY{aoBbOzrg{Jz7oo2$5|zrF({$+U={~>?PaiZanTK z+bG-Zr$6r{`{HTz^OAj$?e^EZ`N}p5W2moeqilCIeXOtSi;MB9kL-(VcYyx9w`^lA zW45nsqilC|eV(`MOKszEZ`l{w?i%_VE4%CSyz&*>X8SA+FtxX){$^vt?mVAGiha+u zHSEszTCCc*mfp>2KIOO@cQ`Ge9NE@D{UN7?#CaO8I^_~4+ge*M$Fy_Y^F8mfnlxeb zbA669XJeS_^8vAjI{Frzr}cGxmN?nwy81)T%h9W4yz2Y{ak9Kh|Ywz*xq$QMI9Cda4a;&Icau(+F>Evp2j#g&F%{wa@qDa#(8OW^BbzVEdPE5&nuqRxot5W z-*c;(w{6Wy&pC7l%lXI8!{`OZpUi4eyBGgC{nTi!NB%JGRVQoYGpf0f!!)^(FMEq| zIuH2@MefN=t!Mtyh-m%m!Ak><2QLfwlQv$7`rKIP9HVd4s4&2rF~Eo43}Yy#FXxMW z4abdPL9+vbwHjks^j_syB*)vm*g}pM{>01i+ArAGqit{>k1&3BAcx3tQ=U(SqH~RJ zUC8H`+LF%?{dMj$^)W$n0_6E_ieaB|ga0gjTF~5p4f0&mu-`a8XkLJv3wfjAfUzlc zuM-;1XF1h;I7rvzco@$~6D}7;LkZ?Uyw^7x(jwn6%{$o%a^G|1x?`|yIqE3m zs<-iT*5%}t`rEPJ7Pj4jJv{WmMvudcrEn0k2)psTtkH;nd7&fOh$GBw+Eu@Z_>ACg zddvNvnwl!6PoFL(Po6BMO`9gJU%xI!j~*?uva-a-AAc-DLqml|qY)!Vjub6hwiN&V z`>*)=>#xOYue~NFO`0SQA3iMR%$XxT{q$2YW5x_|_wHRWXwV?hvu96n_3BlzZQC~S z#TQ?Q_3PJ**I$2KtXZ>0Y}~j}25n*9rqDGAx!pX@=eDcXBqH*KK zV*mdAA}}yeJoC&m!r9qbJpcUj!qwGPRI64^|bT6ned0 zoI7_;v~Al~%$qk)Bqk<`6Q*fGnJ4T|!8I;%@7_JJbLUPmWXKRPYSbw4*=L`L4?p}+ zL_|agqtVDs|9CNQ;6QQg*fDYZ_;GRN$`!F?%NFs^KmUlBm>AK!cW=?YeS0x~{(RA+ zM-Or5&K;rEYQ?Nsvqay%eMOfpUBt^TzbrOy-Yoj{>nApB*dPoBgIKvci)NN;9%kB=O-RKcpz@vxFJrSJSjf^{Bz;uq_Dm*kyW@$9qDitgRJi(0j6i30}?h*w{IRm_|@Q$$8ais8eDi=jh@irTeni}B;f zi($itiP^Jfi#~n&h#!9VK{RUANQ8uhh=PIwk(ZYz9(m*uaryFPQCwUss#mWre){Pr z@#K?F3Qtc@!7QQT^y$;0UAuPTp@$w49v&VdE-p^ExVVTWO`3=&o_Ip++qX}gI(15H z-MUqzq@;+#!b0)%(@%?Ee)&aAojO(g{`>FZ(4j-3bLY-t%$PA^>C&a*%P+qa2?+_J zsHjL}W@d`V9(zpOym?dn@y8z`EiFwv_0&^h`}Xa^&CN}``|i79%9JUhY15`Wz|uz4 zt5;9F^2#e>*REaS;K769{Q2|Z#~*(b6DCX$4I4HTy?XT$AAInE$j{Fgix)2z+1c5m zYuB#gt+(D1BSwr6v9Ym2r_+gBw{8g^A0LsNoGdza>?j_8{Bf~+_inLZ!2+>&?_N>A zetq%MOD~BtXU>S*w{MHpt5*wue}9pYks-eQ_FJ)R*)p+e)hhAA3onQU4H}4r3m1wD z7cPjSM~{j}AAMA`XwgFa{PWLZ$&w{v-MV#R(V|7d+uK`w^wCG+x8Hsf(b3T&Jw07S zMMa6{o_kKTZrxh=`ud6;J9dZx0|toq-g{5ftXUH##92(0K-2)-_8wKP!sPpKQzQ5t z!Q?3v>x~vh3Bd(-`V-2Mc+@=1`ti(3rG%|F9zyKtXparX}yE?VM#?=!Sa z#v6NKV0nyTYa6ash&wICJ*MDdhj6>6LGcdgw`DgR1)a}vAvfIV zDO^1dJx^!l?;Cy8Ir0obR>e}19t5~T*ZeW zEsWu>6PN}wJPgE@Vi|fhxWY2ryE8600aV&CAy0B*8r~{IRxBixTyuQMY!-s95TLO_~(gt12sw>FexM4DEtWlmC{4dqg<7Hunsf@4~6CbXznQ9{c&6zPZ> z98lCyJHBYqp%gp34(}K!&ZGqu6x+~J^L~GOt)1+1l0cc6|L6bz@6Xx$ch+^Uwf0)i zde*a^wbpes;kRhIH$x_m(j_c`B#orW44}Jv95R`Jq_QWU^B;60tLWaIg^d4!Ze$Ey z%Xc6nLm<)HAeD3IN*|*8NkZOo==PRFTBp*izY1wu1evUd6z0-Zd=ip>6J6+IbUpXb z?aYEi{|WL@L-XEFclb69QY%+%2Zd`5k1n05aN4H~IIF=qMz3I9=6u zAuH@3=sW?*{dc;}Wpr};lLkE7_n0r`26DmQ|xL}{wOr#Z)I zdS9fNa;esnAvf<(#eM?Ws-*daAuS)Ih_*ul?x)F>P|g20pK2tZ;X727Pf@g=t>^RC(}dV1fmX~#Gu#NtJOG*GJd2zhKKt8{vD1))*;L~mkdb|S+V4Wn zra?9{srE;xa$~5r!)RiE2Wj{@)ng)Lt~bpt2#Gz&C;t{r`-hO<5ac94)9pu7coK5E z5c2p}kU7ri>eB}jJc%a$QJUEUH0=|R-ZvrTU#2#mH0oh#v zx&0C(b2p@ECDm>?WcfcKoiEUAZiWPZj_&0YB=aKVYdlTAg=R5?=CTSB{u`Rq63FB2 zke2gQ%|fc^GP;AIkl|4@`G2PBK0(uY2om>CbVK(+B6~r?chMCLqI>xfP5c_VtV@u) zyCE$fruojGDgTt_dXy&qX~_un8%FoiY zzfX7jFl6F2$o~f*jVI|w7eFEk=sM@pz1~IlQcQQj<`+;KG5BH>#3YFM6{8_WMa-fY zBQcy}T*a)3SrOwdrdiCG7*R1lVh+XBiD?m&F2-5RyBJe3gJO2X+=>wuBORf~5o0N4 zP0XX1GBK-SV#F+qfz^OS444=vF~wry#E@z*5u@i4vo1!tiQY$p7%_Tc%r&48Lnua7 z%(obHG1p><#bk-u6*DNtN({T0YB8-E%xHijW>3th7*sLo8u*Bj6;rAKhL|}qS{f9I z2^0e+CRI$Am}fESVqP`4(4a<4p%^#~U^D;`^Q8fd7;!OkVn)SeiW$`)M1vJE;9`n3 z$Py!}0gISp4RXZvX~3X?ml#Dc)*5t)`PQIFgEtLGH1HCWE{0kRs|E@h7>OAd^Q^&x zm_rQ=G$7DGK#ZjrR1Ly3U=j1G0gxC}F^pnpHP{oAD@IiVEHUsJ?1`Bb!=3@xASPJ@ zHx1Clq-$WOL4=rp4WPt)YoMZmqy|x9Y&94WGp@mf1}7SPidhvys{x}1VH*5tV4^{V z2BR8iX+WpJs+fK;-5O+Qkg7qgm~#!}G%(d5Q-d}Q5H;Wv^Q(cS1{7lKHDJ`hLX5r! z4r06GH6RtkuYqwAPC^4~4aPJu(!fOn5e+~z7!u>J zfvN_@8t`Z!tpTS77aCM*aH7Gu22|D6)&F$x(T{D;8Gc>MH~amidC4>H9KPe*izA1M zzy7Olm$dCUHRlgQ$3OLNOW*iF@v1M64E6e1OU9M_yZPWz!lVEfqL0+e+B?kI=nAE} zA}Fy6tRo2-kd{T-Wz{E~z-MMTfz`tT`FTaIo`G}>PE(I{*|>RoyjOkT>w&KYpAK!# z_+pPQWqvtpOZY3<&*XeHcdJ!27|HvXpD%qBjUHYWUu`hD6eMx+MFykyf+Q(E+hFuo zko3jN4MvmXmtXu*gV6@kqxiNOjMjsSZ==CzHK_RRH5i=@Dn4!e07hd5Gb0uO*>l{M ztDiMYNVA!kp$Hz_NMOkwMg8zU?sZUAACshcBTJxNSTkw z^~(EN95?N*T|eD3tGVg+8r=KUe>!AaU<+xWdN@r)B3))GcT(V8=qp`TKi!LGh7GWX zcH_SkxBt45{?j0v&n7Pr=~CWmQP#0hr$l)reWfjg6Ae)y;U3JY>X97BX&~=vHZ!?( z>D9XR9@+mFb(RWR69-tw6<|GAkbM9`>;vFziUpmgG|LE4#6+ttt?98q3fT-ZsD~zlnK*8)!EDKy(`m24p*Z$wvY6 zAsfQy6Xmr*XMAl|czj(}{`d#+vw?dz_b<4A&s`L7mi<2Tw}nN4!sRdY5ni)=W1la8 zLzXY>vk@G+{O&#*3Mr?80rLCs}vCIoN+gOOf=mUMqaUtj)`*V{IO3W^ajpyWV?b3gt4H@|nasH*?-&clOG2 zcW$@f_OG0&c{lhg@X|xyXU$xIID^C;;vE^3eGks<4Q#r=8p%Y4bN*%Kw<|6sUTtxl zM#}N%pZg|f6__$T+P`0N7OHy%(9g!F*&m}{z}fpJ^7m(Z=CAU2lJx(HxFVFxU-4bu zVh@U64TzQhc$l;73FeBvcunehJj$|uGE0SO`WX8L&UV+{8bRKz^4iS1>UdXCpx>El z(x$x1UTHJ=o<=^VlAkH$Yclzp#6A{3bt-$hoNUzpJ(F=EGodxOIG2^}mI1;XrZDDDdXuLxl;)S@u@wi-k0{ z#+FcE^uYI~ys9=4{@tTb!7*P9ILZAJoq-D%lb?RnxmSbE-p4bXvJ06`AEn>H4!Tf3 zm-5wKB~$yG{3ZD|`bN#H#Se#)`_~4;GbXZs#s=c44u%2tbHS}&hI5f`zrQ7P^XLT+ zKCJx^a>9WDqiY`=Uyh#3{vzsoF7-W|_s||+89lwW{7J{TIgC9dWWU;HguHZBpB?Nq zXLmBtI=(qz@)st5Zu<{}7joXS8}A#G;hXrqgK{b1?8or6KQD9wPG5!f;!u9n<|;ss zew+z9RXKd)8IQ8MKahK7H1Un8eXxAvP-j+8&irOhDd&zJ&Za~l`wW5s<}jUtv$V-{ zH|l0p-e20vwm}=32W~6WdzB~Q`&jh3V#$p+)OelTT*vK!=Z;&Dm~?05jfu(As}grs z&6-|$J0!I|c6$Fz z>%O`h_Xa8(^`-Pt5Z0%3Dafnhiws6j5F=|VO0}MnezbHe2v1w8b&~S8(O`5n$li3N z^atu=N=raku~O+m(`HN2PgGwO&odYeg9@KvFe*prROvA+>7PnlNw40gWW(~7Hh?%~ zCM{N5j9H9W1YCb`m>KmMth&soWTtGq{`>&p#rJvT9J6NcyL{T30r$F&r^`1IhpwT7mD#HYpR{KCdgl~=uxh_3 z%M|n9rkU5`+3!Cq&8%|uyJx4FUrjTABh9=w&8)cm@qHrA>?9V?Up#jyTM$m0H7l`X z{=+E#r?#W6EyW|lXLk1efahR1V;UL^X`?`NQ;vsKM!s41miyoTWZk)Sl ze$Dd4^7+=bTiUV+(aim;mds5gKG>}vGon~9Zf<&srmVv=jvZMZ>$;BRGr8B*u8SzU z(ObCMXDn<+{?iAm8S**@kK*KIQEQMASN^L^%#O@%w7G?z4y4xb%aVpvz7e z;;E0TK=N0PnSRA7frvL#mPFe=F7V1yh_k!K2e_)MEfjbqeN6CY_Wybd-t7Xs9Ff5e zI-8U5XX0Nb^-RtZpZGd_n(W)MoQo$%us5CM5#M4zv}CAt{2}&lYk>zl6>>(OL|;|= z9VLSkUlY$uzd)DOv9B3XyD6Tm4WiTL3(*6-y2kh2mjJmRTR4BOv`oK3I~li^vt90we3~f zNar`bGQThERNZr-?Pl6qK_bh!u|ei6r_a|ITY$@I{>0u)e@VQ`WKN@-)?vw6wCpbH z`F1rmiUOE*dDe;)W zPV*0C*bl~E38-=BCDNsF-dT`3QhE$ztW$afq{5WefqKtuQ2xh&@_&Mt$i4}b{bo@1 zQ$hHjQe-Nw`#DhNv!K#>0#rJWf&Ah}3`P%we1iBPgVC2jrE?>waH~Ou(>R%*J5C0p zwLBDVp227}sBqe^NaNrmpvK3@Gac6Gl+FX8)unL|I`58~;lWD9pSu1*`QHl4e?5p? zv@{MXzk@*K^BA8;-{CMQ`yHUtSr00mbs(>ZuQwP?f&`5}YA~vLsC33b#dj;H@*fGR z{3D>szX>Ez@&LppKcIN0U4>0B75x%od(UvW{hC1rKE%=Gm0@ zlAZE#e$7k#@wp=B`aQSIUc0*4n!R?o&zikGDy+OIij?sL-IH>a7CY5ukOus^=%)BG<_bGO6i zG}`JL{<>s1&Do4;+byBJBFJgBvT2t&OrHKxBWIX=*KLW9O#6sW=pcc@L-##6e{QNY zVCnq%3locKR&bDlkqIa+pNJqmUH0|1!${A7wN6W-It^nbch}UpSMf#F*)iee=Yi!9 zJ)DqqfpZ&_*|{s1v&WUvY(x%jP8QcJ_lYk$OiLeHnppWzqQk-`-B4sJ68E#0o{88< zH@w$c6MobSrU)Li3B%Z{o_8EKwyX?w8?G+o3vBtdV&(tLyyHG-hAz=tU7lHEVcn1j z_jq_>y=wV_7teFW}_p)_V|ZxNg8zU2W?EuXH#6rTy~# zvIfncXdKQQ%TXsZ@iq9TWnWep;2Sc=5`qbG62G9Ug;!z z%WH1zb;bx9D|kG)7f*H2DU-iorim-Uc#Hm$uCnu3YOQ@=1LN+RNOIO%pIm~^QJ{F9 z?ct5XH22bZevEQ(WfhkzkGDgayIMm%7;~6%(L5hK`K}J0JxHF+_(<}AWJc@w7WnoG z%7HR+=iQY4x5#rf^E-Dl2582evKVd3qJXj(&|Vhr5GKb>zZriZr*Y?}yg4;j9`Tp9 zy?U48@yc#^j>+q9g5La~CwnPmEZKeD^$jx3*yt+wc|$Zje%>|tYM|;Yd}CTGGj&byefVGGZ+;=LXdc)!RQ{4HtF((3UB-Gc)fMs2^(8>~ytp``s_fOiUjAl5oh+myNV$?>q21*InOJ*S~SwzpnXUn)%H%v($q8{u|QF zi_^^aq?w;eGygKp{H-)|Iv?oi2We1g7#p{yx_nJL7vtkOOg*;DgE9CR1v7TFex}_$ zGcnckVs^t!<7MRIBU2M_LSqw4mp}BW1@q=J31V&UpTBZ$ZKp{Oe~=~GrN^7_FdTsw z)}0FJNcMtp^V&VynGvxGp5l^W87Qf%*H;=h_LlN)`G!??Qi6E@yZTBow{~~%4W9YG z$~Ww@_21(gO6V|$r~s~VUc!rKn!<85q){~c8so_GN_>OI9K>vh7UEOZ!}Rkuu9PUR z#5W8g+*raZkoblQ%+NijoPuit{d@yXj&AuC-=MO++G}zTr?D&f+y(dpqyN&uD>N{# zAi3@tcm+21>;oNe^-Er~^9eDxA2jn6>eD21QW*YU45F)``3Z-9sTw=U620(}oj+^) ze#xu4nom$Ts~2&!EBCgaXnrLF`6D_%k09@d57@qLXlvUw&c(Jhf#(nQboDS?{T=iu zCP;s1;$Ual&xZf3@aN&=EY@o0jMN@d$if%&<;)xOEpF}^yZA+L`*Y4KP4Fbz6I`+~ zKL0oV~rs)kUg%?2v_L8-AsMIJR?p z^GfuaUGjU|tt_*)(8xro$L{=;!mrJ1=kxg9o!|fd<&+RL%hZ_uV%1Wo>eEZ-N3UJs zZ!6*xXt!z90DTAR=^O>umAmvj#1}}<19w-?19bPn7XPstdw%hi2BS+sqKYpv7?qq$ z{K-sE{wqL!@u>!*v?&2$|Jj;%ShMH<>oQZoDr{ZiFZ}$D=&Q`$cjK?p z-F_wc=Qpbo_|1QpX4aU^?>;ZhJR;3}Iq8bo47-CxumY2gZhsziGo3qWue6qj!ArXq zhE=SvJ3ShXq9e8|F%f3t?o{>XtCmCDSUzrScl^Wy^Ovk#Y{U?q_zBgGS`}=Bn@ci) z7WZG*549s*b@pR;W{;n+&hJ~#LG8nf&kak0XjfhF6PMkG*o&u0VYy<|OI6Kk;&U5~ z>7HFTJ-X}vl?L_q^@L-5~pHc^bJIl z@V}+iU_MxG%@I)j6?Sfa*8mb#X3}D{#hAs2MZoo^`2&By^bwg!wb!15nAMMX`Bnpv z*(>MAty%HulD*u$a`=Qbd*wRB#y3@-xnkT{wO{)0H>dYI>HSm`&wl^EPYeJ3H1m!$ z^VT%8?YFG{+uVnwiRgAERntE*jlu4MC7xE`?b9l!&6*VF{FSL!bZb{kOb>+MJf){p zujalk-J`lhDK2sZjDP6Aa>3&H62-4v+{yO-;Bp8A3Nm!k6ZbAgfXS`Q2a7~g)@Dd&c`x(KSfUe zg-O;JXl$!E7a|*YE$HO#4LUQ{1_!vhVt&6T(E+;|zkSV^b{2E-@D-is0s@!OQDmIV z-WKk7c@{hTUn=c;R+m&=u>6YDq%a+$o*GIU3?D!?!kRS3`F|pBI#*fW*sC`&`Dw_TH#`klPC)}8zNmebfy%@ftQU7Sy!%s8i6NE0As zysJeNsVZhOX(+TA+nbPEd&yqcIqt69DQEZE!?P=X_ndVP6Hiy}(x=kZ#NCzqR#GIs z_EC`jqqG*3-cmJ4KM}vzU{v}uydqv@Fsk)4(swEY>2gYkfcfAc5Sr@hYe7(5eJzF4 zEE5<-M(Dn0GpP4SPm3V&I)l;mp!_EdMzzjK@2LghMN7*q4gtltA1D7x_e-GSI{@Mo zmz)NSHiC+8kHP3}Q1Q{`+OwE@o#AaR6Yto#glI^dJcoqBYhs> zR**JYx*6mbuQwPS3#xoeK*b~en_qm8!Kl8Q(tm;Pqx7Ezc|}~~4={Qfl>cUf(G#H3 z-vsKtn=LK^_5OLF{8t-{#z5t(1XR98g34DC#9wB$#hAs2MZk5>3Rcg{3bq8!GFR9f zIL&iQaBGm6#L#AhZuJ?P5wY#-ae&oYdwMkTtjpSnf><(ZJx`-Db|Tyy<}|$Uaj_oG zVqWSW?~n&G-k}ocQu;OidDEIdWX*3`^G~fg%Q8z(S@U3Pen9aP-sAsjWTql`eAnyv z*Z9b5cOSQAz`ef9Q|?~78fDEf;?(sBx7@vUHHH8D+OJFe^P4B6xl`9t+#_l3=hNK# zr@4%2Ujt1F5JEe-5aLTKI0AgVi$hNxOU($bYj zk7RZmt>+;voQQ9?VLCLn^a|Hx6r_kOUGXYSiR$6yh&+uSPoFA9z^QnyR@CXLSh?To zYS(eyIBr6jnK13FXT_M7RuvX>TFLE};` z#$lJ;FXEg{*E=>;i4+Qam(6~=&6UP==QQZzia=|0l`z4ezcW8z^~y~4T{k_(aVrUo zAIvjtUD%-O99M>;bjaU62>2b~>{8wVt@DrTBG~JO{yR5Y1g`cf@XKT+d+iq()K_vq z*6{RQ6AUlpyHyeC<~2cwE$Wl^c(Pi}hsv%5e$(kumtyaouLT|E3<%B~W(|3c_MZqi z=cf*iedZwia0TN;_Jx=bA^a753zO zhhI3(_+0$`E|fRAA&|47WPpP%6HGUI&94arm%TweXIOte#^)#8-`PulSRnUFq$QE< zEPIZzW8zw8*|VU|9T>|^KU1JIya48bipP6TOJ8SiHv2g|U*I&Ve7Nhm+xgk;tf!HE z1M`U|S=ZyOadU{r%ah_Hp9M2mU+q2I8QAsV&gAZI-LJvDFaOVldhO~54(1-nUBEqvdjNMK z_oY>9Uif_@4*Ox{*KnUuB+Rc|;hM85XMtOBe|y-0$`iQ1=3;*3pdy*GDmT049+mfC zW-spZ+uv=g8b0jV%IAhXSD75rPAedRBUoo`QK4+g!{ zdsiOs`U3CzyFgFg)#pqN-w@`f;7B0$of(1rm&XM1H+-Rgto#qSFYMu*-%j{8)#I#f zg&P7+Kd)ZZ{;sW&y&onlVlRdl0^toWP&c#(#0S}1;UVg@&N$#agxuW=Mwf4VEPN+> zEu1eVE_lifZhbt{ws#U^F-Qk<=jOb-%gGxw4%hf?IPH|Wc~mkQZ{25vb#9VHyh?m4 z*(-!f-q^zWw-VZQMD>#T?T+EuN27weT9?V57IF_cdnFT5T%Mj`lKK23>%5*No|9Tv z$e3Q?SueQ%iOkskQJ)^zHz#8DifIWwS;(FkqZQvy{IfU4hMlZIV;>IE;qIN`zMJqV zZ7xvK(dN>}#ZQy=TH-1S6r8E%+bDf{e*tOK|L$ZL9xZ#FJXfH*ksTP^SLF+jxc@=+ zbven}%x2_Oa+}UN$CgldMwoMXB9w<${(4WRv=(%v^I)L7dn3amv=b7g|=_ zkGeb3Ie*H~2KM7g&Vny>>67Q5{-IuUWKBlkyl6;I@&+Agry(D)G=$3BPD2={)c=-x z{s4D9cRCG``@7hShWvqj=PyS?PW(4$$cg_!8uEw0{~QhJMZ5kN+BNNNbRy8xr6CDR zLuNuldRrROWNFAh27()Y2@T=QvzPCq+}3fw)CCQBp$i(4%exlwt|fsy-j&}@L%szK zdC=+o@(icBc}oEXSiI0+ipRedXFU9IfZA8qfZzGYKi z#soqeXseAmL$mtj>b#E(=amIcaD!;j9nhcVP~NW6KPSpxVBi0Rfu6a!3&xZ$gbr;a zJ)((TT_moj6ju}LY!$|{m#)-14+L4G8A4{4sxu{dvL_d8%XKbR)6Slz%|d_nD(#|E z$!tSwYAtPOVf}LYdS&T9%YUp#`FPQnBKr4Ytp{ekZ%L2Ve+sj|lmjmjpl%nd&n`D* z(*#c<8Kh{L;=hRh!J>hzX)a-ZqbAza8^PFwCt$hW&U7}lu=e#Lx>V(BVo#g7*n!CL z%-Y8m)+)PcL$+q*m&TrtL!O+AS|=@<2A@~(EA)-vYYSE(0}Fz84Ke8<4=MC*?O%0# z!>ilNsbdbfH8F*?zpVSUx>SS6tK?|@G#0$uw)Z&edne;Y8VWobIEi{uk`ddV4XvIS z2rew9AH5#FZVi0Xx^C*-TALS-59&{R`Zno#3tZokw@DEr|I6vd?^>VVV&dRo_d3v0HBBf4oO*!kD3}zq^LIvK@cd z|DV;bzCpb$=@A>xIH+KHHs3vpJLi_1glF7t@o`3_`d@V9SbtFy;62odH_&k?UQkj_J9=fJlX1TIQpKx}iwA-3O~;*n zsNjuI;AQ!J6Tj0vzk!VNqu%rRa9AUvZOo=0hIK~7D%a#kjLU~wxS zYxyo3e~`v@JwUH+2Izy^>n7i@hWc0($XIrYc0ZarD&BrdR@byKy^eNOpSmi)?KgCk zpI2w!Z`k6o9bvnx!(G197j9BFb$=9fe*x=7cClw!33Wd~-LIxRuBVRI7Ke9fyaUft zbv6JJl=bj_-p@HN*{H(j&prp(k$*Q~lp8@Qgj>6%qHF^{5NmJok>J#?rC z9{mr~=F;8$b&m3zm0s^EWJf(|p`L_`;a%PYnxjyqbFBe`osp z{=Zny8{j|vX?AssMmU=$Q#M|{5wmby-L_x*+lY1Va$iVqKa#z)z5dLJ(Y_iVr{DV% z{4nB%02#B)u~B%TkbMxMLc( zpQP<*p9z(tL))wg#`b$_ydu!8+5xc%J00g1xfk2-Y4SaZxy={5o!4ADsaqPt7~=9_ zCr$Q+wfp@j-?Y_~u#>49*cbTg-hZjR5YPMW7mEM;{lfp>((6zU)TYDKn=t%U(I{ux zLHfHA`mUm4XBjdm`tW35yAI(gp+Aq!q6Ow#xqWAsw7`DL_HT+VW%|BQ(m(Y0aMj23 zZ#~)RkQ1oBG%@xsVqE$Y=)b8ysqL$HW=B0smxCehEO-(AUOYGb(I)Y<+FwQSw1i?4 zev|2(Ptq^FK^uKDD>k8mzU4PL&Uy7sZ{`~F#GcN1^-XW~w&p&#la@F8S#y8fWgckF zgK?)U-@L|}hvJU;jUv-`)xwiUXoFqxANn3$&66v={%;Yc4f%POH{hMbQO|s1GjD3aA zT9iCZ@&(y_ga5w^iPD zn16tIFXq1=(un+VA2PXrs{GF(-$Nd`7g^&ED)WbZAKByn%8hFohm+pz@YR!s?Lcn$ z50wt`!V$y%o-ofL&wCc^EW=|DQ^w!9XByy{64{^qBW<&)^3R`j^Oa`}6b zvqU#+B;OmaRsMUuymngbK=F?74aGb1Z&17o`#9gO;oEvLLT`M(i1B*@d1MXcs6K2l z@$DiWVC5?k=+tgdt10(jBT3H z=gCCm+_yx^r|vcrcDBp+UrzTe>4?dO;p_P>JBNm-A@%a+)f~N$CmdIH6aJEQ?=Jq`WJ*`Lfll$Cw(i~K@2qvdx0~{=NHkgUI z%3yRRI2C^}kg_W+0rkF-2IpL&+@xo80pwMs$H08B4pcf8f%0E#a85Ni0sFIjPuVlq zDV%d0l>YtifmtsQerQ z749Wa;SPWbx6fd-5mdN62BW({h1&v729sbEjDyO533xL&2vodbQ1MDRicb~4L}I~c zE2wxc7>u3+74IRCJzq-e!5Fw6RKD*8CxJ0*Uj{OMEgcDd2t*F-mir+PtJ0mI%5fv8 z@~tyCCkZOPJZm4e_N~wr`9A^5|8awJj)3yN)!J{d_J?4wl)rtT^0x=1D#UjijP3-L zza0jn4WRO;3222&f(o}9RJfG}qf0@BTVya=3o6`fP~oP63U@20aODQ0WuU^1H5eTO zD%=oI;qpL*%K-TlaVhzM(M!-{g=;k!y#Oj)6R7go0jfM249?jCsys$o`-rvA02Tiw z2B1{!c&owa1yJ#yGZ;M!D*jsI9-n70T5a6p_Zp1O2IcQC{f*Lp095>9!l>f$JqDw@ zLB+q*U~~tlaP^@4*MaiC-e5Ed%KxJVqpLwTJ)rzogDRhU4Mt~!^3R6+!stv;{zrnU zXAA@!`18^e3`SJ%UjlCf+05UKZ#PI4i|;fT-2p1T27}S9pyFE!DxTTkbTAK`0%m~n zFNGGp|3uhvZpD5#cnc_Er1zc6GVeo%ES;VBX@k*bP~lG)j2;K|zIh;@EM5&#)bSEL zQ6=Id4My`px#xj$4})Yio?$SmeF<@oYCQ?=(R%PU;!T3nz}2AAvC?34DM--xB7@Od zQ0Z_$m0L@O34aWnhWRi^mg9#EMqdIIzR6(p05}zYNsuCN^=nlxW0+Mg(wmii#B@?| z>9z8UpQhj9m2voaVe~MF*Z3h&?&3@6y5da+nXh%-qZ^HTbSbEOR)b3CY>*<1YkwLr zD*Z>LQ~e_ttpKOuuY^8vJgC00T*%Ahg>klvO%@w0CM{N5j9H9WbSyR#iQ;Lp*kCbf zvD#wHV#K0jv6=MnH?zrNgTAjxx2|3;oW`|sv?dO*tnd=6;l z**fsjz^vf8ffoj5gc=6z7_@T`IC#h4or8(JaD5>@24CX;zQP0i-&5Gg^Fm=O&$ET+ zc<#Pt&ox=W9oOubPLo-6hhn^VP4Au?XIIMmcShTUIzKE0*Cx;WdxV4!0 zMjRMHd?OlpUKr8J^X!OoBQiq!Mjja1G!ne_z_m@+W`tUjnQ(X6lZo_cwq>;5Yx)y2oGwbp6ztXIk?= zSaY>Cs}e{L*wg!CZIEj&8f?O&f8)O28<%|Dy5DTwIla$)|56*D+P~71wC26mTyM=^ zvgQVBMrPx_Z<&oRhqNd?GpspR{z-#3Zs9Oh*ZtSleYo7Q`;0Yz%9`t~`El!in>GK7 z&5t)uIA!zyJ?p;0x_je*zp?IztouhP7QJtdHTSgn-(&N0!sf5Znty1`N38kl*4%8( z-?HgFXU$q)-izDQoBRdulU}tqF8CyFGJE5YZ&-J4Tyc)H$=w@=e8`%;ae?%%cijRV)=NB+HW-Er&gjUyLWvo|ih&YHb(m^ScM zcyC;@g8Cq{H_m(8n!R!F=dIZrN7Lt;^utW)`muGNZHy?n8Fz17^I_bHzWowi_nVOq zrI<_7%wJ6N|2xXZAD%uh#e6Ewj9f9ry*ADK!L;;g9P5w&PigTDP4ln)c>Vs7d8U|~ z(&9@$SLGkm+&`8UpW^n%-*GOAE84N^lUK5Vi`kkqb9_>s>i_92Me| z7#X3G7j?(V<&LvL?AqaJm3MuFrO{Q>rn+aQq=rML)Y)5yr9@74ch$t?%EXdYTF10< zMRy0UxP{>*$z3DuFP;ty&&%A!-U4fHg|{qt(Sj8TbA}85?^`nNz6C6^?kvml6WyQ*xxeF6>YZoT&uUTNXR`qH4cb1&_;_mF2XcyP{ytUiu&5C=;{0C}Q zF8GvI4Y)b#FsGE0SvBBK;sdK{mUr4|O_3nN^9Qwy%-c`5vc>9O|Il8Yx(L@vfa%MO z8?KWFcf)iyrgmYbFHC1iXG&_7`pK1@Yn!$9Wv`>gTHjuMQK?$FrSHA|Z?6h#eWbqJ z=a3%M=ad>ouQT#jW8aZ3_xoC>^w%5f^q2Ugwf-o*oGA@{d*7=%oYLd;xv-Rk(?qAt zoL-hNIIjJVEX*!_t~0y!fjHYgLY&zcz;!l=v;6~_%y-Zg?+hXn0F#N&{z-^|yV~_E zH{WQNvvjd<@Z$R@yKeUDfempq267_YTw+hkQwX(d-Tu%xSyzkosL4{plVxY zY*_@|uXmY8mL2jf^cJ0hi|oPcogw1w8&r#b%|~BEZ}pJ#xmhj5|GoFx7`AuTS)9b) zeX`%lym}b@nZR#DeH!?GhPdnO`x$6gRoMSp_c9>M8UJse4cs}y6_Irjr`<W@)tmt{FnHy+d!j#B{dqU2_NvuI1PMplaFK@=JtNhp4ef*S$ z?fGV%Oqc$A>+g&4_gpu5I_NuJ+JZ1B!n^lOXIzs+S1yeJet^9#zctM_cT zWx_hmi`3!v{rm!)W%GIBYD1quap(-BpLY{Sja`S%x`&iF^esL`9JH_cx#$d^o}zNq zdUx$jVE4G-EF0+)2P~3Cb!Gs4Gzck!M*rz z;=MPaH~lcW7TOPbAoIoA&ssWILF$a&&Djk5Td{-InzW$TK{@WKMjv8ZaLB?M%B>mQ zX0zXv(V1eLLi;J)Rgvl3{AF~s<*v9`7j{v|osyrmoRbvwT^u5vEB;%t3A!=ovSQsA1O*n8+sopy64XhHfd@` zkG+BK($YJ*KOA!Q(@|Y4sx2u$?Y7^JdiFYPS$R;oA46aFKYHoJ|Z93tsE%Y+BLR z`PiM%pS|c^A3B=Y=VUkCbCR~9{XC1X>Y)$BRy#dX!_FY= ziX8O#(ScBV>5slt6XzfM6ubRlR?0a%6-2te`)szSvfk{+{N)sLx1Jr@Gz)CVg)W z?JuIWROox5_q?ZXk&}I<|JWyw`I5Ezzw)Uk|1$H{M8G*;(x>j3l0fZv^pV(~K6}^moJno+lez~-_QmB- zCFnz1D6=O&u|sp(ZdV}oZMP;NA-Tc&SY0{ zL`d&RbfXkUgTwh?(9`gw$Ogi@>Gy|!-?}D-@wHozxCWh*y2RZDZSjI7D;9i)?P3?r za~9XEZvRgL{1<(Jt`uHR7S`T9M}lwfiN)mPUYh^VRR?beU);(45}k=I?Qa0x>*U@l zW}1t+a9y3=Ul2A9BMo$NFSqWIZro>E_o=v(#7^(uYTaYqxbMRqT2U(bny{AiGA~~m z1DUTcJx=}xflDoF-iJiS=NXLB&*;7Jdksc)u2p~h$3f^zX*o#HQtGfeO?SRX{x6YI zFnSKm#eCLa^f;J;qgX;(K-+!Ub+$-04@TRu3Cf9d7$1?Z7_N- zsB~3#z~8y))p=Wr=NPE`9RQhcEZqV!Z(3Rh z(tt`wf=ZX>t(2}o2BTt*6kooFQpu4}Z;;qKaE8^O>1&mgK3Lgjg#VZU(r-BL}GZ?)URCw+0BL8_Hzj)YS zGy{}>S%T3^Jmmi@DF2$LlmBLe(GwuQ_;G{LW1#$NzE1uRfbzf3V6+kB7vEzrx*L># z&EKg$#z2MB7+2xS47&Tu@Hak&2ft_u4}}{9%6~p6|9J-8eP;L@&)~r?s)w5{+KZbm z&`p=YXrpOI@jV8kyFvM{18L)>)Gf^ymnt59na!AmO%@w0CM{N5j9H9W1l(}UNCghC zyUdBm!9Afyo|?nU3LX!!YCKq%v5|dfk{RoH zp2%qCc_`yB&!&u*csBId!Ok@1O!4(S>iFN-V;|2gnOoUMx;}F=&z7vS>{!#Bb(&{G zcn3Sy90?!e*%Cg>vpIa4XJht0W(SXDALn^C`y9_p*-2&!Pv^AoJdx8(LtafG_~)^{ zO8zuY39Gxo{lT;XV%vyq>*Tl#h}?S9^X zGuIQVmMr*`74a@uF>k>G?c0`ih~k`tJLiCatUHmsBDzmfb^LVfRyx-W*7bqtE0@=N zYX0&S^V_!(b@OE3X@u2xRozyeSh{K@C!@Q65k&G=uc}$maay`}c)FXHmG_sEmsLn- z_0I|<&0gQ_0!VM`@9qSSS1(r_Uv}fThE{i z<6iGquDI0-%@iNa&lyW+yHznGRW5@-yXJI%mcCi-OhSt7q9}wH`!1uq%%}d;MZqUlcHJQ$h&5RG~;O}cO4`A$| z^{*6zyZ>eSnlx{}#Olv>tSO&t&lGXjwh*?7_dm<~v`&X{$gH1m^O@cEHZvC8-iy64 z1|&(3v-wNNQd+Qk9`gY9B>58Ki|*dZx-@tFc310C+Cm{@s+p|!&SJfNnDzGAtS8H1 zAI@CPBM)wRm$g3h=^bl)Z*VTY&iGwvUc>p<+mZRGoU~u3w-(TolP>5+e&)$U8<4M@ zWPK{~zssPG@}dB74vm{eZQy)UBd*tnV7ixpzg*#UZ23&Wj6DhFoKrixRkFXB^(*ft^DTGV>FJ~D% zOVze*&iT55PSsbkOd3vd-iy-EoNvtfe@Sh2kkeT*^iC->L~WeV1Jn0 z?8k!rZhovHSLe|D7&*)rR9}(NH5chj7s{G*0H`qan}g1#B=1xGdz^ZtcpDyf`ZV)h zWcQ-A)A@SU`OpSrcW&7bPu)#UpQ4+cWseg+oBSyMkgbACgd=}PRZan9)ru3j!nc_e zsd|F4iYzQEzkuB2$3f(o$U+qE0_6{_D`+8~TSMUu#CPVlqki9()GjGBAtz|Qi!7V~2j$CH+MD~l)_x@QhZ^QM( zIT6{*aNOTO#y={Mw_z0PibiKSo3yUyKFa4^_B0rk<-GDHb^iJVwdD%~gU5Z6_rCn# z=yKW7F3&TbeWgV2XARz=pMR*FadV${sgv8-?&7Vx>%zMRs7JsXF-i=0}-SW@3AGnINeG1w0|Hl6+<`KRGjrtY;42>|8gbbuBVY?U7PKKUTv33)ES+Phl=bdtKZ3+`gnZy%)P$Y(vU!~JzxT*=(p*8>Z-;h5GuH(*gejmO zUG_5H2pUTnYTs@{hd+SZr=WEm4a4QFgS#kHAGV>}O`BC_j%ujf6bcE$xPP^Bd z?VtO?z7%x07wj5tX`9xwO7{0M-`n)J^vA@jGU?~^%k3(!0os<@cvpFpyi#GsZ}`t7 zIZc1*m*+A!(P@twg=-Gj{b|@wL34wrXg??CnzE96HS0PxS10+R*S~wb#;fcZBO3Lz zov*@w$~P?@X6m2Y50ifHo5JrLO^-`+ukSn%;@f5L4SVn{Im7IcEO>;#rh}~eZ&_FK zoi{#T^PLJOyrBp>GJ<}n3|Z&}Xj5G~(wg|t!k&u`Cjs-EW?Mo3#Vn4OGGfNvV_<;j6> z2->}DoJ(!&*~UC_#9?oMe&lV?t^&gKr=1t&ITzJ8eUUiA1?mfe3m=4*7Zo`BVXf=Y zYo&deIU=1M^Y{n6ax!+$T5|()fZ~BijbLwrz|e7{MwoY*uyzg;T350zHlZbue~ZI6 z_TpE2eD*pMZ^WHD8L;a`YZiShAPx71N}2{#{#>yc3JZu+o~3^Ps%pFvDVlwqCSslYa9PLOQZSb zDQ)ZEsE&H1c_puHsT{scUR%gtQNTG9`<>Z$hrWEEe?FlJKknN4NNoQhCx3iJaM1XQ zkTc#te^5;vRAQHR5s%`PQMFq}1?^?DhBB!of8oCr-BR5}nXI7<)=&nnpZBtS?Wv#J zp1gOG$M$`mymIx|&uY@_)lY9P7ty`<9tlAw*w622=lPR5=Z|*36MEa?Yxklz9^HE1 z^CEWOKG&&X6JJ+2@zKe5Oq){WRNfVjI}66uq*&fMz4C6(g_-(cr(HkIdQa7jvzFx6 zcZJC?<6Ejk>Lq(!I}lcPHGi@jp|&o@P`V(;saKROQ6_mgA78#eQQN*=g42)KRO3zG#bEbmIZyBikjsZjXFEJP$ z2`ax4gV7HXQ$lF^m8;|0VxT2BV^b{M>mk(47a9|0D+a*F1{+uQcecXX9^t5f6URS|0L0 z8!Y8F7F4>&7@TteI;M8I8-%}b=dDy;Nz8a@KW|j@j=uGOa31T?WFRA?>8eI1tS$sw zd7cfP<7pO}nJKK6&{;c$l@Z#S(U7r&X{wFkdM26b@;0)_ESa~S=b^mAJX`ZF{Fm~X zrs|Vqnc9Uut$kPk*Y60+)ana1vp}t`U?b0#g0noE3r_QF=)Z#nYG?bO<9T?%5f-TJ z7`T%KYAplL@;pB1#2_Zd1|8#hXz*c{rCl1FWD(ld!UmpAg)bF4U*V(q=f74_zM4<+ zY~;GXXU%`K=AKqg{iOBpz3&m3spFm; z`#kT|e3jSV>D+snz5Ww2=$gI$as=V!?)Cqgr=G)WEw7rz@wQ1(RO7oBYV2c0x zH1patGqfbd|39ahA5AlFNHgzCGmAd(YrkmoDdumanQPMgE37|!d74@0{QBL~)&UtF zGHnSE3me=6HE`5gnsF;vv*gCCuSl8IV?M2Yt&PjoO1=Lo7T+j-cZrRTqL{bJKj-IP zTw>P0$n%l~^TrW>r-OUlmzx(Sq*!E5y|4#h`1tL_+~xCYbSQ@3&P))d9*t3HPsX4m z<}LVC;^Bw1x&?#QSF{@zuUgb$sF^p<8vIGO>teiuB>hgpzUebHixxf9dFpY&xRw6Y zIUNgFh(tpM-_&jT@W6bd_Qf@w19Ulla1Sr>6$tB=(ncx1SEf4=ICb#i^V`YEtm)`x z3RM%VF!xux4x_xx9`D%2I*fYKvQJJUZvejjtnVu8(m%HE*eY!hPCx6H0^Z zOZXE8cY<{w!-MwuO!?8Rcwy(f`1yBL7wn2F(-O8{`W{@0KIO9Z;)!*2a#vb)UCy2F zQ!01TTq?h?q@^*CqRNa|1YGkP(BJ=mT4vtrmGj3itN--U1@G*d0r$emHGAo*#VkAT zit)#9R+;Y+xros&sWPqb>f7Os6K=dE z;$EHg7Ti;BFS8y>ys{JF=3;Dc+4IY_Zd#Y>xh~KAUu}o=zW7wR>Zl|xYj&0G(2J*9 ziQ+0D9z}i5B7alrZg=fax&*3g8b_&aD3CCMIR|V48^Fu8OI~@^R}%SmYvKSh;{dW_ z&bG9&Fv<2#qGvvlxrQ0cxiC-2S&qz6v1f5LI_m?6IQ=}mY{qfR_72!q$l8<}H~(~7 z;cLvb{)TyzL(CZ-VhzUvZq|J-D`B0;6a3d4oD+DW(39coyhd+N+-lr4C*jTAo+KSg zLk|0f%dM+0VfGs>T4v5$&t|XDi9MX<)y$7Lq*rlul|RB<#NV=)kwLT9<4|=-;Z$pn3Eu`8xNCCcm4|*EFX_~1+7OZ z*i}T@*pt$AQ@NwRF>4^}E>!k|(#rld%AU1FH}0kE+0*}He20{>|BbKg^&P^Lz1~4u zpv7I6X)R?PX20r4H}3CuuJ2@)(Nh^^zRR+O=mDs1k*A}`oM(LrS@7G;tsG|_f%;pZ zJ%yQv-}K`bN1Yi>y*u>as`4E6eoVX>%k`r{r+>M|G@iHzr6j6HJ|oP>VeYpL@>7Bd;j&+xrCi- z^TOyG$-nA=%BHLNwn+ONOV{pN|8beQIJXVI#1q=)bvLe^9;jL=J&hcXXmW`s^>wq%~o{0i>={ukX3xBvC%>q5-xf4xh8W%lwL zvu3Y+sxkY#yZZfpb280c^w;k$CdF^I{j=?0?RoB=rlOzqH=`EAar<=_-G2P8%ISAc zn|0@;xQ&Mu<;1~aiOwUJnX_1NJ!x`$nyWaOx-)zs!wiTDfjowKWqOkU5ZbASdGRbV&Q44ntM5|W{_9Ho_#vCFqz$x(_-Hy#U7z+woD$`g_<)^+ zYbCq_i4SN%czpv{k5F(X5i7YfxpmRr+*`zg;*cEjsxO^sbLpV~bH?4BYm>>jHa(ad z&tQ#LXxByNXy0M3ycJr`%UoTJwk-M!=D@$N^>6H_A7hTS=%1n6mL4Y1Aw;&WrnQ;7 zp1WO7?x58*Y+&B)Aapgry2d1axf{du9Yvhq(Cqf)@IxziS?iJuO{6>A4NJ zYm=ov_K94l@mB7Or01mDe+}HFcc>rJytX%gOP)!C>;}`nnf1~Q*-qK1ex}b;ystAq ztuksRy{EE_{z$uC9ehE6GL^e@`mXKfdj;&eaec2z=mk+NyZo-({r*_Ptg=?z+$rC` z#;5;S6ESD!czM!VTcxFt8(m0OUrli^k5kWnM3kvn8!nxLDd;K5t(knDq#R{8*Rvz9 z?>*A_9HC1OaUKhLBH|TQhg+EI7Iu}+gZ}m1ww`+F{I$ZZ>o|MnKSPnLmW&RF(vzfY z#OIgL_QMN6+K<+bD}A1B*6Zk~oThx-G6|S9zLT=08Ax9%V0G!BC1wh$+C zk{6q&1U892oU(o+=*^Dr>2n{E>K@B8=aLa`N_(7yF55HR(YKzx(cuY0 zn?=_sw~Ns0cPV2xoiqC`n}nX#GfyRFjqWZkboJy{^{m*Z&*YVV^9aUDww+b2K>vxcI2j6>SHudb|)VI5-cXv_$s?d$T^Lgr{+ZJo- z7YYNSg{F)(?rf$^JsKK;hRRR4Sb9{$maE?x+-KW8@IH;rpEP}r8;1I%vR6A)zM3w! zm7y$^=11+Z!%stNTiMA_06Ny+ZKrP8QMQYzJE!S8UZ)IB{X}%mrOijxKIEqvJ@;mn z1N9Sj$kp?lTx`lyZARf<4?B&oai4nKgjc;kZRx-Abc!!%G*b)#n#K!2>3_|#PR*hR9^$<3+Qp?zG59Zy=V+f|2~#fF>*Cw$>g2xCx?jMtcNgxpHiXs% zcNM>s>S^nx6(D6>S_abLmyQ7m5-%|r9SKrr<7(E8c{}F@H!=U^(flAMAP~oHpqHqlcqgz3R+hQ=f8C1AOLHS<^ z%D?7Ml`iRz$bYTD=sZyVtBiYmrom|3xW_9DMyG=EHx^X9C7|LRX)qcA74Hy((Ltd6 z=YxzvKVu2{Mn90f|xl5jE(`79?5sX=txlSIfADMsCDoP*91yWWe2G8YcM#c z0+c>V45ZzZ-U`Zp38-=_099_%gP{q=!v>=npx&#*=)H^u-1nXXX%eMJK*ooqjUba8 zrIPF9fH6?6DZ%HK}wz8-YT2_$Lp)dr(0L86Q=H5gq4 zDj(IL;=L7=K9tP(%Zyo!SOi@Atl;WLvw}-kq7V~2jndA}jNMv6?kea=;^wU^Z_T*G z|8p4^c$(GZ4VgPwM{d@X*M&Et%99MQ4`+lLvUg+} zTk_BHZ0NHCWuGm5w(>mQ=LF9qeU9<0>$?$EAiHmM-`)Ig=(~dtHkEqomm5kiMDuo@ zd}p;a*U?yXeT`f0Pg(PA)~tQwb*VkbT?eA->TAtje0ef+AF}RR2QN9K*RPHvjLcp? z`J^>_{pw=tUvcX~2VUQ={TfHyezV$@-~1{*{pNp9bH6Fg{JS*s&(p%cOl1D}D$~pl zr}_Uvn)|6VceOu%e4j`&Yf+ltoi>?b{(hQyc$)v)(#(p>AKw5Be)BKV{J)px{;f3g z4Qb{drJ0$#N{Rp1Y3{{o-|uT_?iUrIC2OUut&X=Zd_?w*;LIb+%<5>u*XC(yhZ zn^?MV{-=%oN2YqVu4O_jqERd9U?gSd)7D61Gu;sLKeaTmc%DK_AxNyJ`_`!o9+ejLZas^Qt>xeDyl3h2-DAR2n(=vB7U* z(fs>yPcM|j(wgNpi&r=aso>ndV97i&(F^7!?qlKqq6aR&EpU5L*`jl~@${^@mcCL^ zQd5QWcKcp3Be&ZYEU95PUnQqIZKjXjd1pK^bJDCyA4$x8XbIBmRdZ3Rk}ga8Btd&N zrEz66o@8Z8>#n8qTqP&jP|otA35a&hqq&Rb*DSXRPVEt?5*bY>8?3{^{k}$-$a-;Y z+z-|5R={0mV*V2JpM3GVwRW+!bL+Aa%Lv9-R~L-y(3$e~XOQC4?3>3*!C?MIy^{iYi#Pojca37j%Zm|ukTQP)A(-pY2cI1Uws*Uhe5P;C!)8Sd6PP5 zLw8p#%$Kfmh2iqdu;+-IUEWmI?|a^4Da?c}#iuA6U^3RpqVv3o>YiNOE0L(0HoM9* zp+9QliP*I7WN>krY>>Xo?7$H_5KU5G!GLdJ-VuGqGIp}kYr~c zgCS(kx@?IWgZgXDubA$fXWD+U`En#K1=8PqI;_dySeUX}B37I;xphVC&Coz&DRn=dLq~Ag?y_wa;|*j zseM>`o5B7FX1=DCFj{llNtTLiaSigsh0M`VMD^_Fze#5&oAq=9cMV6j(Zt?|$wH^h z+m~?jXB%^BdoO(|JSp~y_FqLV-xqy_^M{E8KB!Uuiw7&dRqZ zz(Cf~+5g4lLF=`fv=)$aP-|FAFaKKG@A;Acw@H&{E+CBJPWMw{-{tvZ9OU}DQW~`1 zfft4v;L2&&gcke}eU)b<`&IaU{dMNE*`v~xzZN)EZ+|p6N_$t-X65#6NwAM!Xkc#3 z1A$SbtuJFccfRKx(*5oT=VI&i$YwvP^S^Hz9d^RGYeI|uSQD&kk5lt#(w}KU=fitX zThLipOqsgh0y*%7@j7$4V3)oJgM+erLIt^0Z|VeVBw3GtiZ%aoYw3qPvZqsa0bL5p zyUct`=95UP+#`AHyI}X2Y{`x7FANmsdhgWQSMUD?-+!gglW|LS-ICB6&e_Y7$f1h@ zGncipJ~&2NC-A;yAD|=cfeimU9f8e>7p)g9t2YU z|kX`aWFON{lo?;`j7LEz9WgF*!h;kT>a z<-4Vq0d%j7y@K6+HVZ?AxeDX@Vf}sUK$Y_#x16b$Wns!$Wz?#5%%R$+{x5Ow0$*iy z=KH@p;j$ADxdcSeW+U1H8p|czT6fvuqJUe)5G!@GNl2oJKnNsQybT+*Gg0hmXz7%y zJ%-kq0jeEmiY?68(^%~pI(5#VWm?+fv_a`i5PFK0(dfbEe1B`L_ucP)vm@H`|D69y z-u+w8x;*Q?-u14_vlbL0L!v14Zk)OMp2GG=3StxCFZrCh``6YH4>`IMya~f-Go!k% zOC8ukS@vGadCyaQ`t&VPo7r91f3A8G?Lc$s@7;Yp?RW+4`8wM5wY2YRn6FN=b~MPY z9g*IA{uAtnQQpx1?F*mR)H!CEmwIE?bf5P)d#|#0YbR7MSo`WP&$ECvDBBM$f}i>( zc$mIO`TZJm#bLRa*im+|VE(uhKRTofs%>ueo&i@mE~m@65Qr?q+4jczad<`WA4XJA2LUD4331Qr2Hd zgW7`7Zy$Eubv!bM7yPV~cE+p2$zS07D?DVbb(8T!cTVVJU3yM@-rPH4Q|9)tZ>w|@ zd*pBvpY-!bj`w}NvT5;OZsb1thrF+)-enT6>SsezbEndVs{UJzjad?{79vjg7yW^{F*4vVIef zjUV>zg4Fz?B5zbRbz6J$N?2Q0n%?DTWxh0Y(ayr*DolnFFKZp`-zjh9Nhjy&2lVgO zCbh1XkH6Nj-zr!-_q(L)Fy;RiYt_$?&YvTnXcv3ny6epQaEC8zV4=&~4DQ$i_lD$^ z9K5S^Wjro9>X}OPvpz*ws$Ui0ZuSBo)8@c`>bx(!VlJ=Lw`-4@>MifeY1z0T-@&aj zF;{5hJ9HygU4D-)vT@l*JhfJR^!7XFb^n8lAE1CM?;`rH zg~560sl;#Uq=S#VPMyA;I?W!**SiLAtNy`%2TyJ4nb$YWJJ7c!wudm@xrlur-G$!v z$+41|M|rmm@*Xhnjm()oBeR_M4QIEt#-AI0-y+H7FQgA0L|;0XK6ME3LpH?S$S6TR z!kcETeK6%ch&AUzv*xTl7k?7>MoYF6{ZG}FF;>1s=}>QD23qx-$Ml8t=N*g*w?Btm z6jSeMqq}%F;HZRoqq&?(EoZ;uXz^hGQ`MGpX=C6+&(GWTI`2*G@BBvb__^=0XQ8Kn zy^e(!oZ$U(SDZaD?-aIA*ur}%!MH$iVIXSa5`$ifY@7Jk8-J?t(K7Cqk5?4!HG1xq zk56)X?v%fYy&qnzNcmbKKSlqx`KQP6lfutU!?3$>^LO-4N}Wf$!n_#$tKU?;)m|0* zKC7WEk1zDDz6sg--Hb)Jt6nnViEFWqEBidA5Z74jylHl?K?&=OW7x+~Z2E#4>hoA{ z?6B&>^H03a`~A7zzAA?PB}zNrMo&Wf+z?`K%cm3V$H^CY+{rR*rm}dxMQekd6$zAF{`%D>)=bi%fpZl~%dVlPt zw{9#XpV^yo_h7y$Vmb1B%vkauY~P8BsYrv-N+h0 z%KoeO?p{Lt7gJBD8;mB~5d$7Qd~yE~ ziZJ6*VxSiDu*&SlV|9Jreb~y92^N=4#q*&VbhZ50VXve#nfK<3@>po*$bBOe;5?M9iaGh zk$>{PAC&)n7L!kd@~?Z9<$pIQ|2p^0oR*QhL7AnsF9S6DBuH9W2jxW;rXRLw_B~vR zc?w$muCSQYz6SZ%z6SZ%eg?Vg z-1o9SV6^yHOdbK5b4VYym^=v5yvuevbLK&0pVU4CnQOlQ@8a|!i^+Xp1?EqJ9|aph zrC0j~s9I*<0GN~Bz?G7e3jQPxXfv%tgP46qZN3GM*rfbHO1 zQ0t5Hz_`QHB<2&)%;l-w`1dv^JE7-e{s2f7OJ^)5?*XY&X|1z@M&1Qg!^pb;lUh$F zDP}!gNm>d`k*611H0$dWU0QN5z+?iXDAE^LOpXNQf4IfuN!m17o$j%i>;`53ip69G zRJ`x8m}~@ zL%{eST2R6b$@PtEhZZ1cgVpZXNq%36b@TgJK_@HrR(AXg1qabvAsklxhF#Ck6h469 zjoyMY*d8o=5&dIBIypUaYUt^qy+a2TJ{{i|-_P2;R_*E*ZM+#RgOpFX#j-<=~LW7S;(H;BQg4p!P97~Rh5`o1yy5x4Q=n5X%DU|c%_ zHO`F9jN=|39Gp5piL1xJ+8 zs45C2yiVVXnP~q#)$C~ZzVozBs&)3irZGw(FVxUqa%OA>^@Q`C{Z41E zb#>YQg`>4DF8b?^{-vWk9sQ4ve!|iF9Q{|0rtO&c`|r8qj`rW1H@WckIQQRG{CNEL zR)w?wma|uTR(zgv^tq1y8%O_2{)vOX{-Skhx$k!N+Mgo+{(J8&7vKMI_OChmcaA>f z=(inx#_{i4KuuhrQ5`ClZOhUu@zEXJ4iMfl?e z=7|mMj|08}FWLL={hOS78=B`;I`{s#g?E|SRiNS!VY&o|JM=!7e?r<5qeXEo)O`He}w~z@$ACxwH4PaF)P;%&21am)L>SeBNq~wvvr)DYt*I!#?$67 zUUo-9_=uh{H4DOqan>c?nrqiJ*sTqfm3iczWPO>auq3~!nT-ZnV|NBHYp~?ns>;u3 z%{lDK8ftml7m(7*YIyanEnM+iyO9kFhFsmW-lt89+iGu{$!aniDlQjPYpaBIJTz?F zxE_+&H?-CnAGyohegfeijzo^Jgsx~;hn)D^5n9>1;Op0-Cs1<*L;r(~eoX2cR&V0e zqWhc)?T&CJ)e5Gy*@S#6mp_o8=GAvf2FtBZK8qYUt+FC_uY%oQASVOwG+-+Qc{gx8XV`h81_+I?}#bKkPZt+4JVV z-+l)&-)?xwcTRLaeSnwXLGi6*WQ-Uh&yT)iq>jjsl%p9FYFwx>p-~_7oT&EYN{OFX z9%0b@X&Lm}?_g?xY>cX|UR+UC;ZvUH^I^fYYqw(|e$&a6$hT})KoTIdV;{En_u(n}Tjf>|z7>D`gFoQVTehhtQN~K&x zcJh%Te(fWzTnn^0N#+~nefMJ=!QW=*Nn`gFe7u!`2?p>7;iPJ_f=5bYdOgZwzUB2@ z_@Nca@8HGtj^+%lK4tWM&wI$rjxi^S%#8cBXF_N2?402@m}euP9o?+;_-6juIO<yY@G zc~8&#{Ff-&l8l%664?c-2h2VTr7@Amz2xIYWrOJauVgg8#hNPTB;V0m5OXkZjEQ9) z>1OU%Y46n8yC*94@J-mU+|0#p`Terk4)UkZkC*1rf9T?sFAsOQy8u*nyLe*c==1UM&s{?O^!o0i<+jT?@a=t!#!vIBQa(Rl6Xo}PH~8}7F%X_~ z?tFd>vyAd--`{T|?xO9_clW;{?%Z(Pk7kh13kTV7oO91dpO24=25=XRpXR~CD#*Wt zHTC)JckX=u8Q)XHop0>&!}snRYwp~rf$TNLl|Ah>(9|IZ7 zrFU9PJ^*SxBm>enr!_AJCO3nOx6>^S6@TdD6(DIa>l@^CTI(BN@-k3-r&u)i{W2yq z^1&6Z&PB?8q_cmFO#T?=J3xig4(hz>J)qoewwSC3nIkM)1>TQRI&Cqj z^JB7SJYwQG5}brPt)D2qr$EK`q{U5cuhv!MF9XWoW{@_MZnKzd0p)M4 z#bhHWf0|dk2wV*Esbuc=1#oM)8zT4=4)G+Ip7fHGeNQk3Z`i^;SzUksA<>6FFfJn&N7PX|d-nlOb))nmnT zxWy#A3=Nq0C2ahMh~R%nw>2Nq<*?IX#$k=al*5EW!1ymH7|zPbWz&Ziq!te?s9H6& zz%Ahv6m%85P*70taA60FF{JuEk5C<)L zhn&&nz409^)@ad&qm}U|`8^ZQuyC`p=rKwk^$#RAyk0Vg#Av?VpO1JLH=6%Hq6|R& zo!mqJ%F*9+^uIe=^;7mI9Q}DmpLVq7qcvae&nN5_O#%Az0h(`CeEk084(I=j^S=hK z;(s}Qq|AB+w9ZpY{SO}b_xqcB#h=ITztj(g)Ax19-%sCv5gm#j`>Au{r}j01is;Wb z{3E=zo*=$b-{29g{zyvoPqg1Zk9Y1>ucTJtPxh(=Qt$E@+EAX?=iK}62il77)VK(F zHT0txI97&cpLY)ZiHQHIi2E-`?59WkyZ4LXtskv7g~Oxm<}IY!=fgsu8==YQ zfgI$WRqyXuC+3uOuqVLZPAt|nR%`vhWp?$#l}jor7cH$`bj^zDE3fU(m=m7YE?aEozJvL7G|Z|GG|3*B zT8~bsyJ>Xlv($&3Kc6wZe7coX-d{d)ThqD*cU&;9oJEZhyo5rv^XErsg9E8k>VQz~ z@`Lhe#sC@z=v{2o2c173?mlS6Pb@bxfv-M@mv=_stN!!Jx%1~E9Ur~VrFNFs`QMQY z+VUmmZ1d+!9lv4D^C9?!l}mnL)IWZ?=NYS*uu2ar`MS;`!RE4CwNFALa#EFd(i(xX53x8 zjk&(By`I|R9rM<6j_j%K^D@c4S=uOKJ;B+I%|+fzQ}5mK)8m{Gp$(P1&bdU+ zmW+CgJ@dzL-^abUHRHXi#F{hnei=*6J@O^K?H25!@ z^y5eN5@xY?==W1&#SdM~nV#4!rTX%+G7+d0FcygM=Os}mTvbTFph{_tnk?5~auUvuJZBNy44 z-D%Czm`&X}^!hE_zgtEew;;=!?}w@_=Wwn-``w{qg!B3*y#xQ9`N$KjA#6bobpjb~ z@-vA&`%{19U4NWBJHE&}@O|8DK`v(szFWBea}xOaEbqYgFn^H!)N6j58GS=p(L}xz zOHPz>1`b|Z3FljXcj2hZKEJK<TnQ%76Z5=f*X&hfiEPYTKA~M<1zNSJJuh z@z^Z>|QJZV!MoQK`M z<`--CUm6=WYz=9CeSvr21m`y&Cm+_3XM6LcAx#>-FzVqk&7`53H2feoVh!V_s)vgn zHfcDAH2n7ZPR@^9bJxkQK0bjyxn$dXZ`9szUpR`PYsqEQlWl~jaFkzbIFEJmn;n&F zlY2L&@4f8NFK}n{!|!eR>3 zH>bj%`;&X-_1zvb_s@Qrd!Dxx6t6k@>%OYvtP>n(F1`EDE1seb(@%6I6GfS1&n#p? zo^R**b!YM;zq)E}-*@eu=6&BLzQ5|L`to^}&#r&#t7?bmY|dp388k%-R%eBW7{Xt%bPRCQ$N$Vzq+t!&9+~f zyU2~%6k`@&bMhB`Rh-n~4sOdg^NZYYJm?efYeFWx!rQCxro|`53GX5L1=XEu+C&p) z`HBgTesTNq&ou2XCI5&0ybqc8)@+$ED_XPmXT;%$TPv4sDVq4uP}Y4eDV}(cJI$3Z zan2SLkoIoY5Lq9qR5>Z%yH5Ab{wwmY^Kf7JtWX{#p#3~(Bo7p)2Z_@H;-h|Z>e&8q zTJv)MIKB81^~B_Xts6BjDG%NxuPxnuD4GXve&9Sf@jv>9*Zq%=PuNI$l(zNMImtxs ztuEvpGKhBxXJ78-PGQcEXnjlXF0ENr*LWK;^asEGEJ$1D-h&y>f$ifc>(3NiU%EXu zET))TsS%FZF@;(WwJP+?lO&f4hj!mV&V-Y6!z$Z&O&(N9E!A za&T)nYxy8)c$;^??V}&(Zs5PsxxFPQBYUtzzmIW~Qc|oLjKx^^eE) z9G~p%@y7|Qo0Pmx-*r2Em->>c)tAsGEg!pW*f#pEWq&zr;@Nm?b!n<$%}jTV>nu|E z9Fo>EcisPy-p)GjCB_~ar|d|uR*Rl9#%4`iqea$c?fD=7?2pWN%oxUxZ)}>a*PXPb zU99Vc);d{d&GoN(5v>#cnz)VAg}t5M%*H82IZ5uq4Q%BuH+f4xfP3VB zn*9hbUyfg;S7y;MnaKy|p7H8Fz9IH)V$ED@vH$AovetANi@i+vFSj8-LTjtxI!(Lc z3_fe6)a#x_*?QeY+>c+CI`B}aeh#B8J|5I{o4?{4zHdQyyDOdf%rew_zkZ*%^s1@9 zopoj2`t8@v40UrQX=>BiQ{tVEXD9YOrcUZCeOzT;65T)2Jz0B5Vx~SQ52^D{)f8uv zTPDC4JKfQ&{N+9SM)y#i-_PCGk$cuZM*n2br4x2}f^rR?_g6f{&o{I2QQOM)asJ)! zI?u0gdp=h>v($^9__3)k;%DoYUpM24Oyzebe`=5Vxz5R-oa)zyF6z9>Zuj#S?)S}* zQBb~va^C&?E&I)wpYcI=p|^dPt3!$Rc-M1A)9*hQQKq}^|N4H;r(eJ4{tNf>G5eDL z-SLgtuH6=Xq_^gO_wD-z?rMu|{Zw2OE^WMIA7vo^O1sjNa{02m@Uy+8u`wqyjC*~a zYQx=>(?xSF?{Giqr?>BUwUIdQg(BVy#k>~^wo7J!pKlB4hsZn1&B|TykcIKy-OF*m zjQ7b>psZ<$Z3E~(68#xC`TzJ0V6_{q%5PM}T9K1rYG=c)D2 z7-ty%k%?{Eo#UP2UUuZkY<~^fFMEZVFFxECt+jC}rhi@#rHOq|yFZ$mx_~|?UbNz_Z}E+>hqgCu zerkR-W5!9)y!T$7o%FVkOM2IL-u|{3cO~%0HyG#V&pV-e&goan+ef6nWMs~8*7Nw} ztEa|!KTYNRbmG$GwBKb@b$-=)?(veY5>=xAK0?7p@A*h&&2P# zzqGeI+iy|tOuw~5^)5jg)F&xE{pu~|e!cDDz1KOJ_n>o|(s+fl=tm2YQGpq91`H4N z@5d*nrs_L+SgdH;ntMyf=+2~N&uyE)K9~)u=X6&T`M=1v8Tzx)VY-w17j(uy_e?)+ z_%(%P^DTj_?9u?p3+@I z9bNDh+*0OEymur^<8kHzhEo?G{|8Zm@C~uXQiC;(tMA5W3d7OH# zoqWySM_}_cOH;mdwN7>Un*2CEVr(Y8tCn4}#N&W#J!f0{JvU*~-&AHdeej(}W(w8q zJ5p%Xwe`1q3v25WvPjrj@Jq_;%f#0FB&7R9@N@YkmrrXYCasA}X4dDkOI%W)xayiJ z@BNqz;NSNe=uS8x*?bsjzP1+064*o@aOt^SsG3 ziUdsOxi*pz#Sz7;Hdi@wf1gD^d%xZc`z|J6$U~+Z zbCu*_OKII4Z9n_R=y0Xld2rItUUJT*p5-abW8dxUT{`>4Z&0!E?yZ1%KL1s8C{p!2 z`NH4t>{A2S_d0u(X+HnlUuV=2e)EN|O&?MT^V>iD31_c*i|Us@S2+7F0?(JfXWWLq z{R8;l=L)tL`+V_#a+LL0Gk|}|8)RvttOI1iwX7W^9_a@xCT|9*8tGLQlP3v}I#+fW zoCdal3&B-j3S8>&GVn_13qZL$MLPITpR|~K0n|Q}E{n;>z-4>INfs1ih4=O&oS9~fs++h!qQ92HR zO2@qYr8`wnN`=FF>{xz4xKUz8~^G==mTA_pdqfo1$31Q&t(K-yy2lh!`1^X_t& z0mZ)tycE>Njv1gPZkK?kNz`TFi{MOa@;8?AJAT1;yD z2Iq~-9ss9+Eno$>0#tazLGe3-C-FNCVw65*F?kZ?Kiy+7c?=Z4L*NwfSx|g*-rm$# z(9~Cp=6(UCKLrgYk70Sa{DDgU6QI(63QO8^`lQ9=D_{Y%&dYy_N=|dKihv*cB);G7f7TrW__5dJemBEcaawI~`^m);LT#OgQu$cH8iWbUEyFm~mL+ zFy%1e5D*KtHhFA&(w?dD7Yr@9c*@X%>E%NUw0CNM;j?U%da>{jzlR1NW<%5iL)vkF zthfi6^1a1p_&q%A2q)HihMm+ea^%?-H9W(K^&{uJ!tcp*PVw6{@&&j*Fshxi>ZeAX z=C^0mNq%>ad6Kj0onxNR@3<#8v2IVQpE*Cn+4SxUk6noS3s3WVsQZU-5KXdd7!j}8*I{I>F|5Hb6L!9hiaP$R^ z9`C}-xbRu}aPE1x81eV`{TYpcj@uRS;*Kj?)`DqXB_R1ejU{e{$F=iVQOPQ*;{@yAV1Is3G6?Rio8_S#2>lR!xyrXL}^Fnw3V{#b-QKf>?7 zMd+poy&C3W{`W@0dp1I^j)eD{2*004=u0F1zYw8+5}`Ll_-mhTIDQhw7^as+{Fg=C zzY(F;jKcoE6`}t!!vAv-{<#~P>?XN&4eRP!I1FzNz8fL<`nrvtdpDoI{z>nCjyb*D zw(jzEwK?|z$jqlI?ZXCb6)tZ)j`SxUQ+WfkWGOwqAaxeuGFf&v5Q+I*pw@`JCM*=T6U? zz>JXpdhPAYhHXeTqrq$4dQQPd^4n!$Q|NqrJ{Mt*#!Ej&w{Bd&j?xG_tZQtj^EU%t zwdC3*l@;k_H!WFgGBRv;L)D_NnZG^nwsj_xH2D!qkI3lGJmWj-&St~Rrfep;y@c6Z z(UwK_J(^33jcGJ~{T%p_3|r)i0}$nl28g7gzUfxv1!RMd(#`8Pa-P5GE_OGDBnV{P z*R5a2-4EF2@(r`3RBmf%ZrEtp)GO!MU}$~~8_E=WNMq^Rhqcaz8lsK&@a+Zu zjz-;H5cmko9MCLT*2V~Wuo-ToP51}+12F@EaDhOi!2gf?8)wdR+Zz*k_BV3-#6bHS z85Ver>L?RDD89kX85=|7`O$e1sdm@7`ZS+2`u@@I*QgJ=zp;gWS4#ZkcRynk^UBY& zzmW>XO&pt=Kc{;{s?&>&NB86N>2h>0@f7PRdPb*=Rjz=J65(A>M$xVt%% zPErmm;2iQK{8h7t*;8s{r%#B-J>>P~u4NVs@;LvUYZhHE)moDHb+b13L)H}*j7L5% zYewB}y)DDuoHvPcBYOq?IHw4^k@@>LakgtwWSSNQB7K2Sp#3DOhI&p2x+3TqdS%2j8FwO6EqG_sav%2(y=iDqw~_KMbR-Nf$U07vvnzg44`vkh(9)S$z z8P?coTl$3FK_lDe*U2L4qP4P>{&oIM>M{%c{MTd8)SkIVkUpnOof~r(WiQ~8 zzNu`V!^c4CXBqn-)GwLyZ1ksPuMnu*KL#?zR(7+a)wjv~7~wL7S=I=O?gX(Kl5tq$ zFy%1e5HRlaEfoGfr##K~s^2fK#+}^w`Bds?`IqYEk-eW!#KF+6yv(JwviHm3N6y~Q zx2K@74%GD#TIa6A_R@#x`y+Jp`($av{_+U@|rE#YBL*1+5Xl_kxfXHzpTN`DkZ@o-%{(v zw%@r8HQ+`SaDoSQwsB3PYk%#oQuy>AJFcmx{YiNGt|M&PTnonvTpeEiCK zig+rjEsT@mmWl7eP-h$0JdHnf+?sb*{^T3ih%bGFc?{DJ@sqp%$?koM?s1}@Hv8o( zc%Q;reYDx{#yG~9Z^c}Fxccs}y=35=z79D*cNems#WUv?%=m%#HtzE5jmo`$pojNN z_vF~r)7)clly{NizoUzNP~Xve12g}9qrFiH^S;jI@j>=Jb_VYt#$AM|xc%SmUF_st z_kMd9Q|vKN+_iTx8)pA~hf1@*XY8#T7qkD#%E{5bjqsim-rZ)OaIM)xuJ@_-P}#jF zj91D#{~zop8K|C+pMkm<9o1OPJx9r0N@ICcP8*SdKTnwuk;ndKYwkS&=HuV(?A?2z zU-(n-B-Oz~d+lehbq}c>7W&zzU5p2c|0?YD-q-t-ex>Xb{Pdph21kSHcSeD2px*1+ zR403Fw34|JCHe)z*LdJ*Q2sW9%$=33aP)MC2~gt?!ZPEFZV(njx*T>o%s8xZm~xnK z2pE5wj|`6&G#=6Xw%^|kht~Vv&&Ol<6YZDVpE%mj$NL=(7wg|2HdGYX7FPbnd!AfD;jSGF}-ghJJzY?L{3)sD_ zLx*_H#FCpBH1BAC7AT)tFeT_a%8pHZlkm)+;b#UE*|Cc6&Y1Y}DzhUEy`wcrntui^ zziIBgoF9Oje#@OsGW(3|Sj2aiomBHp!t-Ad?{-!z*DzN;-<#;KkCBK3!W?7FbVqwBfSmZ7|1{J@rvVJ^Q#BPX0X0i6+fqB<&?1#W|hVg z8&*U6{HBieMo)>wr=>#aC?+1uh{poLeoo)!@L2$#wdjWp@0z~_J$-IfylBMArDIEG z6;~|2zB;ye#zmoc!q3b#EF+&3hW0NOjoS33V(-yP&ZL~EC2tbW4RHzb@b(K+Us^sk z^`&WJ@A}TtSbT3LWJf2sPx*N@VOO7tz0n9#p7Y^j#)Q?}4f74l*U+BhzZLuHGo^3z z;C?}z`<$TTlODgR8(DUuze!#$y=TbE_}~dMbGm=7R-AUFiLFop7q1=jBsA$BDB>xE#J3w zIbEvp_hI|h*|P_}@Ar;|jZL@SX?xau@^23+k_i*6`3{^XdH{8h$|6O*GRmj@e${oe z$Xjh|*sPbnQ_=f*ee+l35hZ>qoTnLV{k07G_p5GkN0yT3ntMLp=hJAdJ?)1It7yTW z?YnZROJ~M0nNGZvwjKtHt}o4DIZ!`+Ies)IjPo+L=W{)lKp_IPE-n}ixd4K}W1?1j~rF*a5a; zz~~G&=dUNxkM3TWnqOMvZNx48xN+A32J%3UI@zI}oKx63F;kiL=RzZA*|u`8nf%M$ zbF|+WvL`EW%j7BFQ{&7$eYd-ZvW)(UJqy#w!j4IV)y;ix1)Tqs|1SEpcjbq9bo-4u zZm;~=@4fRi&;PRA(f7G;zzNLv+xz15%}DkenF0Pia+8s-D))16zl(Y7Z!kA6UV;2q z&YGOVeX`}mnX)XATb`Ues0ii3q!P{x4B&3pkZc~*Cde=Hz>jYU{h0r~ZO?3F?+5Fx zUWlv!?SZ%7rvs%SU);93^o8?16lUdXoY%?guP9Ubd+d6vpQTR4ICB!7YskvlReh3t z-5B{UzJ)ITGt@0RA90@j4(E)J@>KWlDLgX=?)0K_({AS(BqO)C`UP{w$0L8j@^^jn z4;H_{#9Vw{hLm_Ua;gMkd1<6P;&kS3A+&%!H?TCjSoE&LYgQ z@8r%?7tW4Xu}>A7t@r)fK` z>1dt$yRp>Oai$(9T=oxDy~aI}uTdY46?)UQ(ofx2kTLy~>XG6kcV*n)IhTHl@A&+A z?PMtD>kG(dBWJp70KZ|`!G7Pxd5@AF;?j<+<9GvWkf73K=G{ztA5VKP+4~!%FSg)k zs>_P!Q}n0YE52bDvOAOqye{*`w_<|LyMx3nuDWrdH!55=6x!st@)1&wORLYgDFk9sQmEe#A{qA74vblD~X;r#anU573W3N8Qg1U>6JBCHkE5 zKlDCO+WrZDANVpqH}G@kjx1%R9GgiBYfxR+w%My(S)r$F#mbc)B9fESH(#=uq-E93 zWM+2glWQ)jlZT;Pzt7Aw_>=17$!9M)nNlfy=CeP9;b`X7v@cxqa{EBMq;($wn0ykX zy{30tOlsdab*F5nwNL9FHo4P1Y;yOo#bi4uclUteuYC;SUjvH&%@&iZK>4e(m|OwM zU&`92udtY$XYJGF7L(IKxf=;;9x?9h2RVCp?^~JnvnyQP`=)RYSxmkND%^t>lP`ec z*9e+;f+n68liH7A;%PCsCoTo8^j!wZpZ2}WU&3PY0#N?OTTGUK3daM-g4z$SdCeEV zabPDXK0872(Y|;v*#U~r!xodYf5RubU%t(`)A|hVle(8m;njeXLHY}w9V<(LL?NyH z^kA~wnO_F-pPphdDY=e{kK{utK3Ydod`^OjPmjgqF;L-1PNVXp3zWb8p#1H#n0y+P zzb7pwcZ2fh=2_A^p!rX>^CSNmQ2w>gU*T>B<-g5hvIUg?dXT=ctOiVgD?p`lv7@Jh z^n+y=gOk9Kp!ml@@gHO{sldhm42ED*`*_9wFvwnwvO^$a(lV{jF^DUx0VjYrJM$G_ zG4yosB9L!z(kcO@NC3 zc#wZ12Nq0@S|8$GRB=bDR{VI@e{IV3N_)NF<>B}r8F9vxrm5l_o z4$wp2rS*eXK#bByEGBn@3bzwfxQ|&(?gZs-hs9(EsCZ^Tx!(-ReVfH(3n=$%Et-1* z<$fu&>eFH{0j9u7;B=6++_D-Fe?w9Z6Al4mKD3~1^U#8|E!@u+>*Q{~9kHGK9*Moe z?~~l?=ilLXs^B#G&cY`+4Y9NEF@8@Kp5}MQpq-qbcz93;zb_6t#P17(4)Xgzyj?3Aah(`&H{NviH^R(T7Oy+Yvej->|*vbC~{Igl7IR$Nskj6m}n#(>ga|e}2UO;RyZJ zhFITJVP zitcZA#??zcy`p+?(`^l{ZJ#!?bZl_OWX07>K2yD@YLzy>Os{TP)8Jn*7vgWmZBe#S zd&BLT#Xc{?%6PP!#y7UsR=2daYV}E@K)X;B=Ao`P*j4u+_I~E z;a$}JC2j$`rq=3Oe{b{$7vakM@2okAteP=*-mLkvXUv*6KarR{eFhdYr^|Lux!wLV zcgAezyx+Rox`wvK>a|U){iQWihx5$?H>$5m7;7^Rd?Z}qt#R<1(S#+c-StnK9j)$C z55qH~KIlAfiR)*@&#>g>dxJO(@-l{z`#IY^V}3kbH*0*+tp+NZq-uM!USJ=+w`{zN zm)^@#%z|Pzl-2Y)-`F-c9^&KL0r3G(1gRHP}*%=s}ZJzpw5T+%fi?d z-t|6DB2&`0Xb5v{W0|iU$9&~^?2Q_a+@K-m9<;ZZ_hM|>!FaA?M}fDU@12fkz_&Dy zJjOfF&A#3Q>u*Qh{8$&^oB1%z;k}~?dDEJZ~hvpJsmI24u+$F*3l;tp9uFdk31& zFEH|)ss|y{kGzq*KY#Aj&Z&;wn}R>z7uv_&kzjtm3tDL)KWCg^?JiD!Q|2W-#Q!UQ zn)>p%3h(-N3**!Hrs%l4(A&;8SjkO8y_bGA#JheeGA1R*Xex71)eBh1Bh1EgCu}=! zYjtnWMcj+^hoN(+mL&>D^F9hkb0{Vc-Wxi%x0v#F^Y4!rcxx(<)hF8S!yjwhcOth) z@nJ59d9nWUHk$iBv;M!EdEmb12P40?gnS!I`Hn-z)!^+`-cQj}tO@cAPAN(EU&Aicb-s2OBC?n+gY&?#hwcF+0h2B%`h29*^S*wm@Y<+l!^mOoS zSGwp=%zA|M8Oo1#xUZ4&YP*;qb&ca>|hj#E7f27N-Hym~Ma&9LtK@gCfvTha?#Q!25=vzp2oRlGdI8HQO}iEjfBB>>pNptNOXhZ?aOwvXC>ac@p)5j zjntK%SbR0|C+y(8U+7*_El~GT#p-^ z^z*NCd{Qec^b0@E3s)*`p`ZOoXJ3VVEY_cYy|W)VfPdPIQ5wIY`ti@4#eavhA1Hp3 z$09Y5edk&1cb~=n>9g4HKZ||WS?mv<#a{FD@0Y$KXR+@-i+#^o>`yuSf$Fc;8>9v* z-z)Gxn|Z>0)WeU0k2%!*z39y#PSTpM2aQ}CnQQ)Cc!9&Xb2rGjdxe_*G3;Li<^P~X zGp{c5PG|m@GtYoiFxPy!+_yOMd7#3X;&8mf;nqIQJKDsno5n{P%MOC#^DHPn`z872H7K0-~v#5=Yy2B;xOTGyu*>;9PH!Z zr$E49hQtxiAvF$D4igSNhutJX?z$XyI?On%ahP(LaOgSg#dN}+VAhaDSQ0*^DO7n zxI{lsBb9nd{6gXVM06;;ABpDi{r^BTJp6f4=J>U9!V!4brb$& zUt=iGlN=_|{`h6Kv-igfe2W`<+MrR|7b*Atc;N`9qJ5?IDcT>8JVe@zdl&w4NBi$% ztt-mD!`aiO4BhSMdmQb*eL&GJXct-S*<*Nvi8w|-MID+5mh-+{N)#5bQ!mie|Z5(Ks#x1EZ`)$u<`0%`(ufo0{uv z4(DU+j#vf0P0pJdq!6nIw%)XQZBw0ZZw`MUMycV>Y|%N{OZAPL`cH zsM|bq_Usw+`&-lxU|zSmynJ3B=lM)q*Ub#O43$sbTORx8l9u|K5tF$5*?^bO# zSij452g+=_6qh6NDA&JRtMe=1nreF`WWx6adn_JtATm3}W^-|8J#*GU%!;DvxIghc)*@fY3>w2Az&nJqkuOkk99)9wD`fTfZ z-TE*=CCo45VbZDiX)~02|K_md8~6R!_3)=}9C^~W&q(Nd!EQDYjbuz4Ue~(|b3F>@ zZl0Wgpg)N6*Yaw##&M`~BYt*dnEy?f^#^-L2WA~S+hrFq_rB%%BTQ^jKZ(#UM(Fwo zeQSjN_Xz#72;CH+Z;#MxBJ|n_{fh{_EELf;vo?~2ep5&G^3{WlT%=?HyKg#OzI{dW=iI}v(cgnl(bKNF$vjnLnX(BF&D ze;T3pM(BTw&|4z({s{f62z?+zXCm|~5qfKczAr-mbAlNc`bdO+EkfTPp??{n zKOdq0EJFX!2>l-s`q>EmKO*$MMCd~i`oReOP=x+|gx(gRACAyJiqJof&|iqq|1CoQ zmk9k*g#KcLemO$_G(sPa&>a!_2N8OEg#L1b-Vvd{5}~^y^j}2ie~r-p6rsNwp?5~; zMpD7emp||JVO5_LU%^!T@m^l5&D}E`X3|o4gEJH z(Y)2`*Xzpq{??mry|rOuqHX>9M5{K^d38-KjTki6wkDd_`$0CU>e?ueq$Rhkmr^4ZL%l9SiMczXQZ)OqqXa6O^))V+t!3sUTexHgmLK7VZKaT zy@t&#as>nB0V%kRq~sX7a>0xb$EG%yeTj8VWJ_CJqa0g{w%XfFbj@gYjx_Yil>&*5F0N$||Q!o;Q+W&z7ilP0@KxYu7g1R=YN#*$5+F zH*u?E+qPvbY-t8`T_c~v#AIV@U=;Du$c|B;Z4;Hoq>-d#4PB=Aj+%*qSH)0yhv5Z!ULz7wcP8Vx+LP`Od(bHEd0+r-Z23*~;zvYOzfy@SsQ# zmoN`ik4VsWHEdj;FtwJsA6N9I0Bc*3PaWi}O@6k-WRX~FN~4)?=B9d;M#2?`3WgeT zs~9@VpaHse=UZ6m*FLpQ@l%ZtJg!@h#1}Oz-wE|*b%=D0-ZTl5<1WC~x{Y_Xw5hky zr?Dw{-=;x^ZR@ivU98(`SFa6n$2s2AOc^ubvDUeX#9jhotW6Lk(;;+xu7taGteXB4Ew^G$6(s7l_< zZg15Tb-FG&&Pa{0zJcqmnyGd)l0>K}iEBGCpVGMrn68#Q`fk@ zsm_(P%r~uVYa;z^iPh`t?@ZiU+q8BQvZy0Ao0{uuH{K~zP z>+AgtORT@uB&pTQ$;WIx$J`1~?APN37Gh6a$T-{E1s1dry4yrE{d%ih+}d=T*Qy?k zS59+-r!@GrI$QB!(@=}BcH4_)JAGG_DiG7`LbT!OwKX=_5_GA~zLbsD3Wq(f2S@ z$R>97?T7Oqvg+7D+vjKaCYwYWV?h(^o&0FDQ%z&N-P>?LO_!5;8>@Cdj9JP2L~?gy_0 zcZ1h}JHa&A4qgpz2A6}4;4*L(xD;FpUIoqruLP%nOTh8qVlWOa0(HJ}A=m>}fJeX- zco5V+1MM@>zJc9f65I(=Cq}e`p9D99+Mmz}YCpm%a2~i6oD0qawf|rWI2#-fmV7_lE@zsLyf3t@l8h@BvHZ$vwIDYzMApUQ|va4NV8 zq)v`l3VsZn2YwWs0$u`+2QLQW;AF6u%6k#0b?8Z;&V(dDtwXZ!Zp40&DZ~-G!3)8i z;00hiI1$_oP5>K0=88wG0-1jtu@pQHoCl5rr+{O@@n8uU2buC5(Mx+74fcSez#|}S zXv9JATyQ_gri~H1!E?Z!;Bc@VWKMI$W{`~sX8#CNvS!~%99)VyP0Z{Qp{kqxAyl~$ z<1we`&3+Jy0M@4cvdiJ(DbjyUmc-3hn*Y{*f|N6uAo~za9W(n2{Q2Py*~9qT1THno z(LZqXmlP<^VMmW~^sgNK2)t!~%F&Y?{hp(D6F1qPMfc;^#yR@4j=spzzjpDN>*!k@eU+ns>%#x6qqjJE zlcPsD`aVa0lQ0#(uQ>W87oR5_UFm2p4L0hhEbd{rDcl5uy_`K(6oktb_ku)x; z*If9QIC_(#KjrA5j{c0JzlI{T`zK#?i|i-R0;NtVAj!rrH zK}SF5;`3h}t$x>}$I<`d;`4%|YaM;a(Qmr={JWz+@95Kx{*H@JF`b`OxuY*|^fN9# zA9wT|M=x;n_gs7`9sMas*E#w}Eso7diS93bwO8m5c%vaKeNR1V9Xjb7XE2}km=Pr+GWnYdKj_p}!KA)=j zKy1axZM$Gz&pJ0-N9^ZS?$KrIUQ6ifH~KeH*(<&-pFiI}2|O>*%?)&O0^RIDS03nQ z1-hAmZbnu&JZS);Gz34>4|IN@n-}Qj2D&+cZg!w64|KBv-ONBYV@6h+)lCnyXw1ePzu|IGhf95+ zn;Yon1iIOQt~}7q3Uo6A-HaI_t(CwR7>+yU()VxeK+eMF7)?OuWhrSGUC;f~svW`E*xfNGZ? zluzrkM-Q(_qdw?9qINzirNmDxJNQ_ATLy!?jKEjgr<1#nC|B;R&xdbdqek)(`+n+d z`-uL^#p~lPotH=WIpZLR{_$H}QB@IGdq?<~meRQusTw}IrCmDN%qJML@Xy)yCH3H6 zD&fkig^zpjJ9M!xQy_P{5OWvryDw?{C7zLutaRzydnc0-p9ABUL-S#-Vf+dnsjJ;q!iTSn9ya z_xfhPg&ctB{bR`gJn-7AklS-p2mbhYF8p7dPh9q5}?aDcMts3RYaz2Y{kJ6Ysajq~oS zWDbuOlX*D~ua^lkUs>;3mM!aDly@v7qj7G`D|w4}{^0%zz4EKG;~CQPUE*ucuUmNt zI*Z;lT4qkBCo-!G9$h6 z`MB|UEhzNXoIs|+uDTd?cE4S@P z7AWD{wlgkhJAV20-01B|xq9_)@Kd=xhg?&Ylj17BejFP)3m*U9eb4*_VSn{nWO2AM ztie1r(#T5PEB{?%DED*8m$6=uPvVoA=I!%&H6h28dFgj{-+xoD(Q^l1BW5Loy#rry z@u;PK`RS8?h0|H0^09en%u2j+-(L;>!|~nypMA5(okv_NGnEHiTqP@`J7#4@bRt`z z*W|w~BVKk!o(Sg=59}dcMT1E1(9}EU5jWL2`cYH9o!HSu8`%^K=i4%|v}AACJPX%H z$=`Sozls}APWe1{O{h$X>s`3pU4WdA-}RN}b051p>;5^)q1oltF52@C`aZGenfoX9 zc2YNMscYf9So&M?0{1^pXDaU?FH}wy=B~`Kl8bBlVZUrt&IeEQJ@Xds-@YzWdHVou z_2`OhTqe<`d57dpW9-JPJHJh*25@^coIdh{`TM*)Yl)ZAXX-WXF2kKG+_q!^~aKG#G>v^?r_FoX@S3i@foQ(g^ zU60IV@NKYkfV`@>DHLD!?PlL$PL2ret?Q+}eLbH%MlF4H&#Z+9ro7Zwe)M@O zze4F%zw7rYJrj|4fUJn!)J@-C7kx-QGGxF8=YKl2pfGiyu&{c6_cv|6#GkL;zneSPkfr@j z(O_@;arh#)X1-(xm5@KA=VgY-C9jeGEu@<~tU9(Jb>MN94I4L?j`oUH+!aUOek}Ht z39pi`KHqNm?V_*vA?0D>JqFoF_bW`vy0(3e#ysj*6izqg$&l2@Nm4!b<($~QWbEGi zoZJ)TMImMOX|-qC)_v&xe)8w5GL?S{eT=b%UyoT!duJeWr&>ezwrtPF`>DxJTe%aq7Si$m`m^ zzN)SQD`VzW*C%%Up>H;y0wwMAZ>6JR<{seoA?PoOZFr7w+KbUIi)~Qd?@D~Wk^w@A zAJ*(pSkDkvC-GBQx;G&l)@oNj6_)DQ!4b$OXS}pDmYJ(NOjHit?3HgMZmfgtZKOUX zaHlemdtb&$SQftW>;3M0P`c2`J7l( z-K+ZI-@Bl+Poa*hA0e$(?SnFN8@X?|4LLdG$Y@tOnUc)kuR2*cq$QB?tvNeMi#*rZ$)xX{zAEmQKJP)opXzmP)Lp~tXtzHO(a4;x z+7qI?7z2ducb$(starB_D81g>z`S+UngZ^zrmrcwX6mEL-^O=i2d30|+qaPRNuxAA zMfOucrt&+a_xSzZOof?YT)He2MuPF%gCTnBxNI1FBvsu$Kp548ktp%1nz%2ZoAG-M z@^a`CN_PL#9rJol=YN0inr!n?dAf^t$o+~}C~WnqMcDcIGikI}RW&>-FUj_CcWBNE$xjl-tD;GO!%|~Q&$q?i!I~aF-q)` zP@L&=J}p143_R-M+5z(Caq^JGsY&v7eAuHe=@G-(E!XJC+ky)0h zEan-`_>(265}990U6$D}%q|7_j5p>gOXD7M#ii&eZ|a-0J=SUtB%sH@cR6?ld(StaHyZ9H`sRy-?9h(gLLQPUope-?Z6F;d%8Yl)r-la22J&4 zK_*lm3S%!t@1L>bg8ubDx9ob)?K&$>V*WweE16^Nl1qb@H!1Gd%y}!7Kc}_GOa&&*r=C z`j?(tZn>rT7LVUsZo%^{UPp(;4=RPrpJH`4JlJjBZ4K3T%raa0tLs*KY^_UP(#ow5 zieSmMk`A&<43I+cOtt+Z#9)C^`qruD!~; z;o4=NUc!|VY3D$+x2$5e9^Z)At~5K&y@l7T(BmvVy=>*Oh3O@^l((XixL0J&1KO)% zf}Y2@uUe8`!X&Pvu4-s**jT&Pg+uf)CpWHHQn_rAkIw1JCD-4u-A8OOp+TzVf=tYdrl_RCz5rcTuhFC|PluY4#_2=x~_y?0$TeaY!-Nr7O!S&5eg?+52{yk9AhiUOsXXY!p57Sz99`9R%av!GUUUBf%Ff?IWVabiJnCr`-#h?9X zfs)@aEx(N4110}qTJGIe3*$y<57YAR&;84R{D*06Yha2zP)c8zR{X{Uw$^``7Jt2L zd?o&2TKuCl-!Fku{)B0TKRU3r_sfOpICdjL_6k2rkBZnAgld@lhiUnbMeM`0;xjm8 zFM3FX9vYzsg=m#eJVYzKVY(BV`X8<`n0Q{N`89iG^V&0>F)BlXD5HMHzu^{>aZvuW4}|uae$ir*?+D|6Kghg9dY{GQ)1dr6 zX)!5z-SXc8D%=`S;jRMZugYR_1t@=Mi^-*+{2ik_l-_bs{w@P)d+8|_lNW>Xm#~<; z0F=KHa1$5@X{YHy7L%t&SpO$2CVN2nKV~u64a)yvkSs522k95e);c;3DjthLvL>Cf zn7jfMAMK96iZxd+#4#Rdwfk?~?=w2pS;#5ThIrG^o)40fM^a0Eq@ULJU!{ z)j0_S4H6)b&|>S}{L!bc=lSEAot*vI-}U3WzU${+d;R#X-42tLj&|r*KsVz~ z>mct3TS56-4&pCaZP71q=4YtCGViwNp8$=2@KgBP0m3rbX3?($KaDvb^9CzG$y;X8 zF9z3QUjS|Zhl9&OO=1b_zz4wPp!`X}Ip`OI_hH^mBO=@d-UBv(%fK425!5~c(Z!&t zSD?~S`w93@O20n;ejYdRA8ygtJ_A!eXgC!wojZkS=G-aJ-wVAF^KD=y*a(U*VJ4Jf`3STyHRiEjn8+$XHNr1Vb8z4jf*eThZC7?gXRMK zb3nO2M`uRv&wz5@ZP7mk%6*qb{{$%a2f~epxiIF=vRYsFa2Pkp9JN;7`zwMz6RAhomaCS z>;mh+qu@iJ^jkg*?r`Q?z}3(V;7U;IjwNpesPGe@!oSs`uYC;sC$&D5f4`WU!q+4i zMJ0L8qJI=53zA1H`iDTJZyl)eUk#F!$x4gufeXMEa6Z@wCcqkS9#{$91|~osECz1{uj(SoCWR!k^Rzka30l#R4Ay`*ft6q$m;i4Ci@_o=4&DIf zf!Bi`cpZ3_^q2;Afra2v@LI4FyawC{P6gY+DPS9THP`}91{=XiU=0`tE5V6i0=x<= z2CoF;AZdST9!Ni$SC!q*B02aU+yyP{blC2&#bJ%Zgu}Q)!1x=IRareGt0Ebky>&Ep z4BeYYvyO4<){*R^oV0Z=yNCP1oK8;H+MjcP`|-gi*pG5_@G@MVQ35bHqQ(_i|)<6!}jsKdsqke6T`Z=9~*X@d-o-0I8m$Xl2hE?YML&r)X`vv`r^!~3$HBU+ z^EsA2PNz)QmDtIB(4TL1_TSF8_Wv$^)R|zNSg=24zq6m~+`r=JbGQ}1PC9kEz8vwN z@4^edFVvoB{d2I+>l)efd&|l9zvLhKZAbs1qk9~Em!p5}=mNr)`#nycUyJ4!e2=Ie ziax6f!SxqT{_N3~9wGVh|E%->qO*VA(Y?<8RY%|J!Vl7SjOb8&);Rx{IR3?s&U17x zVJST6$I|sZM_=jaOKJRNKgrSm;KG~c=q--E(a{SXJ=f9y=ECzGz01*Mj;?id($UvA zy3*0iQJL^-9DT^q^^R6QM)EZ{`kOBN&5r(@qaSzlTt`3U=r>$=Uvcy^j{Z|e-{V$g}2wyr=2{1=V<9amHjsz{k{wD9~}MHj()?@jgJ05j=ss!ryczr7v4LLZgsQ{ zz0h@+qqALk80F}Zj%NJU$TQK=>c>dFYaD&ng?FQ)zwYQ;9sQ7_%N;${(Tg1YEf?Nh zj{bt9?{@S;M}NxExsLuFNB_Xd^RT1;!qMv;{Sz17XC3_~j(*(H>TfDOf8gjV9KFra zf2Hs+3)WpGsXyWU4gZ0?=ysEuo~QjLqJ!~?7R({j7w_~8`kx{+@4O8APCSSGYd=_+ zzANJXtq3i*VfUn`wz9zzd zSH!*{LjP&R{l7=-Ip-xK{97XS>Idp;riKN%p zBlKq??$vJ&hc_caOYeNx-tDVdyTXoQv%0#Gvklj-TDwwc_SD$X_LK&@b>N`gp<^Dx z)_n%m_g9u%helhb87QxP_{L_li)Z1|CAX*S2)mSmxF8sYPq|>E$&eH)=e==Lv(5*UN+s(8ML~gqUBGW+BW7lQke3RL^M_P?hD^1E zXq{1+o7S5eR;jyuR`J|>XPP4p1Jy(Ffku=JMXN@IF6PbaH=zPI3vW$*48$yanaHgPoU0LXCgLlZk|EBGdK*W6gG3NBNX9Gi?oVZbf73dS8PIU ztP@&kheoD#n3(dAp7aVE+DzbZ$;c|q@22#R4QdO{ibdVve?e8gq=37Z*;0= z(*YaJP6O$mHG-IOn4z3DI17>zMJzN^6N+)4VM-}0TdQ6-)0q)acG{lU3HZX~t^nFqqy;)deOJJLJ!hZnMe9-F%kbarSZdkEJ(_ zecUZz>3v@xdp}ot!&ds?WADgHZ@J=uO+e`#Q6GC}RY|mHG9Met`OIP~yYNP;Ly{7&O1G<7gL-c*X8_5GhS52IDON2pssG`CZLC4rXR0GbA84AeB}P4%>6w9pPlprb+K;2$Wjl#XRT4j{iF8xjCb)&1is*7;x^pMiLt~@Uo&_b z&u^$P;T}0pG!K8d*vXUJjfeg!cz}*Z8)NN^p{MuvC<^+?EuTeZF%s~JuITxHT8qrO zVfH)N^`M6z+0^63=6#=W(ign(eP<-LGhFo|>(RfpV$|CwwXRodU0Kr+J+E(KMb_J^ z&5$8$p;<#n-0V4|kJj`sg7p1QBAA;k-FM@gCHZT|53VPtvAbY61 zr@*sdE66%O?+?H(@V|k_!QTguf?L4D;FDk{_dJ_fdd zp9l3F{yDG(d=%UaZU!5{&w};fXTTb86Sy2CjW4YPo4^WiBbWd;fTbX5e`ztun26CA z#(dzVap<++c(4J?1J{7L;3J?1^1d>9#OlGbyj&j!yTOORE^rli9IOM6f-6Cdv#bC+ z!CLSDSOe|@nFlla#+aWn^GgqcJ27W0+RQV38f=CB6xagZ4{ipRgN-2b*hU}OyYV%8mt7DffZmCm;mnvOTkL87+eY#f=j?S$QYE-Tb2a#pcjL=;GLicE&??VSOJ~| z?*P^Bx*hBS%faJd8F&<22&!+m0PF-4-~mwcWcxtPlXZYT*bd$d?gZz8ZD1+b3Tj@g z1)L3T24{hdAa%#+Lz@ZKK+}gZdeNqXmC(gt1$Yyf0B;0K!6L92ya6l(uLtAcb>Mh# z8kh$bg1O+epa)(9_E0~kf@i@gU^jR**ac1okAsuIqhK673~D~C6V!az0g$mlGp|+v zc0g-BtR0*H?gTFf+raT)D>x2p0mp)y!7*SXm=D&2qrn<*6u2B5308u6UyhWZd2rfNp zzNW<)d_ndhdb8+k;yB1USPHH2)*9ztdb&gh*QuP$@vpzfB4q9TG(uCiGVH5x9Ckm8 z7=&r|qh-(u;N9Zo%9(Mn)5q>jBtFZn02>(S9e*YYy zKTF1i{oe`^rjJJKuaDS|h=g}{M82Oz?EhON{QL<2pG55cHbQ?ll3!ZK5SDjHB>le> zvELMtuO&k7j-)s5$_)O|@#~6+{k@U!c$Z}OPetO>5lPRfk@U!p@RNSMaD3TwmqBYi zQ`r9L2rYewVf(oe`{yI{cF-D4N1Kvi|K}09r@4{yL91?EWheTI-v__MeW>e-n{sO~hW~E@A&= zk@BVWU19qaM40|ggnlbRkBa2i|Bi&G^=n~%nm%)5X~g~T2;CT=-JD2zJl9Jt zs+?a}w-L?cx1+bc;ZaV3^iu32sZ%mmu@>EKJsR$n_bgakZt2RZrOWS6RW4<7Q^>)>@+!i*XSv~8 zwrE*pa{m3&j%Dbj3zt=l`Xm>Fff74H%ych)}H-URrgm~AB&bPyN9h} zDOgt%I8#@KbJ}5w$=zzAZ%mghUqZ}nmXZv1t6HBV3T9dL{OWs_8MB2|$q-v>=As8v zriSMenl(0w95q}(<}OtD8BXWl!$G1|i>mKWEn0H>($xHg3(J>TCN{3gJC;^ix_n{f z;>!6|tfw9KZCacNB``l(7ni5M-NUtSqDbCJ7ieq|*| zYP~8Ur_V?&n4d{6n}2(G+RSC+vdRTyt@Y-%{F%~cO_aEcZeO&Jje;heMb4!QK*=Je z)^T4_m>8MKFgGh{42(Sm#}Fp?rED<_)60lK5+e$j^4qvE8Im?qz@;fR0N$HY5jMHe zSH_ktx&w}Vrs)tP?yAZcE~<<;Q^DzTW-3IQ42pc(z$W_L_pm=wRr$S37nhf% z4P8MgD<^vwRaTSR#;vV&rh*u!>9SyKGmD4y&{vriM`LEvS6e;V<=JOY-OuFqu*m{^ z-*cC7zA*G$xuDz>GaJ}~#bvk82-D>u%1EcgQlwRpNpK@mHKO#%p>3yzGVbr4ZwXt& zov-;z%4pQ87CAd=`Lc!cS@E%~a`7VLHMx{FLcx40{bVEEx5z`b#>{L<4VHe$v}_T% zT)njFezzPX?Q%h|+q6&E$d=VU3s)neEHbvK_PI{)OO3kM?%b$ZdN*vJ|MX5)W0YC3 zjgd)965HC_O71FkpZ!9Ll%bX^tzJYKE4NhtR9aHztPESdDHbibr@GwuO}7rTPazX! zG)--lHL|&BGQWJuz2!-kW27aU!|N+#WI{KKOVat^(l*#&YeDsZCm>UoA9fi>#SRebe?@+Pnh8c4`m9 zH1*MuCVJZ9ZFhIOfYlXHJ`qQSX%ft}RmQ*sh_v@oV3JE08nbj%sgLumk!$wvg4ASn zpI6C~HZj~4j4dB};x#b4#5n&{-y>asv}x!W)0s2UZr!8o1Jls66Ue0FGCBu~s>|=v ziYeD97_wpg`Zb#xbw2vWm1`T#dWN(PShKc)4;8LYdd~9f(pfV;WSs(s;ayxm>S1-P z;|leo*C!k>Bb|Ng69Ssl2PUeqGLEC;Sw*4hEAMZ`PH;lCkvFupdbv$p^5L9UmK^z?sb}a$A zz0gsy+Ds8xv!R1B>D-~{D??XS;ODo^FS>r>Ikparkp2@daef%Gv43~ebH9teOw67m zF74<(8o^qLp~$s0*L!Vv*SAL9^!5)+|MSYkGkD9?21u$4w^73>3J_b!tXldOvSP`)S{z=Ih*s(4)IDZLBNdIf?=sw*k(ks=J zb@>b;dA=rV%yrTABzp<-anfQnI$*wt4zS_K`Hex|-P2;1Y@J4$E=H~|KGIP7Gp3Ii z3zOS5PoS5JxtDy!NxEJZUG9yV78|~J-Xw3sH24f8-=q2%|L#tB-ie=**s!g8q@RZJG!%Vw0DkK`#%!>$`T#w(qdi|!uETguDYa2Qc^*yS^Z z5ynqRt1S2}cr14rJm21nU2bgXR>CuNH>m3qr+S;kGvVrgEURZuA z&B-~C-(2*}=Kk!lXNFSWrsaAwk@tn%T${!(qrdUo(*KEm;MksDq2KKsJhiTBay&7O zdG?nkB1B5 ziC*sM1?bDI&uV$82K}rG>-R{zmYDaV^yKmy$XC4w+ZM14;d%7qsa`L<)`nXn-Lj<7 zCUiF)L(h)|(X^{i4G_e@z7|7hL&47{Rd%<1iqrjgR0S99AWEsH>((uy0b zEG_66UNPC`OD$oWb#An;-MCl0|A;&}%=<<8wCC4%yipi?^ly~UbRY8H@#1ql@-pE2 zrqgF7e=mBaa{}|pH`=g}|MjS>fxfB0ZCJJ%(x#O-tIP!YoWkWwX*im4I5QTXlN*vl zagbibuspwv$P<(++O+)OS#_d+x=DYe)e{wt>({QcaY7&BdG=T!UuIr~<-AzhCy3u@ z6SuxH-a?#m6N$NnS@Ahx9*Q4BrA9Bc_$hvp>m+SQ5Kon(E_71`@tIG)DNaG!x_rnF z^X(!$@l)K|k*9t^Vs1V8T1(j`ZFV%1@5i83&I3L{c=@ruJXW~kAA}uESKc2l6{1tD z!pmJ#LtT;ll5KJpI?_XJh2lAlUo?)AMe(!cvM-K@(Swekm+uRc7Of@4KYu53|Of z{xz&+=Gt$CGx z5Z%`d9;a#N=cIX9{n%k16SK#j?*5>+TKZ!HUhJ(jI%$J^rNg>C%jter`;{1Cb&yM* z_mE5R+=@O_=A38~`{Ihu&zEAPr`otTogTv0{`^IoIK;w z?dp5*L{Dj&$8*Ge4e3Z4%$3|xeS3kf`A?!*O&@1z&1&g=Jm%Bc4by1nPv+&m6?j!- zUcooS#q8Ui^Ll*Jw`JBQ^U``QbCJ1R{rJu738~_o<6DYP$N_?{xO8?HSO1 zzq7Bw77-j}+?t#8T^Py`mzk%Y{`Q6vbvbAK(m(ML_R=TwVg4&W!hZQj*w;Aw zIFhmMs$c%{5#U|J60|aq@1mk&@LDj>nd?JY=4Xdl)P8u`cY^Y_-@{B~K5<8DzEJ+oA+OA(m&fpTwANdQmVTb=z%3w=Nw!$@`F_^= zxS|7O1mEyQyFrE9ZqeWA%-fv#HfR1AI2HGm&c4FgmpS`FXP)QGhdcA*L(ICmq9dTf zIc(9F9v_9j!CBVPoVMGzFLvfPIP;#tmj4-0{JSmshe7f0bmj-0`95df z;mmhC^Jb9tw@CVXCMllIKI!bwP`{^PeiV$0FR1XOPY3i{L8W&+I0e-Hn5)4`kouTR zTJ$SG`75*N)3??7!=mG4lEU9c`IG<0K>2S5`A=%yDF43n!N|YbNrhVnPR89C2>Ck! z%HJ^%tK?CO{t=M>q{h_vH+o;>?*<6Dp90E#+@fCq@}JbYO8)(PZgSs=BOV90J8W@S z<1pbc?$C4CW%&&5blC2&#bJ%Zgu}Q)&tVsppU1(S4%;2JIIMA)a2R(87=P%@$l9GX zBx`5ZF78LOkD*iKaP|@IXLHV>Q=~iR4EH0$j-nmp(6GbY4_?xVc90{(kD>)+_lS-W zn2hM;-aX7QrVyQu@$4_s+>u`>|9&TM1< zO}Dd~P3LR{cJo`oY~YOMRhyZs_#|7>+5Y`-bGkbp8E{RZ5&9_C;p*0+nkZq|SsaiaA8i?wC)lUiZ-Ibu4H~q2JdD zv9f;E$~6%Sv(jT}>T|UX4eM8WDMtod${opBqt@DlqKsQ5$KjaSo#J5=@~k*zjJ0bw zJE{IDqCb8T>a1C%bW)b_}uC|=)B=@dlT>p zus^@deZMtMF1;spNq?xC>NX~)=uh{%;P;{Pbj#hm+&Y(TU3>(DFK3)K`lxxj!_I$; z^C7*mlCO1q`r{&lW z3eJ8b4E7V`zt7lJ4`YLc%$aZ&+WC~`5SMz@A8?jbZfwHV?up*{dd_0$`LiK=zQue> zclMSExxbruw)?W2J%=&x=KQ`>H+koOe4qEyPo5pThpfo&em3#adq2N@PdDdqbT3Vu zf9pQZI%8}~{1tv6%VZZ%GbToua{E=r$G^DPtNtZ^y8bL{`^lAAoZ*zk8BST-Pq{Ik zn#HAaE)d`DZ)hBE^y1;jlbfA5U!Rrx>RSsH|DjvoyRT~6#4XIRFxExBo3YR{*K*E7 z_V5?FUdh_tz24gsWA24KH{o-puI&5n^Hu3uxD>qwxulh~$P387p=XbvT+=Mqgo$=t(k#WT!9XB(cE_3-;o(cbDwl}9bd+e({ z^AhJT{N$$D?;z`Y$bPZ7y?Q{%Q*PN#Q7CjV_&5%ymUA#ck#(T%i8{AcJ3v0W<2!r7k*6r`3YmLKl?T3JWlsY zG}hX}yqEa>Fl+Sbs~O{@>C1nS@z@_`jX53gUGO937%#$8XT$`2f8h9b!*6xg*sU{T zxvx%)jXA9|kT|caI+wXwg>^V<%&Xl?z4JNH9iJ;;ZnmXrPu9?36Nlz(DC7(=_VSrC zz$QM*JnuQ?NTK;g+CJ<4`kp_*Pxnmf-!jfVQ`%ik8}Ve;_N>_0txDs><*FkCw=vh> zK>4_%uY6oVnF#X|pLZDFwY+S7P`zsz_aQuQs84+e!IA8Tzn%SRBV) zBp>j1(R_IIDw_|jp?u)nSCbEqC?6<;l9haYJ4Rhn{?JC`f7!kJWPW|##mmLkarV9U z7H8iv-+ubk3-fPQ8hMf@e7HK{{?FZzY4md6zTL*t1eS6B$$o=?9pze4_qt zy9lp4hj`UHFJiZtG9kW-Ta=&jQ|-O%r$+2E$_KKld@LaS#UmXD&JYXA!t99u1@M$R zrK`eu6*+?TRBa>giwt?9?oT6ES9XC3OX>4Qw%X;s_92jAF=vAX>3G`JPt~z8v@0Et z3|vRQL0YSh8h^3Tr;kui2I9SjbH&2u;WXJwn#+H zv7xYo{8B$f?t(nvQz2h@6Xv1!+c3=Oo22J~1OHLCU9`uNFUbEOuLAz29GmuW^a~x? zoJnim1o+V~my zg7;gT_nYRKuZi_|H^dI{dy=32z67#%&^+soPp&XpyM4~a+W-IUUcPi;`phX7>zbpc z(8d_ILnijfsDLnMQrV3>?&zs_utj1i2UM{$hV|M>ud19|-&$txR*iMUr%%7l9Czgy zJHwf`1=c0$r&+h@n5N)lr|QU|Pw6$_j!}B`y?5`Tvht;T zRk3KHbDyz0AUH?M*+q65IGJb6y)ASIR^g^~Yu2s*?7C^*g85}}b}`&jrF}vqQDt?- zFt2>$#`PQHtJlR>p%<}^1-iq~lVC^B;;WnD4>NMqylP{-xxRK?d};&JZZ~^3i;+uj z^X#^ScsEbob1bsSq*hJ*ZEV6X4J*&8+-zeb1wlnqijG+M$6)|gu!RxpN>zhi$53_(`HBLpsa@A z+2-=py4$>|Mbk^0LY1q;J~L8~c{y{lPML4He)ju$dFi^C|88erYMo__X~-y_#+UEb zr1YSHelAG+oXoN4Ykq&RnKNal*8RJgwwdiY~rTjI3{3kX4%D;arw`G`@fV^Xp#TNY> zXMTZ(ka3ly8hOy~2F3pr$TwoL%c9>2iof=Q%f1!lyCtdlSkP|<6(7wPC_K%xFs_r- zhXm-Cfr_`zO_6<}v!CMZ$Ae0TTxWll&a&KfgCuS8ltuptsPHw&ABaiVx9vnxi0Vl zYtqf4zZ(?4W>EGG;3)jpTl6*WEAui?@zMM*=xhG>KFo)McYqg|pH(w}OhF^eHJl;~-TjSzyu62Px`F=}`jx3)ErX(mL@wb`a40%srhQ5=A(sWU?nJhMR$QWfQ!KkRCd`P2PMDesmV$+PYwEe zp~BQYzp(98|n>K%$aVBLn&^v`H$jn?XcM zHe2)`0M+i0hr$P^fOsi73-T>u^aV-ZQ5Q60*hXK_E#OgT=ISmz49*2R!BX%5I0xJZ z&IUWcSztRzTWa(L%>>(^XMnBXbg%_11|{E3U?X@VSPvF~HQ)`PqCsbpld+PjQ*oINZgFRpsT?==*eI%I0*#2I9LM`|G^1|afg60&&gi?K+TY> z=FLoPXKi6heOq>$CeyRdrKi_BviD-rp1qrU=b%G_hGg{&y1>0{@D9`u?Hb(9{lMUZ z+*^liptiH7fv2k5{37t&i%KX{R@s>=;%&I|Cw|D zHRqo?ZPp#sIR49>{bc8!?^eTKjhU{$ck~EH7dZas96!xFNgka$r|Ub8zShyh9DkiZ zr|T|fU*_mhj=sauZ#wrQ9j*3G{9ktAJ>%Se-_cLW9W?sf8f z;OOr;dZQMq2)L1e^7*>4-aMhP0h8ee^^<+ zCiPJ5YD|o;O-=Rosc9V_f9sl2_;1WZ&!64MI*KrF_w2NPgce}9Z&bHrLwrJ(8Cn5C z=6&C?&UIMQhd0%3Wc@~3kG}hGMkjx*U4Ic6q+JBx$ss=rt5I6wKKlEN`@#(rtpArL zeyu_IO*HWbM;ZLKl>(BrHSmXZm-$>&=4G-5R-OoOwc``aXFq#AoqJu~v|qXcnr|etj)&KhxjybXp2{iKz4-CU@+yn?7}7)kbvz%sPA1^< zS>A!VO8K}5Ut$@)K60ImK1{gUoyUEA%qVW9^UU~ztTI^gt@NSmWV-ODZ(n)RyRUws zCw;`;cs@S0=KB(!_06Q~cK6e_&k}wl$tS*|`|GsN>P@#l^haLJoG!-UPcr`;-cLs$ z%;jghJw9@u^8#i&;_O{y902pNX75k1hmyH{%<^BTWo{*l@&91{KA5}L-lpLB9DX%V zKFQ33j>!mD))yqIDNCZ-@U$<{o0P_KgZhX4(hd#hg@Fe(|}m{_mN? zh%uLu#hgYqa~nCV^BKfCpV;=^g?X=$rhV&to}9p(fw%v8eo7z3M|=ImU%#4RcF$h0 z-$`jOdqn9Rgq=-sb!&p`I)%>Mo;fF3ha{P@TKeXiUcHPxXQOt`>A`L+e$c}y%y(gA z#CLvqUwr4sTdJNQzI@Z?D-DDFYAu5X2#2*rUu3^O`=6`2v%Twb*)Kh8O?_!<8fz37 zzSLaxTYRcK!Q7nIEo@~^*EHNx$L@ZIIhvC)XMS)I=HemqpUWJX-*b5w>^Ga}ja$>g z{i@r|+PJeLaU^EQbGgiIf41DY!!Txna_V2u*`RQPNi{0C(@CJ%+drxn* z(oX3ZE<=|?2YF5Nk+1wzzMp5GD*3lTIuU|05U0+aC;#O}WuX)KQcqAeKt6xWT83KO zEAN%>+PfHyo8)d_&;56?*BS}dCYZHx;j-C&ws#JGH`EedU;5g03KP8vYZ8>j9Y61V zQL=>nDQ+zndS~y4x1LXey$fTn^`uyHc3&3xoJ}339%si`V={>SqB$?TOFQ+RTYsl| zc`7tts`P4SkGc(GJb66sg&&d6r$}Q{4%rXS9BpWR)#gQacKkZ;cPB23?omV*GuNmx zc`>`5)Ins8A!`=0BJV5ScFB1TIoT_ZyfNfW>!{d~pv~!lKI!&x%1(7$ZR?LH8>eWS zC9CF=yKvLLjkSAEyRz*bPwmV6)#n!y{sQEfPn|gA_VV{{S7Vocc)c5lPw&DU)=*wT zJsS@15rlCmVO>UC^T?N+?H96#uoiM~I$z##@0yJEmUWeu_O{b@m~}~ydt*12#9F`F z-+au*TQFb29{YO-70+(Jgfn4YiEYoKo!~uV-V0{!1Z#-8e(Wthxpm=RPAZ5mS;%u; z$)t6IeiB=HO~Icp`44c?mTQ;1T(Emx0{ayu@pajldzjS}d~MyyC$s;ucVX7t50IdwZ6!vvBJ}u5$43JSReY5>L7DBZM(8B%W*dscW06 z_=Z~cLr3FN^KS3#U&#HF!!~r$t}DDr@Q=ESztcOrTkbx6*@haqOI^0%Bp7wq^~>Jb z|2|OuV19f6^O|4u&gMmsALY~jcJJ&X1DJQ6?VbIPn0Md7{(RaXm7_v_-IS$h-Y-6D z_gzPMcaF8XNaUx9cJjH3;TxC$seW!--UhuJ!)1;6g#2#mO!v>T_I&X37{9(U&buR> zpYeS3dCc+7=jOImvG#G;#8_;@%Okw%^VcTMmyS-HKR%K&a#`YhE7;pRXwNUNXU+AW z#aLGy+ulOo>`j$LS5{tS&Cto4R93Vn+`e1Y50wAFkNR_IKfG5uzx~{Vck!eCVLNMc zY@eggZx?ndtM9T_x~~s8?u9#vA9e6`t>IOl>RZLxX3cUq4VXvB57QH#f z$M(Fhb<~kIr*nwvx9aC29hCoZxx$3X@CFdblNKq6N6YwZpy*Hafs(2 zk1HPo#U-BICzI>vSDkY0PYrq{6c_RT;Of5k{3~Ts>BBFxk2}5Z-8294zIEMtw+^^Q ziT2}HpReRyvy^wv65c&`@eWGT*IT@YcanQAXRa~oCCwFfcs(3k%XU!I;U?aR|i6I!ZAb z^mp|92ln}S^+En%!5;0AFzKy!D21OZy^V4DD&5%y*Ij{LH}-B+y~X=M`&=%ef5#9` zehFsm#osW3_xaFwQl<0wmaXBtg33|yc=m{m@sW!^_tPQIO^~~JeABe^E%WrRhs?eP zzoO&NSM&T9=`6lO-?lvX*026%*77;(zp!@nCBnE{Jd|c{(Z?)g-LK;D1hN;R<4?~l zP^p&Od|!?1CQZycd#U%*OQaF&9;@^n{1mcw;wSfHs&pdZ*YbRUZ?T`?M)3>6W1Op` zo%W-P_p16-N|%H3coy@ECK$)jH6KS%j$wQ+b|X`t^&l{?8Q9x}UtoIw}^)v+Ce zJl#g(xwcpD{DFAHZs{xg^YIgmFWjble#!Cu(D&(+d9SIRh`u+G z$K;*l3i4OaidW4%Z@+XmsV}B)p<7zERDBuzSAML~I z!|K=%^8D54xE$eaI6^x&k9{k=_p9d(MPDM{F*1LGes1a=>WljB=tdfY4#JLKq)IDB zv$u#a+v$I^aBy@WZ`Vl9K_x7?VK2}u5;9-1wXi-u^*n74egD+Y;7k8o{Kmnr8@H|O zHxa)$ZCIFJe1ccPSdDQbey@w)Tj(+5dn+tY>j)kN8?mVS2|SVlt+60I?u~_W=cDMku%f!`<*<0 z$I*WZy~jQOG0z?3ODpY$#@3YQ^y%NegmmItck6rXt9t9#yc3j$w1@FfT6gAqCB5%X zEbV0<*N^xHe+xcxr}JmKk%hI5uW4_V_WJY^N0mXnYZP7u@3?Sy(#Q2t;kA%9L3pn) zUVO3ex_IXX;f*9b(*Lz^Sa+W9tyVdvKd?PWqx(sRsJo{bzYW|y<`~$U7VOdpHRGxoHJ1TQSBYW_ya;r3u z`Tyiu{1o14o@Mrw!|e`V1ZA&%8ERiV>YduI+8-c`YXd62-)rh#CwAew*G{~{Z9oSy z1@-mtP+MQcFYKp=?~ZVNW!*@=(!KDFUdl~hT0BBJ?tq`l6l-TQ%G7Dvz>g|Zal)~6 zf-*&&y=a+&S5T%V50EEozDJ$?i2PUoE6D$qeE8Sh5zwPq#cFdIDKZ91;SA7gnV{)fykM*8bpN;Y~GO&9NeS5>O zv-QRH3%uUm{T})|JAVzr=Nvpcvl8d&47KfGK1%ajU;Bc6FLv_XDEiw0%{NXL@6Pc1 zdZ1_3Gm%ec#?rCxG1A zZ*QA^!MHa5&A357ov64EWR)IN{O5Pl-wNx^RA0rTPc%^4)kM;+=3}QFIz36duuf0S zWezl_a4s_Up*c&%Q@<|09VDOnN22Zgtj3DNV@bA5s9(-|Z{Y9XQGI>Hm(foh^oP|h z*V2D-V?cBnR3>d$L0+r>8l>|_%|o0V*%wYMGXF=}<~=YluOBfsqq%JLfmtT-`XGMj zeULo)7uNTmhv^-Xc&&G#_gbL8IG1vt8*}41PZlst$2a_7Z@<#(!^@G2tH#Xve(3;J zw}Ubxov7kfbCGYAmzUW19=^!f3~K-=Rs($FIDZ<$c{wz0(ig6kE1<>WV&6JX+|`%n zkuezNTOZK&5$0w3_6R<&_H{^txpR+kn7;X?3+wItQV?cP4gy*-l#o6ruU3D2G&-7p z&-A;M#%jOxUbc39I+^)?BmJa1Va%EYeJ$-Lyr_TL3)$iR^ z_uPbkf~REDTx}O+DB(@~ey-+Fh;tzr0~z0Vd&>C4`zQH^*K;@H4D-OZKo8xwZoNW& zbd80|SDZKpX|P~}O>5p|rd|@x+-|-*Hu3(~J5_SD|6*ck$Jj(E-{G^U#4nDb45*FN z9CpA*^&o4b<)wPtNt@KldsV#t=pwuVzaBcMzvld!wgSF?Q|0X;>;b>U7=JhIz49}< zwnBZBU=4%v)XY~lS-I?YEBpVO1KRfCCOcYw2jUq`L(P>cj;xQ}pKI!=%8&Ff=f1FF zljW^8u7$R)-lf53LTS)RdLDM^`A4MZFqfWV_?Nrckc%VKWA*{N>R zM(%&(UeAvGx&CJt={|7UkZ;JWcdAVv@@;cCJ@Q|eoTlwsng!5dUgS&uZ(1J1W%{Gu zS>JZ=>KgaXdehNqxmz;dM;~85uU%}m(px>F&aSsyv3k8!h^?w!>lNu*P=3dvC2Sou z#4u}CzND>*sevbK5k`gJ#LE^1t}vT06HhM_YWp-q%`ExN0`=-yQu zn{a(|eEN;WQ=8lofkoAiHmTZcQZd~8Ie&zZGfAZ8O znbkIL+PG@+E%CJk+VHSH+2eV|`c3QVYBxUWPnN(_n{Ya{sk)xMn*7(Ui!ZxL0mm)N z_*xD?tbKTu+?e>`K|3hJM5a)ofNzPft6jUwpB%(rL8TpUL^s+)t2P#uyKSR4$5+%g zt(slZ=cH_PQ{(!k)k>_JxVku%6tP0LEEUM!`L$7vI zbA9@VLu+KCS+vof*yuUZxL&zxV{=o{`gIMDvJZ4E3z?gmR@FIQE=NE2VVU$XQs|lw|H@bMN$~&Pi=y>Q8r%EJ}#b$CON!i%F7gG)s@{&obaZ` zhT7HZMhv5VSjR?VVV{k+fODP9Vr^4Z*}>IRU%O^i(exRm?rFxX*?OApt*x7-hazWC zG_$nC(6gq`@E%@I{hnDeeR|Q{k`OVYc=`%|u)L|@nSNF5;bSC?7!#8_Bd+nRl)x~chd+FQNMgMR> z{%7fE>57|sfBtz4-0P}@`9Sj3sK>{peXIl7pJ0KBt_ps}-+!cej;r|AUej&I9^C{p$%;OgQJWz7xfC|sE=%1Zr zT^ z`D0)S;cd3)H-m~-12_}&dW-(8;3oFjmRfx925=Sb3cxxrA6$U@Jd6HtFb17#(a!-_ z;_d>KSmE}73iq5v|179*(Fth6J!R4F0u|0tP~jW~70w}xekZ7K4qEgNfC{GroPqgn zi~def{@XzL-)7No1?7K>MZX1<|IMJ%wGo_;eS<}RIk*w?B)A$(fJNBfYSF&|yaA&) zsPrnZ_~1F(fkl`f1QnkSQ1Y~c3H1-$TQz^gn0OKMtxM>;{$o?G_*00V8bG-#1PvcYA0KbS zI|M4cy`bFHgL0Q}G>gZK`58tHWZwbGzQxg{j?Q!R?y=VX0fz++kBqVA1rBq-d*E{_ z-^$qmDt&i@%BOaV{w`4M?N0C(%y(GyTft4_{}zi6J^(i3t`b!KRe-;PeVN4vnbbAu zTL7va<%84VmuJx*4l3VrE&4g&O5F8~_Pj^Hv*0rD6sUYW0?q>WgExcip!n_t#g~Cz zq2C6IFY983ek&-xn?bp61m(WLqF)cneVs+W29)~;K!sBYn)rbxeik20fNCd-LGdjF z#dnHDKMsm-fkl5jD86~1_~wH0e_@nuS9>h_XF%~g1&UvnMgIgSe#b5P$3XEr0&WHm zfpf9%wCEpj=KH`>%=cRKcYyfD(}<1Oj|b8vUgqJIXY&y(!7=pO+qalaqD7u*Lv2zG#~mu-2T_c^c{ ztOiR!rOOTAbodln^rwJIm$*g0093k+2NjQeQ1QsK=nn@QG0y=N4=E)9{k@mjaJGRB z*gpoE`U!4?egIVam;`6zufn2V3QDeGP;%X1(Jurgm-gd>ejGG%fhxz^_b>S_Tx#X( zvFK~RzvMduNc4$8gukFNtOL8W8TqF(_@&IBkqwGUl#mVoOpF9zlQ28(_nDEDzt z?h7pX<3Yt^I5-3IT#NpN5mwG~pyWJj(LV!9&Tfmo_TNj+6QJtBF|ZhW?b`?a!_K@D zyb1Gz7XAIsd@pz-<{cLO9iZ}?bqFTE9|Mc9-)zyZ2UTw>LFGr%;)5QT#QY3}ycs+Q z%Km`G2ls-C=Ppp`uL1Mx@zQ3|-v%mP=&Ka^TR_F@G4MKtZ_%#<`EDwz0PhDA;56)S zwdfZ*^Egi++VOm!2zL z-AUFg82wYycct)e0LNfnXwjToB=a2Te9S$Ieiz^KGCu*1#{9TNf1fj#o-3N@r1V^Y zej})UR6VG2S7*^*4vNnd@F9@71n*%m&zTPgN8&!$qJM@$Q;+>AQ1#{*DE|jRrBjEa zrRORSf9)21op(eNm~6A?OYap`-{`#peT`qpe*#o~m4YL%FR|!%F+S3ya6pQ7@_Km0rUw z`njO$X;`0@%G-%S_WgDUybF3S_$hD~sQ2AY@NQ80u@t{TkR(k?PZsEp2Z?IY1tKH+ z9+04t=Pddipwf98sP}H8qm$r0&?mBOI!I3rM*b1dv`e7kd%)s@dqLF`>CKYdJHSfu z10MiuK=H3|^bL+4?&u>~mfvBE4;}sC!Xj)98j0Z{y;2T1&+A4~i?K>m}vE&A=C`0WIVcXEeCzXepfG=Sn)2NH#3 zjYVJjGn79GQ28VMSyiCUe^PpByb65qglFS-7?eDnAR;FZTJ#TqI8E-i=lOCLG2cdJek? zkH^8C4%;2JIIMA)a2R(87=Ngligm_@WbKa~h~;GKRH=3pUv*`j;=Ut$Cn~S@X7A&^ zJG+DXu0ic6zS=Qp=b)VI!-I|tItohBRVS*hjt@D({oK%=p|~E_fs(5o!*_D#)VASm z+z*U6h?1*)BldG|AF-SJ&JnvtWz-f_UUiJx%e`~dA@0XVo#1|U)H&|0qqm{{>d5G$+%Jr7LH*Uv z{9W8z#%@9F)y}cIxVMen!TrG4gWUIx-Ov5-*dyGJk3GTt?AUYMw~cEXM=0a=az8Py zi~Fwe?WoK;IKGp6&-e>cpLO|;%L(!FZI_c4mmj>m6Ff5E=!9bva53Qm_l_&}UV)!0 zI=LUc;u!b61^Wu%RnX48wO||fvsawMy!(nX+)ovBV{)RPi~Es+qudV`baLNzW!se~ z?Ygq{%AD-|S01?XAXLwl7r1v{d4~JmtM*+*+F#Yd{qR*sxOc?&#!2t^ZtiXI9o$>u zTex>$edcQN>gpcuC#G~wA)F~kx$m92Zz}0I^$_=-sTa6+O+Cf^_|y~JcVE+S4N_mz zeob!Hp=%EFeCC?7+)rK8&3(tUJFi8?YumWD749e`W`)}daankn=k{s4r{QMW&S^Q> zTc)*6+Xl6}w4;>pOS`xqEj`A)yYvkAZFAe^l5eFgb91uW=kA`{0d;O}5BCE%AG{eU zZ{Ekf>*iD3ciyt=7JS^&#(noK9o+Zddf-;v+`5nZF2CI;RDY+RlfCP<_S<&fMq1w1 z$^Fc2XSwg5*D(*@^V+y?nb*qw(7eOk56DB#2RBTY_9p987dV z^&~EE?@pZIeqlk&LVPbg%)O;-OBoWB?c?5FwwwF$vJ>17l^-rgn%j5YPKmpHKlh&7 zFL2*cv9sb)UJhaXYtpAAeO-Z`iU~Z6{=F%xxqM^Mc#1xEt)2DWf7{VJ9Q{j2_d0sE z0fYaQ5GGbg831W2%kMXlK9N*+1>N}4 zLyrDqN3-|BxS#6yO?C2hxb(PR<&|GBKQ+|3ztizQ?%dz!Xe~rk`t5i0UpV*w?C8%U zhV17!`YGrB8;<^c>=a&nl9l&fIs>AE`Kvd?5Bd-v6S}_c!moG!f9Tu?^JOj0euJ~W z-_ifw(Vuhfr#ODkz+3!-`KVtwI+$Pj3Sr7Vn2*}+1L>LzvziasTUxJU@=m7b5(INBI3mgx}(bd<7Bu#Rxq%!f$ni z-`_>T|9M2d8zb&#MfkrGvG0x8|7V2O_XS?k*ViNA|4t%cn z`Z2@d7e(xwBK-8d6n4*9?-_JdKi?CP@c&nYekwwHspx8o&~c1Wt5nteC1t48pPL-;!+n6%y0GC#lFIl!Mnc_4` zLzh=o*$1i4GbW*h9{o7m11m#3n$~YbrJz;oCk=vnLbo7KVMnW)Q_c0P*l2QU@A{5; zTqSMx?g-50^$qJky9&x^@k_1P^bqTnI98GsEGesCkXWP-Ok~A~Id#&6Ek%SFnBynG zb>_i%RK)uz*wn7Iv^hA@q`4NFk>-fJ;Lg;#)pawP)?NI}N(I-Xqb{9b;$K@=XBd0v z2<*RREtH4@S*I$??{Z6Ml<`I^qM+4oCLydU#ZYRJNvU<48V1y_NUoX%NEPMt%gU=# zQhE5$rgbZA>JuqvT{*vM{$2fS&0&};wVKEtXql0RjcKio_DSW2GbB^)oKBMqPJv@c z*3Z;7Y(kHtY@JF+Jxcjx!|HWdl;2xvsJhh;uWD*u@u-$uS?8az>KfB|Xvq+3luw!% z^u@|Wy3ZmgIb?Z1@7BPbwrL58W}gO72iYeGdNeaqhC@GPK-uA((ixN=8v#|qbYXR; zdxnZazjaF{k(9Sf%F1sK)I-jk8$8WOKTS_Rr5|RNrk$mqrl+6M4>RYaou!|qr=QXf zC9?x(Gt*Bq(ofUVPw9t}S!oaHry1#|>FK9gHf0`4*_DTZr;@b#$C>G;8R@6#>8HMj znSs}t>8Ba#r|Ib@9_%@&_5{?Dv|h)V>8Ba#C)SiXm6AN*jq_47my(4tFVmu5LrpX@ zm&Jv=Mr@qlbc-FxP%=Gunwfr@k$#%q_vFrS4YXl$rmKzY%=FWY^wad>-#{D$+(aY9`IJ%nfdczv7e;Mdnk$#Peo7kgV_g0>x!Ulw9Uex1A>p`7xUvi78nf#-{%HSn?@dm^z%`vadCWY@z>_nF83|6KN07O?NKi~WM^$uWBc zKR_=}&BV^qVDED~dn4Y*?|Jrhca7~c-!;U0ErA_bkdOYP*Cu99I9;QC%Dq2K`;~p1 zFti71!6i2A1bYW`UZC_089hYECmnIUkIXH7kMky_`-RV^eCZ7l@9}1j$ynUyvS&p4 zbwav{j4rM*FRU1Dd4C4|4AK2~ufEq?9VcBF!^wYkOiNY1(P8H0H}QOoXQdB6lP^Jj z1Ue_%+4CcPKEWO=4?Z8J`%rsRsMNgMS85@+_es|6t1(#V$@kjzb(le4GlGS$ z0!yg4W?atPJ4C@^K9FR~yt-6qxtv8m{|B*W{;5dw2$buh-5^!LoUZ};yP)x#bn^(l z<`I~GGV=$dYtaMH)RiLD8Ro-^v>r4cRApg4s^|=1Q!a}RJKX1R3&=cQk>bfbT~R%# zaOy1j)u8xSfO(+4d#QUxs;kUf6%mH&eG)sNPgttUN!3%(hnGZ10zyAwad6xrAoIaP zvho~cK#=0rfY_?5BS|6nvjF`?x(oX_&{*&=OILT!y&?SZ^Zt}h`rjcu=_uc(B%>O z!3h2D5xOx#ABoTkD;!=+gjPO>?fE=dwRUCWqxMtBd{{**MyOZN-|9xb0s4I=VYYE) zJ?2XmE?siF={X1WH2l4_ZWG@Q{d@DFKy*-j6I$3Ky?DcQwX3}9rMv!nsM{Tw(A`~0 zuO+Reoo}F2UjXTjuj^(@TE`ZLY1^P%Y

    @)8)D^bZ{VxO@C#k)k|%AA=BrS&YU}I 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

    k0it?OacYrmU*Az2uzJHP6X2%T5nS*x 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Ä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 z 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

    8d}aw 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�{46e$T3@T4H{63*6mprKc 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

    =Meh~(zoLiz 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�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 }gYA1f}@x1gd>L2@RzhOEk`?=_=X^^oaRmm~t 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

    n(!JL_f$rV>G_usZ=0fb%9w|<_8)Rjk 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%0A;Tjo`vU2 zOuPIPd>wTf@`xr*8u}-o`W;;mCyAqmeh2)2&~Jff;6cbEl{jGNH^4tfKLHi5D#Pjp zQ1O}t6|W-5BaqN4Na&BwGw~WW^oO9rn}Kq73d&s{l)GL-KMj>0Ck_1*Q0}^od7{hE zKWfYqDMP;#%H9q*m2$ZSQiKzm4gF&HbIgb4dfprG0;DJ;&KvrJQ0D#Cybmg!dJX+n zsBj;I3U?E{0rN&fzX2-T^@jcqsPJrrau$WyyK1yXzM9O+0MYgQdvI&yqWsOk&Yr~_|8?8DHXX1|Y?q4Kc>DqWflea?Og z^6?;4J{~ZvZiHXMemzt^Zh^{2y=?vho}OXG_4?q~QJ;j;@3Hz_R=?e{2^JEbE!I3? z^~)h=+m$Vbaz7txobbYQ^Bx<3FQI=NM$kVB{~C1%RJ_}u{BMBMFyCy|tD)qULcRCS zMooF{hyNXQ0xJDa6Dg(l38?3w9V)-t469q9@^drPc-w0DXQ(;zIw*HB$Rm?jVCc_> zO5YMgzZk0AjpErUcmYy`6Xy;6vrzt>F|0lTHI@x@;EwE-ZqQt3(OHOCbIh^$?W(3y`EN zI}c@l0Lp#_%KjNBd#9k}_Cwk0g|e51vUdW?UJsPK<52e4D;C&03T3YY%Ks+#HcUX} zTO4YfA_n;@8!a-=*?Bk(^;tLodtpCpg8U^K4gChF{HZtecfelkRl!kM4*w9c2PAl2 zMhlI7&LfjMpM4I&^Kt>|c{y)b&Hkkz-OoZjFa1#A(fVA)w*@MmNr>pgK|}ulRCt;U z{YKb}y&Z5WoDYL|7I@wtpw{=erx5>2sB)`yuac|pX-lrY4GaAeD7pHcw!%FNO6~v( zxzl=>FQV4E2DxvCa^Gg?w?h6BErxzGl>1e%2WmafHz9Rk5WhYsIcZ3c6DJM*6A-Hj z+yvn`4kc#?RJu^d1@01%ASS8|{YofzaYKJKlsm~=L6Pr*x5Ey&9JavUfCu1hupXAd zEpQo>+*{!)xD=McC2&6E|JhM^3rzFS;P2FwWzw?NGHw~O^ei(xTymGTOj#x^Yc1oJ zF-y-f!$T9ew@g_kEo&{~mN84uGQ-0ZxVKDMCM|0%LDa)i~t!3OYX6adGDC~iI%amo(veq(g8ME{(Gdv`Ld&`t%(z4bvZW*)m zEHg#cy=BTWX<2I-w~SeOmKh3t;J;%amo(veq(g8ME{(Gn9Y+otm~xStc!OE#sCkOAxr5R#26gRuHe8R&X+s=JWDB zkrUk83fl{(6|@w#a_=bW2rzWROD;SzO%;)8Yr;SdF7M!1U0i6rcq3E=N z!RUGJtyi^OHLc+MRTr)*Dm-)5*{d?BI%lV5^P&3L9kYuH+pccEy5nj-Qh!~`bfJ}*jpX+XzX!MPxxl?|VgJHu1?h#o+`D4kv1tXV*ir6h7M)!bE$Cl# zYEe;P^2X*HTW*|I(0fzgO@wrD=VC&-xSe~?;uGAv7a!+-Vet_6!Nupf_ukxhGd|pW zf&1zAo_Q~_Z|S}T*|!|!-g`?Q_mj7zxhG4TONr$zqqh_l_LcURo|39`l>5mg=_S(& zjxOoq-nF!QDXy0uU0PIle(8m!L#TR}_HjSCG|m0!tzEYg|65bH78Rbp^~|kjQFWAc zmJ!afcJ9NsjowBGZyVx1v|@M#VOw#5duHXpO5(cmtnTkS`@U%fr`~s(d;j}Sy&oUm z-^YD)Rq{?;tr}j%|92+u;{Q8`(MjIjd^eKs8bzmhb<1i@?@n@W@mqaN{bug%YdY4D zS8Lk1pI>u<`@ot(?tSt8IH?}*<$kgvU4f4kr?_V-2DlGZ40CT;+q#xGtxa)1zP5*Z z@7g}@XV#wOetzu*?#Xq{>+oe=$GXD8{&lC;orVMJ2G^a3qwA8D&6S0P?Ufysov^#| zcx4alt?aAphi5A@l>>07a=3C7wytkm-@d-E@aX!k_1*B~`twMvL+aL~YA7)^XKK!(YOQUnB@A_~b;zu1=H9>U)Hd92 z>*LQ9_oGw{at;#(BGBbRaDsj+oyi}^l#&$ z;b;Rn-q6oI-O$Uud3VchO6H^OkK)^-t=!X(_C8A39?d*Dfa?673wtOjdj|IqpT_RS z>}}`}bqEzjr@o`-k=q!>*?8rsGY-^RceS zi05Oe#|Y75rye_vs{8Tdk7M$9*W*QngO8to`~s?hj}Lx)TEW?mXFg849%wtzet>j2 zaOS|-13XEe?EEC*{bc(miwe`9?EPdPOg_>4M9UMD)hC9zpMT=Q6VxvUQwNV8#Ozbe zpKAFOK76X{Q~3JnQ=dNlX+rktp-&IPjwd^xOg)LDCwrglg9A?vK6(C0QX&~?O-85% z4n_J8MNS>!-wTH#Lx&>6`nT(;NcU5b<4;A1ZgZr+8Lj5eL|Q%*Y5fdZsn14^ein9o zHqt4c{cI#7p8jm)%x9^%-=-7GxZK#af%occ-VL!zqxJW^r=@|IZj!&bds_VND_t4^En6=~6^F3!dX{B!${{s(%p-)_@4PFSS= zPgeaig$H%3mG>E|K4R5sKgj$EtGH;vGXF~}|BtM^j8)ew zy)b{%s?}eS`u}C_UErg-?t9;@2Ouzx3CK21NIbT&gKdN*EE`Cec*MiT_SoiNB__4$ zNJzqxEkKrpgJW6`hNenGTe;z$Lt9#lgtUU=_}`_TF>%N1ESW>%Z22{nz`y*K?cW|7ivrWd3t!-s9+(yY#%( z@jK+`=aj#=KkUq0$ZgC=o%wo|59r@==FhqG{2$KT=*%ab`C4Zla^@en@P6#f&pPu@ zo%vyBKI_caIrH1j{J)$$B`&>wN9jkLmN@gH${+H??>Cw1&#zu@g3{p`^PT6vz@t>K?=#|*Qcgyng@3z0^m!_xtsJm-Ld^@4x#`)JMag!Ef_8e$x`xILDcnPqXGv z;aBec{+r(*KV{zO+#e<_W%kb(DW5X?{U)EK{LAe3AKm8s`~6BkaPs^86Iat7$bGHj zInVj``zKC2v)`}O?f7kX^4#gd_xn|T;>>=3P|aA&f6E*z@c^Lk{Qk}xc$axPa_IS_ zi(j`j>Knw+hn)HI)DOA$`*YfS`17oT+sIeZ`);x3?Jj)3pX3P_U%&tDF;|}ae&CI+ zJo)`ge+Dn{^ZP|V>*T2=9rV20x%c~NnUgT?{r=Y3j_&uv{*5b-et+>7UHE=K+l#LJ z`u%6$cJV#*0UO={N8dTanrFN6*LHk4%{zqr_`^&!P!uR`)9&~iSzvw1czIKvNdd|^y zD7_Clv&LObe!BMJ3YWire^HCeU%#K|X-D__7u#I=`Tb;nXUlJSmU5ZYhv=W#lpWn#_xZ};#U!)|CIEM@~@-(M$Nwy3-2Q_dR5GPLrngEj+x71?%jM` z82``5!uu}eCr_SO`kjio|NR(U^G#9zI!rohevtM$YQ8*{Ulr7+DE-T^^yL2aJo?EP z{X4PrelQlFZ^hheUM(8lvKapjvG_K|+`ky(|3&I=l;1P4^#8qB_|L`MezCA!c40bN}O5`jyA{KNTx)8fTBnTOV`(8QS|O{qdOlpU3!pI~M;dWAbS} zCCaZXCU09TJ#UK9Uybqqek?t|8Y>@rW8wdKEPi`pAe4`c5CF_zxX#^{`7oR@yr#q#65F?l`_E5H8`^M5E-K1*ZnzY>#oOw9j7 zvGn_`So!>y7{4#X=$$cheJsC+V(E7@=Kc?3`TJuESG0Wnam;;9EI$v&=s_kt&&eDS ztGlzkNfzN*NlmLe zGL37n;UuOt9QlN2oXhRv2NyoHXz{Yl!usVIoyNogP>vi55t2IBu8!0EflfN%3GpOV zO#JxaUG14nW)wNJM-w{&LO+g3JpuMaW{ z?tLh;3hS0tZJ5G@3X>w2+?kf54#HT3^hIrtw{&$s-1hjId)Kse8|#J3KDM;}p-laf zWsB<;W!l#^J*hH~A6`%_IYUU(1$R?-Jg)FePkh-Lkp|#9Za0Y3-V>?nnU5 zMyM`?%DB_Dx-!--zm&JE*U4M?cBbTef=?L=pgCDABK0Vwrs(-&wo+J;jjWyPnz{|c zTxB9pt26FoxJWS3Jbwptcbu8Y>9#e^Eo-95;!hTf9wHYBDl8Ah+~rEkDk^MqV|OF+ zx4E=4=a!lBC!0wAS|l_cyVG^+2F*&9B0?Y>M%pB zRV;j4t?Y8g?d6`gLeAqQ0Sb6UEQ|4qkn_UtZd}>!;_D*9nR*Z0^FTfM-d#vs z3N-_-LW=iRKvc;7;J@aU?#8xu0y0hC8jgHi-Pn<7UfbB-o{=e*Xr`KTHe)1(l_utl zMS8l3bz|3>n#?LHlX^hP+AK?^S(1mA&d#;C4y&ncIWpaA!`3%Hvm(t)z9ZGXNJKeO z(zV_ZQF28t)ACfrUIv;DlA}7qt4V?8)=XQMi8+Edt|B9Jreek(I++%c40Qi58H(@6g0+jVx)sunnmSxOIUL4v$;t`a_* zmLoqx83H#aaH@xVS^~&HnDu$KUVIg5qs^(MiLonYFZZ@_w+%RluCc2-v%0bKNoy(b zb0#XDq_7tGirBg}QpJKyzU{|3ixjo72&J>7vDpz!>!(9>TW!=j)^Vn7t}dIZOZnqasupO9l1y3JWBSaT+?Wulhk zo@EbxWU0E5e1dOGOklar(X>+5j`F>xxv{g^^iZ>{U0&pyTUIr$YbRfgE^nL_DFg}` zmvMJ_oJ{{V5`(AKwRAp{S=-Ul*{D|EISc*geWgl#vNsxQj-5uQbA)&gp0i$f@6siF z4kK-KL=cnoiu!EpvY?3D3ZE0Msj;aQ2@2eq`dQ%2RdmZl+Ig;6bUmpqI%6&K8wB&c zW(i>`#EeQ5$1nb|pL6NH;c^zf23Q*xs5O}HQX?SM!dfjy@5t2E*Dt$w!AI(8B@9&p zMOu!~P7R0kPF1pR(H8XabriHny$m(F5n6ee{hQhkW#b{Ugad3yBM?w!hnZn-6XK;}MYYMU&O?^n_ z)A_EpmLVhm!I|$)*=!xUNa%ySWql^*Ss;p9g~2F`;x3EXq2w00lQ22UkR`et zv6Imkeq$3!tuU`lYWZ`=^NLBe)7bJ#galjgV4hX3M-w5GfymbIaS*Y=Z=sFG79wt} zuZQa*R@PhG3V*V)s;)1b#;H3Wy%@N-? z?qD zHZO^W2^x3pe5Rv&Z53}-9a1ya%vx)wSib(&kALZ>AT+Me^hj`6FA4s6uHj#MT}FDi z`@}p$&W$%SEuk$9TGnr#Os2bKeYZ0JnT)xVAZOv;PCGv0C)P`uuhQNW_7`LY{>fyT z?3b3ai1YJ&v|mQgF)xTU8s6^J0Q|TVf(srp>(+c+qb!;9q9}cai)YGNPC_oRoJ4{- zk^}2tHXyl~{;iqA zF8R5zu;d%VnG)_qFXi4J?n8gJoVyrHUiewr819QM=T3BcH@fb{(S50n+&?tT-FN;@ z9O22bspei7ci-zb5rX?wgW4(FVWm4EOSqFocDg5xeJRFHX5EEz>$sr)IQN<9jw|o> z4enV#1yAqhvavz^Aa^kl{od=iFY~iw?7cE?!Y{=gPTucH?%Ij_y`TGkPI9M}mser_ zneMJfZpl^3zrWMngvULTXSrvQRk17YR z1@seGl6F=5L8d;ddO-M8Z27!Ol}87Uk@_HUDXOQwQ2U2y1GgMb^-l>}7rVK{#+d>0u=i7Pg^$(&M$M8xYW_*g{FgDa3U<`}*JEbtMIK#l zqwXhRh?;MS(HFWPTi%mySr^oV>`-hL`895!Pxl8xUhR|wu~Z< zosF9wlEbi!$CR7U-e{}t8(Cp-MNmt(>zQq!MrF4{?Vh8N(}o-IDu){CV2Jc_4Ohj6 zhujxH^qV-0O764PxpLn@R{OCUjDD+0(SL(paK~JuCnSpK1zjzT?f+4Ff$#W-d?9iD zulg_j`|kLi>IGR>kHk-}L$o~CftRWmcs{BxdRk*GmU z*p8IPayGP!=>=+eX5dDi(k`Q!HOzLf?Be{hTp#ryy(Co_ex^{@v&f*1!7qC&#OQx8{bi z!*gCQ3vL-CT1s%gJrL@NEtmRC)54hbNCAGkmUs*hUd+BJWoBq-G)PD z+%bH2u;0t{E8~Kn?l^y;{uD&MbWh`xSdYmS$J=fs?_k!&a~o z^AeDHY|a;uo|3@KmJ6frNKWZH(o;@=v=3E>KEdtaxC$V z>OsGNkMx`@|9Za4zs!H(%u2*4{Vf8O9yH+SAHgg=NcpMfOZ?01pHJ};F$Oy@M9sg9 z(JznDH^t1&G4uOk{!hltH^>%66K5v`_^$r7nGZotbg4G0%@NrzdyCSRpnR`=i{P5M90a-Z&& zu27?M?jmYlfl|lv6AfELM07S0r7mm?VoF_Tf5}Q+B)(?E%U#$Qsc3^OZwf=ZBghxkgYOLp@Pk%+y@rEL-R%r%OgL52XL;@#cT4KB;=CNBqP(MS~_iiyk5?@Xu)DOrB55c{u15TW5A+dv>Gh zlj?8uq|7fr$R(BD!3(cHtg)jjjgFZr4epSRq%oHoH&!z^F4!lX?4)xeeXFnZ_y55AB{Ey3 z`+2?Ut#Q&vuQvRQj>ovyAiAS;*Vh@Zk$a6jkpcTOej~HdC(-e|948IG9F6^N^{1{* z9ne_S8^|nw{%&P6CdF1I-8arS>4DpkpM0sbx}N3Hzv@oaakONPLZuT1WF&;2ck!{tA7Mn>;$E^^@7sddO(<@H(N|* zLH^Qi94e`CDCuoWK=D~*afQa4qz6s~E5TvHmYycPOZt`cF6n1SKxH8*p2bb&%iiBDGr<6=_a97P8E@rlW6os67r@H6r;xOb)7Al z)o%TQV_|eL?24;1mp*S+bNh(%W>0hZ_o`>CM)U8TH=FC~))fRxVmh$m5-W=9X7|&LL$AQn7$%=J@ol{^2)F*G|nS^r4N+8 zAiV^=rG1OV6=S4dBhzETcK4>?8H z(pQdy(pL_H(qs06(pPqZ(o?p9(o;5r(o?!Y=_w7)J`H+3Md3+L0Y}nP`bu|}_M@i^ zmY(AGcqj*R4l&@hYJ;b*+A9ZHNG0mg1oT7B4m-H0hp1g@G=_x)R z7C5u@O0wbbXSL>;$)h|ocVl^YCmc*z=F)60nTwGbP^8H)XmE!tIM5>WB zl>bBOi1d-$-GGT1H5qjsk6+MJIA6E2CBrrm2FUyv3q>OMck3mt!iIW@Gyhxlk{;JG zhI$G8^{o>067>?#=Lz}c(K*J^#|0BwjW%yL>^!8Lk3sk;s#<^JNO>$r(@T2rr*AuX zn##Y%SEhm6Xx!s^3GK4lX5*GN*1Q9k^jugt?i=UVUdlya~!A8bZ-ZT8YDdoF<@ZPdrhl4S@E8cGS*5S*8mv`N;U>9Q~KOHXH_y_a_z4w&_ zFMO;d`v;7@{PfMTO@Hu6$@72kIP-B6Qhm$*<-I|;E@!Z8JmVu3yAgQnS&ff?(hsz* zMeh$!4EDYJaNVxASkr>Jm;V=rct6Qp-Ro|>PiT)m6CH0E+%z!%80BdBuJdajVI9&qGoEzewcs0XKU>PUUGPHx2UwrUxkUr@JjC>p_A{FSVGQ4l2G0i$(Op#B`4KU0Oe`w3`D)2g^>C4Kads zy7UbCp+>bh!n1Tczh_F$YI#-3A%6Qy_VBy8yoWi)^JUrc^0GbUd&~DBfAD(*9@QTo z#ZLO6?-xEHI_9tOujff;{G~6 zIddgpD*S`ata-+$eBCmW@V?)9>#UvzhoBN)t>Qpjnfv8>|C zp*Z@zej{$#%k5#v-<79;#el;s*t%k)DBn16z^pG`Uc;)5q-;2)74>tNz1f z{aR|D+l-U*y^dw*cSe`jo4w(){Cau61;H(T_nRHuV)RSZM{8%_>6W1v%=c+yCR;^Y znx2d(r2k%hbh#8y9Co5T~ESQssx>b^wDZQ))7&UYgw#eG<|eE{-h+xll0LF6i$tkt*7%-9~T`b)4To^ z1^O)YCzt%Nj%pd6Dle3keB;eWO3*FP9iC;KIeNmBMX7TSGly0&DRpj1d9Y9OeynFZ zSF$CwOY?tzT{r%>4nQ|^YRr)>fae=dPh$PmZgiy@&ATPc7*+-IVG9Xo0Xhu&3A&!v zPm2ftih6F%c0@m_o1!_xpt7|zbzlZ-y(;FX&Q+{KE;Gl+SXaqi|MX7zmbmrl1IYQx zq@3PWfq4-9xEP<-vCRFk=1pPtoWJmLF?nAZpVQ}FnVjQ0!;HNZ=X;$?|Nl4g;d$cr zACV7r6Law@nh($XAIJy794Q|*UXhdcQuE=$Ch5;5yWU>Nw~xM&r~@g+V#mKbb?%3h zwI8bd|8{DZ%D&1#g8dD?++R;#M%FLZG*I5P)*qfDmhlqGiTJ22Ds7|R0HgVpd+#?I z&jjUdG`}O&fdDyTek=7&arPn7#C=z&U6|t9g$nAuZxi%Q8Eq4?kv3svByDnS0^d?$ zo3Ma3fwZFC8L2(E?#f(z6?gPq(;mRjwg*qqCgimTqw^do9dd0!K98^+Agse9v;%ch zb8<%WCD#t*^L&S&Vv&B@eT%Uz)GX05hghit4~&XstQ*@pKinBI;W{bO9GuG_*QS9tPcc&+>kCTP757yH!(jV$mAn(b#{&FP$ zJ)_VyF0W@K{*(jrjKqJEqffGY3gk;T8wUmPo9+k=_~);{e=D6a-xgI`x1;Z~r697T zbq^SrTmr&0y~tuR1y06YB`AO8p#156F#gh-cjGU4mLK^$V=<|F!{l!-DEIxK!r5st z*$2w~c8kevpxkR5PTz~mL48LiKva*aiJ-ziPx^=-b=ril`@$e4PlMt|of9T?ZpQLc7yWQVKLbb%3nPw z`R9X@eG_zQVim&aRs7g z#udP13bXj?I~YvP1;w`ll)qt0z5HohLGqurm>dG-@07*lASi!*pxkRbLE&t*m~=X5 zdJATS(*w%=W1!?;1WJCwFmmgMzp;bXJa)igpTn%f28St!35S63&r;=*Z44%CDe2|+ zbjcZhPn8VuYX=_=vZIUJQp)=nYOsr%&z2AKe!Bb&zemO#9fQj;hxr{Id!E~w&Wt_F z@4j*S$FU=9++Kdqj62Kk(74n5?i}Ag9&Y3N_#Ga9p5HU$&+>a@!qExvnQ(Z*1R@_D zzt~44Wu}gqhcPBIUf{ngG=8M=~4YQqTeEg%Z8;%5)-wzk{I--*z9dCrQJ*~`&l(Y8c{6P|R z@GJl~hqFH2*xtr57w#k&v;W;3Ko#%yBeGsxKgb;`l9#lhc2Sg3MEabjQMefBQuoi# znO8H?x@Mz4`IXK8-tmp8e2?oHa)sTS^)0S{SA7^icxU_P52+#H5kIQ88O+`xyu|Sh z&*!h?mq+I+M<2sGVlmo$o9@%q)8{-kFdm_}RnQ6Wrzel)Y%DZxVaGoBjqRV`izoF_ z@+5ctbRr)FmoOOLLz@*H-=JSo-=y(+-8paE1DEvF@!f%k%J`nA0oELAJj2i5(9a)e zn4CH{!2Y(1YQ8N&?u2-1knfWhCkIcRWS@E?y!`iB!&SjK(qvx(y9MxX{c!5s488^B zc93Z1q+w;l zRmlCX7he7;d%MQJkMC5CQ(QxMe4j`@eb1eJ=+*v_zN=17DE_^I-^pF11M@Xc&18+y zS-$UldTGAvInpf3JNmwnaFy;lzaV~g0expU$2oLGaIWrM!9K0QN+|7v)VyoQT-!N7 zy0@{9PvcBVKlb;3^8@e`!dGfa-dNFf?=K#QJBb5(!1f{QIjSrwQlZ}+5x*xR<2DM5 zb?U5}vU7g-I{!8uuG~$TVN9TM_c7Ldl~$(Ct<<+L;|3MA!MP>GzoH{JP{Fryg~ksU zLo;IsjGftUWIGQ##CTcHxeNPVC!T#{7wnRJ0~JB7;;u2X&yu$#_@&PEHZeA)Iowlj zo%~nsWR8=t8{B@!A?%6ovU$j_%AtD!3j_c*>{*1=zucXon5H$gJv zZyC*0rICm78<(e@dC%WP9=Vfy#hY=s14^SACBXs7oM!#|C!NfaW0QN2k6lzq#v4j* zo?@{@`@DW9{5D=UI=_$I zYyaskjRzCgjluAoijLHQyMl@*UovseE;Hd^C#ckGpyYkcL?^)_34TWiIl&{6cgB2eCd2P^0 zX{mO^^B##`Gz|wSUy4V?MCvZ@-ft`Y(~#?a{?;GBHvLc|m?PPOY$Qx?FtR`sAItG^wLa+8F5v z;{GcLgM5F1zJ6ClIc4C5-1$0;oxkAE#j$fZxp1Rn@wBrli=pg2T8?%G^>ZoJ0onQG6KAD1#d%=b-XaQN|- zH9DEJB|0w5hcVVU8$Jv3%;9;7;m5SQ&Hz_-v1iBHZf*u>YitiV{MR0Q8hBsU1yZ|* zyw^i9%YU4G&_U#QJsnjO6wdNKL8I(qF0{tr9)AoODC)9=QcHjlu6raoeMmJoO` z|J^R)Bl#b8^h1`7OHFIg@4@l*eY=GM`tk{uFaszS|E#0C&)b6Z+v4bRN8mpI{U*jQ z_kcHoJ3)j<_gPGC2Vt7tW-+-HoQ}Iza3(kxB=6F-7L%2r_-WCZ_-P>^->vDh7L#W{ z@jGoXIRuK|DUdv@+761}HjBv~knffBW{b%VQ2ZYQ#lIdD|D_g_X;A!^SWGSg#lIR9 z|LLIkB`hXSkw4;h3>3d3AZeLCY%zHV6hFR2gvo=T_|XUl^u1MDAB$2@^%y8VOF;2S zfeaC(=UYt91;wYJfWvY4C*D%=26xTngk|6|~dn2&&Db^5TyrBVp5SDz;n)#eNLCxb3<@8~T$-Urg?6-r|^{Sq#whbe~%hk?UE8{XIf zhkXvS4jUY%93~tBV!<5F!IA-Hf%cW`=XZN)AG1JPS&CZDR;6ua+gYNjrK)UUDm%gN z_Q?Fu;W0;;4LUsb2s{SH9vWL-c6O|t8`@dXU%@O-#bJIAk3Yh^&%pRY{BE1Do!Ot> z30wI+KH&tvrzQ?fIgR;Oo%un>Z=5r$oXGt(&ioIKzt>-uIeA(gUG0Y4-|WoCoO|Ej z??5KeKji2t-;y`$q~u(?)A4`_>1oKkt^XR zv)6yLKTBq>FTKzC_xg`MphVB|ujdM9_WI-NvV*qX(FHPl{p>@|{Z7KwGt9r}{$b6L zF?)ULlyhHCBdF)Im?O^3`st|oBe;p0`CiU5zYH--S9=^auZfwjj`5opqu&#wpN#SU zT8yqWoYC+$#^if6#$WAW)cu8+d$qe!`p0AZIY%Uq{$$MmGco^%VrJUXJpYkNLY*M* zu5F9h`i<}*C7eq$r@s4p_`;8^{F4D93x_#kKXO@JbV4t3DO4n2_th4ed<(u=3grk#`=uD!@Mot}HDeln8|K|E5!yzC2<>uHmiga~5x4mS z-9K;-S3@q)!2;2{47%5wTN^T*=*=0~v75SV%*>S|BOad+W=XN@w<1ZBe~p!LR*4iQ z%PKC13e(tqR!3qJC*|Cl=~ohlIq$-IC_`di(waP%mtu!K0WdEV)Kc{v{` zdc;pGQ+4PvdMOXG{Dx1)-sllAFRH7@t$!*UpQX;C7v-HUB3O>X>{Jf#)Zl36iY<5i zPPnufgkSV=(GRUMnU(CF%RQM)zI;BN_!bKv$>*PVl8-i@KiA2VeV64hz{ivL^%LK2 zYn3M=NpJaB`uYKTDMi&(Zp9(Fn`T4ZQvA z!}wpuzRCZ@{(~`Qy|Mgg?$)ejhSznBiKCMBZq}UZ4Z#Zwm~$!PUp#_eUSJr+&c)a< z>q35{3ghvG_R(=;%>zhw^3a4AFpgfzngE5-z`Ouud-jw>Ztl#?i7^J=&zxg_u>8*P zQ(0SpyA)&2qK*IXwq@6rjDKPf^pGj^8Q9w%;HgCB#?rz??lcIbh8C!fQ64-gpbCal?E?g4bLwSe#30$c`mbO5bNyWM|k&V!3|?> zxGbo>c3eAivybkMR)a5&QfO%U4-` z`RcQC9cJ!N$@#XZWr%E6YCO$2g!ldsuGJe_w8;d_02N_hRnS`T)`_ z0V*B?td;)+=1+_bUS5yCd8~txyZ4aJUasJ(?6T``bY*>f@Nzruj(*``vaes=D{ z%UTZ+-E(fv1mv9Q!Ls-47Jsc%sVK|7r;R)sUmDyw%zWUak;0xHnQw{gyHGmNL{?r~ z7CgCwyDyZ^{|diiX*0ljkEcmzPh$*>xyh?`zj~A9OH~-<8PtEV15%zkm#?!9K)J%#(+hwc3NS=LN=zgkPAx~)2` z`8i*&qwSaEp&dNn+a2mceZyy8<*b5WUmySDTkV`|0+}0J`%9Nl*;BH7&b4DI%^IIP z_cIFJkH>wUo9Tsap8NHHb|p9GrZ%oXmLk0WH*r+Em!Pd^WSz~)w=e9|oNOQH`BAPa zQ`Gl@c(ebkpEy=rZreqZf5g-0W5e}k4MFeLQk|1fx%>Jr+q`Lbzt*=@?q1-`&;7D& zm%>!}ZJ1zbD`z{mcRTz09DdZI!Z18;&#mo}oazG_kZB2dLb*85sP}T#qVO&nTGHFs zRis|JVN%^oWs^!?DlN|@ub;T^r5h(Lc&T(^*-K+4mA-WS#Ko8wVIG6I9P>Sx@5Ve1 z^VpYY=e1<`Z66kU1LrMaNKs~A4qvx(!>@YAp>8WUsH=_1yI( zyL!fwXJdnNgZS}$pZ}0c^9ju1PNwgD8b43tN9DosZg@AmF}F_kJeSY$Wq*+MBw5N( z7PnfuNa9V-B*${W4i&{Pxjq%Wu!+ z_`R7jr#9F5r5}8G3Vv1Iv$O|s9?)(0v{NR0`pSwb=KaU#c#wCM4U&;|zJYKgH~Jbp zD~s|>jki1pX^+H{`6A0R5~sP2=OBHI=lLPS^V-fj+SDG_O19GGWGUAJ@KKmq&O!SW zX3^U23rycvF2E3z0c#sJ{!VV6 zURG-_X-5@Sg0|JyxgqS7p9;sX1)=;IolxmAK)>hXpnlBRnKd~D?p^vlNB*l#^=*OH zyA)4|5 z`***#L4LeDwH4mK;z~dF(?RZf%B^d&yn_gDxzicIOuDg##jbx#A-niS)A!ox=u7Cm z;$Oj9l;D|$VV_n(aP2=S?R!W^bflt2oM^p|Pj)bB=$WJ!@#+aC{Xnx&NwoVIPl|WQnHFc;fyk+(y$U9`|TD^*U95 z$?`kZ?le#y$In$Av+ZO+*-<@deSX2NQh59FlcEg!wCa-{=KXe$;Fo>uQNK#lLDEA0 zi2J_rwKh!@UIqE1G|l4+y{Js2Z$4kXDCb8ntUaeaf!!;gTrj-xg1);d&Du-f z-)T)Jek&72)^Gm*L52$p%h_}AF1~xN;JaWFYpKg)=c>JLI5-uo9V{z*iM4qz4PKE= zHqcJEy7!DPBLnDk8l!1N4_Ja8_VODg-yq(mU+(AqBzi)r+dH9ed!^@~I|r@r`RC{F zc;23a)?fC%;T^d5`T%`+Z38-}{L4>3zLX^+^tlYZ zF8dy3B_1w3Oq||&{7Za;7T#q^+(~>IRL&3R|xbb!RznZa=t9Sn$s62fQl)QO)7;L1DJa6*w`{+I2BOg5dBzf%XVj1qH zJ9qCiuLsF%dq0OAlTlu$$m^fGyWmceRvL4aOn+kPldZe2b7zLu*4z5z&Nd{!H=;ku zZS@HGy<@{A<~R4ijg;SaaJSnJ%dWgdX|A=>8ryhXdy)wMouvIK(%QEbj7>hpniW$% zmW)t7UNQTT^5d^PRkrOaUOprX|9Nd@$*%QXM&zQoi6Nl%#I!SGmy>CWsnDU^HaS;Cv zDRTm|&zGUsxNna-8`j$!^84h$O~1hzrJuBCe%?j>#l5e;18-fZ9lDkFc1-Y>smp`< zUr-*eEV=s61}6sfK0N703qEP%nqtqM_R9_9Ck&tPbjPvwt4KDl3k?2di9Jj7*5KTJ z^u=hn3GP-LD4qIgTjuSZHc`6beJ^!T^CZ&I{9Xg`_u=|>n9v zmCkXUa&TOkEk_F}ySVpd_jTf@a$)s-Q!XyCY!u2}V%o^cuxz|x%Epx4jNdY+kc*G< zL$dOp*EZJuUM`(piM5Sibont_TUcK54*N>y&dx*Hxzq*DPW|V_^`!R=zwzGST!YK^ z!zIPrxL5vjEB}!7Rig}i`aeE*@b0*F%{{$Q9WoA@*T1=R_Z>Fvkz6!KXEVF!nm&c{$Y*p zHuA5!d+nHModX*G@pbESxq21$4P~S2bp4wO>qQow>SoeO@#a6T%s2jVu8hRXd@)`p z;q~^j_P!0`7yUlV<9jl~H(vIN@oiwgwB*zLopelFezKF_;2RD5%BWpgsr_z?+usne zAL+YI_YD7>?>0M^U&{BIZG)bhA3QZc*?W%p{EhVWPcui8>qG5*X#e5Kxn#JPX z_&3>Qi4n^B#=jnU9--twt{%k8>!pOhF~VnKWXuEodh*5ie4qZs&ncL(G}?vnjOG21 z{MQ)!&1JzI;~ObclmqQWSAL-fkY6QFHcntKIN!{#^R4s-Wjn!Ko4$V=$=hOS^va)P zm$8(M`6$D;_O6oBC;IsQ(D?lX`h)u@w-e0x{e&kP2uF5Q$Z-5#=39)}j$u!r9i#!b z==Szyou;X*N^xjdBPIgYDn7_K6Ie&%eYyBO5v-p`LJ3gQDTbRc_%-op- z(Y?H~aiu5xGcjP%yK z`bBdeB=6sK{bE1$le$qW9#;3x&HwrF%{!4#>p7z1o|3WHSp@2TDkuXp_~!KU7x6ah zQsytH<9@D(yw5)`mpD}_Ui|0v6C3wrm%SgF%KTx)7`O>223p+4(i%{ld>_ ztBsE0_RKdhC#tmd=Onzryl6b!2Id%wh5O1&7b^?-vMc@0(sudroh6)nIDAv#UaVgDvo^fh7j6j4m~Ag~hlk>B%UJIG2jv0(TlvqcR~Ii|Isc}7 zP%ccFstwMSa{iBbPtzZ(?4(^8VqVCYmsl*B>F6_^x!jsdDjZJq=F(k;UqzY2a))Ca zj&(TBVTHr-4ktLg%;7|ft&V@Y!w!et4%a)}U=bbr+>F4zQy;>2&MWcns!y6DmU*S# zDf>&DA48+x3u)70v_yn9Jw}@mp^;vBJedOwdDg~gb0aj`$2@KYIb_3}E7;iFT%9{p!*31ByZyAe?Qt%04Z2#II@!O})xx>U=FS{8s|0Op z*gO>OF!5VeTAyrQm07*Exg{_^=9--%H|%t9I%T2fC%J)VZAY-S!ynO+$G)k%vpwGr zcd@eFE7QboD(yiF_e9A;`+lGoSk`3nF51ZRLyBCCESByDj681=%6{P<$ zN2jgVQ$RoO=+z_8XL8tto(}$t$+z9nQzOt%IQn_$JO%l4oP_~;Mxq~c`+24lc(L$@ z*(9K6B>FTeg`Um)Q$!2m-!}?<`eftX+?iL*|3Mb2>ZwLJL@D5Z+7wgda zDJlj2_g-b`Bl$n<=q`T?()Wy`A02`JfMYz8{~<>oDSWd*4iQK4KZAt}dPbrzb@bCn zUM&9eUBy;A#9u-B9MJ{t7vX<)6#6tiEcJ}kK29V?q5`@8}hlO#wYS3cbhC)jskR_#bxkR*1#qZ(z_}kNUS_ z^oh3^viW!`M(=a<3hS&O{C-Dw&2RyI-zfeMjzT{)3jN3^^kbvYPmDr8H46RoDD<b`<*jQRs_Cp{GZo*N;MfY!rI)DD?JG z=-s2xH;h8x?C2xauijDU+ee}IJG$!z3+nHoQRsuC(9e%TpE}c)?~%f<9fiJh6ngt8 z^qx`ZJ4c}pj6y%*=#xfhKTnTBKR*h6B8QLZ8HxY2QRp*Aq0e{pYQmrkEa*Sm9etva zqOgBj@96a-_&?(4bFKdZ{yJ3c^PIPJ8h7;3Rj0tqIi_gPV)6utr}S})$z$MWad!~> zOK=}3|9znRZv*+{OK-K9>;>h2i^XIQDE~dQ%ksA#l)nxTQPS-eldYiqHCs$Jfb#bk z$Yf|$HTbvS8T#Kp0#AW*KWH(z863cVD)=MtH2wG&z~f*)cnJJ+a6kBGU?2D;up8u) zrK$m>XjIJrCFfL7a!vvz=R}Li3Q*yeTTBL^Z%fat}t>{^b&wOwPSPgy- zoDQP*Rh5HEr}H-k!JmLfL8bF{P;zepCHH3VR>H|zOl|-b?s|*KZcyPifS(7Kg7UWn zl)pt5lPOUC=37k81?6uB_<3+DD1Vbc`I~4lSpmvlxy57v%HR3vobv&00p-5OVsbNB zjyY>FxdD{>1V|C83c$~UXKt|Ju_nfp|5Fx|gJ3!SPgqPI2jzc1D1ZInPOuNW9CzC- zCbxm|x7A{@7nHxvmY&X9Om49B^m>cQZcy%8Ej`_AG1*}0>BlT4mxCrA;2-0DlA}*_ z^z+vT!Hd|R0VT(2i^&t9>dRq=2OWLCqi+TGL+^3e0V-bY7L%=@_%&NhHh`bS{c><0 zmJ{?h9$Cc8m}+hH-;4l3NGp!lRM zu9yodeP)8&!D*oUO|_U5Q>FLO_nLdy(?={O4}#*e-{OjXQ1Wa8B~LHNIj!j}7Lz@o z_-?kC%z~0<1E};(f#Nsc;)+^O>01qoZvqtGsi4xg(qeKFD83UdCM!VkEeDmprxD^& za1i{T;1O^U*bg27w}CiKZ?%}*4EABa9u(hhi^+OW{;EOc(+p7lr-JfdX)!qw{5tj( z&c58)pJzPmZtVAiiYJGK2v_ujCf&fD(0f6=q_0fkvgRv&%wqB&sB+NzMLgcrRQl->A44#`+kcnwu1_P3#jln zg9<-uF}VR$`0FhuyFrsapvq4JsCFv_sys{t#lOPhiqkMt{0BkC3ezVnCJ%v1pFN<` zK^rC|?|M-3c7R_4o59QQ*I+UE7|76Zdb!19J*ae;3M$-6i!06(sM6sy_(kv_DEfYj zEB1hjw@y`6ytjf3S*Lp~Cbxi!caO#7W>E3o04m-cpyIt0RJ;?Q_)oLALXlSd_7Z8y z*8xhNG^lXrg9^76oJ2U)7LzkUg*(GyayqDRr-2H05~y&`kO&HQKdAKM5)Bj122gUW zx45DMl)rXR;XVc`+r&p!f}0Or8S8?d$TS4XbW>EQ^wV0d_D%`miS4;%uZ-~TIJ8%@d z8|(p9ewv+q8eEC_42k;#@HF^m;C^S`2YvzbR;u0I9wHG>fc@Y;um}7q zsC(c`NSAi-5a!36dAY^pBCr&C%3^X7D0j*f`O|zAm>dFM!Tyvrrw5(=5%BM@KLkFG z`vHr|gW!L~em^)K`+XLZJ3;a7vzY7#RUR6^o#1kC0(6}l3?`R?<(ShJlS@FAhxwMC zo@+5#Yw77~i^-Xw+)V`!gO#Adoe2It=D?ZH6Nuy-1|{cNi^((KYuKL#E3hB3m>dMf z=Y+-NUT_}n`oP`bdhk!dH29Zb3Va#V`TqX{JVqb~Ko*b&e*o#21QT?hCra0&RQpw72f zd`~0PZtx&z(gT#7I`B7e!9{E#(OrvfYQaZvH0?K0_@1tn((C^_3LCR;&RrJF4#=Yx`C zE~s#4g0Etp=FF%oCcGu!_vy+~;P*heC+v4sgKvN{z(Ftp{t%SE*Fl=;;3P=33BC&g z!4TNM8{v&jIZQZ|3)v6S?g|GSsvVX&>#)IL%3;D`;BauF^Y5_FVb)=T!<55>!@%L7 zZNJ72IP7znb=crA-VAl3VSUk>6p1!<55>!@%L-cqhNZK8IO{YR|+k zz~La3&G>iN=P>KA z!C}f_!eQWWkiu>JJM43qb=crAjIZQYV9IBl#{vGx?%sOmvm~xnK7&sinv+?h+&tcYKgTs`=gu}q$AoYybu>%hK z9A+IhI7~TAI0THpai#4Y<4T)bxjUicI5#;&Z|puXc91(7wvX%MX6~)yw()yt++ltX zjvL^2pyCksH0-Z9$nS8)d49K!-^OhXTPJMehK4dYSDL+X^NrjRe&bnwhi*K5V|m%Oo3`K7cT;)U@J;7$ z%6@=wZ#s4pH$B{Rgx|e0_RSbq+CO8@jPkPWxAfhz^A_%vxOMBT<4SvO-Eu2jZ#{VH z0JwGLwwc>!a@)kr6Z{U&JjL&cs==!AvYuI6X7$b@+}k$aM$BfNpH*Jgf7_nh_TE-r zwy%1B^}%XxlBnsa;a-aBEWgKUj`O>9_O{ui+w6haKhwj95=Qe(~+}W$&IlXi6F{ft^a?d$9 zX8_ZYIY;^3Hh25n^0FgykIp?d7a8ZC=l9Iqv)J{`+c~d)9%(Y~*u3(x;~zZn!NCub zDj(d(Z~q7P@Z0yHogae3hqm)O_@Pt$_RQZhAN%<`=a-iqntyoy5lm<1pXGOG{%P!n zK79JaXFiOdySCp&zTdT%-+{Xh@q6m7p}R=2)Rt6ls=Vw>>TGH_g^Sc)Ob6=*>JHTr zqq=SUZmH|7Bh?pdTd;irw{O&)!R}Pu5Wo8u9$ZMg79QpI^rAD1uwOL9@BYOH7h|*d z48L3M?!6oPyNCEaarYp<*?TtML(K0!&-?a!`gq@Z&o+Kf-801RiF*e5?YVc$y|}!0 zGrwEz>%EV(yswAfL-!r#_uzd4{ATapd_R2dJJ0*p2e&p^5I-H;%`z=qqls?*E?e zSLo$_{;ZUKK<@o|y@m8^GPgVaw@E(y|JE$)|8M0V^Ov0Y^L*#Y{724wx#YuKE`@<- z1MlMJ*VFu%??;*a`kTL^AC&tKIr;t-MM8AHzHE}?-{$Bi9RFW)=ABNSS6%q}K9hgH zer$`(@c(t^{?pF=SDpJ#Xa1Tqf8X){mNS3R`Try5|67j!9Y_B!S6KchoO!^}f8oq8 zIrDjE-s#LGj^EE^Mqa;O>s?NsgO2`yOaC%w{(_^Aappg8=5fxv(U~iqxz(9#ocTNS z+e(jXocXIxo*P_#ebJe3apwOn|CE;_t~`83`N{t==l=sTBmd@`Y<@3r^nY>m@4EbZ zz?okXzesuB>g4m~_gR@E<^O+49?G~sC;cAEtL|g*>+e29d6IcRiYO2Fd>ivY{ONfG zzoHM`Xw478UuM64OY3B1_Um2We3v!*^}An$Ci?mr*8eMj%zk~)urnXJ#nNwb{Ibsd zD)bz=_v@{0bn-5`&bq$_Jx+ALUTvSF`}IT5JM%%u|5Gmhea?KDi=SVQ`bpAT{HEhi z&jLsH>rub%(#NmgnnOCty5iXYFZ_L%f5WbPy_fdEq!0FbYWSDguOI(M+EbbR z^DUQue*Jif^Y7P7H#>Qy=j(Zn{y_fydXZmo^858a*WgBUzh3C9D=&V1_F^aRz)Zs~ z_-9A=>tp_z?>PDQ>tT+%`Y_YAH?KK){CbzwEbN*AM-vlgF<|`hctNe*ICCbMMy^RXceH zta!n$%PqfSgsW$j3%}Wg$6044Jip!#cE;@22UfZC_3PEX?D)@j{=ee*FLLI;aPi&X z%%6Ah^Xu6jaQq*0^d860ueZ~Ef{OpCTO=*_M>u}v&i%H_EZwh9d)(2_JNN(O=ze|M zNf-V^=RfPxYq~T4Heo2dN@pJ9(s!CO-|gJbbmqsMe0`T0@q!m!dB{?a^fWoMUq8Rl znf-eEF|K~-<4DifUHh?UhBbef_QH{j#h>9mYOaaV|A_pH(tjsrehmIm`W46>HGhQk zkD6!4=pRHsiPGOBo>BAknEUs}Yp#LTl}{vVIY^OIQkpNYAjALI8}Ouk>E zyhr7If6V`PWBGTG_B-m{jUU*;$nT5PuPFV?vGA{orEf!wKleK1`Tto=o|CcgFQE1~+q7R%_kSBp?>8Vu>FZ+k=YLUuqx8RtnM-5w`DrY@-W?17 z*JI`tG4s8#{GSm^@Bb1rFD8$o@@cX$YCal^Zz@K=GG_j0%>3z?`Kg$BXUu$*z@y>c z5~F`VCeK^3^nQ0N{UUd3nSGb$MzXaX&&2J`rCvqsn~dG+meoy#e#Fae(tNt5vu#yT zo)@Fb|HwWIC~lKzb*7`GrBj$n}I_ zB3kj->=_Bl5S5Z65*1}_avi~6At{VBn`n(Ed)Hd$+Nax^TROG-)LyKnP;FYTd}dAK z>Xu9kgy{a%$c1WA>&!z-7eDy$!|6=dlV%%hE=^5j?CpvlU7886nzJ_Cm}g!hm;L46 zw-{mDwYD>QD`J>}+&9nJyFQjM@L3 z%c78Mig1h=rgPhxwxWp~vk#edw|CWKIyzUei`neF&X0!jz+AD|l_CAwnqZxmEXuwZ zJ#Qnmsd61FTX4ihZux%A4WC7CrSw-NTF#Lw=cIN)=3g=>PdRa7o<<}fpt*4|WSJ*E z-twu@f=<-CTi305l6d8LQkuCOT-~^y#x%3?neG-`sl=Fj6O~zOo3ZKYZd}vc*x8&3 zZSpvoLPWZA^W`i-wE8x;w6}DVuCiY2uC#3F>|86OufbuVuq{-kv!!V*uW=VjoVbfH zmy2Ec83v&Iz&EX}YoaXc`xk%gfqNdPFGi|+_+t-b7T&vb$>L?j$oDUPpt$wN7B648 zq!{Vpd+&L$uKpv-78fIi?N}sFqS24a-|Pptl!(HsQVVSqx;v#H(uU+EeZ+|ZXnE0 zIjX?4Ip!ROoL>`?$$m?CXu*A%HEqqaySR5XF94-h?xckrEi9k5FH?UQ@#)#So~{_x zWa|jNtb3BBUH8Do<*DIr)J#4ll!m;dF^TvIB`Hpk6sD;f!B>tJX+GAhTOAKUd~8Z& zn$~f0LxBUOW6VKVPs2`!7@J#Ob@6bl#Wn4TZh*D4Fipak%RyW!Q`C)pURYtIyA+!B znCC$LYy+Ni5QeC7W&Dg(v}2OUJx5l|E@Dl5optm^+*OTjiU|#)YGY@ny|If!IvP8l zw3d=SXX;qnAsMX&s!=HB1B>gIJhaH%pS)__nkL)c#}i1rIA5bltn*r4lXArfVcL!C z&!k*&vhlrcWqVswak@$PJbI+qb*$@ZwQ~AKdR0qzldN1H(%iCg9hV>%)t&N=Gs*AF z5h`|`NhD|U%Edc(S$IZDak18QubOMrlQjsguyT!YH+B5+#-?X7jqQq*(|##QDm5$D zt%_tBYFuZFv+!vXwTt##QG0b+`DWW!MeTB(RMgh=PNwd4wydUOjtCRhNYwteLW;83 zQ+%W-w@){=uY*f|a(A1XsKb)k{Y*#HiM}3YTRS;1jLk_r_QN6~lB!_%)g^D1=93Da z)tQ|21B+~bY;8h`6w+*K=Xyh1J?$;mk*KIj#;(3LX%e%G86{)R%8Qn>iRPiTby8RZ zcY){JDqo`}o2xmST%P9a^7M_|`9zVb5axqKRZY&h%Db!F-RNz;|C(FZNA*T`rFUmn zW2U34s|cmJwTNX)QxQwUgWBTsPsh1goC|DQn%2+0JrNBOt z`>Wd4aC3Q>RyOC2UD0-_MXtj#rk+qK%aKfxgfB+Uh2V1|{2Ib@A=TzpF^ZIp#_n~T zwN&6yRVt4h5h{$K!Y^=`FF<~D@_ZJAsd~yGPx%Z?!&_iWsM3XEZcWo0CWbkUE90ul zCmP%N_>Z|)dN*?ye9T%=Dq=0y`WPxgl8+oIFVog_<)35~%khGft|IB2$EWa2to(Fp z>&m!z_y)wz48HvhabWnY$l!-*U6& z`Iou=rDl$Q3twvP^j6_Z%^lu~m+sXawM9z4J2`B`1VCEnWP}ctafv%&oL9)CdUCsIGx9 zyIRycYq2m`ZC?@%6Eu{kF|4&!yj68&bUxl%H)HViw|@LfKP0blV5S3t!+J^Z&!hR= zxzPb)W1IUq&Um;UtxwkD%?uN3NvM`ZnkSR#Zdu>$3_vDRzj%3l&g|b#%M*|IF*Ohj zAly1xa2Tk-KbcGuNz;bDWuG`d&*x7ZUHb!~k9bEP_^n;t(a7-Jx-}oCozG;_i=y;x z%+u&eIgeT5t+=%^Ue1)Ao;;SbvCt9}8!W$L*yYAEi+{WX!~ARm(ndh$sk1}5} zl{pJdS1#pW4@2mc{F=}cO(vG+Re9uLa77npwp-)hdMggyiRt-pM+M|L`YwqY!1 zmLjLlzm?q}=RdD|S8$Fc38YHlxvwY3_6jd@w1V$X)7kCxbs10ZB~S5QA?g7V|V55{t1D(YdU&Xug>SJ;Jn<5pmjfY z);!h7S;AkLSN3i4yYdKUM=Sl64lWP2HoVK;ecQmjbK)J9`}%2CZqoak@i6kw{nTAN z+V(-(ajtoehwf{#_t7S>7oGoJ{=+-rPma%}<&Nv})6#~UyT9AyA3PM6KR48#0i1Kg zq!QHXd}rXVBABtCdsLnp{LYK-k^KO1Q+X)i?r_?OeL+R)T!Qm_Rp&%+aP(kI%A84^ z^=9t1hi7=Fd;kw`)*0bvA1Wm+%D8thc;Ui@VAq8!Oj$Q!eOC7^;Geq?engwgeS@^q z@YmVlJ}p#d8gQq2-9y=x%|JcpZK${Fg(ZK$0J@Bbk1|4Jaz6m&VVM5O}mvq&S)Jt`%oQswY_HU#e8RHC0jkv zo|F7A-xJMVoY0Y@N&z{1Fwn8U?b zU}OUpAUkYxz$C`bsZC`iB@U{@%@#JsV6a1CY99<=E5~X^PUJ>)nelPVOeL30X)9-- z<(tS2?Was=OA?ZjZvuG3Vr$br!8N7Eq;!$uXA|%w(_5gf5!4l~^++LfH~ zZ+<~ATnY)hYPwoUpou^ zBj8L>=WFS6d*^FGw*wmg#B|OUbQ9nV%(a2D!L6X|Z31PFdQ|AH17&ZmLAMT+z4_qH zU@!482RsGd0>;7l;5x91Y`E57{TlFUv~)hV5{!Uz!7^|x@=FZ54k&v=PwV8+2PhgL2B;*0uTW0k6N;PoJV2WJ6z0Ax>c)qYT3-wqIeSjRHbUzKs{&7(DyA8U>K-t&5uClN5xw5~`(rZB3uK{O)v%#6*G?1(k z(>YwwEe9pH%%EEW&cIv|I2#;*NfO6+J4NW81Et>$%3oa|f3d>`-9w=KrSrV<*8x!e zS_3Lvx(8SBQvoV|!k`z=6as$6)QJJze$b0&Q2sv+&IC__L{aR7LAM8#z2gSmZg2+X z4udy<2f*vVW-tQo0cC!-L3a%(`O84bS9vAqG5joa$-|y`@~Y4!?4JAzQ28c;A@oPf zurP@t?6#P&7`NDHF={bl(Xp6BESobnpmI<}~As5m}$KUA`$w}jJPC1+60naG3VJ2)BH zUV5NZep5Np`5FJ4!Ec?9@#iy=FhozK5bE0`^U(7wT|j1${Un)IUqbfz_uE00Lz&-Z z&FegiXzfGQr;feMCy=9$vg+|~wS4-89(}K+w^{q2we(Zg|9-vxPu9He|9=q8zdxVy zcgWX%ZvXoMei7}r%b&Hh-_G8QUGe>P?cZCz-%e?kMf_>j|646T)y~25_@KVyMqZKM z&P!YTGuA$RWkXXK^{ut`{dP_Dgv|Txu<9@9qDId&cQ3$~O#j=!k4*aA0RI!%&*XnG zVE%2Gnf$u~^p67c8v*%$5|CdN;7<>-z>YLvRz+G_Or;Va?kF(abv$rs2S+kw-w5P2`F7NtgvjmvXkBAOC+nwbN zt$1WEtmoa*_Qu)tx^y~+`NJiUDvaf zO`5oPY%_k#T0_pnPE-n9@UF| zms*$kam3jEu?^6~S=rKT@Kc(XT9@(9?fU(d^EY_?UT4kiUcXv$vP9CizUaEl?&b8u z@tZ8E@7i&P68E4sbiK|{MxXsL$#qC_R=ASgbya9cGt_aVS%e}dpiww;rdCeP( znm^QhqrW~x6twPV&X;aa>wg3p)3p9IxYxc>JbXv!djkz2=9~(ccV(XO$)e5=nTON7 zyWS(zd!9>~Un9$#^&jT)HrVwa?l$$_CiMML{NYQ@{+dr>npyLCqQE&S|Kr~_#@2(8 zh|@J*e&)Y~|8e|}<)3(~{W9U*#=QB@XFAW9;T~f&-Y#{@cl>sA@cFBquAi@Pp1-iS z;mGo5oE;s*!*$W&;j+*}J8GP8=s8AJKia`t#20=w{Mv<4D+YF4?F@cnlryoPH)?l0 z5glCU>p$TPwxIvd(%%pr-0`6`zrh)NOM0J)4t|e$Oi#vVoWWk{)neb*t91tdQF>p- zPrtP0zU&OnMdpvC{}lE=u=-CqgAb$s1L@xs9h~Uv-{cI2(f=Fiex0((myDeM zNBVP+KVbFeID>yFJ>FKn@V?cXYGfRf{$u#h*MH1}PjA2PxSR0tuB;c9yN&t7(q9=J z{F8UB{z{|&s`PI|e!tbf%^CcU()%R-^YuRI3?`)a73}{4b0Oq^#Tk52de;#?=_&57 za|VA;dcO((U##A5I)hALPuXz~@pHlI-Gg7H_eK2g>wVG0*>6k#cI=Q00CZ*4*_5yXLBL$$u;VsWrsC z;q-j{>y*n-#(M1a$noV)w)6Ty`&yfm+@{gd!M@Kqo!!WoQNg;gtp}Q($z4xUSC=!N zQrCz*-wnMP?AM1{_mf=tU;3&KMW@&6R#AuDL0z`8bD)7WsXNSif-mdw8{)O6i0g+) z*SA@JVa)Yf(;VLLeQ&s{iL~qCinu?6zXjZa{#(RjUN}^IcSrx2rG7j-zBFF@G~x8=AKnzNeGyf~mGb=mB(kP`?etKuJ_Y!ExsjQ`&oF+)LlxC)%|JS<5lt6+6+1GBIh3HKI+6K-0XNa z!)$fD_Rb8muPuq!-U02md6{kR|BgPu<+k&2`X~PWkT+@9y|qf#p|lR{@3mlFaz~PU zH9OpnjU4gJk?*}E#dGk$_xI>TrZRVw07z5 zt2oQ=4Ns{2Ywv_vKaOUsuhP-$3h%j0IZx%66GDDLLACp39i)C`ROK*Pbop1Sf(5^x6qTll_Je70qWbOJUbywpgQ-6738LM^L zt6x?9^}fQ1tR&^Q5%cT69PNB#qglgN|4ZwOs)wFXS^o-U2XsQqnId8>vCQe3649Ec zS=&sOI*ZT#c65NY@-^n1C|Wt{_tok8eMKbu{n&E)uaAX{JWOc;8ocft#!gQ{bS zCPqJ)vB0UbeaN;b{xM-N;cLYI7wdPvQ8>j5xAx+6Um|W;hw$R28#nUB&FZnvYxm|0 z>)r9%Iq=cx?gvzGoT+Iw(sWw4ZbFzv`afO}mjL|K)qr z^7pdu$PZIB={sQKLw#!#FBM*TuvtNSeQNtk^+vsE!)q|}8f8mv7Uvk-_-%G#baaqD zM(dC0tDGfY`)#)3RADmvF0M|s*-7%W^!@l(KHo^0xSV{`h<}uKe7kwe6YXcdJkvDB zc}-#S{AT^4@~pO^gZ&cE-tJ6V9t!PA z->tm3ivEJefb9Qh0=@D`8J%9_?0Bfm?9KR^%q@-%(vR@UQXgXy(xdkGtUvHeRvPYo zIGu*CPs&ciXY<&Zu`OQvd3c%m{T~ZVzo6;Du$NcExD%$Y`S{h&U?=;c)L)nqdiKR5 zSDQ3pkItY|xcoU!x{&W>*s68?hFjyDRgc{Rblk(VY#cSOd3Gow3R9?N_5 zONcl6oQlt2I95Dh!qGt<>1%L0$uq4h>2E%qCk&wt@!C(qQ+%h~BMsK$UdK(u@2K4F z%-EdUonJ>*2mLP6HK+g9KbYGdQwHT7Gx0P1#9ZMDZOUzrNG|V~N?(xrUu8jcwc6Hi zu#d&Br#0TEymoO`MNMKbL#!n~Zzie*a=%oX>^jJT%`%^&yk zOkP&pub@u7gMNpfr+AoiOpwewHqkk!L9*t^EcGjA3m9Tteh*|Ufz>Vi%X^3`rk^M z9hq*q-3%|Ie@mE0(XRePd2(X()~0ZHX)Zq|9POzbSvFpNDt|gCt;gjl>+9ob|7Nza zCSTc;OBMA;u1e&_4tm0WRjHY2R->2v0*|FX=Lr`s8aHXv7;sLt&vU~cy!{Im4E-=Hm2 z{nSApOKIK99L}4JTXM-%I(uyjbItx(EY;4K`DfG4Wd3$qO*^x%fPJ%J#%b&$zN6rI z)8C;EW4^Lu-*p2K@|wnK#F1COYX7j}tFJKkzTva*{r0tE-)|0>wkbL|7kP^B5OwE= zPu@kl#y(;8Eaz*3Uf-Y2YkoQM`{jz;T(YAd4tr^ttNu>4oii@cb~69;uW379{+*Hj z&X;#qG^fpuEdQ6+R?m1ge|fo7y`8U~4t*)V%^Gv?D zpV5*w`%&XQ^t<`v=_AMem-EZ~C~>dy>$Q)2ZTm?6SN}!rBm0N)wvW#)VvGh~b$7(J zh1?^0+5MN-|6MwMFO?R1ThnGQCoR+lQipbpVjTH@fx$jizIN~R=kv#{(koxPxA&`Q z|BY<-MwWqmMvhTAL*0-i~2}k zOULJ>^2UnxwAqn)BX=Jl)kk9f;G_1D_WpkUw7OVcnehi{|BlQnx&3>keWblF=J#86 zKFaOhzf~V;Z$?-z)o@%e_tihX|EbG7gp%4!V-BKt*H`GS0`7y@ zxpV!4o4MG8T|=AM%&{|)L;tqxcRJd_G}0ayIIQ0~!j`8y!jf++i{W3$kh(d+N&iYY zX)i4ccox6rWMs(?m`M3Imwpb5^0P6TgPFQ#EoI2pkzsE;mml$FYa*A^Jo?y{T}_WT zk8IhwlVjBpY;uPKH(5j;eJrBQTl|#e48C_m(9Q@u$98RgOvbo`fL{Sqy7n)irHGUp zI{Ch9%cI+Ju({B1%Pvo5W@gAC%Zr088`n!tK7lq$eUX6}&L{K>nQ@j8Y)i^IDu`aR_@y@$N5qR4seY;S6F6NMM(X4@ zYp*O!NvHP9_;&G|{ShobWPj4vS8jl*>+G-Dl8iC+jo@p5sjt$&2>ubH@6@n4kiQY` zpVy{AzI^T%S%>raU+*I7%jbT=@~e%p5$>O|dyzTQXHcZ&a9>DO4{ zv7LP3KXc8+`D?E={4@FDheKET@`ZoZCHQrgpD+B4mS2%4{&z<_=bfm55$W3n|FfLC zIsmQ(+d$67#99ryEg(UQH5+vIgP*}%9Q-s`1j>Ft3nsFE4!jxjeFoiLQ1+7s-7}!< zp8#e4I4JYo23@^>BJ)QKx?P~mw}XvfBPjRkzy+9FW6)g%O5QS1@@fpa)u7}pFzC() zCGR|k*d!+j%HC;E_D&gePlB>{!l2s&%H9!B?sge;J3!e_fU^B*7H-WN08bi=+8IkMnK7} z0B=OU+@MAl5-rCoNj~eF;H@j7<9Wp&wrrgG=s7i z2W4-ML3cMOd%Fy}+dZVM>6TfxtQjiBVLGwABQF3DL9O3o^SZWNT9Wd_|EP;#b$ zp9M=m*((BNPnjQdhboM{0fTNoD0@k8EqEG~`BMhnlc3x=VbJXXWxf?uJhT{e*MS?+ zkAa&wXT92B{W4JgsRY-85swyyFJlZczR^X3#wXeg<9K-J&NK*h%ba1Q3?8+0R}~(>%ci5nN2$a1JgYH34_S!(X+iK9=56b=?Q1*8lba#QWzulm_6_ovH zp!{C~%AVdEls(6wJ4Am-_67{P{h;h6L76`d%KRyVuI}-Y`4a}+9#H0YgUVmK47wGd z=Po!K{jfoIhyxyy+Yin{|GYu>94NVc2Hjpza=Spu=>R3?ph34Cl$=&ja#{?!&7kD$ zH|WMe$=L)-P8}$FF;Mna8+2EJvKKYzE(2w+5|sG}DD%?{x)q?zmm74;K$$;D|5NdB z!l1h!l)JmZndt8_=r)0p+X&7;U+*JkPVUK*?PIN{-&Ulbnb_w;Yt55>Rr& z2Hhf1avX#15dCJ!NrIAd5|q6jQ1*@+bh|;>J7&;50?OV&Q05PSGT&~{Z3AUq_q>5_ z3n=q-pyFYTK{oX3`mzJcG{qO0+hSQL8|arw?Wsw7Zf`J zEqA*>x!VeU4%`oJ1$TpztNZLErxBE#bq3wFp!{EF&|L#c&V29@FbvX_i4_@i^*){C zoChW6oI$q_l$>6JF8fzKIePboE=uf#LAM)}{Uf04cNugKgR+0fpxXh;AMGGrfmoYC zw;7cEI4Jvj47$5P+23W*-44qBYQvAMGU!GPKeo)ETLa460+1#?Hs7Ed0p(5wD0j*Y zx@Dl;DKY4VLD}!&l>c_{FsO7tWYFyZe*^t?&`TFk^5O>FJ)q?6Ht6mGC9erox~&D} zk2Rp|#SFTuLD^en(2at!*FE02a|D#T2f=M%Gq?rZ4Xy*5zz4x~U=ecG8g%QxLg+OH z-56K^z1pC=46MgqHK_2+2k!%?fjhu*ONT-EugIW#iUAR0@~Uo7_6~vyUmK|K>HSuP zui2oxAC&#LL3a z@qZXp{BUN(^WQ;(ZUU754j6RXLHTb#_?uuID1X*~@+bSzJ%5&fTcLF?=QZF#P~~Es z#rfdF&}HCekh4i%c!~_Vy0k{&847#o4uA?zzd^SfY{K3FQ2DnFRD84=bX!2#Z#L-e z2W6l0D?)b{sQkJPRDP|qbQDy0ml<^RPApxnSkj<-3cMQnq(S!xNEag3Wzg*aY2srC z4Z1BLO=7IspsV|fXo_N64Z4jWO+aj&K{pCg#m4lWC+J2%s+O4UHv-)vkRl#)47&YP zG8C=Yd4sO*tsra0`V6}4$<>+G*a3s?ZcyQ7udEmDMoZU$3b*bhQa-E%l`nK3k@7_t zBuQdL2EBWUWPXT9m-zuu`QkiC(#OsjbbCR`ISEP*dmcPF#|^sOpyV7g=;~f0$>{>+ z&koB!X!-3RNfT=`=&l2air89%?kZ6AZq%S#hj6?c)4e;O8v!3hZVC7pc-~A1pnCvRzG^qkrO ze?>&gm-ke#e~JU#YT%!ixG=}L~sjF4KL4kgbs0MPa<>>wLNqIH5uwfJy~$7 zfIEA_$GMf~bodNvTXB2wn1X}F9jM2Pdr*%RccY#wK99P8Y%_QC3~^TvcE_GVJuogY zj+gDnokKl8zMq?V;-&jb(JxJ)9xLreJyV)QJy&`jwRu9z1msWXK<%1v1oh;EQ>e)a zy{N~^y34ppXkyz$OipY;jZfT0m9g}foasoAR^}(wN*VPA5 zTd!`DI;Cw25~j3Bt!Sx0PQ`xIj*3I5iHd`$rz%dPo~Ss9+I&sRHJG_(KkELe%~Oeu zsb^46PCbR%GxY@OiD@UN5hv4nP~#ul|1s`2nl{AmLmxZL??cxezK+nTV z*Y%(tyRKXM)7z)x|LfwY{nrhkb7J~Qes@hjf_iBBVbuMR<_NJg{XD;Wr}v?ri6qfE z6*-N1dd8U>%c6+JF5-#_^ck(W3#$Z6SEJ_CS0>yP~)@r zqxR1pKs_@%iF#`GY19+fpS+$poRgS?59hR__RKkf+CAqu>cJa2ZXhf-w4(06p&7Ng zvZaz#zM-GreK(v#?XMg_=hWQObCEXpBx-!#{&~dA+#!Cq-q>~{zvm61bADbw>fsx^ z(CN7G5bB}%hq+yk5~1e9;@oEDk?m1bK>TMHy0J2yZQXh z{WlY9Hy?rOS#V;($pzS2kU(u)(2m-&uyrB+S$G=t#KM!P@kRR=;fIAo{64cN$?xNf zdQguo>P9_$OV=&L;VlPHTW@JYZLV(N-m8<H&VAUVMh%-HVT- z9$9=0_0W>TOK^QjJ8H|4R{dVuz7)5XCQ(l)LwhT6CM9BOiTFKX+GwiUR( zqGiR^G*Y_X%KvVp9@BkPKaLokYJQ7<#2WY&^{i-rJ?%vr57GYm*)+*R#u01(pJ;p} zuX2VF@TR5zWTv6-vh>@QW)qWVewU@SE+zZVTUz}X(SL90VoNWXW#kR3ornLIo5o!rT^6OJ1qTzrN3+GZ(8#Uth}47f6iOJ?(vd)_gi|oHUEe;|6@x}u=F%b z|FNZiAi5wOUmqtf6`%fknc8E?pMSjx&vVwjr!1}hllWULJ=^-P-O_($`E{0l!_uoP z{hr+Cey-gSBmX~+GV;dR^x~|vCx5P`Zz(eL9hSb&@*6CDEq;-Ic3XOZ<^Q&&ud?(Z zOS6yAGylA$>n;6FOTTCR`$J26_opHMf~9|K`4en@ps(o3n`h}`mVcY2?$fy5~)_ zzn*zDvPCE4alRM$E!tnt{2l9_zkUhJxCe+T2&K`NRC7pBDJ%7FX5z9Y=Tz#CO^vpLK()qddkH3EXdFx)nns2e;_1C{oSo8jR zcDW7jE-UZ9fby@u-v52;-YF}u8~?ygeO0)ZN#9TSGU?|rnMwavfd9<^y$JU*%|9C8 z|L1`Fp9#<}2JCMN_-|5xKacQdx~K6`CjD0d_m2^unf$W>^Bn>Hmjm{H6o`-e1O9t4 zz`r>l|BC_ne}ZQ+{iAVUCjDE1@JR&GuE+fVEAVc~xo4cI_?< zBy!Gzp!Bd8-|@@5$K~DqnBHKS5$g)}wR6iC?VXXHRv^0Vrsm6tZ)-A7gkMBXR*a93GIDcsF29U4Wor0T zX4c)P3mYET@)%E>nj0>aKz^nC_^vHm8+JUt`LQpg-`>r5pfRiLX55dN{hYF4WT%d~ z2QyfDbP=Xf#+PeMWnGP#op8oLW+Az}>oQXwH08{H_8|AYnO^O#8aC(Saq0UmQ#EQ@ zD_s?NdiKe)MX7h&7N&lsek@AA<(B%D`mrees$1$;>c^t=`);XUsUM3{PrhY6{^q?2 ze$%4V8*B?xzXGqZElRz{miaDQI#b)?p~j6ieo;nEo84&my@yN_UPe#Z%zEo>QR=O? zg{fbGTSFJ6Uwupe%4kF--Bjap!hhsVuJCx<-F0_WbGfKZm|If67Nvga={E1X()&lN zm)vTuA07FAn_s;2id^ar(p>kC_NZeRG45;lQp)n(n3M&oy1_ zeV2RxsMZtoNgiENXMl0~3TYHMae@C`>b_84&OO$`et9P2lkCjzQul?PxBk*Rw!YKI z^TNiW2@w0_{Ejqb_r+Czgfi2wE_zUhbSS40pxM<(^Q_%uI7n=z92DxU*&pcZGWTH#vj4Cv*$x`yK8B z_4MXAgSwY+3-|BLl^*BHw{SPl-=gR7r#gct_Hjc4VgPu zS=X#)PXTGDv`wGm9B4T1y(!cbxW{P*@$)U-v!mK559@xXLi2vwUe41>|625O-N`s} zvPr8(o2TTS^3*d{p90awzotvl_ez$g&!Xu*NdN3R<>w>0k-qow(&1ds@}I&(QT|A7 z>oDzdF3Co{7Qo(?DtxJKOCCc5$>P1 z9gFfj_Vs>{zFqw13V)-On9u!Y%g+}-+9#kdA3tIF)y9~m3?cQD)ye0+_CM&$$DeKc zBX<3Ng#5-!@b|! zZ^1sks{PQ@z&)Vs?>6Y}0%d=@L3b-C`%MPD{TB3XstI zcf%n2ti1Q5ZWX#*0eL1ug8t=o)o|my^zoI*-~rst>h&^nuZ=y^m=g!+Q0YZq%+ZM^F!j zJJ_i)5FSE3AMQu(3!g(Zdo+5B``D>*ra0+!$$w6`wSMS-^h-Rt*J>ypwchBDBW@EP z`unzAy(Rk@{5M6D0sL{oGtgQe@yog9-$ncN&IZf(>nZNrH0w3wbA6rs%e-ICpRu%G zu9sN*em(S4%U=!ZJ8AiTJ@lxR@7F7DTiUNj*J4NRwR^U`yyek;J^ja4-eJohw)QQl zy}X|JI;-(G<}s4`5&^m#PA31aATsH{5AeSf;QxmJ{qcbLzYe%pA25G)fG@Z8?|=6M z_@@H)ot$eHnM(}m_W6ny5xm(czp1~h7ka!0P`rt3o;_(u&Cc7|b#Jo7e+WhMZVR-4 zF~XRci(mr9PJm`i!e?6!OqTnTW}e`zN$+&{^@dTpf08j_n9oSQDQw@dOV3~{7PHoA z>?F7^A@_7|_H1G1{A?-?e9f$6@?7#B`|%{C!a8!A)0;^2J>kV!{&~tQv-u_^eOZ?? zrI-=j{+l`qM#jXUFU`ywGFg?H_3|dJC>&QhAGPS#>ID(+3%-Z*zyli_Hmu+H@aAos zQnOLH-^1xq!Hk%ad8zrRR_b7VeYPYDyXOVBKA0RnY;MR{o!%$ss5() z_UV2;bC-H@yi@&}^fpS*%ojz`3(D)3nOhufb7+f}cyB}>ZMw}ldNFfEtlpA7+O%k- zxwz!rVdQleU);TJ=4d=Qw~v%VBAWPQ&T21rtA@fWI#cmCW~5x1_rt-YWc3^PPv&PZ z_n@!^!;@(~UX(V!;xf#Wp;Pkr<}n}T9!fty>}75#S6b5dNSRsByi5UkhWuNe9B1yd zOirF{Oz)j_mu4{kx1cm-I4sqWW?5#+a3zZ(`4<&m!CZ9l3~{2OoR%@$Jk6 zKgh1`2e)k7w0XC)edD8#Z{t23&QmlQot;$I&J*jmZqb!SRoi!@e?OT1xpnh{>om0NQqAYTd;!!dR0*w-MAhQgyt>ozo ztkR$hh-Q4HH*Q-)ZH&qG#8H~I`kUj;uGrZ7%g(5jLG^(*HF#B_EM;)aAf{pSHg7l416$WWxHGk1D9gIG z_-tzOb_rNXBc&jELBm6N^tbPL&}mqCkGJzFrxAQcEu8kW^_q6yP%W>|iVy{H&0cWrAu8)0pDR85|m zPu`39KU0tR_1;A2rHQ)xZ|G~LxkHW{`&MsLOXhR@57H5 z^11gu$d|~zH*RUFxx0AWbJ39ZHh`C>6o-0yr;+vk>0#FLg(Z%6N3bs=GoJtV{x)lt zx%O}9T`}zqp&DS^ZN@{Br}C~*$XV>``Qw^yCsWUkedqaOMvZ^$JFJ&!H!}C5+hw6l zU2@OQSL$wZ&PTV~ef>wbo0$F4?Z#()bi0i+Kf2xMjE`HD#dZnv9v zg@gGjJ}EQb+jsCLX6o6pfZiE~ec9#2wmqr2sdPEXWiDPe(*0cKSo9m=&s^r>6E4pj zmjYa#Jm$oL@srD4CI>FdTs$>*cJX*&GU4*%G1qok{<}mL~l&4 z|gt~w{Oa!F600C|6l*#CLW^9mpaTFtKIc})3&94mu2Xe8U2y{$$0HonfqMN z|J>#kowIloN$sHKtIzV*5oy)dJc+s5`<^1cwkf0=0yvtYaH*_Een<|GQX-9+`7d4TC%XZ+We|ncP(2FlnWUw6ng( zCGbI+XCm+_3fbj++CQQV51+V9^IK$|0g29YUe5QB%tt7Umudc(%roKFb2-8>^MA|y z6~xbfmH8`(pKrpZ?_q4>waWXL%v6u;Zj zLh%oQhv5swx9g1uh2pn?ari>JT`G>kK*!)+emK&doE$vbD`%eT&uCJyo;Nj~lGlxoyeW4$ek@tHJtB zR$u4gBj~R+Sii>VuLftJzsg|!GOJ$=GOw_8fx-Gps~-Vf^rsoDFSq(7pv;F2)~n3Q zKLbqsv6p9SzrlLl8zKE(Q09{c>vjG@`noUcR`gF8tUqq`b)SLE>mDtz{;<{8JrGOL zKWMQ2fYomUWxmy5z3$bL{5ZH6{XGWjcUgVivnBIQ2J0KG{#x)B^y>`P$E^M;Q0Ais z>uaq30&pSv^9|O|w))dRnXfQdUuN~g;LYe48LS_o{*ga*9$n^jUl&;4XZ4d{75Zlk z)}ONaCqS8Jj>9wGZS{|UH=^HVu>O$MKM2Zv!eD)?)o%tX(cf>devj4P1tQ1240W;YJ>Grt6u{u-&Px}pKtYNgUYuNgY^|wzYLs-eu=^QBC9{d zoTKvdfWdn0(^I_ZJ~QR#UW4^#to|wRcJxmgtnab<-Js&(n8ErktA7Y|(eE%=pRoGv z;4<{v4A!?;{r#Zi#0}PKUy1y)9aR3`YOsEj)n5nRhQ9WBfc0yv{%TNiRvD~cX7#H< zm5T)i>np8(1gt@Sn!);Vt6u_2PS{|*WA(KkSmmYPV7>MO%b&d<{k*M7gY~DazV2g_ zoD&A?k6V59i&Tz|7_2{R^*cZYKwA$QtUqA&wXacfS`F4WTm3kw^0mic{VuDo{lv^k zZ&iN~tZ%gXYeC7WGgu$9`l~>dyQsnX8mqqmq(0s{-(dZ0t3M5toC<^WWmZ27dgakz z{Sci2#Se36&P|vL)?TIb*Q?l+`~0s+{&1tnaq^+SfcE{Vs#`+RrTc2SLe6 z7_4u%`mLbKZ;Qct?QfR(J>Wd_cN?tNI;8ZQK*`x;uzs!8uLI|zzs6v_)=||D5UM?j zSXv0}R)A{vh2oc6S}1-An4}#Rim!E1(L(VZQ0=f#{2_WwqJ`r3gK9^G;-9y)Q2ahH zf;^%4y_Ob=e+F#DzEJ$rmKKVC66}UA6kq!vL<_|~4yvCa6u;ZjLh+A)ari>G&k7Rr7EEQ2o;f10I*;%k3~(n~0Q*wRAr2SO%%Lh<`8Efin-HxxfY@sZ`xLh(<6 zieI7lx_?HrQ2b+H1X?Km5laij*FF#B7oqqEEiDwk4ODsx#c#E=Q2aQk{2>&7kEMm; zZv~bAgyL(zh-jhsYeA)tQ2aVe3&me$^`n-q1eM-GnV)TGq0AFj-HYt)|JS~na%j*k zvHC?IONcSYptrw7=7|GuAI&*~ZZ9Z(<{{0#8H3(A0qOTZ)76h1H|QP%rQZe8MU5Rc z=yq8B1V~pccEF(9X7yV@x+Jk?gKpgF?*?gtW4jExTdn>kkR~S9XwY42_1Az@rLmYn zca_zr4OP|P-E#@L#I@(oN{}oVn{CjYX7$TKq9#^m&~3-i9HOul#7=25NI#^MG*G;j zHi5IiM(}!20yxgFYU1W1W5Z{+78lwm&QTTp>((9ZwG0=OPfI2<Owsp>OnmnI)i#HbRIQcu%8W12Man-+X~uIy9zv+E;K6b*LcD z#;4Z8Hq?WK9jHeNkD;C@Jc*ht>_zP_96&XjqYe}$*c^4Zs0%e&)Qft$=nU#W(Gco^ zQ3+1Ebc{NLYEHm(k2=op6QfR|o*s1u)trVoKdPVKL!;t^v3Yb0YTM{`)Wqn6qr(L! zN1sCN9o>gIFnS2JWlZasa6w|sK~$Za2^aK?Ie~g+OcM3{n10m#;pT9-pgnv5^-%aQ zs_sG!7n};8M%AgBaKTVGUK}oHEp9{Ay{O@WBgMy1PZXa-O&0f}_7@MJHjix?8!k97 zHi3G0Y!~YBu|24#$DTnwH}*VgeBAzV;exht?Wi5&4xt_!*Nu8|+$q%Faeb%*Oh!ZFkn6HcP)ZdSrLVF0zc ztfh=FmL*URmvx~YFY7@)U3LcbT-kY4-PuYQC$^(@OguD^?Q;`Pq4rHYhZ>)>e-dY# zCLKUMJgEz{XVMAOV3AF=dG zOK-At%+jB;^k*zRN|g)p8!g>y`43t8yOw^!(*NGl&sh3e{G@va{rxZ>icf`-pi*`leopnj=xXHZd)Lyd2!p=4AX=$!a)1uri&ununda5s&!m43B9neQ!2cj1U+qSw z`I7}D-z|YvAIAT|2_WsB`8!7#L znA*a)!%Ex0Wj2pL(vVtb3NpOKA#Wilmkq5X<+PEDv8l-{C@s!yMQc_;S)RAFNEKwH zR7eyc7;FJXyII=@iao!%N`+BO`@}OSG=^yyC)zOY_{HrD!3= z%&}6=;g~~o!7U1~qDFDGIxbR&nR#;HuVH@??A6O0*i?gy43jpY_#PhGYos4=5{Yb>Zw zX7n$w%Z)JqSNi3;`{@_lCG~D$;j8a+x72%fUt@&(W{}K^d0_S1oiR(Oh?3s*n z7EQm;@>^#C-zYTa2D>@O_WEe;7cu+7-Uqc;^i!Ng`+HAccNtB7l{00vZ`wVRkpib$ z`%7k^Cz%QSD*CLI+4!sBB{lGftMX)FMb5jItRVgPs%n9r(uFqB{=DzG;ZGnHg|&86k4&mED0P$0#`^V% z>Ll%xR=p!T(>W8+LVfg|g6Pq?A!pHd3Y?>73(|E~lryxdOH%f|`Y3Hb?hGvL!EQJ- zeGy}_qt(+ZPV{`Abd{N(32b$Byw_JEQf z+$-5b-P(u0{djSPheyOq9R9b*Mmu%hTXE5A{nYJ+&z$kboyBq|9J+2%vke>hxjdJf z`NNmJzcU!NUyy!EbH$h9TKn)rU_bs+Sp7CdzmvqZ(n9y&iH?T`mWGRTza8;i5U<^W zUn@i5d4#*R3I7J;C6~XE<9%9J$kh%=U*8%2$=4&=iKOMLZO_H8#B*b52P!OT9jOeu z2YYHah;Of*QN2+Dt#z02pymVAj;sUK-q`u>stB~&oj%-?{UoS%>JTV*4uGtqRFS7u zHmkN;{dFLd%2hE?a#w+pTLXr{D2V9M5sQFF4}qEO)_bA}gI}-Urq^yIv8-<{|7yql zc-wDj@$|jTzcuR7-wx250`#2$`ZED~Pk@%}O!=<{=S0Wj(i_W19O+{Ps1wwUu~twF;(mUe#-HWo75%8`6Y~aZgEhQ%sCp`S@b# z!X?%D+ha5O%eW53363w+o~XHZ%A%d0+Y8Z~HF$eC0X{ zi$2LC`#XA9^eJhKY>%02*s|?G@%S1V>OQenJ!Sj(a{k%UdWSOelkCjzQsWhWK9#!D z`)UZc+F!i`%%8q2k@?#9n=nYdZy1#+xuzg>tF83zIBgZ zSMc@f`M`p2P-^*iz7f{ls0(NhYMi4@)Z^i(5dWIM`uOwd4E?W;b+{ihyNz6rxiEd7 zO2--8px=z$R`YwKeshOM6Tj7`$c__pe$CCLC3tBQ(!Xdqd9{>(im;qE6Y()i3-7<6fnaKkijOF_{Y6 z)j7k)+CbOiSz)`{>l685OA@wj!uEm<+c07KD*48QZ{(f0UixvKB9(renMkGI0?ta% z-;w`=`OCipXfbL38vaonuOJSUp2RKv)^tDAr^QqMHW}uuB6(3XchC*KKt8)t8Qt`` z{c`j;`SJzw@RiC)(BE#fW%6GxHrf!;&k{2GdFT z%fCz9A+2WcFZa4hBPU0mSD9aL>!*BXs57c_xg94i*W37<&R8Wm<)x{?@C5y*KDF|a z@2}E za`U>mx9OGJbMuni&GZU&dm-t4kh_I*$tE9HCzeEyk|#(H?|$sI2zmQW;v<*&=qTpH z$Ok?T*^|r|(Zo}f`rOG#R+)RnW|9y5I=ztbaxZm>muJZX&ydDGPvhn+K6&67@(A~IcI7jZ zARjzKKDd~fIC+6{VuS2^r(U!3e%$3PKPWF`%9fty3Ev4jb3cr)~;w@rNh zU#_P8`B8!MJnP@BPZm1Q)Bk8a0Mb2aeII?sPUX+y&fG0usJV5F^ZfF{@H@?gfAHd4 zvmEb!FMl49{pH`28{Zw})HRcjWNszx-rT4E-#?i9;T=C1TUh+vyCxPt*U4S<#=mAv zEIT(c_xbW9XQK2AY#8F?0m(Vb-Q<~JnQ7~9*?SoI&E)y%qnw4^%(({RLHSkuzCtG} zJ-qm!>_0*uLv;jsu-x(Lne02dK6r3t=g^}oI{mx4E`7f?V~CqIjb5O{x&}r`SlE)2i9-g z_2^@0a1YIG405kuuxR)7JGEWRUKn;;CPx%fH{pil9Xi@!{RKfVa= z(4LO)-)zQt3z!elxu$E_N2&8npc@8nMqlqvE&@-3li{B-=pF~fKLoOVQnd?|oETVv zxzz?;ogbpEibV~&I!8pE7OOGnR)dnO^F*Lq4oaTR4N>T0)Sp6E3E=sM@G$nOIt4OR zi=8y+c3b_!;3V`98FUX={T7gU+*q?gcaPQI4l)jmZ8hjdz~#s<2PdGf^EjZZ#Fc(O zlTfAT>--JqCPDUpR-FQ=i(@AZy0pojeiz6PHFnsbo3Q$=AY;o|i$OOIO8zd8vK`xQ z(A@;GPqeBLWFKkO8jyXbRjWXfC>Ay7>b#8n5dn#+*ffJ~nbp_%7=jRU47&Z~8=3C| z(TepNbWelJ&_4n47h^tJ=pI3l{vnV|6zeePwp;xcko*^GHt6oQ`ddM=UaZNWTM5!h zsXB)cVUI=4_umS=1|%!TbbbSLmw`3tS6h9Z+mOD_Y21Q-3Ah-Pr&t53I*%uWr$O<1 zK=F@ReVwZizs>S>ZbE$RpOSu)MV*I`{ix+vTYa62khuhbl7Cx4`M1TO8wcgz-By2> z)jy6QnOCPm=CvP;KldPt%pWjxtljF@flJUIqU;KLEuOI01j=3`h|$%h;leKMoh=$*Uu?^$R(87{4tH^{`-$*L-SIy5+*tNLj%yjm&PaBSvTt(S z2~_PFWmjd%{t|Z6mLyQSOOB&zhbVH!w~j~7_%76w<4>V#S13CyOWR7>^;>!#wRu9z z1YRL*RiE;uXdZ3xzSk`MRZF*9`UOkV=kv^e&C<%Bvi~0}{b@`8p`}+^`afIx zW=sE>rOV}C>>suC1OYgAszgYS=E&WSNf6CH2XRNQr z(o-#cy`^uo^jPb^g_eHV@;`3r6vKQ@c5Rko4mCQkF)Zwd%10M)8>?^^fQQV`1w0)YOm5e`nM_LYni1(X9JcKk{p!S$D7o z-u7f4Pj$6f2=vrT-p9IV;VoukVy=BWHp2ZKN*N1?xz-Q02Jb{n)pZTfoLP|>?Ub6B zW`5Sl4xdjmX3)4HHE_J#{fX5&u)!yJ5_$SM$4N@#3fB*PIqPMYZ|lbl`l|J=PqO}a z@%vt1u>PW(;eCG-ke3o(WE-3ug^Vaz*suxexsYv*Lq~d9O52S zxGMNR0=)_xnCCcAJe|27$@o)aP%mxhih6sQfGhfj3yYXj9m|~RIObGKxR-1^_mh=& ze)!~s&JVv`_&n#>Uj3kOG`mIh9IyX=g4PhbdAC9H$av73@BA+JZXPMTW}ssG$L?c~<%KDQUwd(R;goke zujPJ!=19La+S##!-^&ZjE|C6p!_O34NQ@O7x$v?_7hZ@!4;K_&pns~NkGfl}{HNZA ze7V?PPm0%`-dc%hPcSH+h{KUH|41AWEktO@X+D!A}g zsd-C5ahF`qnkMU6ewrzLlNq$HpS;CMrEBuz8NZii{JuH;yPNeb&L6$nS2%fIj+E>*1_AF=cu2QF~vea4p?sR8R zY4v&L{1pd-_;cWf=wM>L;^7+Bjw;ySYv#f^&|1AN6kf6kd5Vj(@ZW&{CVO>%GAlax z)557<-tOjZ)c3D-Jb7;*@BNR<{1i`?-00^1)8taELBzkWy~FQc%UTH7Yu)MQj?=yy z*$X(q>3Wd$q~RiGVI%4F)>rT7?7Knp`o7!cufBQhCp&+FA0*eA;Z%Q|yGCn>j~^00 zo?f6loE>Y*LzK64SMY9XftP=rwtRVZwUek_O_^?DjbXYIekVcx@$>)JHyT+!t@YZ! zw0cjl2A9e&He8BN`6*d=twmE8m_5t)Qt#YD{qt+oLow>3PcgTDcPI7J^IALh{in1J zJ9|ApF*Yhsxp6}}za@$LB&g?2j9AxwGZ+#XC*y97{5Q`x$}1! z?s)ofKc!IV#SzCqr4lRVZ-TK|;%q~9X}u(gT+rrzp8Y9 z8{S>T-+A#Z>?pj-ugVKQrL1-oes2_YJsL;!*b9mK1ISdlli7})q3`uQ9O`_3 zj5A2tJ!;(N4Qk^4P5iBOKa~&p`KQSI8D(4crnA1ZmG!ph_<^Mgqr#;ytr#3mrBx;F zEAMY2eihdr+(Ny8f8{TKovV?xzypQTC;b8Iw2jm+zeN7ig^pKF z89WmYjqDp}q)wqtdZ(N6W$c-{zB)kvqERb{&CSSDy}LtnI z$>=qEdh}_^I|z$kUS1{+))U^OO{?TDhpU6`p1~cZsoe1E?D+SGUwfZ$4(}_ZPZOpN zDW)zNOPw-~x}}6Z&G^m_?%U{) z)Pa5{dh`v|C-iybmiAi@j1z70Uvi2w_%!{Lhj~*;dGNpRHc;Q2&huke-16Lao{E0; zZOY8uq2lj;x8SOW-Q}+h$D1V(byzloCAERu2p5Pwdv-?(bN=~>idTTgz z&7yFjb8F=<8fwDq`>y=O^cscXEOql6c5R#mj4rQ?6;4CXk<=_9}HJV zNh|VG?GS$aO@1Gce!$-f*LdQCzFPG~{YW3r_ak%g<@w@)wWGZ8@ErZKi@8DBs=n;- z(`U^Ye(G<9KSDlK*ssH{-IR@sxl5ntvfXW@t@7L@A7sY+H)y*exW{;+T(}26ygw#7 z$Xw*nj(ztJ6q8ryl27%&JQRNCEPcHXpZqoQdW<~(Df0f^l!3cwM^|@JCcJi3{_nsY z-hyZU|FlKLA?N5jlo{od;X5=I7>At_?2bo9DY6&`JXzNHA?@%G0laqF{+^|BWPWRW;Qx-$hg17HNVz+DRrIK2 zsGVYe!>?=n@P^-y;O^={+S{bEEF#IrUn-ll`a=6YjLwl!qiqZ}ZQEw(G!>Tu= zmtZfDp;fL;-QrL#JhyBe8fWa*PrXL|_cN2IH5jUiJGNO1J+;Ii?&eR@zM`Z0uK=xZ)SX zb&PLnJE#Lqes#S3%GkIZefBJwywg!QvMjvr?KjbRlQrbwd&$f9kf(o*yd9%Fe5#YY z?v;l=%2Neppc;41`Q@Nc?Z;@$j=@eCyT!;DOF0pWY4&`&FycC~#s zlcs_CYi}yeK1F=rO}yVl{I4b*?j+4V$ymVDVVP+)^yr_%4`HqV^M%+eBArIj&WE1= z1?kjJef2K&)qB)e?~_ggq!XLzNGs*xLa*QHrG*!NY7f(JGiFhJ|2Z3f zS>aVbl6qR@eTL;Xdih@E-;|H;(7=)>$=0iZjT^G@#KIXKKTj4 zw2H9ZK^RvO))mCXUwe1Q5APd8KCM9S8hBGNb1i145&n-6{xS4(MiXAs$5H;&{%3`o zc?q2-P4{!Cufvq5zNaV8W&N#>!c^iz+%JSRH%v-_OE^@UE?*XOBhn?9-XY-E!1 zhADqabM9}cQ@u)m@IpnX{l%w;$6RPePiap$zE9ox{nd=U`jESyuziy`n4mjnhthK~ zPusZ|U*7b61s58TH@&dvLWKM^eP7{)v(SEiAK|}W4!_o9>Iu*N2l!nu%(x~T|4O(p z{H5u83oekRbq#UHo8!s!=VZ+0liN5j{2BuD^O?uFJHuUt`zrp!%*`n5pMdugb6tIm zo%+7!9POv=f2pwGoi}JtGX2nO1y#>>x;nJKaF)(2I+LDYE~t~S$y>9W zu1>}monxJ@=CRJ=F2+;?_HKVKp04-XOXhwEll&LG-l_ia%*^(0D&^bs6&hzV-@|yv z_Jf(zVXTfnd#&BZSx)uOUMYB9@#EF6^da74{zqf^pHOf3^F|TmC+}nKlrl5ZD>sY* znA1t%SIR-gxY4+qU`(07@8qWpo^6vEQzi&&KW>TNof=mfzUBnzpAU8*yXiWoOL?yY zS(P*Ci(sd32K$HqIC}Ifc~5Qq8^o#Nfy+dz`~HZt@{BLfW~8C!WZ0Wh{ub@S@YBxG z)%1({KJE{3P}jd{6qG9%nJ-W*_{wKF-*W{@r(pue%@K;`Qt9et2%pT*7lVeLI!Kuj5Ch zquDonRjO~tgnhN#`?_T3;!km^UmD}=_#?(f(+fivHsHos^8d}m8-1P&8+hk9QTUmm zmkVo$BGV!_B?>1E_1!?)&v3lDFR>5aKFixTX=wTi=R$%yEK&Fy*tyTzxoT+odglV| zd0k>3`unW@KJ@oG7b4OxT#NZSYrcGF`pd|t?M>`Mf1lOghyLrx$B)bnVE)tA{N$mx z3&XF{|9nSwnhVE%cT3^e=l+N=KNK4K+@~f-YvzZdw>}pdclV8xof_iu!usLix{ktH z#+}zJ>L{F4qd0z*I9$DDi#HZkny=n6w%RI zZz^v@em-2yymom%c|`TX3i1j4880mp%*#kmWy#lL@ua%{PVyAx@F;UpU8)oi~Q>uY|oD3gwx_CVv_&oHNaP;(}J{Xo5-`r{|m5t_47-c(;J8K@gb8|DzE zKc=~ta^_xUTKN&MgY*dRb)N4ePUnKosHeYCF#azO&7S=9H|BgS`i=Os$hMcK&Di#r z(`IgabK0zJkx|RPF?0Mghu)(PEO!)_ejOyYzd)a+XSA6M>L*PGh=UL4m#_cPaGk>a z57_g=s&L59!e^PM@%6*bGqvBwTp#ty^icW3Gsr(LYn}&LGVgpiT%9(%zxGIm%u3qB zE@+wi8U31{(y#dmeY#%yaBtEsTECWOo)OD5r}HZ^BlD7>FjYgVz1f=)R@1(u&&0_; zLA@*8XP&-FW}|c8>J$;mHgbF02Xba-;v@7AIu-w^+~_{Z2(tB($3PJY)^!?(-J|C6=1fsg9C z@4W9w0tSp@Yzq(=hY{dd*vRJ92Adm?c(DZ@+gOof;+RO{#TKy)7({|&5|2P_m6&ct zSKVq;Jx>Qm-3lsim94UsyLy@-*6yk;yOnKi%csje9oaNdYPyRPk_Z=<{r>JbcjnG$ zgzdEVGxz-Fod5s4zufcsKXhxepCL`_W&T zW$+AmANp=k?zDkXa0$3hd~_bEhvgT*h2XH&pRxKrtM9S;4p8p2fUL8Z*Mg;B6kH50 z1@8bCfkdr*I!IK?6O0aAmcu&?ZfgTqV}1-ID&@@}YiH#fz(wFvQ0|m~{K~@?uV{e{ z{Y8uCEuOVF1QNCK0T8dtdqJf~C3r8m7G&HKTW!!Sv*zbRk#6JL16k|z) zZWLUD`BF>2LU~fW#td$225*O63o4(tfRv^3wN}3r^wI|uUlCXa_EShyKH{LgNRx6J?*t}_&7nGYJ=mIO(Ha{9+!d29f^at*2+L@i2QrNYbFrB_ahz}wJYV)Hpw zr91^jz%w9Q2g@|`U|Wa--1sd&r-<*xRf%3bycczna4-01=3PCF?6wV+pzLB+oqR5)iC+?J$$ zn}d16v~%T8Thw_4**`<&RsE;m>DB)>Q1w4<^@pr}r`11g^=m=dzcksjPyOHn=sQ7~ z>zsh_5UBE?^8k2Ru6r+(KUb)HcYx=>a(=qUf_5~f{rjM|Zyztpbx(xoi!422=|faf z2HmJNUv14-TJs`sDg5;7ox8yc zU;*~%TM1p(4n22L2HkVuUGNQpM76vXECu(0i@~Qs#asLI*MnuC*FJ*Er&=6Uys9l$ zTGV+RnJ=|i2CBSjuaw%iFsS;QAX4{&Z6HbI$&m*=`SCJu#GEL__8Ii#zRP?ydV&yJ zY0#6)uK1qg`-ao8vj*K^5SG}GLH7)(_%?zne>*|BmjdCNoV1v*7`Iq!F={bl5%BE! z@~wwL!^pSpE$Bmn^~Hiqs78YI=#&dnkUc!*JZf*akA3z7;X%~Iv`%*0pSf=6x}w6? zo7!$_zp1FOe|B>A!0e*J!ICp2LnYv?XKo$3wWx6T(`P?@?$hj@pFcdmsPIZ8UfNt* zR5-Tq%EI^}_Rrroa2vbjKhyCUcF}*P|1(8}9g7o-JIO>n_mPOf{qz5p$ZG$#zwc{^ z#FYM5Xx#M75OTMn$_xm|dS-sz{c~9;`_xn-bm;bzezv(UM z;qmv4aTYQwd^4mE&_mMm`uoDDOWuBJzn}Cb{%gOr-|wL=d3wc74{JW2-tRa49&W>) ze(ufDYu|W~z8}t@K9ob(zVIOZwjB4~$gzKC4*z#^_zpq|fhmi|jQdiHT;(LbM~Kak^}x1HN;xo3a(j(l71AKbL%bIVrWQ-jFVU3+T2 zvTOhDXM)m~8d= z8&y?2x}j$Ki;cSu_`;69wrl@h?|+8-!QFf68hrXAk3CvlV_kJ>#PrC9fWE3KEoE@$ z?yndI<7YZJ2hyUHtoWpw=lAL?0K2vWf(g_9ux&kUmB@MjpRYUcoE2M`Z;N+&glbYO zu$SB>VctFc8wtBk1?<|tfA4-#YC!l?4IAI}uS> zu6#dGJ9lkA$cFoLAOb!HOb_ny3eE1i?G3wX{QdcXo%`v8$z`M0KV2_VWkvnQ4*2%ROgJ@i&q+QO$V(U(n_!-JieWo@LjN z8*H=HFAyKGKYvgSV}zH7KI=8*dv(zX)-x(QJiea3z2*(n=k%VByFb5$&a57}N0Z88 zAe~Jae8T!dkkBdy1PjyVxLSIk_Af;}gy87#=4XT5>$K9;-bncw*%~nsptmr~U!+-2VP7(QDZ^;V>6jU!b** zTbI|fmiXaI8}MU2eyzjL3f95?v$rm+`AV~Ic{X#STF0KlT&dYVQu|NZ!{qyC)`GP5 z9Kr30+$+`oR^+KLR_k4iY_5}FepysnV+<2dBac~e`~`88eb|2oC`lKxN9f974a z)~>mE6Gry662>19_FNgE*eO=rwGa4{heh(Sw8!t0hNYOW%*-1Wt##FNgw_w!Rp#1% z{^S($B20cyW$nG-`1jwqwa-ER8hbxpOBIHAo!9C}N69votS;?u>iXBtn=d=g`!|P< zejEC6rA?Ie_e$bARqOHVo!5VSzxFq==d++#U%T2Ha-thm35`H*7Pq`kTC4`13uxGO0`53zn);H{rBcJ}!&HFqbr=_ej1k{qbzL8@?xiA&88_c?(HIuD$~0`vj;8g)k`C1*J+zg z`X;iK2v=&l9vBDUI~t9itm;7j47=F9p)zO&^$7Bx?JJ^C#c zH4n(tZ#nYwz4aINS9tSnXF=IJW3d{Xjh?dVg-7dI3eQrID8!Z+bjv`6XOTfS0xCQT zw8C=^X1P0LQR7+7?;Wyw_G)=_%>&XOC{N*->}mZ=_7WDWLD`E~eX+$J(v*Hdc_&Ew zmX<$UZOx+=S6X@;#OmZ)i&2Xai-1Q*{>0=SZgcCL+=ZH)Ho)v#-?aW|w-C;(`7!u4 z|K<0)Uchnb2gnyal20K0d8?l(`vLwNq$jQXepV8G&56|V>gllhVWahAo{R36r!AK5 zm%qP-Pjvq&!2N*M*#RM_{|TC)elUmrQjT8rBglU~$Nv5t`cRHOk)vl$Kg&JJT$Vm} zzD0fq{U1L*%YWYAAGQ55lMZ&Yl%8M+jQ+=s?bA06m~l;JXluvYxouhcP&}S^1Mr-o za4x^!=+)$oZF3p38^ORZ?%Ir*1L=0`bReg(y@pG*eB5#5YRlh3CGqWgM&rkkd!OHjWIGDdSCLauQxn@@t$N_Q6S0O#+@qP& zUBrI<%W{4>v=ZLjai5rEu5qpG>-!f0gX28$=!M1O0Y34=Sm;z@XY*Up=ANI#JKp|D z^c$Cd!d!dr?t9{IO^qafGL3yu)0}C49{u{%-(k%1eiM73G=A|tvhh_g#yx~bI z_xZ+o?YOn)g+18r`UQK>SC-Y)sL15VF#p8&i7Z<&fgA!k-l(at!0d*TSAMzD-b;Ky zV{Vm^iJr4|y=Jvd5nu0@OS%u<^Kr}Nc_ko^+>?_tSPcFzG8k7b8<2~!zpeop6MAyx zmtVB*&^Pd&GQ#PHMFzQZ1k7(-Qy#jP5ZLqcakY)N=QxUuzOVJ<8C{7P2|5{u16;8RPM!? zroEbzHlNx&mG?&8Qr?Qqr*zJ|Y|^*BUB3Wc##k+m^S!X9zCzCNdiKkv{Vim_=^QgI zsr|HbIl}oForOQRAbOd+Z*6AmS{O0o>=1iL3wS3XLqK7Rgq-h@cCG8+(Y{&Hk6K#t zh%**v40hs&Uwd2QfAQDc!y`B-~R8;*HW3N_0lLKf1UVwa|-P5PV;L_TyUH5m;7T+Z#;ie^H7idDQOa7uF9l|pRURW z<)z9HRX(XwzJ@eC0`HDOg^%FE-(*rL3v^9I<-8{Je_Z&okwpmv4)rmxcM~ z7mb{6CuP$tOxd2~eAi(PMCmPg8?$-&W)%NovU9wPdJ~@H9RI6=&~fg4d+!JAmF}W` zO%2U@B~ltEzoVBE)GN)Y#0wtyt0Z$VY5Miqv=sYA)3lk{G(N^2EsVR)t<>KuS2J$@ zzw0*v|TA% zuEI7=;+!*+eVv=0Yt!T@_u3a4}V zYTj^GjOmQzEanfh=ZgIKazB07E%(xvcB6oERRzqa7c#G2#N6m4+K|cAmnpO%q2o_F z(aT?@9oLTIb~aGoh39 z3y{N4xr@K*9RKU>(UZSj5IX74-K(DQeWgmptM((`#Nl3#d~U{(*$vN4yWx==`d;{F z&79B!f2Fd59Ga>!UhQeWbc1vGklO$2qL=4{W_=48EUzPLWaSms30VIqZlRn^g|;>n z{?_jn&Ur5}pR--eL5Jted&LRGFFU1nPB!B7s*H)|K-x{cm&ZYQ% zDm?O2^}_cz!dV>O-_sNLOaGy_f;Z^r={d&F_?&>BV zo;T=c(=6j>bXLI65#wi)@Qw5HbjDBb9E?rhrk`BRo4!$G-jwnN{XB8A@iTSt>Z)&( z*Cu_b`+r9*zoQKWC z+4vjG+vv=U-xK969n#*B>Dh6vLwb@&?0NO1!+V(hk*3alWgtzkIXvLXtJex&>-WOn*RUSR?=c)m8NO zZmJ|sS7}QwbI$3v=<}{eum6>VTWyHqEB&3;yxz7wtH@(NzCWHq-Q~^!uic=1Rv74O zr}N0ChmS?aSf{x>vcsf<`XjH>#`{c0Qgu6iDqZD2PF8h38_?%MG--b(m%MYzv`C;?=V~?7) z-}I3m;#=|{-;|AfTQ=~GSw+Z z?vZXvYH^o_C)uGV4FTSn3_+#>lKFOP1 z^mlhte!fYa{1*AOxyd=M^tqcbvoGxOd;f6w?e5)oj%^Nwjx+vwpYmHBy)l0I;ifN* zT}K&>g}yZQ>wJU$Vea*>{O`i+PyOYuN5}pTeG~J)V(jkp|8--`g;?|TV|Pz?zPA@Y zh?nOVo?=XYV@ztt2$_TL&atgmZXm%gX2v{g}SV z8p`4Wg(dINFERa4eY*nRP4xq#^H_7Htn0h^1NDa%+BWMJ+Gg6j@6#Vr+gwW@h`M{Z zX>xX7C_2}v-i}`_xS_sKuwNo~gWpT}mn<><$z1+<-%IOflJlk?$Ik@)kf5KXwqKIc z_ty9Ggo%gzjLgjOlX~sPGa~t6Hl8Q)#4~y`eG=ZFeGs?Ix=%?Qgi6a*# z?dOSW_}P?6+axkZ(rJ5*cqWj;5cHGzZZDoG_Ohh?9Jz*{r!#&==!1M5KN)jp`PoEY z#miI1s+swy@v<{$BfL42Yqb^X*Mw;&%F^H0iQUm&4waK&o1*cS=G~^!Cf^%!z7W7Qx@ZT~mNeP1Q44)o`mMd{=X}!}7fpRH#2Mu= z+}0i|#Z_w%8s}9~Hj23iaTs^!M4jVh^s6=QlH0lNuBMG|VcwvQH|X{VeZG8d)Ap?_ zX3ouXJAQ4qx8imebEQqZS#C2=kk@U>SMfY#6!2{dPhUT#FgIP|tawgZ9Kzi&{qzy) zNYLF<_Qa_D_R}NrldG%5t9e)TDMO^I(kW5ktojYU4<+b>=FBIo`X=V9Jv(!<>`=Z| z9f7tr4=v8QbK4($Q~g2ZwemPj9*1wF9VyL}=WBgCzl{3|Z!k>Si?q5Wppgu?OsRihB=jJFc+Unu0KP-rP{8?wpRo5NraM0Z!tjKov9rVFG!OisJuOs;e zAH7d0z20_r`rlnUeCy6R0?V=tS(yFET#qFb7+prC?0Zkxz&QHoN6`KIC(5u7>p1_t zwLfUl3Fup`j}wLOX-hA`@qF=X#86KMZ$AHZE=$iu@hh?P6gAZ5F} z2Na*q`3nzOthHDPvP4>bkxgX6HjAq*#>gj`PX~1#`2vF()>_MTzFy|-pv(_h^PSdw zku@)}<`-`={5_!f+d#Q<$eORU=JTw1*qWbVlbZOuLGibP@^`B>Uv147S@ZLhJMj;K z;%~9I0aQA#v{(izofjE&uTV%uzhF`4^Z%uk-9*q#cwyj2S!}2E{*Q&>aBpfZh+X*Py%?Tn2W5OTl)KU->bVyTPrX+>3#7 zr_!LSeWQypp9d1uScyS*I!F*>VS{cFSO(uE+E;}$1*&|W0aZTxLAl#!(CqB9+7h-J?$ay^y?gV($+cJ#MlD7x$}yRzP=rZ~35#)y zwHBimBNiQtDdXSdq{W2AxW!tFQHv3afSh1&ZgB~>&4rpdO@A!ZirN$EMI8>E4TTGm z1p}O{Z!T=%9=k+gXZkj~wn^>WX4f~VAGLjQ$K-;7mdVF(YjE-z)S)TEoWAdz*2SLR z=IdLyoi26#dDPxd^>I60e@PM_&(1kF2lKh-=fZPK%Pri2cT2a_`Q7uO&Oe9R8R?2} zA71%rId<>ryK73pmAm41V{7U8rBe#pmbEV<49of{ZX`H`FSx&K05k0i_V*{fFFg_V z`;lw-FTLL{yI1zf6Muiy`W*c~Koh^;&v?e_{eI6~R`2&Sbg!29{eA_1J-y$LStj=b z;k#4%BKA?ufsv<+SNq}oejj6BPw)4WMl9X$*J(mi{Hlj~7FfOCFZ?}g-|uJsF+Ae; z`(^D`@AvaITRq@CKeXZS@->Z`Vt$y{|Z{CJomng8r0K9 zW$7>H@IRiTPvz*<9tPc0vIh0KCoZU;jwYxt%F*ALV?UhZ-(Td=Z_cs*M>+gY=I~1{ zL(u}^X>E0TB_<26@e)y#mowKfgzRvE2m%IPmd(W5)^`6zVH+q;$ z^&Yyt>gT5i?jLvGajPux$UQk3XFTwE8I0R^eC>V0zB?;qmuJw1%jj}8^RJEBTN}RujpXKBq0O^~xWH$Bz1tpY*x9elmN!idlo7$y)p@*5qfi zzpI3^+LMnPS>XlD>xbBj$J{CNf!_QsbG%(gZ$Z>y^zuUHM796xW!C88-r7UF>Zjbb z^Vc)R?$v%zK9|KmW1han+qY}ZUPtVDLf6qRj=Q@dY1gDy*gH6gPuu)x!3!<_bhUcE zGyA#C%;m?K&(yg{|2`_lx+`VIoe_6vZB%xW>;duk);q`F;q0r-BAET+2G%_Z)9fo( z?-hRvy6hC*Wach^!Fky+%&x90cp*uAID35Dskrx*F!WGp_QP@~^=r}B-uaD+*9LwV zdd!)(Xiq8cI^G?;&aV}{R`45>UQ7MjI(XK zzm1tU$BcgkoV^|4OtRLHJ^v-6-G-t0M+N^fVPL%_7=|Qy^lva59|p5Og|t~2|5etG z2_N$TFQkxhy@Il!d10k#$fjqCaHs#1&iV4Z>Ec!H>)1-!dy+EvdCKAw>; z%amX3A*AfGuMl(ganuqH?XORpeag8^TJ_drr;9QkVI9Mt^S1l1anJGg*XGh{aXX*C z4sOWrpgXE-^|-G&ckEEru7E(8EwsnK` z#sqOVVbdT%{!9PP6l7n+r*JyfOlt=3kj`G%DF+e4Leu1hsq5&radrAM_2|QwGW&h} zJwCGk;Y;7At&#gCEu6!NX&=6H+S?nPo8L6C<~#)ZKabe61PRi_TZ_Q0Bw;aoi!ynx zJZSXll9BOnFi@tyLj1IkN8wOVsXU%vZi9Dg(KG`elLedHchI{%B8!{E>g@a!FZD5T4w!>d1_Er}-$GD$@!_lP!-a z@>yZk8m!WzR(k9-@p|b)I=8SkrhKo@DW?;~C+yX|@%$>k6YVdStPtI|sqc{Lx$dm+ z?`}{ykb-vY%}$Mww!wg!rWu|!*VBbNw}-c zPh;h!&ef}ZkbDry-jMr$MA;fewli^j-Ij0iJX4PSeQSPs4(5sf&2-2UxfLfZ{cls8 zbkzS~o~rz-41J7sF#3IWd!4@>PURyN>v28sbP`ae^qCRJeq^p^3oqZ~adge^>FMPq zUB=P7u%t(Q5+2KKG*Xk6p5%W%_v6;Zd1B7veut&^K+I=f^Qd|nc=Ls?&(a4cpvRfy z)N_WHsrGU4i`jnMTIl)QZ?SaBl%8?%Z-!3X$|d(lDEX$s60j6hM~!&Jt`H8;O@TNP zJ7>@x0yVGL2WozOC#ZSKr!7`nTnds054RV!cJpU(21``RfSga;L=N42wme+|fLf@Pfrbkp8MCFM$t+Coe(a z>c$*&kAaH+VQ>++6}*jXuQs@CEy$8mc^ODKFE0j_9!1vtEQu?A&6|VUG(RrBR#4$+ zu^6{l3o6~T{wU-->7nMs#XrMh*y2SpZ3gC=|5iK>f$~rD+47IJ!kahN{NMuUQBdL2 zytcxz2-JE*G02jcH;*mz1d;dFIY5~&1wR97erX{%N}*G{he7ctLGdL(*=qwAfz6=8 z6F0bR9~i-WsnItqvF5e7%WrbjV#J~hWuAghn6#L%7`Iq!F={bl5%BC46)su2vZzoK z#4Vws!b?SCMOTW73WukhopNpp7(N?5hj`WQsXbHuDc|<%I<8}?_WC%Jz2~k^v2ew6 z8|kF^Q2+Vw{Ly@?KQ8&-CfcoKgjX#T#o)f=J5ZI9J*7ZZ>lGy&j_>#$OM!@j_}H~ zs7udQT9=Van2~N7aLAhhP5YD4$$nZyqhu@W-{r}tOtV^jz$wWde5Rr9*#m)qXUzPW zPdjlrUO1%ZvKK~)j?5z{^3Yyp^{jsx`HcaC?cOAt5$ou=X8wx9NapkW>WH3k@-6l~7Z4@z&z;ZP zs)mEdpU?C4Y8Lg<ozF`wGyML1Uh5ji`H|WzI?aY+)Q>v%@4NGlwi2IR5wtzN zW2O1GJqH@oOu2Fie#hD;INtO2sx)ifKOZ%p=Z8oA13feD@%n4d;8w3cCnLTPndhVC z^SWpt%Sdopq95Q4)jCcSn5xHZCi8;xd2&l{G4F%C_w#yWt^yaz}j!j_?+}9Z|=`Ib?BdJ z-$q!!#}mcu>NMwtqxLM-IDejvSCJfw;A&Z*Z4pU-#28#5N1I#O@^6`y#1?3vFy^-cCaZz9e= zzWTRsJrG*)_Yu;rjy?UxUU2X6yi+Z@%L}(>N1fMa#R?XeEOlNit}ZxvONn#&E%snK z?C)jVkvHCTyN&;Y#5qiyL$^9NrZ^`bjJwh$j^8+tmP4@MIh$Ub>C&9cI;;O4{w3La z92}2^@jq)Wf-z{&t?doQt=h?z+_7GK>Zq^Ztg&kGsaJjduWs__Z}|Gjx|5wd&eQsb zJbmHwzIz)z{lc_9=IPh_`p?@rhNp}_N36N#TIBB!&c(FJAS(l$Y%J4s-u+I5dCx{Og?;O4&#L3--IGe)Z2zG6rbj!1Dl}EH8p1Pxq^DvM7?9gQ5=qPXEJl4dBcx;GFRO^jh&qKi8RWdcMLCz zoxGWN>dcnTLKvB_AA| zhipHBbv#9yoaSYZ{OjQt=ifAcD)KU^1Bz3aHHCa}syh^~BC|-Q@$GTNS2OYT(N0sHyWD|5eCxSI11HjVTR^3s`f5XL{xJRfJ|wZ`DL1@beWToavHagbj! zLY?`6>P;XmPEc=@7Lre(GZSXsRB~vU4=;*QQQ3>jT)&`li->Ba?o9{GXU0tw+9=;q}v+4{F|gX?khm_A7KawCKs)c-10T!v9t}(RkImmyO%XrzC0X)6TO#p!QndfkOC{j-ISm z+QcO7y3hB6xS@^m9UES7-N}`dXChcUlXOE^5N;TmvI{Jq-0|B9&B<3-^U4Tkcl4bM zIm?6J$zt47IAl+51=|uouH2o>dP(*@)<3oL%aV2b4rMP)c)~iz;;nPuI(C)&*Znxi zZEyX==Jn{iT0fk1%1`4_(!%rqXmahy(bH>FQwm?x95U;Omsc_O?yoI)vaM;iMz9|= zyG~|rWSc!lI;OavJh<*6`zKge@$HJP@)Fc59QMsBmlamdu+pxMv~0@hXHC3@lev%D zzk^!tCz&=TEWMl+yIe*;D?&b~erDEo#?*{XbGq zbceWEmzhL=X7Z^yOQSEUUd$_wz8<$@0me|?UCb><=bUoBZpRFyONu_W{D||vlDaVn z-#grwyPNZR+>iWTCEu*BJE$|5=L^e;Z)Vb=)Rvt;ouJP#vOL2(J}<|Y%Mfn=K5nTV zN&d{cthq~exWZA(I+!sx>z@;iN8l~a7w*z;nXr@*X48Jn_u4O=$qRnR)xO5+sjJ9{(xU&%g8sr4f(=Qcb|!Wy&wOn&f}{8jDho}*XcFa z$~(?j=Gi}Tf-~D6zO;ofKStOeB@T}uTO!6@f+8z-ypZy$y9Yv)--1&K`<-VX-aAJ4 zeSL(o=Y98ySAy?;0WxNCzmF+o2IPz9iM5$<*V*#ve;;N#`sT&oiWBD$-@!z_?=Jm4 znfvR7-k6(y$mPP&@zvk)zAs*T?tha;G56g+v7I%1%E+4aq2sSU)(#F^$3jM?~3df#isU*DqC1Y@m=2jW$qogjZhzU+g*cc^88 zdR*bgt5~}z9?9`n{o6s-qDT2gzr%O)y!SmVW-cK9mhPqY!#Bcrb(C-9pTVm(=9}~d z^W|M>MJDh3_Cnv)e7qyXZKAo16VZ%2`N}|MuYuoRnVENQOoIE9<#%d+rXO|0hB0vm z<1@<2yOi5e=;vv(T8>Q`GySO9^kq!DrTnR*uds@;_YUd%{kyP7`|6J!)qgp%&V={- zxGDcK{jOQ3PDA@|*t^#E?&=#e-ppzn3g?dTox9vM!S^IoZT!n^3mzw}Ro?ZD`9R|U z+b^%B{~cd$`s6A8tFFfHGWsZWBgB4|(WBwxGda(z`z8`cKJ}XPi6hs)mN+t<_d4Eb zyi<9@uO-&SUFYk(H~z+2=f;1<`|G^NcwgcD7VkHCTX=ts_g8s;g}0gaDDM&8Cf@kk z7V5?<#s}vJoTf=?e?=NI*k*~ajo{U$~*Uej&nn(|}`sJmSJ~44QI}Ob%AAvgL zw*?OQ-BtM1xcxY#Gq|h!jTy%$`hKbJ=Fc^ZP;OctrC&!o*iuCr>-)o;kn&Y~E{=T4 z+XLpcF$zZ%K7Fr#d%>oYgZ%gRtP!!iaT_5`{P6qrZD@iv;KbH=)qnPA@wZxNx5HDD zPlf4MjNa?K*g{!I>+eTTSxM_3a9;eyQRk#7pUD0zbS|@e*ZOYddc}9cn}f+?pK(g{D!w1cJb8aN?dR~*Mkddtr_8>o zV)XKh*Gosg?y0};r%i4f;*E7E-yy%9Im(_p|9@Z%lrR4y?6;GD{lfZj z&oA#s1^E*pui_78{8+Hv`mv6=7-Tef@p$l;_d|6`W8YTFaxrOyOzhd0YS{A!R_};c zeI0D8i&wn_UaQRwjxoMNebl(Zo7)5j)mYbvnkmq)*@ z2HTozwI_=hTTGhZTTt<@%=klnvJYtYf6mxKcPIUnyqjF?EMFY! zkV{G*sW>0)H1XHB+050L{+i#XQeU2ZUU}^`#WLk8xBd3V0S{xhiF8tbKN!vw?d3b9 zjlT|}aCv^xZ&g26=IY}H$ETtI z&*cP}=|RG}kuYx{?CTl#B2V!RBj-tTbCP?L)ExLy@>g@?tEng8 zW$LKzet6p z6Y!qM!|S(G!8l1?V0bNQyUclCGRBn74}_i9A7CDI>W8&&Py4X`?dv|=_xAJ;550Z; z^~t{}k2+)5lkTsDqH8$UzQ+4MDZ1u=KT!Ghe+yl|xxC1lO~tHci!lpZv+JX4?wTH5 z*QD%QZnfUDn*+;p~LZd!G8>^PPatr>PI0 z+s>Yz%3Q>h`0Mqw$xQ{}SA1UIeiLyP{mZm#m7(w};(K?Y^{ap}Jnfgy8-lkUzBulT zz~j?oMw)td)z|#|1nqdKy}KYqT72BLrit+9+Xo+%->UHOW{qb~d^%or#{}W1n;)-Q zH~}pbiC0bZjjb!4_&cQdO!OTpU2u)|7n;JaH1XRBzwXzOuKwJOHwL4uc)a9uzP2s- z^Gw^;Oq+}eiL#I{kAGg!$1gXMzm_jdBYAlJG8X*4Xk9~P=E~j>-}C%^65a9Xx26Bl znfV@r`RXp((J<{O`=Y<6_H}+})_d<#R{Sx4e{4UsgF}b&gId9d9M_PX8wiO zt_Rx4Xc#$~@Oka5^-uZ1eu5VsAwASKYR)lV9#!0&$h=I&;HkBDRZZmpipR^7nV;0073FxMc;}1n2=SG9Zrk?n zCupyles|*hs7Pe;!!Il97w7Z0>DBSPez{WJohS}klf1I`I@-XGvo1Mz4Bs!;F}7L9 zyO3Ak%~9r!l#f66?jWB+pHX?N^=mWlq;F-)-|Gsm=0#HeURUNuMg!}vwbGLZKc?M! zi8+NzzRCIGd;0e#u76FP6Q^kidvb50GTwD`{JehCr}D3TUfKI_dj0bO?*4M-L_hfP z?BAU`e`@Icdd6OxKDfHdk9U-KY5pXv_%Y8g`vmjK%!d*d@0%(!KfnAjx6aA>^3XNM zqBccqo4Mw{z%J+5SQ9Yw+Uk%01>@2GM4cQV9e@66W^I$aO7~?`Q=+f2=JVPp^UI?* zIhTKdf1-Qo1I;%VkJ&quasN8T#UtO*cP3-@2l(mhQ_K^pkH21Rnw>N8&o+DWDby{^ z@n{cE8Q;hi)Uz9j-+|vZ`QxWcX3pOB2lMnD<(I;YTxRAm?A$(OK3`rY-#7in16`)? z@>B3UbxL9R=}EH}Be-WkZ9=UryV@h*@6k@OKcGHPZu9P=`>6f}d+M4f-`jcD^Dg3@ z#H)QDX3ju!wo~|is}C`W@mb-iDEVCCL|>d!M4LIoIX;*FlF_XA$ElCnukG&xanSo` zcN5gRz5?gP*C#tK{>e1wMU}<*q2l)n$j5r-rM^i%Y5jIF-)_0Zo7L9~eK%fp=LFyL zk=Mr8sfp&dn*K0eH3xUpCdnVAsp8}76Qt{$fSx;-^3E%s`1cdn@rs^Ic>H$LuUn4S zo{#V62KyJIoM--VVaXkfo93R1RD`L6^G<1;IKsS)*03h=>Q43_QC}1XzP&4{OI{gN zJVr=MZ_gfniSG4@m>-Lv*Ipl)@n)s(iT@Co4?{JC8(=CFF_z;?ZmW2#eU z2eM3YrEXt8kz{qiyQ}`-E@#(Q_SKM}FG|i>&HlQt*6fk!C?eOuQ82|%$&Gw7 z1&>hd=ZM(eJt)%kkx5%4fblEn@gbQ?kZjqNk&Hh}n59s|Du zt_2T)OTe#zMWEcfNVw(RC`i7<&Kq=7pxirW&^-&vy?#*cb%Sy*0m?n4&o{tBAW0c( zH0bUFeUu@8w0g8XRK{pJF{|Zdv8#Cx$0>yXHpnE|?`1(Pme-G%TKdAJdXU(Tu zb2%pSGv$tRK=!~!%k}(#%QfUcL^x>=Yh|HVem`f1svTA4uSi?0T5CwY0&KgcVpBB(iWE=wzvV{Hq3)e;YuB_X_Qo!aHVgTOX+K zc7h6T2gonhZqRK572Z~Z?lBSJI|Pb+gKj-2{+$NhS`p!^HuTsQgKo^wW0eNo z4WRgzfO2;cD5Ho$cOEErOANZjBEolJvEw`irohACAjo(oHek^02bCm!2Hiv8%kVXV ze9B_`47#|{O<3-JpFwvuDE=je z9xF5GE;963#GpG56yFR(k4-n|h7CPdWYBd$@eMCB?Z}Y9Z3Cd<-2*CIU7*6%Y0yo8 z3Rj0gw;hx_ZJ@pz&7j()xWR3Wpwe?INS2f@1?k$ACsD-LZ*W^XNEVd0fu1{-9=G&H zQ1z%DlzUHu3TGv#a7IBzX{|wbHK=f|H0Uk`70yM59*Y=s=NWpe#GqRYiZ5*Fu_A-6 zW9YFf3p{t-F;ILLK>0gr&^>SHv6Mmg94NjaLyw&?=nfisY`~zK1jW~D=&>GyZnvSw zx(vFVp!nJiJ=SK>Z8h}RF@tUkD88+r(z)8;wn|Xxwh~mjEddq&GK20SQ0W#i=*|P> zP7!zz94$5VrXPF~eFyjj@UX>da4Y(ipz2qN)nAF2`jr3`o(_ZC8t6PLKWjmSD+VfD z8$fv-HR!GdL+DoA(VNm=R5k4jUQBeHn4Z0~%{O1h1 zXF>6wG4$A=L3hB=V@ZQzr!F!zq}fxD3xDe{3O0ngWJx5 zivJ*}@FhWouiv2C2P%BM2HhS|{&pIAEMd^?F!WfvLAMPQ-%e2e)f(Iu1r^?6Yd*u8 z7l999er2BVZ_J>30elAY^Pu`^!=S>O1Qp&suvFnQ==OjLZ?{3W3sg8d3_aFv&}}pH zSgS$z7%0BDp~nszbPpMNtkIym5A@w$z}z#L#192Hi!V_)5UZ;FY!9A4^%(58!X03mqE7^ycvDMpxXv+ zgKrKJU723HhV@&g9RiLH9f;e^LhB zbD;bgGW6IPgYKZA#|8|#NzeoVweg5uM?YVwywN1@wl=&@r4-4;-M zx>xNGm;%274uh(n-JrtX3Cf*>LAL``_}dM-x`$2f#6hLQVT0RZph%Sl-3`*fw-(fQ zaVaQwmKbzrfIBfCr7=_aO@X4HGw2S32QVK1{f~hPe=~^F zvA99^FerBq8FU*#g{$7sV>=DHwT2#h+MuiZ;>5QBl)Gy|xvTr*KzAi5cb6J;mw@7* z0ebP8;W)d{4}-EdWY9eW%HE(scL0>V9#H;tf#UBp=q5n%cNlcrLGd3m^jM2Qx7pBR zaf9w*P<;EqT5v6>@7z3aA6N`hm0~jtdiUAAfcZr}3KZ#>?zID5_V0S%zw-v&A#fXf z{h+?{9iY;`1yuOspu&IHpnC{Z_!|wn`#^i!23_6vCwof`x=TRWD+3<|i@`_0>7c?LHs}_Cvga6duS_@gbZ_7z@TWle zqx%Cv_be#>VT0}v7=y11RQu5ZDxNK%;#m#K{uYC743zy!gRbr!jKQaS2F16;pj!rt zZ;?Sa0>aG0?~Flr5R|=sLyz?tbbAdw)??7^2F3R@_$a7* z4ds3mBxz!64Z5pAxxdn&yA+hY2q=5gLD?$;WsfsTLifrvV^8-YV&A<4%3czby>3wU zI>G6X5(eE4Q2wr$K(Ptp;7m z?Nzup7~EC_%6~2`@WP)075-sx3igH!x@SOzm%Yy3ccc$ge7I2DOV@-oZ@1=c*1Q?4 z$KF1WU#!8PTMJfVUJc5fEe72U;FmEk0hOLbpu%&7z$iRp2Hi`b>|HeIUJwz!l%dDY z8FbGYdQA6D!tV}&;_CM95$sON;eh^f;cY=y%E9kioPLlfu-8ksEZ_qsi%6-Wzm%S~Z>{WuY zx51zr1!ZroL3cGMdrJ&GR%Xy$WazPoL3bV~zB4$s3G4+Q1SP**?zI|pwJt0FYeD(H z6)b{YZP48UieGZ%L6`k{#(z-!>}m4&BL>}hp!g-%T>QnL!Vxy~nB<$|zN<)z?+P06 zN#42mdO?NL$~BL1-pZr5gN3lP8FX8Xc}#N8WxoZKeaSx;-ywr;qoK$48FU*!@l}GG z!PVeH;1WZRl^Jx4L8Y4ltMIV*#S5?Q8I^y7p!^vy=q8PMtlyy9CnEN`LG^!iuc(Y# z47$yr;vYBY9u^V4t)TK_1E}=Xy0=KH4Z15q*;{JRT_PfU5krs7Gw7BWdQ9ue3a{j` zi|<^4iSK|#ty@2Xc{iwdc39N?g3=$h*kJK#Q0b-p0-~?Adab`JTuThPi@?u8*NVIN zwSPi*9u!~7pnDb+-w>#H_koIc4~W%Rw?VfH62U=&^Q#ZkwUUS`E6#K=B<0 z^*yf#^*!GTdi^p`{wy`{v|Ui1bN|35#)ywHBim zBNiQtDJ*;TEha3+E!J9$T8vn9ET&9&Cnqf?EXFO?T8vtZSOnw*x0WtlIi;X%3HOiLwY#u~yHGm|yHHbw=TWX~UnsIAwvA$Y%QdiQjArgx$aOdmw; zpPocDH?dxs9_J?3<{MgWz_m}sQG0IaMeVww8}-}`Db(Q`&Z3Upa0T_^4VO@dW(?1m zQgC6$Mbx$%+i%3=#$nXn8~ad4Z@O?3cedVi?xv!`ftvbW^7?vWjya~8E_?lEqYjn8dH?VH<=+B3Howe6O6Zk9cEODk&Y zyta98&O0`*s4z9}{Jc?gZMU}H3jNkr)PY+EQTuOA-da?6@zzVXj-k8q={UF1Ui$Rd zr%8kP7x{mF{wQi|q>cM&TS||W;%jL$YG-K|YDZ}Tb*OY0b+GgdYTttX1%zfnFY5UP zqp0T=q)_7vn-`J_3$83EDoidMSU8C8+`<&<;G#2&i1nhLMMZ^I7R7ICzK!&|trNBV zwhq*`+uLs^%(u6q_T1i!+I4$3>Y3YzPzP=wL>;~T0&42^^S2ijww1M)b(9f{vN6=I z#odc>Z*eE;@Zz(mXBH2kcHPl^2jRaXfjWA}1=MqQq)-R$9K4fMxifhuE-h(a(y;`y zC4;DaOZrip%Uigkw~yTsxKZAXI$C}Kwd1Y?xAq>ps}=RkT|=nxyPNN(RNZxn{~b#c zy2p2EJ8Iw3e$<|&y{N-W&!V1LI)vK2tcP2EJC}8#b}#Q)&j00IsArd-LmgT^jM}o| z*a}=;(TsY2#VG2z6{!_Pg^87&E4!%GXI2iO4y+tR?ON5nikPqJMD4k!_a02{=|(+s z&k*XsJ%gyt_qNSaGpI>-0QI~(ih9mXp|*Xt{j;RzXIoK|pB+H$`)vPbiwZj`5*3{l#AHMF z27KAjxuK|Vc*EHZ=g_rnY~P5TjjgCX8+%c^Hg=<)**JtcuyGJ|bmIlo)W-9u%@4Lb zNE|oDQ46FIY~3$v)Wmeyk0(_pv_I?#FsihaMY79enHz>V?NHqMmY zCyzZzh@Nal?R>Hewd2VIYVyee)V?SCpDZf8@Z`lOFQL1z_2O2_+tzca$uA6ifmC=Z z`4r{qsVk@#pStu^QDNT~`@fj{B4*pJY{P8ZCDgVrwSS2;|57Vz@=F7#eP8NFZK*j{ zgWomHsGT)ks2w#4)U&ncYKcYdFzTh+G1LpS7g5jGjnwqxiqZeV>f@IGhUJF;HbCx27(eRy z9w_^FTKbO}j7tBY)%RQdKUn==SpAQzo<5$(KXZlWoO2WX71{s1rT-28rEjqM-?a22 zR?qnckABSBuaTbc`TI=&TJb^e?<;-I^50|mPucKPSp5mBf7t3Z4

    ^xB4I1^!dEi z|Ba=;X~T1`^!U+f=|`;IzdzwttM9S&i%LKE|HSI6Ed8|A|4&OlWA$N6AF}$Cjn8jd z|6h}y`1<=`U$^vKmVc+s?^iAVs>z1m-}kyn{$c-c#N>zO4-|iH-1VNH$p4U2~~Faa;7HrSG=!Nm#nZW1|0+rT>xW=r3A*r^1W=1FL`6 z(*5#1Y~AzI`#(#MoBn+h+n86-y+8gw?tjEB=^NqGa|i#W_n#eB@9)e0x5P(ue;@YC zln3dD@k7ryNMGswec*3c_x*jivDZ z&sx2|@A@IaA%1@!?w76p>>bAbOsh{UG$&=+@TTc8xo1-tx(chZm-j{OdkLTpa zlpOwrIsC;r;k`t838u&Nob>%4IqCUZIq}gvP0;>(Is6B5`1j<5@70{}sGbJhyE!L( z|0~D6bvgXMk>j4+3cB~Hobvi!PWXS4WB)I5=zo<%|AQQQe-8b{ob>P0d{&$?M%Q<@w|to3dw| zg2#X|9R5L}%o(Bd#a|ou?AZU}zQ*jkzBs!RG^?t3bVJSd7aMmS$hDSzAJ_(CFWYea zrY)5ltNi3}YO>F8=@3{T*5ipa8>^~x&?(oV7wPojuL+&VW(#<3&tv7aXla@BGsm=Q zcBd~i^U{4^-Tu1gIlh%^u27ldR|gI@)HUwPrF$o{@{>HP-chXl^zo#<2M#pUc*nLH z>bCD{*u}}MLyi0EcG#QO(nV3{*}MQBAicRaY(GVnl$G(W{rmT#%}#p}bp9=G0_her zpCQMdf0}MWdp<+W`l>H%seY`6pzP%Eo3G{4HczYj%e=sQy1o#L=}N25woRnKZ;pf{Br%l|LDyKt;$Ha!T0yVj7d|*k!n^ zRbybAQ=mtj6aGR7rK~VioH) z#)8g%ZsYo@jn(7LH*VcB-cYS=WyR+z$5Xa^?%_=v@{=BY?9ufb$J>wxcs`zh;i_dO zoaR%1*J|RbZ~k5P`hV{6|E%)=tn{x4HJmFv?Q);WpX^IR0~tVFziY?dhMjjU^O!V* z<{r@%_e3(!vU^vrShH%`iZv@EkyT5VL0G<2)O%K9z_V=C$~DWqfBEhatvT4ZyWuYO zW2B#a_lefihj$`|g}s-K)-We}YQ@0QB0D_3o^HPO9cUTcdp_=cqQy5Fez_+nxxc|_ zlm7^=FchPH)P179J2Py!I&KcyHf{$^KI%TvMbOaCS#el)j1*W*@&w5dfqBt_B(&#Cn$$QayN*EC#M*PBo}6- zuTNRIEB{)y*Ba1=4@Mt_sC z?A=umd9i*>Ver#1UmPmt2I7Ehmh8MXamW|Ox_n_Qyk;10oXVX{58UXyz}}7OlkhIS zZE)_NInF(wG|V9@Lq_R7GVh-m=1CKWIT-IBABTwJPoP6&~$P7%=3MJcU4swo4PARWb z$o`7z9wX#}RdSEf2gnfXLsr=zWA6(=H$8iq`*6nFn{$f&I=!zVoBH$P>}CA&{gIy^ z#08=?Uc6%3OKggp5ePoW5K@efaC&otsZa zSSfCO_|g-ke>M5=Ir5{5e0lujmAzZ2JCic<%ma1sN96A)`TKXbI49SWzZp4EVJ}Uy z@_KzCc|8R;!?->EE&<70zT(LMn{?{kn+r~kTo*byMm%39KmLS#NKpn9Cv*3yk)zE1 zvs3kjvt9{@=I}bN%)Zq*{>PMsOuIk()REgwT12fJ(iG{byRhCtu2ms2t>k7LIpb+N z(BH9THOV)`@arB`BljwjHbZ7JWyG`3{d6C<8Ko$KFvF#Z3AWJ3?>D z9^YM0um83D|9#}}sjj3blOxwvcy;Fd>~$w4cS}5qFW*bGx8vI4(#4rPued&w=f%WD ze#*`X-1onQ>G%3DxC^unFj?341>3pr7?B~m@ zQ|tUZogl9r%uODuZku{q>*qDH_WZm~X65xvFJB^<<>qxfC$IU&rt>;MUaJoNbRl^? zrGh)GXPwHbKa}|&*>ZHPJa4-Dqw_qN&qtR268Zdw?*6!rHeot#!}YYypW^O;r?vKrBk(BAoN)-Y}9 z&(;On?S-Njr|BtsH)>Kc9m%IbWIFyF`=juw%;%#UxsIkzsU2m1CNdn2e!}_{xcgD< zYbbD!Co&k{n)rSQ$sv7|w0nd!jM4TXKl6>u{Seo>lP7`P%qGdubfRl2DL+3ay_JTi zi%dSwZ+G4=oZw!b()$cg3fYmTBPP7IuQsmjXbRkoSOITSAZ`xzCRdK?2hUc}7W@~l z&$he3d1dkYHLD-^uJc0TpRQJql8#fc^YU%7g9 z)dSooU5fl|zb_do(swR=>ZrZ%Q0+qUcBgkPZr#GmP{+I1cOKYL=p0{z*-xpb^xw2x z=k@*OhN3Ut_Zes9)dJ`JpHBJhZ?Bo+-1y`|$%DN4R1VNk{x*Qxgf{u1SdEZ>($pEfiu$$0AX|AS@IId-6I zZb3(8d^t^dtAEj#;_AK1?(wevMO))|Zk(U%sYbAiFwMS#mH9Qh_LIHj&-)2VGhdPuSfq8{j@XT zcc7zIV=%e#!+SS1op)x=q3O$Pe@$iw@S-qZFOahiH|3E z;5!LwJy*?Hu;^N+rm9@9YReg-&^8&7AxN zg>xQU_ptYjPw#nMRXKkP=Fi!@X~U!W3+FF#9!9sRQ&Ya7*3+;l4V;eRSy72r)JkXm z_Wb!y{kL1(5%^IEeFpLqh{GtT(`TdrEsm0-7zO^V% zK%ei+88@5&%MV-pqXb-LY1)YQ3t1cveEZ?h_czUd7zV?ZUpNf<-u!s^bjUu?wg>(E z{LmV1{4Z>YL^)ZO@8cLtC(8BhL)PARml)1)?)v=#vi^qy-~Vv-KL29%#dmkH`rx|@ z`41Pti>&Mqy%ZHe68QXn}1kAJassw%( z3FXgzwHUAzU%yVz9BO~w+OHVKzQ7hp*)aCnN2uR${!dx^&Bob~_!ZlN9L~SaFX~rd zV2FR#3cOzn>0r(=#9rr2^|SrS5c|W{{=_i;buL%Gu3_ve7?|kCn8v~B5c$V4jJ?j; zCX3$~8ZKqoC|tr3yr89p(A;7Q#9%Dykl&_dat2bpxu=>!QPa@wFP{S$KEXwcIu zL7i&cVfoB+bUv_AC^_4~QshX_#Aorh!Ju1V`D?)I;jcF6uCn}Ma54N92Hho=UjUNl zk@*JQJj)M(v*1rP=t_Tu!W{$7gda5MI+ovq(gW&zq}!k?eHL;rJr>u&XACcNPg%b7 zT3ikPxIy=rS}6M* zkbG(s%0AoDLfNNTTF58Fh+}CXw0oY9k>Z~-=$-`|kSCP9PD=|V?-W={x=(_%&BzIZ z?lH@62N%MZJ`d1sw*14E-(>mwEnoUQXo{YG575)+A^AJtFMuC4=+;{I6&BZk`Pi>E z=teBR7^E>qRv2^(Ex!Pq4}ZQvcZTIlFNngEK9G6XOCJd6_OVzceh)}j6X`bSc3J*e za4!5#gYHSoKW4EFoP)jg)r0O~Q1Y5Uy2ePOL3gj^?*V7Smp&2D-C_B)7Aq{4fpj^M zH3r>cQ1wHoa$I3)p~`m&sBjBGwZ8&`Zl2}O0M-6N2HkAS&jQu{q<;i-9m|)#ko%*^p2?gN$&{g9s|X12i5-C47$yhe;B+Hev?60`bp$|FR1pn z$Dmth`8z@C~}h!Ae!Tqjas(9HwaB4;YdP%4sR(A7&q@$RE@2k&nN zm98pqEbb}{x@F+Q@C!kuD-TqAz6Ar2j(clKu;&tB=l}t~1hO&}{+7 zKsOt74}+4w1C;z)Q1Ul`H2p}GLAL^w{4#^C^kPUp-!9ZtBP$HL+FwOgjf^qq20_V} z9*k3ZuYJFd3uS){EXKc3_U)Dy%D&m4r_V$5UTEcK9jN?_ zf;92S69(Pwpz@*Cpt~7VK2(8v|CNC>mB<={Zi(ebK&o=2*q|G>{6df_7%4F5>HUzL z8PHUTNXVd@1B#ywl2sAffY7Z%DD5D#%;IW`YG>kyLF#d)+M95`MYT8P5t$*7c|)e! z8}o$BERZ;5DzdXczCmf+k$E1>1G~WMz*FGW;0f?5umhX{wu9G#YNyk|CU6?q0EWQ5 z;3BXNl>8_t`P)Is-wb{RECVHfH7NP3K*=u#uLKK0$)68OejX_KA&_xFW)?`EW(L89 zpkq<(oASx*0vWevvWBhkX{P4E!V@4#&ujrrOV@)bURBcm3}EQT$HEIJlD@yFxHc8d)b zqZZ37hAoCH0-nE7DOuU0QbOq1C_s-xab#4=8qU2x5e%iFT`co=g6b4O-fCh@)`irJRgj%if7v}Uzs5$dIV zm%_QU8?$j-6AE1F#_t+mKOW!XPhg%Ke;)H}b{Cm-I=d5PF7*@kOxTOkmOYp4y$n?Y zm(^poUv><$^|Ch1V-q_jqD)|759Yav=P~PYcIEJ#a~?A~X~!h|PTGsvH0dyA+oX2P z6O&G2o}JW%*)ypRbJyg0RJSxtZp3Vv+=_W@atG$=$(@+>Q}#?D##5RwTc@;Pc1}5q z**&EPQ|evF*QqU-$EJ2*o|<|ZGkW=s%L(06_tJFvVV^O*5!WKK`(oQC{q(dqb|E(P}d=J8U{ z`Fa2MC0+_Tul^YZHTq4mbb+Ohs?lO!Wa&HQANn>+Pqp-2mTp0Y?EU@N>NiB+#NbH3 zJjtWs`}?8UU*g$UT6^{PvM-xx+^-dl|ERUU*81P87Ye^0TKC(ndyVhp{`=Pb3hTbp zx_?UXA^q)ytKZLT`gYj(f7Q~@TKZ<2zHeH3oTa~Q>2F9L|KGFpdF3CnXE12g?@Rp4 z{%1BmKeg$7)zVj6d4I6<8JqtjtUQhHI>C#M zbFa1kwY8sa>Hlr%-`n)RZt0VjK4a-0So&Wqz17keEWOC4=Y326!OHKk^b3|wv-$H? zO9w4|yQMF&^rezdnMzN!e*3KbkF30PmOf7Q8ouPyzA zrGIYer8Ye;Sz7ZbmB;_E^ut#EeU`q~(hpdAtfjYF`ht}|)~4?lmd>&CpICZ|rK>C* zvb5$s%8z!NA8%XvetY|g=(zgl>!X-q!w*~cb1dCu8RWjp5I%E{skMJzkdEZOZ)5XpToZm%8Swm#6O;X6K*^`J%RoW zmhtv~lVC6XhVk}l*75ZI1o{WWFW&yw5b^ZN1bI^u=zmX;H#5Qih6MN5B)IQRa6d62 zKEFzE|91)QM<&qMC(w|C(sL(uOFaMAlHmT{g!uj~^)cT4FYp*oPfPIcl-{$dX!%Oc zopD}z-R4Kl8B71vpm$t;@VWWKgMZZ5&wR=~mx``?m^0(PADv>Y-Beq?q4Y~zt7~g@ zk{V~`xb&(UZqv21&>KC5??;FEb>z5~OH(}yFGWcXJN~Dgi;h2(X-+u%apC-Rb&U=g zbJSHi_kZ!s@o=d$TWt~xI7xOGhox~_OyWGnabt@MN2K^aq9^IH&mS{Qp;5PQmxJ@J4yP6%6X zu_yMCS>A%!6Aw6!9V9MTVBb6HR!g^StbSnA)`v^C@jhZRn(ukw$@84=m_yFq-Qjn0 z%Gib*ds-NKVl$hyWxJdI&uxv@6x1aq?U%N=^*hZMT^t;o@u({R7dEMDo?W!?BR!+NckY7NT!ebV#G`&mrW zPx2TVIjdQWJg$T9zEeu(@3Yc<(Gkj>7nQy2iH2itjqGL@7s6eISpHb z5vTW~$CnYGBF=%l?4NhtLwNQ4$IcU<8Drwmz}dYbB-jr_9d;a=^7U+dFX8~SOV zo@MCgefoMszhr5DU;Z1={#j_k&(_)7GR|W-v%|d?JBNE<+{NuBGZB=LmJzI}<}I^v*ZuU0Sz~ zdfMyP7x~RibGD35cS!J2Rrv&|io;~YqL+wX7C3|R3zT8gg#vANk_u|Gr z{JNCz;@rRGY!GM96^8H55C3h>UVX;#f4${M?W**K^kO$y;cj&eM1Bjp9g%_zowF_B5>Bgpc}LOk4)H;c|OUT=70i z8xGKhf5qPX_%`T}XPlj*KXMMKJR8(T>683?`SD1ngiQ7F-OsaSHeYjt&Xxn5=~w#v zGbvtKT3#~uofDs%?6)`7*JSaYX3vV}5$8JM9N_Gh(vV`$$(p<P+d9_d^C4l?uhUf z`tXt{eT$#gwf4;ObJsh)6UjH9-^n@Om#keByAbmK_%Y|mchh>Vdy(^Z?M2kvV_sg?-52iVy_g*&K6Q6Hz2AA> zua`sJ#@8csS5j~EK1$(ipw45ObC){fY|dL|A6gi2Ud(o)clhUg)JEg$g3d3#Vb1^= zS>`-YqPzaoz^jSn)jx{9hkntV&36tRAU@woab8T8FXc0m=i}h|HIQDy^V+k{nbti| z*~gvDA+PF}@!nJ%6;}8U{RL6`?s{&4)B6JFg6kd%AL*csCveVGXXyPp@jQ7UKV^J& z%;ULkqjMxWO#gQc{hyz2xxuV0<v z5?=II$}841uVv3u(s~oP+Qciq-W;Ld@Z%UCkIvusd+{nqw(>8Pf2B!bRq=UM@fl4& zS4X-!3m2rOWJLFjizaKq5H2;ZvQohnES>AZarkl8Ud8_>Hf|na` zF6f<9_xn-T{u5~-&szdzpWvN2cOWl{LIeFs?49{?3g^#9pif{VZDWtd&Zu3M}E;Tc53_2F@`u!y}2jF$xieev!|Zlj=gBbUw$6G*?%7m=s?JI zve!@R?JrRrl}7d3hv%SU2E8Wd=AnOO1o7p0dQX2zajvtwYa;Dq3OLs3eSO);EkVZQ z$NsALv0mzr-gR%%ANciM;r0-|>iIRu>bx@CTf|vs|LlHru6cJ3N;_x0=X}ob;*)z7 zXOS8Eyg1U?UA>mPrCu%#OnB$YrA|pT`IYOWuXn;~`;!kTPs_$TB}Kf`6mHq2PRs8V zHrqxN2Pe0^FhJO{dwdl049+*}%-#XZ>!dEWqefml#Zm6W3ypPJBt!Y5eDL}Y!t?tn zxodZw0>!~Uk6adXJlVdR=gC*O^JH+Y(@Ap{6)`5OqCU{}wsi5{M?c1_s#I;c7F@TJ z6jCS3HO}L`9HQ-=A-$5_z&XoWcp`+e12?k$Nq|`f41WE`oB9D$iot6 z{riQTjOzj+Q-?#uHJHXZ+V$5KzE8gAuDn*$e)>mKF4L9{uA8(y<~@wD#}4L8Uw~h4 z-$zHwzi?hw?X?%(6YUx8i&anjytM`5aOYk#OS)~;3N1*zFP zpBw2c?*5F^8%=3n?913Q(s@-fYJZmY`R6j6Ezi&fp1d-3OIUd4$Sq}*_mfLUZaGfB zd+lh(xN&JZ;0}(vpQa+_^YQJogS_q_uY%-75It92UvLhFZT(P~Z;+o=jCW|OUi|$$ zJ6bwej`Hg%PqumY{FHota{0(DHzOHelm8Na9lXC#IRtXn-%46;cAg%W z9!MX(6#ZG#FL6rN-WcvJWgdKZtW)wV@51@{*vG% zXx_)A6P*0NCoUP}#XF3>-oo!}^ksZ~TE-!CW9(kfyQQ4A9}HydWM8@JMywC=bqR%j z-e17o&%GTso{FRY9`y6K;phE7tGb1L%?ZA<{OA28&yzoYZ}T$Dys+yd#$NdI`<7+M zQavPXTc(lM+eyFd*QKNkddI3?EW6R^twNUaNblPpQ`fX^RKARNGVNY+qMYlm;yqSv z!+h$m`%CJqpH~$&WAk?MzbK(zlu=(htUFI8eRO=iA-pX==6#lD)Bdub4%?Tj%-Vm} zzi1liRT$;;w|eJ$X`@g6MmFUP@2ym4R@K$PgD>D;cKi=ocRTt8lOJjyMZ5zukeAHe zfi(l}rp2`*hxi3;I=(>|+Zjh{{FK-Z{s=qelj{6a%vxr#Q>MW5;SD@yA$`p!~hB=dLRmVvYe z$di&`+?}!VCGQM#qFZnm^vco6?y}_;0&g0|f8fEm_%RNNkKa-9__|^IJykOhzoUdZ zdpLL1#+~}sc-d!=9U8{Z(G3H#&yYu~^(4)sK-jqR`{lPN!?#{@4kqUF0m2%A4AoJ; z44r@PUz9B0i|&lx@%%7lS-x!`UI$3?zxDM`)cRrK+Mz!mUla-V{v3Tc;jFtptfRi= zu^y^9S=yy{et4Ak(ZXVX-Z!w8=C7kAi<_U`cmKgT$UAaSekzSwv>VOWllgtB$i%&g ze(K#H4D}x%pN+r4Yi@pglC3{z%}nbanu9KN9IyST&p1k28|cq8SNHo$$yR@M1|IG8 zS8v+21NtEPP3J-<^NeKk-}v>GPS!Wfx{B2wmFDD^t3RY|mfs!jecGkVAPp;+r!Qyi+04`5M^E9I z(N1qK`V2p0?Ox-^9`qV2PTVuZyfNpH))}6v_#HLADJ6WGgGpZmSG zyh&b3-&ZI9n)gh{{fFp+2?dt^I>cK48RR~h>Rd>1zQ3>U_Q1?8WT?;4dgq(SIE$a( zAn&)V!}z-7I@6pNzd;`K_XiF#CLk^&32&4a$7zJ0hn_Kwr_Q84wNGi7gInoq)4PfC z9j7#?UhibQ=chsGiBCswZ~u#m*YqUu(pcp;Hg56paxSs!;Koh0Snqc%-s=Fij zAIbkH{^h>me1AdLkBScRy)!!qFP;CT^qYU2^6b91$m{E9TOY8_$y=fKjUPzXWu7e3 z==EWp)ZtFe*X(%R{|=+FRl8JwGcoYoK7Ty+^b^J(@270)#;<%md3abaNRNon*?mc>$ zb7cEJryP9bdgsUl%EiwImC4$LCLLwdc{kBdG9iw$&pz~$Z+|uRwBrWp2PJ=e8Pf}_ z|5@1Mw}t+JdE1ti^ly$W-(a|4XVra9FI)eppe z@9kX1Zr^eaK6snc`yBP+3~hfM-%%BZvv$3f_eR0vSBHBaC-175%d4Hfk2_y?rrPB! z#`&Kk{wgp22aRt7-!^%oF`D0I6t;1z_w7xj;YQMO18G`8+LqI=EjvhBz4gbng#FTo z{Ym@e197sChD@KS@v7EUKVR;1sm}UW&?ET1))A09&HE-G{jNqgYp8cXSDpHVH>nF}ZTkuL z7`r#V7N+cmPd{tiyOO>w9)bH$TdglHf(=UX3X9mK(O9QM)kw-I!DZ``R{n#=@2jx(C8smNR z_~(iDD$4eDbor)v!Z&Po~I!WDECf-T= z%GVk~@aVIXb3f1gn|>wtJ?55tKdGYbRMC#pSr3}Y8kFjO24!^%>lmyf)idtcP2aku zI`H*<4^i(~N3Z8>=I&DZ+YNzT`yPUS?wY{Cx6qgBkKf;WhWf*QfHh*ph5p_9exc{8 z>5Q+)f4|R_zc6u=-O2a+Ut}J1#JBU~q4rc9c-H$y?uYSiLKu{5ER06#x8(6ZsGUu- zd8l^w6yxE&xKrMwJI&)V&i{Pe&E(I_Kz2s%Th5lZS({yYYs!|l$A5kDJ9_@pz?SL> z&rQyKinYY?&rZJO{ZZEyU+6DrMg}@V>2uO)ml?FrWcpY~dE*Sf5ALN8J~KM?pz31V zLi)c^&X!ju4D^2!!b^63XTm_)t9`xHVDcz@nRy@UU3un(!0sPB6L_`p2Z2|AOW)?d zEB*JR6LJbZ_(IA-jc1y8-*wHS&Roel=snJn&yI}V!J1M~D#b3gcgH_@+9<-Q;ZN#osRs_x|H}rzM9x z4~?PztH0JB2;M)+XTQC@Wb0%n^ZQQvt3*EQR?H7gAN@b6&rK=LJFjFqC8|rTwY@X- zFQ47l$rvwjjX_~3T`4~_>3Wy=FgNhxFpW4U|9m%Vt((rzvR?6C|BFjWV?*kFJ@Wt3 zpBeuR&)n+nh;*eOM zl&{_N(LL0Y(7*LBswO@fYrgh&@^?>pgNS?N#Yi{PJwN zCt&}gH=des=y{trCjAo*y=3W6n|8kp{qj}1r`x<#94X{%#UU|nMaxZ`7qRxD{v=*6 z@_?){P5dE`%{ckH8oi=Sg_oSvQ??tK>Io8O_} z7;hiXp+Jtt20_)CJ2VdpV^6#Hz8Td~*A}Yo5hvwu{G69@9pex`-h=Iuttn{liTce$ z>%vFM$b;IHa4!S37k_+B_(;}OvTODty`vf1GMHPN{i+#ii7q) z6ti}qHrK?rM15;kyAYj6K4^_cCV#dq~CO8xlpukLNod_cP2d+mJS_vF!slw}|3@#_maRPT7B#gv)yTj|xm*XJ`{ ze}yrG-*zU3uiMGFCO+4i`4P`8kMaK=ypiSM_S`-}!Y+c{lu+QR^I!6F>F+RrK%d`KW(9)!F?n<#CdKh2ekGE!O+t z;edA!i`q>QZC&Y!;?577aZ+~t{yUYO+$bI0%(?%8a`D}MxJh>iB*xv)=%^uVGrpdT z&h0-Tj(Uek)?{b$PG3ft?_w!`ZR3$?zIO*n1O5H(rSu)az@O~vi5rjc&Dr}7P~2bo zT3(LxqQ>*N&gAt+`SwzE*LUwIzU#%Uc~3TdKloAkYw06`qnDCppXi#xK7q$ktwkNr!%5c|+w4ts9gH?`qm7bw+vC`G^9_o)R!ycJ9x?a-$gcC7?S;8f zXuj1khF_ff_v}05J78j37a>pIks^G@nvL9KaVt7H5Vs=M?fke^;kWB`=U{vsg z>b1@5s;iydnmc`vQn!!wvRAt()1K6vS(6zPhSvAQzSXuf7i8@9>V4>9E@ccxoJw-Y zizk0kIOuz_Kh7_D*~E?g2ZPqLwcg_8U+F-(#K*1RpZj0z<=f;y8RZ;$$<|+Aw#Id; zXMP=1-oJ^TPoSrnvkUX8;tnvZbIe6~B_*p$@3`Ufu}gi2aygMVUuP3b*H&*z;zT;)>b7EB$rz&w`@ZXbLocajg`(-H6dr!?RSb3Om_d|Hl*NyEJSx$`f{NFueoq9VVviep5TTb=7ePEt1tnG;`? z+;3WuM8uFJR8?&CVpx;J@kZs6cMWeyxuPV8)@|CzLB?7qvS}S>6gO>jmK(;Ll1DdJ zI=T~dp7bqy;fIRuylrm2?Boo%8>CBm-G)t^r}Je*Oqo<~Ews2G923tK zH{9XJHA!YvZb!lO#s@3oth`Hd2dW8qo9~x;oU53}no87$Z*`UYt7^RRzp91^)=1Y* z2yNZlA9caX%B`WQ@|sXZb`4R9#D9ZP`{$x;>ZTZF(S761g)jPE_Rn7g>+W3mqE=RYpT~#5sWJ@u+Ts-8BT5W!<7|^p`#P4JbtOX+RGb`ZG|ezYs($4 zA$jT0Q_Qn*K0CzSwsSlSzj}Dl861%Bc5Qiuv7q#7sC%KS=FY0gpkkHRY}%+Qrrb&z zO3X=y<5do_*lRpwiO_2^s_!JzXPN2?b3+AO@7`bUPHV-}>z2r3Q-j^B9@{oM)^vKS!Zuw#v zTPrK5WnObE-L&58#cHm19xi{B^UKv6HqaDmsW|aJ#z+p|4cP89_$R)8jNcs|huAk; z`&FK+q4uoTdB5T8S6Tbj!}w?Y!25L(4r7)f;n!P^^d=;WUxPhYrn7O${GVcQuHSb4 zllfnTC;g-cE?NHUVKAg$v4J7+J8kWy?~`%B5c@6`oAm4AKbia!8kz7@{F2!h=Xlo6 zl3~)ngTbVJ*#>NG8ban?Yu}3SWbs>tGA#X65719GB>tRryDrFz9XvzY2eY zijJEst2t{N#Y=*|Ye1%C#3Bm9s-cPgmxatylJ;4a*C z^8xd}fyXVjfeNn$WMCI*Ht05h3a=iN{5nwbcNlb|pqCzl?sib}E5KSX3;aCp#~5_e zK*{T#ZRDK;C9lh%dlrZRukoCk?tC;7!oS47zRLbGT~+9|!Bf z0_=AgbXS9_&k<1ZD>mq^0Jp$j0`f+fQvfQzb3oOHG*I=ck9MT`&|}c;1|{dbLH8WE z3wIsh55N}i5wIED3^swvpZ%cx?KSAG0KM?Rd$G^5*iO5ylz;FcFbY=59+W%wvwFB4 zRJt~Rl3QiaEdwQYH7NHHi#ed&2QBtpZT$5ZbkBjZ@3j2WmVXLVejEdpA8p_bgx6}& zZ2=X2vqASTsQhREzY6X#{7Ah)cNeJm?En?O67Z|w3X6rHrza?E>Ym6I_nJ(+1sBpyZ!4=$-)OuNmA6)`4EUz^_8Du$TwdL8n=| zdxohm9iYm+4Lkt0fXk5IY|w4A{QZ`{*YY=mlD`^Mc*T~UZ7~O|gdYS|58AIZ^`H(^ z{C601%Rt4u095?)to;mYp9B5?{&wCs%8$+9V*GC~=vIM}S7FfQJHD46tHH11J_4#A zSOON|uF#;H2Zo_%7<5D6Qs}7$-7HZ4(?Gs+M;wE0_cX)r0wwnp=wg4;pxXv6fo?VE zHi7DI8V$M);Pue^4Z3CEH;}Ui{1Y$&?&BDGvBCQbK;_G9Fo3^2gKkgAxa&4}e;25F zeiBqZ9S4<99R}TFp!~NRblX7Hn;e_;S%dCr zQ2l#5_$9Czl)ENlA89n`)`N@ix67bg2kL#Y!=Sqz+>XCOQ0*=Veh)l7#pK^fZ~^X5 z7<7+=ibsb*_ZaB)H{dt%*9a~ISAkx7EWK;8Nmm3^`4oaGpZTEV&o=1l9(c*0VbBeM zk{>koku-y@l&;HN-y{#+9#HO1fs%Uyl-%P6-40Ohj~R5?gYUWD3@Sclp!^kEy3o>j zV7}sG&<%l-Gu5D*11j9pIYv$gC^_w*{IwZ$TS572G3Yjf^0ys)8Y~0XfHS}iU>2zI z?Vf1(EuiAr1kOiJqd|8MsPJ}y^WfJRba#LXFKW2Hn-5{I3ETIz}P} z-C|JwR~U4|p!}a=o+I}sK&ndQxIwoAl>1`_-F8s!Ta10A*`Rya*hiWSx{aXR?FXaa z4p8xn8gw^&=c_@5vkFu=5rb|qsCce0=!QXsGar=uJW%du7<5CR+)p*==74hFH{Nl+ z40eKwUpuJq8!T3VJD|gs4uQ`=OV4E%^0E!OUE_?uW1!O23g%(oV$fY-?dvWz?n0o_ zmjx=my5C6g)xAc_M+a1V`v?SddqBnaEU59vDUcy=Ecs z4ERk3-3Czd_ZxKgf|6eW{x`7LVjztpdLbzXD_k7AZ66mRSBO zkR}?@eK(-H1e}I@-ER|uulsF4SNGZ|d~-DktlAkt&dJqL>41yaQ$XAOGy*!(g4 zR%qo<6Zjms*WwOP{=#5AsQYCYLPQD;diTnF3;qmfm3zpbn*#=*b-xVg>V6sJSJxQF zQFxsoU2x>IL09+1D4ceSZ6HI2NUK3t_rWM$J1pwH7nN^`rFFkcEj0U}oIeFmgB!so zK-KdKa3`pHThvZwgEin(@SC9SVUd3a+zmEnnDp)fmA)OI(#P2>uUPt_Ys3`F(~&-K!y~NLWAz9bQ5knC^@YlLxYGm;DK&4C^@=! zMfutUO3rrh`=Iou?gw?x%2Qwt_!yW4@@kKaG3cHTn*2ElZo|F>RCtF$x|E3SQvuyZ zP~kNgboYY_FA6F=?t1p}IRZ+~5>VmkUKL*XkphG6R8Zxf4XWI;47$2sWefZ+@E))e zq@G7k8+1>B6QEBTbPt27hkHQ9cNeJm)){nnfQoO_pewzzUOs~gXFf<*Hz(WDx@YBK zXz6K|+$TWEtp(}oBAX4m8$ijeGU!%-lB;`FW074Y~!O-0R*Ijlai$ zbs%SvJ$HR0Jao^4UxnXg=*U^i-vugu+d+l58Ki5CY%u6nfeNp}pj!rd@dM?r0F=Mk zp#0?-bZ3C_7c%HdpRxRY3BXVW6KpVEdDzTx-HiJ2~gqHf;9ce zW`nNoZ}IZcpj!bdyev@lW(-Id76}@3+2i7jf#&%^ej0!n_f zLH95y`RJhVMEZ9@cMYictOjYCkrIRM63Z_HX-bg-gYHzz z&jG30-n}rO8-%8+MbZqqS`4PhBhn)dx@W;h2&WVL3V0e+J#7S)&Rw9=xdWs~B3iEo z-6ue$le4Bmw-!`7!=U`l2IX%CNLEHd2HmNk{N)&QvqAZjK4i`Oopg?Zps@VsN&0Vwxp4Z6oc z#j_PuJext15IJnnZ35-K(V*J^DxMYK*T53PkE}B27J$#f&$Ij)mfvaeXJos@28&UP zWfsF0Llzy2okW7ak?j^6EJiJsSqxhYS#&IRns|(Cx7c7YYO%~>*kZ^cAQ4Wjue6W3jw4Rm3)ryS#Q3v-o4N9u7dv}j0c6GY5OswBX;QeinKnS_l(?& zq#YycF#ASCF38UIDn@6=^_KfPotPAeqQj7D!Zp^OW zIn0jq<6Lmjlir8flyR7gEgCW!G0$b3$2^<-Pm1YiRaiIn5V~fVxAm(3bQ_I4_9EcWVK>8U3!=+Fd8mx#N0KmejNPqtz3O^ zcziQvYjztKV4Tc8g?T*t1ZH%?4lcpy$?oI1by6D_R-B&HiP<{2jq54QwH13N@8$XI zlrFBM=$X=oX|AL=KJ^5bQFKl{i`ja4n=YNmJcH|z%Y@c?F%O9Gi9md>0 ztpW4ov{RV62*SSA_6M0RP-~PM?%;R|{FpuSRU^dQdnn_8`+CPgp z&)R|6GqVp)>#R1On`gCPcFsDBd1}^a%+_n#t|9){G-B?(W`u&+vrl0*^VNs6%sGsCe9j5XV{L%wuyqFdOGJ%_EKTc40>6?Z9lyZ_g)`{8r4y1x*V`8guW`{Y!DPw0mh9#n-Q{hVjmw)b_b+e2jIP+R0{)6N z%*GW>nEO{WV4hoX9`o#qF7a<{x{-L@RCg1xxOxB0z-SYd}|wK^Q|qIr*G}V?76iMv+K5Vw;}D${ddB-vk&w9o!yunCC5w1 zr@QL!B6siVz&v@^Da`YCbz|_(Q^Z1$* zYml&}6|-SYBj(;U`!T!LoWtx}6TM%3*Oz(O#@~lBpZ-+$JNWuoqqq_M>Rh>YoFDO$ z68$?%Z%i}v$a%(I`dejxm8FmK(iZ)=rP(pz(T`YK<9OL`we)W5{z*&UZRuw%{WdRo zx&M}>ud?>vu=L;Xl9&DMmX1)p{0MzU_$iYTRK2z zul(}&1L$rA+1D&I>F>1iTjv}4FZ}Q<{WTlkdoBG98-CRKUuNm=Sh~l`=WL4id&&Bb zSpT=#@|a-hRO^4ar6bmTsil8x?N3^|*V>=6wC<}=`ns4D=vQmw|4VCMYTc*mMb2-k zl{ebbFIo3;K>-Xo@|K$q|{WY7u z#WsDf!&dwv*1zU$qL*0vXKeh7EbZSfw9dM})XM*crGIVxf6LN8v~<0tms$6ZSo$Gr z|7}a(ZNq!P(*I`NzhdbF)_$L*HBVN2@3QgJ_(}8!*51312>M2AuWmv1Yb?Fhx*uWl zr_hFn&Tj8lW9ey@9%bpTbeW}hS^77AdMvH^zv6S$(%-Z6VM{k! z_itLd+R|@X`XeiUf~_AqI4OBISo&^D-)`y4tbD)!{GXCX9rE>2b1u=lkHz1w^b!4) z`VfErj^@*%wa-Ssui;m8v!!pN{)*PPSHEkmy}!TcG5TNG`}>8eapSr7T*J5F`}>{# z&W6{3KmC4zU%B`9GyTxY^Y>?c&&Jo^kG0Lx{{Eb$R$e6JiF5L;Jb!{s%m{_xBe)VB_!a_xWSuhjr|yd1XBPD)|*pvqmzAehhi>_6Lc7 zJpD$3|F?*LyuHdLp4NR%@${jD@V=Yi{)Ghl-zUUJ_c_JO(|u0y^q(cj(>hPQeN#gG zuSoF!*9rdZ`bjK5Ka*hpP=f!P6XL%mA^$k5jOU6hbUD+k=-QVI}OEj>HJN^JcoW$e~N@Ld< zDMp?oJ=jgPY?9TU@Ay;<+9RG+{2&+F`kSw0dfSHM+z;ZL)Rk9rchW#KwZ%Km!(fXz zcY`;7C-pJdi5D74^>g2p2D|NR%o73Ir&=9|kbF6QaXbDcGDNOI_e^>9XcG@GHhR}e`8NnD`uaq%0Y<(F4n zwVSqWh_6+qJJ_}rrb=}kDRW96sIA;!8M^(cv|LpDHBaU)E>&e+8O14`a$3{FxPZm>A!5lrgbp9yOh?|a)ifZYkcheyiyG* ztyoa)#MKgy9GY1}nzlKy5MP*|+>>bu+iG+XnQhkXmfqz=B?b)^MGwIanIW} zQ?&30LaMGImvv$&zWg33->?mi3dVau#CtF&i#)rBD>_JU9q^A3xZ>Uc}CP+~`kK300nRb0|zyre#3wtgpMYMi;1Y-se8+*amwmmhmm z*`WSN+2tR=x_GUKx%9G$V=3Hzw)~EJSC!me`WVe-)4CYx-@v7cLdR=5{8H~gkiAH0 z(ZFR`v8PXXd)A`Z{aBy+9<4>OtFn^aqm>`CjXf-iU6u8z@77uryGQGyw``dUs}>F1 zpcQ+%=uKPJYwSKP4vpCyPIlW?{($Y^d$$(F?$qK2E?+?GX+i8MKla1}7kB9vt=Qdc zL(VW+LD$Ca+FBHQDu_LOs@u7)jorkxDE4&m8@sN|pSPeeH1Ny6u5jVvMfnRC7lcBK z=I3LvV7_dxEr7vq;llYI9SSAAuZ!V}xvVSMJze?+=!DErT+`jU_<^=z$ISVR^Ytr~ zAAUZ~bU@!X^^MW{ebRfnmRR?aCy`YM@nobqQETOa?$z4J$ua*|TDqdBq{ycnCu|?H zY`nIEOc@;Q2MAfact9S*1kOZSW@%~34XaBAT=?q>ZB|~LpD^phvSS`DcJEh~&9{*C zQB1tN_zlb>2Z_`&kJbcOrZHy1yD0&V;oW0il5z@^7ub%(ivPc`C2jn6J~NAqEhY zl@&E12Im|bt=TN5&W-9oaYzH%ZCg2~ZKkmyjiEvhSJymT&Xu3`e7U-Coo)6d>R7!w zdG6czzU@$Qu%*V%IZhdB^bJO!saM_$a{T+Jm*d|qvDM< z)is)LhZ2IU-pE+7x+1iB)7IJ$!~V6*6MY^LKn{_PXVfr7VIUWuDK@7#n@&iE-tJLXjQtO}VuVFsI>FnB2&9=?TXriFokhj&~sG>5oZQ}sHc0-Nl(vNB^ zR6n0Mt6k%4+vpD;W98{(YJ6R`@2`ZngSXdOeeIC_Bw2X=419e*o6Zt^7dQ<(1%|*5 zko}sOtsos{W)sLKoy@)9R8a3`_6cTg2PcD7An)wV)gbSI%wmvzb(w`ApUN`xK=#dL z=78B?5F8Ko5RY+S7kDXn3M6is9pG576=eTaW)sMMs?5FM7_biH-IBQ-)F*{1P@fW3 zgF&zunxpO=|?R68~n)qE=zY<`gu$L z*wR0<^fxW7?-=@R;a~ncExp&u@3S=eB0c*lwkChh(hDs;#nQJ}y2r{Zwe&w)`Y}uY zKbH2#O$RLf18cv-(m%EIgO>iKrN3#z`)5m+Te{oQs^3bFU;YzBW9N^vu0fu@&-gz* z#*sSfJBT(b1RFM$S7`Z&{NNay z#?GgmA66ctDoeltEr0-S>&yI8CM%i(H0`J5Ybm8{$&T8q0o`k;X-(ET5;P244 z`Wy7Ol5DGEd6GWMqN{Hbdi^FHYLGu?(mN!wWbzniclRLOWky$I)Vl-CJcm=Aohi;_ z?)BmhuORa@WHFYwaA#_C- z^QiOrAou?0F0g0NOO`RhdG*QE@$VF)3w~QlaA%YBw0`7lnaNx=Z(7H`w?-BHReIpW zzXt>9Ur+m!@P|=!@4t<{-7a*xQcf4%M{lsNlk9~QXQ!UeSp9*@&-b`XuPG(E@9!@| zzc4zEw~dSLd*rexdSio!%F|3fz59>O!PiqJyc2Z3>*=L`5&de9;HPF}bRYG+rHgxy z0)a^yZqzR$pQSHw`3PGc^gmt&pdsjNW@BhQHgV*Bcsg$X4?x)7ww^Q%JW1N;n zxEYX#jx==H`!XAFLz`{6M`3eUTOcqwPS)g@tWMl@qQ6>sQHN^;RN9tez&xs`ssn0x6A#yy>2OBeT;RZ+JOQl9An=Sb&R=^Lhu(C6EI z4KmQj%egF@M?=GoDvp`Xi>zrRt*dA3ohN)l9;AD&96sGiQa?rZE^XEC195u(-kV}{ z9VfPjz{G*}a3Jok4#q_-PAX}jT&Jo1pw}0_d(>xqfL$kgPZRCbk0{;mW8a>{Uj2*o z4ZnwdLlS%SJKfktlh{2czu1)}v3pW>lnZy+Cbf5HFLFbjBG0tW6QPe>Nnd#jedf*d zoyF*$y@`7|Qa%0Ws;4iZTadE^UfGQgIIs9=Wk1~R>6e+jQ2DjL&pn5fyV|>7XUlQp zkXIqX`VDd}rW5sD@1Bj3^v~vw1nHQ4pZ>a+{<@8NyMlE06V|;T`ZbR**6lsBj(aMW zJG+QsYGCC3@{`d6t zx5T?!Ywx61Jj;IH|Ki8h-Txc)7JX7J(Io9m_4GN?^fOOqX7r91!DM%0_b<jLGiyHh<~wMWVGs+0*kgWP48yDhM#2>LzlaP8#3oI4&> zXRnN!dhqjyt}T2Q{(JCFs=iQ%b*GHt)=u1Jn10TChl|%>hK(^g%H07PPxyWuX!M01 zdOaok9qMvP`@g>))BPDm)k4R=6Q{rA?g807^j;xtICkG-2p!5D4{h`8+euG5arNa& zX4yym+|xSoP}4JOdQ2T0xSIjLCFG;}7w%d}Vo!LA|8Vxxc;8c&yW@2(`}cppf6w32 zUj-P`aToeC=n1A@P?{xg0%b0pLj~h2xr?=g1Ey*JDYorrm z%wvc2KG$)?*RPliOlE&h6CQp&bQ(Mk@qgBQ*ce`KT!y#qHAe$Q*1zWDfmeb#;B;^d z$of_!XwXdqnGZy?C0{ASD7 zd0OS0_C?CQ&eh6&z2!4s@c7#;zt-|AEPsvVueSUZAoXHSq2(7?ehxSbeik?u`C|;a zJz6Y;?l$P22boev&KY#OK*g&QRJ=|bbXzR{u;n*de$?`Hepl{wepl&R12XmX&g;$w zweOd?rFUKzbhWQl{23rsDH1a1W`nG|&e==7XU;jN9;7NnbRHLUbsm@X+BrIhtMIhH zQQ?I^#hW`eJbt$2Yf)5uou`$1t!v5sSy24bmVe6fJ1oE5^0hxx?wc&X!SeT8ex2n< zE&mD2*STBCudw_w%P#@1guen*`&t6>7b!I87J!PU&M7F|*`V6j3{d{EL9bnc{CVeg zK{pLU{=}3&tvAZwIglzEVf-OzuCm zb(X&dyaqW17Ih9+?Vd5D*A5y$nm}Z~L3am8Rf|Lox|>0{F9YX-S|g$AL`n?0#o(3j zH6Wc1&IXl#c?R7XpyCrU=uQQv;g0d37q7GQ(Vu}n0VUt{;oiMfb(jBHq54!!<;y6NNL18nQ{tqe`-T2r{z+2VAhS; z#fj6_5p9^KMx4epCr+D3wjk&9$WF||qnbHW+BNDN=E+f~FprNqfoV>eMuR(oNC>uJ zHV0cUJA-F2`-0JQ!b)$zY)fy)Je7VLvpc;9b5F+J3}j}U!`wBxel#&0(>R86f8M!M zbK z__p!w<4I-qu55BEdq?(76i)p2lIf!P|5G|G{n9Ocz|x7QBpFD%_?>A$k{ZcG2v(qFN3o29Q&`~pszKMu$d&Hw+h_P1L4 ze_FcV`af;y-&*>0OTT96cP!m*>Gv)D6HBLPA(7ucOJ8E?uUYysOaBlziqBE&f1Hhv zpMRP(>HCAf4hrdgZ}7)GYA5>s;E$8kuHwH(EXGcL{NL>f^ri&59Eb7lHz&|J3G}Q4 z|H~5W|22VLli;3pnL*((haN=dB-l?&u)it6{__d;(FD3KfmUGr#eNGD?c;VR4%*+Z z{d?YSdhaVuP5A?rrREo7YS7khyG;^-H-dR zTVHEx_>|68SDQSuKQn$W@q^pSw+?KYw7VqjXRO#Z$o$y;#@IuW&r|uaor$rB{Me4e z*h7A7Ct>Vi*bh$0_V#(7net(;I_AC;)P$@blCR|OC8&uVb9-;#Ocd_q4zMQc2kcS+)MW-3Gaq^?)xmbXyzRC+rX2QOtocT-!R)gxESMjf(-1z@#_F4Q-^Sk&OqwX6v>x#OAo3ScuX=bgci|+t+Gr}_` zrnld>nE%xw=K|-t3f6O<%ZIGX^sz<|#6F1Kl#sJ~CdhqzznB@A^oy<^IR`th)H;c| zL+FFwg%5URwBPsQbli<@zpw5y&dmF+bY9hZVri~(p^5t;gYSO%+Z`#vSALxl{&r50 zv3sAjr66l3>CR<4U(a+daBjQg^~;qp^(!N3IKpYw~1k5<3-^;BnZ#z(7O`}!zh@oQfn z?JTYv>nzU0u5P?=)obW&1dCs*o8m0~F6n(X*I68&u3%q(Nf+yQ!3#sv#u;9%p&gk* zTz)^w>1BQN$Yh>B)Sbj}d8h9V%GZM_CJ!zleQ&e2dJFlibTcRO@}gaN0v!g|k`Mp- zht;pm>R^~uf!8i2|3E1V1ExXZgdyg2wz+h2Q|wMpjm*{>syNslLwd9^2x zMqJ`zcQD1sXizx#55QkZ{#|pqv-lnS=iw%UyL)B^GIq}TsI)LxlyS(z@{B`@YaYC7 z#Gf|$kcUO156xsfF<72{NO^Q~lDgORPWWIZWp)YWHHNUplE=4@FDuEHo5`0|)W^SA z=FHrf;w*l6q_cQKhO-!bb&DSw=PX`-nX|Zhva^`EarS60UZZ!eM9wuI-~*H|$BDA3pd^#e;8&b7qHU-u~sEd_Rx8y(DnS%0q#SmH*;~zx|V< z+h6%f(XFpA?!0hI;2ZmP!JAi5G_xMJa(6f|X5}THle<-(yIk&y`v&fg2gdIFW+3C1 zU&?)W+00kJ{1@LJ8yLItUjvyd=i&a}ia!6!zae`m?tdBh*1nm6(K~+}NWbNk!06HI z@w4g6&EL-oWUU;XGJ55C=&WV8zmm0Vl^2iofqL$3&A4S_Aam#c8@S{bzYL`RqB=0< z7q{SU_Uz@PLN# zzc39qf5J4}@+s4>^1m<*kx!V0TR&wQZu>7x!|k6i4XZw78b1GDn1(w(VH)oIlxZmW zPfx=p`lW~Hmu{tBx|x3IA^N3v=x^rEziZ~EFaP=XGwJ{6<5vDFykF8U{j%sb+oyeV z-%sRj$=x%XZD08>^si&RzH*hn)koUr~^zkzTV@Lmj_}mi68m&J2A$Ri&Gu^B^)7|h388e)N z_6&tLeC=iso$R}c`1Y6K-fTc)tea{LN`+{vg!)pl}Di zgax47GX)af9|CdWg(6H#onKIxmfAL|ebh0{HzNGUuRq-=n!&g~AHdI`^$xymc(fn? zY0z@x|Ax-*Z(eajk)}|k>~P=u=w?o+dz=^*KS?zQUgJ4t+G@{xd6PU7(x;u@<jqkK0 z_#Qlx@4*4S2agyspKD^ik(btUT{rvx{QV>!Fz;i&bZAm~_}f=Azk7u5>&(})gA>Dr z&pz~MVO}733wo&v>mFKMm^aF~RPKJwU7DA%4~DxeU#z>@%mFq38<_V^I7AZmbd3%l zd22j-EU=S(-PO*_x7o8WiMx#-O>vGS9p^Hq_~`K)Ny`nSX$5Ip&R(2l+yNc%_Teag z7m(q{&x@Ch+EJ_;-0ME=}-bg{PWYgQek|8J??;U%06~kH$Lt6J8F0O zebRNMUB-EAzj8Ze!zL9AHnHzpsWcy|9VHp6ZIq@;o#r%#2IL81p5MifB!NUi zz$7Rr)~L*Eth5ibOovDLd`w$r1{ga_ckvmRWw&u;XPGUX#g6STpW(BOmhQyLZn3o* zIygMv-}Q2GpF24Mw)^sYo-4V}@BUx^>+QbYU;h{HWHCiUp6Y@kuT?dHd_zlv#fKMz z#FeQRq@Q&9asYQSfH0M`sAv_<3Sm%OT-4CiVk(XxQ2q+n7p!5L`oib0x(NMyqDdg1 zUvSgZC;mIGaWr6*`ZY4+)y=$wX?;hS_Vr8s%7OYMzh7ghb?bFiZF_F5;$o|u+!1%* z<+=2FXKumy>~+7v{!WvN6yM+Rw6Ax3M!MK~XK~0qW0y2Enc@=Xv%Nb>m!Q2krt&(I zALoS+nlW*qdZGq<;d)}R3)dcS1ulf^2|27s{=oi3^~8nevj_Ki_R;5gWVr3~X#Z?y zkp8HPd9f1uBTYQ-aEE&DsNkc|(XUy+oUHmqzE3ond9#0BX!e$tj-)@dX3eG=%~Ac7 z{!k@-A=y!1h(5`IE6-~mpys@7-{+m{(t9g$e-zJ8Z;DrNxA?f9(Qmnxy@i#`4}Ot( z!Aj=ozR0{_CG&@0WM1%j<^@aOJ~qTeXx zhoQz{l3z|;RHY5N>d%a|`0yTVk#<$(p!BC%d{~ZQg#OI5^6AAz+u}Ro+A>nGKjZV^ z|CIiWDaZr$&&5_Qez{EFa>@0|Ej2ZT*2&t}G;Z<>WzqhO>iZ@lE=cmAF0@W|R2EQO zvV-#UC#_eyLhdQOa_SQ674J^kIWU&WNo9Nq=-kb7zEHg)LuEW!>?vs7U>Y2%9+6oW zeBLfieemFaFnecNf0n`PcON;Y>wVXCfM7IetB_lC^0%c?;X}2?iLSv z^w{*gFT$%#1cyeIrsw^%Xw<$h!V`U2S$f_p@TQN(+?4dZpB0VX_pjmI1U)91p7%X? zRbw$XEj{liMVIaSkMORC9#fv4cN`w~Asre!Jw5NAipK8yPw;Ml9y2pN?+tjf%7Q}^ zs?+n{XCL&N@T#FF)}-hC`RB`)T}vJJnav}X&6pA#3T{i!oAK$Oa?w*Gmi?ILPtgA- zo*iEpvFs;|^Zxi#Wplcrvy&&ynE>wV_|&oouADUfzobUY`6=cfLI0~fr99iPbEa(4 zoIkyC(wzT}+3)fG2fQESy@hwxl^dYHiMi*Xi+L}{jqA4+Rm|O4TyewkVHJOq3dSdQ z53lINP5^%~=F0bvsHo~mRIJ3_oWms*!(<2luJ0UK@ebjsAUqXUFR8q4_o#{&9{bd? zHPCCWURHVIp3xP5yWvyI{ucU;tM8~x@Sfm(#MSA_S-UQ)=)$h(;;R={?!lhkCtRJW zoOWzX#Zku_e)WBoi}6q4_;mN>75~Gz_qSJnrt)87=4aUX+0}Pd&Nw`_B7hFcCXElK zEUH||`vTq>5|G6?mDrX*^Q1P>zAL+{Nyo)#MQwu6@I#OD(4zt$(Oy%qF>hZ6B%6*kLZJk(A zfge6z*6?oQWN~H1D_2z91APzv-*ff-m1D4{_|f-N9-LHhe~x~jav;nLD`)I4t9S)_ z`iAET_h|gq`wLg!iXxSFPp!a@K9nU}gqp-zyr!`GCvzT^7IWyWhI(*o%Mu@5j9KrIMZ( zzxD0lr8AU~pB0VUcbdHUJ?0aR#Y#r~h;^y0-~RGs%6RE??6+`^DpP_VMWgTCN`7L^ z^H643h%SM?EPd#eP#C^f^qUDo%Voi#sn-OL_RzLwo~b?9G7i6911AQD*3<>tIh!{w z^QF%poZf$a?hk3-O?aK1Xa42<@?<)FE=Y7!{DX7JbjH1pJ{O)3O;cGGC4E&nP?t$x z%C(oO^72#?O6{&Rg_>s!j|bTEXvPD+e&&3b>F;}Y)r^GqZMput**9e8C2MKDLb?r& zX13Dk4xWCz%yNGM(-g0 z3}-KPUVc>m(|nfyZiOX3|7kmy5j=43qC35;0x#IikNQ5Qe>Qh$`C-+w3ds*^X~LJf zj&_^TqWv@axWQ2cGRcFw(0mi~k47o}r9AEPnUD929rtP9x|G~gBU@mL$8Lh;0dp49$b7$l2*|x4*(}()lyEI7uw};k` zn*0AU?cd8v%>#b$V2pnHz+9mAsD;xhTWrty4WyGDdp8k}N9hY(LE8DVaLl!q zs^9W~#{1?xp*73+eY?#6D4uxtTH5#~&cBsxdaQr%zns_Jv!!a^D~6@d{te@MtvkrB zpEvyA!TEbNcWBdoAz@v>nuXO<`X_3%-V#&~^)3FqUg0nfjGhnhEHMn zUzX<=D&6A51@pI079(#$Yf<)WqT-{AbSW|E()oRT`xp5Zs*lpqyuVDp?`yFuUU+r* zAHG;2nFq1NyJ^zo-c8N@qt2f{ATyjv+P;SL_%7-3KIviOuk-uABweHVpYxf6%F^WW-}BU{mll^Ceepk!{K1Qvf0+2v3(#vye(>T?Z;I{J{7}^0 zkDgq__bnu?S(jR9=Z+D4W+X(nyB>{&RPy?k4I=|FTanW>i0ODnT5FyOEIJ-yy6Rey zAvd5>$(hzk%aZIKNqd!%97}@I+Un{%2J8)D4cN=En(Eq{YU^<=XD!F7U$=IB0akM> zg3CGv!WRlgTjTncy86ZtFXvzbBF;L(oPoe|WHZ9e*^4m}A-R z;tL|*CDCcu-@GAN_1nqo=Mdi{7NXOXP8-^hzlKb<+&o{WBnI1R2I|!qh3Je-a#z{t1hz#h}g) zR)ffOt11U+yQ{R$#QbB`Xz&`4@tbjX2dHzP+bpIe2TS%7j<54P;-9vdItj|XBcR;t z0j~kOL4|)S$UJqX%c41lCjHIO%t2;0T1<6-(r3JB&TBSVOf@+Dhd{P!XI5BDEqD4E zkS}IS?~MGG!K1rOy0lkUBDxu$U@# z`sV_BzE0^!A2annD0fbS^p7%q7E`C3{z;JjQs#uk)SFKK7)a7)j#^9|ar%crk|uM| zV(JyAzZ)beGTjzaJDmPjkf3F{ET)!&O1CsP1*`^@PQ06RDg&>9?gp_pywhRUVcKER zAz;jLR;*|%XX^Un=Qw587eCGKiTFu=kH(MjdoX^OUwa;JXM7j$UGc5__Q%d~POmR^ zn%@(#ll*Go-Jjp6D);h#^Z}_shoDHSg6lhThn_!}TW#f$CkM?_wWw#|mv@HTuVV6O5>HW@KR6N2 zNJe+yXWMA|P9NDQPy6`;SKKaoze?KmMC6{FETgfjkjsPS4_fHkwAHoL7;kYuUtYL( zhpNx0qlA;%F(sl*I?Y^P@GiMy(KPOT053HfqP*$820BW<|96Kek1GLo9S%z zxp?%BxajmG;Zbjvo?GpP*2kM$8)|Dai*ig}wmJ7qq(PU_=<9p41lWZ+&&dnTZ}ehm z1@=uEfHibp=%)nbbej6e58?R@#jzgwqxMm0f2k^q%$!(PY%eRZX5Vde?5A-wdsX-0 zwV8hinCDpOWa?>rokm^`VKuVbuHf8D5bso>cbPEw^bt#gF^Fe3?@C^#9D+v1>$YkfzQOK?P($(p&vVVKuJ+b2LTT3$c zY`rY~mDbqk@6NdXZ(ppq=Gf%FiIr5o^3-K7Rj{{vG&20Q{>%Bf$@zExXFK27`F&xU z{Q=RqRD5Y%8wAK#!rzI6&3^;swRGynx&5y)e*X^h3&_n~K62xR{zn+g_7;uYcSW&e z?Ue3&R&wW=ck1O_-D8Yvvy6!~C!zUre;}loyORoxv-I( zA5$FO!x;Sb*vNP3M=XErzur}`@lN)S4iCoN9xGe35Lrq;cw*`@#SLX~TRr>5G#3{q zU+$i2<1aZzvfhHTul@X~zoW%|L2=4l!&2qD4Zj^6QdpZ8kO!I5X}T2}w?4lP_ zNu#EIuA={5&RfyI;#cvP zcq;pMH*e^A;qQ5WyeN2;HJj38FtnX#@u!Koz`e{}l>Z>{(jfbUo&I%c)A01!UfeV1 zFY&(@`E7k)PWOMndA<)>%ceaz&^J=@ASb>%9~o0k<4H&6yJTl2cD=nUW#Fj7XugBI zLVSehmb@&gTs>0Mxpcu;n-)FTVJ>rDpz`okuyp~8H@^q{O> zY zC_0zv)3eZbWbu2=@WmC63=2MUcPut);)>?}sVge_UqD8hFO#M`PP1Xj(hjLSs%{CV ztK4b&^j#GdPsNrsQ!bk+=jNSqT8Z25P$xcO%jsuSP7@~{>2D%G=?rLsa(R?8_F2kg zZ&69!T&xfO#1obMg?K~dpWOUpHhpMu5LCZR-h0NB;R*Y~`RMsb8CE{(3YEv_RaQdf zIhv26_LYyKc0Mj2b>+%6>jguU>&2Aea6ak^mFs6sxwiIvxjsrhqHP|s9Cp(O7%HyR zZ%|#$*z?h1zF%?owJXwR>A#h#{im&a<393Mm*RrcQ&($@Bqs_#95`&8?$d~$$h5(vX=f!)%D*q{g=J;UyeOB#`Is*$59_9GgKdjG8xe3 znm$6g#aKE0Ioj)h{4Y!dxqdEhDBs(qvXQ#53_vq3y2*}?XsMkVs_!h8(>F3Ah|lm) zz}W0}_Olj!Xq+y6YZtCp&>6};`P8T_1^8W#zZ|5$J;?u)PA6S}KgD&@%L&I&_9f>| zY9r53e96s|+RQT)zox{n3-S**ev>ukzQz*zo#MtbZdf#kFZqK~E*OLOEH`{CUvdnk z3fbSnJP&8+t2TnP1sTb$15^F{Fea`#14{q2#Z)Kpt$E@OQ2OgFrV=Es<_|T`Blk{$ z;!}2vdy+>c_hvf%=}!L~=^}mlK?dIhW$(Df)B&fz#p!oC{gZr?>>YF11IpfEi>Ypq zpk;PhOl<@4GPBiUssof9$MqIdEgss@~b{&c5b?(`LY z{)hKC>~`4cFzYbwFzGOG*o!;74)1Z;?Xc5f)?wOV(jj2%jfj^|9}!=)I3C{>>yE{c zezq$XcQVk{cO>FXEl41X^)P>GWu6@`dXrhySBm!+BdcuKDdtkoB;H42+38VdkVE$V z=>E}iIS770pu+R1|4B3v>E|8(F+#s4n!MoW5xy6pSL3Gc%kc98|4#f6{ii6G zgVubYFX#Uk_C@=0+wW*!PQUJGUoKlc?aINwceJl}7CQHRJ=N-HU+!*j=6yY+{SETp z*NeA0+LvR+mH58iS?*|GPM0|IfKmU2Uzyi;Nd1^cw68a!_n9M)UFn@ue-xp`3-h}o z{H_SUGeYMiGP#w@+Pb#3I`)}`=R+GG&!g=cW1d!S#Whb?o7Xy;Hngr8IA0QS*4_uD zokd2z)ygLt+w!MP8`iP3mV*-EPL2apoYXU*-mkg-xGwbL^$J=qta?UU6J3egA>~z`hXnL~*X>7wD-U zjXrZrsXTN#>powq`Asy}*iK6@_yYL9pKf2W^4d}jmSc}Fam`*gs)4?}$Gk2zy~ ziZj^y=IA_}_RZ^jw$5Q+%(qLHe|T;!>}UDrzskjZ5n(zNiu-Fe$6r#sD=Z2}e%xEx zUl-$lH16}=vENa?`E?VHUgD;Ma4aKk6ffSc^1@H1Z2siDh<*nGW$nZBdR)$`{JJj#b@kn_*%SR z{;o>>sga<@1u~ZbW$rdm?wlmh(mw`D|1cH%?Tc(=n&hgpYdhe?NkF|U4PxWBwqG~eXg zjRwrAf9KP;ig(e9XQ|mdqJ8=?rZTj6Qup(SznMpB5-8fImtIBt^u3LD>3Q`YFJb!a z2t6WV{#b9Bj95qf8Yem+9yx=!tl_1w5xYXyD!UZ?Bk45?`^e2;WforR%w zxe9f4Yh#1$t9UPRa$CK)Qr8dlWJBZ14XdM}jNIWKA@e>ZXVqWy?z?U+jdkX3KXsgP zhFrjNv~$Y!^Srdw2$}a?kuCX`x}H9#;Cj05xvgzzuN!(lzAC6DWrQRTim`bvj~k81 zPq*tV`Tm`!rLBh|W7Ng=?@rQ>lJfmK-J5WYG%m4!*X!KrkzG_%!WJ!!-yF*a&G1!T z)sIvE%=|jJqB10XjdLf0`>9m65kEuq@8mAts9wBeRelZ`g_<{HElursxc$F9D1Pt9 z%)9zI^!cp+T#Gq8+0nyXy6@L5aC&Lh3c`JY+k^OfjE}J&nEBjmLiV)|r8Ok2btYKD z^6m!za=to=dtrAJwlMv1d#-z#w^jIh37@q$c<;9Sl$peoU>s}pk52q{C-BHpKx|Sl#w0h4MiY90cYvNPsukQK6*ky^2&d>c$y!cUlr?D6M#^gEcmew*A zN2DF|=y9`VBeUW7==s%vS?_NWy|=H^-Aw8~Pc&ifJZsG<{7K&5LWbyTq@TX&ZD(d` zFmcUW^wn%U4*vc^@uD;M{k6sHeI7=C99ct8jzCUFjQjiSe7Mq4{%X$L$6Qd5kADq!Je`D=KQZni^KsHU zLjG~a0(qy4wGL?V#$AN>PQrZ$GKChgZ$ED335DGHICJOY#U`K1uW%mkWPiW(-XeTH z{m#eZ@4ZgkN9bl#yLVz|&2-iYN6rlP-W%)xi_HD}bHN!gRQ7>=5m+&O`maoVA|KgEY>|O5W zU0xE4y-~7+r62EG>TP=n^H}cJud^7FH8-GSx zP9-fDICsKpY&xr=Z!&R>AO78>EAivg^%?eGXf09c+B7Y6Ds&+VR0yTbG0WvRCwa8(aL#?Z5{PYSazJz&bJkteg{IU_0drb~kfEwRu zTvZBc{bf9;^%aei6fg4c6;R`Y4a%Kbj2R$Jlu74b``-Yu7$(zKhRlZe3r;jTN4`enW?iyV}~wm`rJMspGPm z*)>V4qVw-7+ZjmK`<>3wbJD7?nv@ZeJg5te%hE2>XdETw=}$T?ONQK|>KRa%I4<+< zB%KR;aEvN3I0`y1@|>Ry@8ia0$DMsSA~%N`m&slE@k!LVb$^L$%ozRIIQ`lp`nR07 zd=eR;oJm|sU-Luen042;=Go8EW^2EU`sKCUf%<3k-L9hFMcS2~rLBItD6xhO!OP2w zuDbV$5sOEyST^S+?MHo!J7n$tmC5^h{^k5Fo%B_I4_Q`y+zX(6pO43aTgqr(nL{e2 zon5MT$<6vONT6@^{)qR9yqBZ@csz0Q;&^b&*`mpnO#O9})#x9Yxg43L59asA@OJSkx^9Hc9ol~fZsXZ5TH|ev z{q>$@EV+#F7@uwT^|K%MuiTyOos3VkhmJyeR^^Z|9rE_Nhifn8z)9TtazSjoL%`-HXByY&rwhj{6Q_mt(8g?ik`se`^O{30Fq` zfT?a!=68UY%P0|Lz5`VMx&b6z%zhxkRCSv(SL4i02i2cWg6f}70g1{Tbb3FDYzb9k8Fs0t*3HOVC&(R0PL@nphdc$c$ zac`bz?E3gpKQqk#k!T_y>D*_mVCqvJ|J9BLjOyao88!5#2>oV+R=C3E|6_y}FU0na+`F6hw+u(*mIUPV z6I{uhzk6dqs?MeN7iZ0xb91$6xT5_N@HMe5|cqG=KU00h)OeqZ|Zj;*DZhP}SD1Y;O;7 zqwe{5U!u5jD(qfJ+i)+q&&35S=^R<&!k4(t<_R3h`{WC?&&RPRSpl-7Ix+d_AoyLd z=SJpks933cbM3Rd)gnhKDomw9;d+A@>gG0)(+jyAgc5N~3v&;qb zkNfbB;OOk!p)TvSF^hT4|Gw8Z>E+4P5f)Hou1RLXRvS*ZE?=UGwjp8*vM6 zu-0McBGdS*w$+E_*Y%h7#hm4n7j%wI1Hh`bF5jx1;{y+s=;ie%MUd5ARl%dEoAmcCAX`N}Kf|J9nJ@o#1RT z#LKo}mOBFFhsg-{iX23^ylGoCN#%i z2|rA)g3nq*j{g|^Fx?8D^Da65m*I!$ufV52pW}ZGewcm&KK**nPct?*@$e$%OdVnO zMX7%9W@vj${kz93bMUf9`Ya7j1?#f$l5b_>37!!=!+D1B6!R4E#Cc*o!M6&frREuY z`UjyrW70Sj-lSXi%B^2HI_$1@M`88(XyE+s;O`rX7tUu&FPGOoas6z|Uav|+(J`UoTH`uz zKN{b?;rPz2Kicskd8b-o(z>zENSQoHET*nzmSbh{bBG~ovR!ux5UjSu5SwU2fJB6eg25ekwx0 zR=hng?w^V9$?x6DYvf(^w|k4aUi@E@&m#VX^H?YS0@ZEdyx7D2xW8_`iRO9LbzaZs zU6tQ-?0M>}-%Nh>-{9Lv_Jxd8c`lzgQ1^Pjr&4F8#|`awI6S_s$c;Tx|LgnQ;q>x# zg7VRXRE&E1HxqY-$~tHMHTJvtC#<>Thl4TY@=%>hA36I-h^9}RZ41%#nX_LA(e#nC z&xUCF$k{&#(e#nCUkuUok+Z)WqUj@NmxgHi$l1?_X!^+6l_8owa&}dSrjML`EJV{s z&bEeV`pDU@glPK2*)NA^`pns{g=qT7*(X9YedO$mA)3B%URuprc>9gF+!c$(?)|+7 zV>kTPP1ilJtiE>Y#Y{)rDX#k9u9kHx5dqoIxT}#KiR3U!<1^AoYtW6d- zFghrFCmp|`06*>KgN|W&DEp%|fr#40GZcT1;~y))*ZE^9@$qU<_|lqGL`}0Wh~MD& zTi_4nf1l%P{vI{R{xm8`sU{19_*)%+C;Xw@pGE~PHJxWD{u0OEYD^9G|D@xe#PU$~ z4{D+e#t9&H)Z3%Jjn3Pu&Of5!2@_#?` zsJF8Y(hc4WZUa|eQb&PnG{i7CBhe7#&5S0Hy@eep!DED6h<-bt;J&qQN zzZ0zDe+MZ4w^>YW1?7L2#neL}Stql?Vk+(E+Z}a9vogZ^K z!gs=AO7+MTeFu>!cUml_vY^885U6kn#b4oQq5N3_DjY)bGmaLDe;cT9NdAPvQEf3b z6I3{+TTCTDs^m!2l?MEl)Yn)7RsIm@A`hB`1>6#6#o@a z-@gac_wTlt>IU`wyDX+ULAfK8JDVLXlsg^Z4Y;!&NxlSco>`uz5?=JwTmCt?y9zd zvbWV@ssWUHx+hNh8K=JptVI7dum-FK`HrgT;BSG`!27{-SkiY%j*PxXa%2=Qk|U#d z5sKgEXravYf{GWR_$M7L6#p2gcsU9xUXEBy^?-_(!xmH9Kz(-ysPAY3`Oh?1Ol3gD z!)+izu9^-i9+H-ynPM?@jKJu7kAV8#!yx}v`yK887eH?X?*cc2ECN=wfS&^&0_TGn z@U!4;;C;;8GU(0V zy>1{EJV$E*0z zK6HX!wHs9W?*efuv(sX#)6p7tpr2ad=;e-H3@TqN0+la>vY&ReQ1)s-{MjuOUz-g@ z3&o!XDqkc){xef7rpiF&i&BfJHz8zS``=~n2q^!1K>05e|FENlGN+AO@=qxKen$(% z?*`@nE>Qk!A3d1b0rH>OW-+xDya{tlK)IuSvh1fph2u6*;Sh?iy@H~JGB*=cIE3P> zA1_)c{uEH*C<7IaQj4jvApe=s7E=juI_6H$SC>0)T1*`U6^42m<-bt;#f}!r{WK{5h2qo4 zH?&ZEzRmcLTgLxs7E?)3{!g)(Dg$TAD3;J4-b)~bJr27ab~?;DOgl_E3>@}i+1Pj3 z?Xc5f)?wOV(qZ7R*M@6&kHc<o&JIIc*p4bt7-;AB$S69N0Knnl1cs%|}d_V72O8>F=ao%?p?UKCx zq8&x?`2L~;ydN&=;nzx#+Ev_*1gRaxJBx9-_#p2+#Ygykv-kwRJBRH;vQ*!&)BNrl z-c9IsjqDydB7SOQAHPRN9YxmE;ZZ%K;_;KCdU@{~b(-J)QRnzQHv0HzLUq};%W!|p z&M`=?x_ry!aL1e*6OZq_d>8M#FWN#0M7Ju{ZC7k3Ye0|M+wKo*DoC z_;`HVgdGzwKcSo7qZ5wtyMMv~ez%l%m5zuXC_TvUE2aBO^R&xW!IE={NR+sydRlzl;0CmPEttj zq!5Pp8~!c%T=Kg7{-ysxKSTU!n3Jle97%qc-;bp8OX6>2oGbORXdb_x>W6Xd7uT(KR<8ulr!It8&bdJ z+;2c%YPqAAIQL$2_Rm;$Q19ptXaCENc5KyACVYOLED7z58Y9be?1ZN+PfLHeDZ-D+U)d0Ge|f}xx4F5E8@uY-bu!N^bksJqtz2DO-?35ql<&W@cI~=`4K0oB z_Wn*?9#Y!~%N&BMZ)$F7;ChjDkI8&!OLd1?8)=W|T7&CaR}H0ad~IFVTF+kWJh$4o zCM}|cL+iPkY?FfAs>5{%6*K|jwiLEuBMN4nWwhrLb1>>jr42h1HccQ2@2xO_#(!bR+OHx~jE znfCmp#NLqX*5%N)_~w-+WjNsIGLPRcKfrKtp5x~Qi7oLneX0y?g1DVoz;R~*u1qBCb`J2zO8vZIm?$r z^0qB<$}=25$j`X?T;<+6PRizU6tp23@@7be&k&9|C~Q8H*kq4nhYhV*TN4e0*UfY5 z@iwlSF-0zFJj}_nqUG2jZG;$k2}9xMfW^ACBuxAIx{i7d4d?MqE>N=MPW^^c0Y*J? zJvqN&LZPb1M6~K3pDy|JqdmW2OouDTkhW?Bn-Nr9MH!JQGQ`f+ks-ZYo~N8pNrpIs zYRM39=xQ=#AW~0SPJXUZB8UAeP*a8+El^d4OekhTb!CW?S6PPi^J~ixBNs8@>eBM_ zlHY2%Ps<}*gV462wN?#QB-Mzf?UvD6%pq73`GqZ*3MZmIjSzlbb;|Q!}7Af zsTp)`BtH`mX#4syS7W&hYg{p>hvu5!oHW?l8N|?xoLE>(=H$a#GAAJRp5=GXs;Qkx z7vs|9!_J&FyU;mV+VZ-V)$6DYn%4RYxqjVqvgPzUrF5=U%F}e;0zHm>(dUkK(C?Iz zdwLy9zl$YhO)7N?yt>diA@2@r)<$VQIINsEIjsww!_mB}RMz|=M-2D$ZC!-VePf=J z%-s%o?wz$I&4&lw*b~Z<=Dzm3@9d@@syRaqTbJ-i!7`7`Do))Hl(&ml=U>;I!^P}F z=Ir~E$fSBs@~DD+dq#0r%G1H#w?+kremo(z_a|4y_x{s$MSHJh554Y>=;gte9oj$b z&%(-{&bLaRd#v8AW1lB{?!=KiAbZY$&(M^oIb-{_(YJf2KYH>`!f*$Bp^-0zOf2mw zRM^g~i*YVJ&iV8rc=_QhPjE*IXE-MQ{>zj9hI_WOAMVyz*W}+~kMGSq--%CN(^A6u z4)&mGf8cq(#mf5{IIsI5`u(HQht6Lf9O@dAKKsn4_-@Yan>#{=2i0Ai_vm8p>T~Fy znq$Ai?)kQ6vg`}*yF7iU3H&3(lrW7_`p>xaN7(6OzwTo2Eb^_oxKBiGC?4M8{Quj| zkMheG^p|t5Mi+N+$ZR2hx>*ik@A7!k+Q zJ$!O&{s?=vr58FDO!zK&u{2=6Z+O3$%qee>ANKJb=8iP!eX}fo&;G@1Aj_+>>T%Vn zT_EKyQmXBKCmGp6=40RLAim`8NHy?aWDtKFe9Bmr=5hGXY_ynK50d6aJ}Og8RmISw z!4o(lJcoOf*{UrdQ!-T>t^1h{i{@Sfj8N+|+EIlNah29LJtIezK%~fhr5hUeP?S%4E1-ps9R4@>+c)qU4g* z`RCLx$d`*Fx$BaNBYBkzsOO)heWOi1`{Sv>p(AmP~d*C3y=?VmsbwWF7QMwWJO4{fi`vc0V~g7&Nj_rvmO2#@I#$Xr0X5;i-O zxo|tR#q?Q<_q~kVj+HEdG?k_gm2+n3n$7928vh6fkyYIkr$0d-Li@;xQq#^h#e+jh z+Qx7@rf?I6JiV}gojQ+%AB&OWUS2GD9>J^So%8o5Vzig^Mf81=>6aZI&~^t0D!S+I zy_UP#l9-k3KkrvMn9AAYfxYoV-6?FdM0{m_f-kJ!4hJ}}j`8!=Pa z(>`qAy4>|`h+t#3(zGcBj4*FCV1`hIR1fczt4OUB1k#sU&qH}1#MeFqsRo{*`05Wy zb@PxP2HCGBa;3&vaFiwVyU6LN|AHE1f2ZTmEWr2ujY9l>XTQ|iALRf0=!~PEr2R1J zFZF?hwW=4SPRwW>4@{i^6VPv3OdSWQ8>^0hvVRzq{ez(F?+2+`Gul4`ruKlczuRJ} z8ud2g_HCh-a4QeyR~>U&1TH z_Ol~k_pm+uo*dT8@0-K4GDKVvsBk~?r|6095fk-1@1n!`PPETwD;?kGtFK{4e4mg0 zo8=e#eDjx%_W7h!<_UvuuVq*CZxLxy+yQCa^ZDlAp(p<59iPETp8Y=;4bQjN_hDY^ zvtH>nLj)j zYUlTky*Pa*UH@V#sFvE=+Ep7`>uYOgT#Rwsj~*0?yn6A%PKIky>*7EM+IPAAx45eT zh7R0@RzwjswmsHpmw*aIQof<^ z?^slO=V$L ziTd|RDrYIVM==hzT|wVm8kacl=iT`y*+nI&tiwufht-Ap_X#R>DYXMqXK+td%uFsP zRKFaR=j4U@_b0HIcHgM}eOc0+g9#2!qdlVL4fpSf0wa5e`Gw$Go^qZ`RpEY7C;h_& zcfZq5olP4z&&v-uzcBX3`wtW`FNkc+qS*ET`4&NOS!-|6Gq)wuolE;BASaLlN3y@=k9XgGhxI$_CIaPvf8QqbRr~Ja+h>;a9iP zH)+Qt(*P$BfzRd~bkR#e>Ef z-ps2;9*gD6&8c#WIpImTtuch;{>zTWLY>_6%U!_Z{QU9xc(CSO?s)!DJb3gMfB!P~ zM_6}k-pC(&=sUch3U_pDV&;;I;^gIlI~Pb-$&iw)#j|^!`&2)1^r{(~x$r1IXgr&k zPd+8z_dd7fw%+HS<9U|nncGSjYrON#VDB^J-5V)8_cEp`VZ2aT9Bg01eZ!-gD{5~4 zW$<1XTe9v&wm}8=w%>dH{MjT^`;zgG2IuhSDrmy-BlM_){QJo8{QTR5OrCK5Wz19hcjWn( zhug9&yUP2|Uy=SwC2?!={=}fBmisB5B@eH8iedv=kVv=P+j)LNM7iQ)MZ)P+qbZ* zZ_V=US5TMzuq2rKb@IlaVODW3UMF#Kmy45bWQb|a&DSxC-}t9&nN%B*HZsC=r_B|n z?&uj7RDVF-{~g+aFC~KIk6jxa%7s_`5!`>lL`15P3~UO^d8doZq`8;bN^0}=@Z$!ZQbpmzW4F1ch`KXCi|ssrWE`GrNSr;cDvFM&HHxHl4a$tO>arhiwYx;xY+PVUc6R9Y1=w>WS= z(Lng)`@VsEGP%pd$$@Zv+M8hAlr&+DvbwK6*glyy^eWoRe$tw`j?!NiP1%E}chs2jZ`E z-?bIiyxPw_&;9P8^nV5!HmV0cdNM;g-Aj7iL%Q8f`YmQn_Ac6Un-5-&m%aNeeY6jV zU*#8t4gY!f^2w~8%H2fb<2-HgYnVS8zw(7E`2HVZe<6J>#pf^SlZEx4qpf9K)6{3U zyNzeN|E{m!Xv43(|8>64=YM@qc2GaKblYgBd^Phv^zO-p4>2JkIOJCp8CLEAitw9HbQ(;ygBHTas@9H=Hrrq=DPZ)A} zVWpGfeSTs5jbE)UCXI)Y*2772?gx7^LD^J2u6u87IaK)$m({+h)Mw_dAe+uAKWE7c zL?nFzTPG<$sNc;Vk^?GxN2xCkk5Hn-`5dNeYg6t@0xuo`SGPTTJh0$ zl^GXT|B|@sc6pk?xCtM5vGhaA+Xs}HcH%W0->MIrr~~&9&*&fMbas2FxB8~0&qn+E z&rsKY^yFgF{4Ub|PV&GVlymmNEVOs6shw1t==@%DtxQT zzfW&pPx!c9{@(dl|A6u%JF1Jl9pyD|XTy8v=l*rhjKVUMyZLGM{?E_9`qiABq20}; z(J#)wsxtgGX(T=02T-_u-2buo&|2RLuQBQSc=GC}Yh3%Jx?+BEU`@xb4fQ_v2aM%@ zpT~~v?3gaTSLOa9*L?i^nOpVoJKO6T>@N5A;M(ikuT64;eX_1K*|@QpjmfR6lMT(Q zRyDRYwss`hZrR$=+_5QneM7Qb`(%@{P!Zgl=cl z%jQ=tS+*=_Yp-i>uUpdIE}dmgbJmR6Gis`5&X_f8&fMyGGiK>;W)KZquxPOsA)I2G zNs8tu z{vUMn{%2tFI>^31H|EaW4&onRF-NM4XDIu(5hy8TzM=S9x0jkmIEM=V`&0x{r{L57 z9OVBAI+IdMc!v7Ea(Aw+5PzfNJ7-*M87Ixp7RMiJwFdDemqx0bk7MjND13*V#X{~M zb$sn-LJhKCJkBx-rN0*Ern7$5hdVcdy&(UYlNM7aK;k9yrp458uo80z!0W+1AW>Yk z4P>BI)#dazJN<{iYV?;o{l!jyrlY4hx)_wXb3}sNJp;&{0{Kb=syIK?o~C8p5o|Y@D}t>vynsLJ_*YFVNmAxfC|q}r?2yy(r*B7 z2A4SfnNDBwjAVYa(?3nR%KQmX=8u31e~-n7C5Pw+^t(XCuks0)>I5a%U^7S%Gs<6J zstF{2S7pE%;39AiSmyN4kwL2Xe;<_oaghFI)nRZv?i{q3+7Bw7_kcvXkq-o>x}g=0 zT^5bJAf>YgTZ(_l|55m9_k|B{1QmYC|B<~Wiz&(fQM#-Er-O_yjDKlR{@rFVRRhXi zwZ+s-Q2w16Wz$pgdhUka3CiCc79Z{cd&^LlJL9$wAy2VsE zD0g(ORN+d3m6#g~-T@v>*n3%ag9^_!upHb1%3h~MBfmy+ESjLxpw1&JUP?i-T2()p zP~RarFyO-nL8Z6kzTlOS*P{5!LM#94yr}r+hFkZ}IP3+dp}!xT4{BeT+?D(lxw{#Z zzi$q+?&zGM_&pXM-UWUd{tobZQ0E}!eo> ziob0ZAMOMfpPAUiLxBXW0cRKX-x37cGv?f-<)pWc+RR>56|F z^fZvYNhY5k2l>w&vzR&xUJJhmTnHWnmG2LL1i{D`0aLF)-;RDah?ALJ7E>F+8_;h6 z`Ojo6rXB+2t|o@$ZU&UQi$S@&$fA)qB6q8y<*xQqfT{OsF6C|?h*sv5#Z)gScTa$F z_c$nbkAZUcsKwL~Q114Ca`&*s)HYD%Y72NLxE{O?Yyc}jbrt2`a*H~~A6$)oCyt;$ zJnJy+FzGOG*oz^V>v7oau+w4IVcKERVc@XW`a8VGVYkChhgpYdhe?NkoM6AS_PCsi z^&wB=XzUojhhshb_Qp>kL*q#ND8KvT2lzc!bR6j!`;8=xT}9nR#YLUNw+!zZUR<1J7QbikQ5^oF znEITE^s1G2?W^(Y>W}g+zV8pJ9E#OXPdsi_mV1m7nBjT)VzwlhbSB zJVj1=fj2Oq6FF>a7(<-3HTt=|dJinPN5{}-cWm_A^6;g(l?`Rkcl^$h+9mhi@wwW% z_SRYEO1k=W8*=yDVUUv^?C`>g`{&s9DXkEhzb{!aL;a=nV zO||vS>zj~cpbyArG(LtX1*>bey7^DE2Sx^)U+d?l><%_>d|=Khx(jb86FRnP_bw{9 zZr31sks~(dgiYw~y*%0;^he?eotX7{z>#ieG|v7>zX;(LrN+6mYGx7W*?+UwA=wB zcYxWSywA^4;RE*hobW+<_vK`?ykOe<4kNo9Ltpz?UCRazOe-5MynD&wJC>SkWUob( z=6#Do8hKg9=Yb%U1$@-zc=_3esGTh%1BJ~Vz&OZ~Jng6W;lu@NwPlcZCkFQ)Ze2UJ+A7vSBL6GD@ zUCGlGZYYfIz|Rr}iBdJPgYqUFscoj5qt-G=2Iomzineai1QMNh-f?czoBgAG9^Up$~5i_n`Q^r{H`NQ7P!p<5#K z(-HcK2)#B!w?^paB6MejULB#IjL@4S^fM9qsR;dSg#JQ=Zi>*&5&H26y)HtpkI;`s z=q(YtEkbuh=#3G&Jwgwpw0&Dy*O1KZ^iP@whXTE-rP(ftnbsy~YTTH#r83#EZe6my zX&v3M<`#9JT9RTmG_U3y1^u)Qt5!AFH){n>*T5zbO;g{Pua6X?y0yvn<|iWh?Tz&t z+8Xn%bu_MKp>Ew{jcu!1);*3pw7|^`$yWU3v~FY4Hpn^c4J|Fny0+CD*5ZH8uv(#{ z_0+V~t?Mk+&Zi{TN*+>xmI-Kb)w;H1M`PRC=2qNiLD2MB)-~XxT{2v^%6@5kU>&Tl zYi(sgab;t&t&uYa?fBc+z=C33eMieCXGR8)I%U4Z1i)IwspeMQx{OaNTN;xg)`r&h z=GCn@#iWUvXOEg!Q2qQ71zGKQk#%yECz)~;)vYs=h zpYSk+Go}w@DrC$FkSUNcM?uz!#vBA$7Z|e#WWIjPPLL^~FVvq)4Oby6<^q6vxCUHy|NaT#cjM_t-Ht}KP?CSkl!lii}uhc)$JWkqa)QTUX z?-d`1(rOq{o5Y7+=IGyXbfcr^IQj`kYkoxLw>tV4xFK5S2BpkA81!LBA3{(3e{}RN zN9#PJ)YClT7x74Gep&RDj$Y^JS&laIRJ=>Bt5k*KuXOZqM?dc9cQ7OOUUIbNi$(t% zNB?U_f6viharAjdZ*a86|59IZ?%(I=Mn^X~dV!<0&LCyx0dZ@)qtBry|Nqp{KXSC@ z+ob-ANBqBb^dCF=2afJ?^nY{o8b^QV`Obg#y&0wRdUDUF_m!eC>-$@*S?0}i!8ZLM zYunr%kw@Dxv5{(K>k{NjnT}^j?nEt>Ry&$*=s_igNHyfDxq*ta=SB|JL2JW~v)$;% zk1S@-^KY|qZ@HJ*H92PPE%!1zH*lGid&|Ad&JAW}<=%2HvvUKSS-H2|%k12sXIAbl zBJXN8!yzZzD)$y0At40I8OgmxiN4I`Mb3^U`UG)5%vYqPEAjyML z{nKaOhWQ>a0F*UlH@FS7Ou@;l*^B*U`~(+-mk0mC=-q03v+YvfV;=hJrvwC4T&_b9)L z_DZj!eR!3>MEmfu=4fdDy#o_h^tzFRpgwQy$_*0E>89uERem(-DPcUW3Pe6^{aQ$G zrmdl)y?%hqcPdvan3JBVWn{9P4sC;XJ5&=H8h)2t}^5{`TO453)_);IK zkn&}}&zbSGFW)LtQWrb_(O`||&c{lwfhjYC%eQS;ocZW{g?HyV$InD^XoMtuW>8SD zzUXr9WF4-@0exG7ANP%UP8O;!lpn|PB(WrvCDk7@q3I_E$HDbrxc*Sy)gylt7s5+b z=bsDS_~^;l-j5b?E{*-Bd%!-3J-!TGY`vt6E+zNm z^a^sG@nUej6q%P@e#eUC#;W=8?)XGgeLTsmQrL&8m*kK1KZ%-pF7{}j&Jmh=h;w_N%Wk|qNIcRz z!ru4p>z_nV@R_L<$W^+*>L-e0pPAYmqPIk7_$9$rOJycGtJB;apTNu@y@wqG{z z_snG%_vh`Wb4gfk-}3T~w4Ai}?OTz3A8&4q-rR1dj_opCU3-0V zb8Ws}b30SN%=lRo9qYnWvnE1AJV({524_XNuC12q5S&e~*;v13s8*yv`%yi!z_@jG z&CP|{52mZznItXTuPsw?_ZBiHd` z+Yj%~UzpGZxqFNpIS4MauJ;`muK&j&XOr@j`}~~Vh1w&vKT^Hs*UEdAmew&9cc?rk zFVr6OU}=f7R0fWv;Hrs3fS!!U(p1k>KCR8QptIM!k@ZP1V$? zF%xyiuPp{&uxI-CWYb6Y?o17W_mZ)$7o+QpQFjWte=+)>E*n3whzay-hJQ)}Bd&01 zyEVD79`W_bs`iF8$;Wl~L3{Js4K2E@Bw1gdtXj3??uE&!I=0NP8npK2YIIuHRbhKA zD;HG{%t=kJnEN@B>soJ3-bbMB z+0c@lH77Z%`qr6qZk;vP7)*Y4`NCj5U!@hCTkUtUmestLFXN-COdJF*kc;kKdTa99 zn?6f7x&5X`I0CnJ)5^LwR;_MY#43psg^%n~AHQtk=EJ+Qj8m3u&t=&is;?K1D1^Isd=$JLc!v_8uUSQQU-WYuPnu6<^s#ngI`z-L-48o7?t-)5gYn986}<$mzEqN?Bsr@cDmzhU#pb%FU$N5 zE~oqyJ<$t!q^@@SA35{#Tm0e9ytLI%oZ$G%7vg`x@!xXv66c;@cl(j!Bk;(WU+wsF zMZ@#q{j}rz??XneSqJj%^J}=TexcG$Y5|XE@}f~UI@*`3FFAUOWpiP;HLrM-TFoQ- zw;9ULfs6L)bG(E|(@uwJU5aFznc7t?b*uea5|gQB+oaZra&sEKg>Y?0Ep3OcH5#N{ z_efaV?Y^|_L#?xmt$YpkOR}{x>Xg6f$IXj)kJ)>`+LyTrZLl3RH4U}Mhpf|<48LrX zTgl3;TIE)#a;s6fm8ZxmQ*=ei^rr`}6mhG{%}7`DOG!3`3-q%Kt`E(cQ%H`wyAr0o za6kK~5;kd5Uj6Kkn?K&~GC`k1Pg94Pew@qR7v0bH`C0C%sO-c6>PJ;-odT~e)Gzk# zs9Z{!v4edzzpfbObS~5{p6R}?)7dB^T>7>X{1jWgJSQ*IFYd?QSnSCX^>~oL5%q-+ zg4;m7FX55$aVdYK{|S|xb#uZ)_gmrT%>1VMM8R*wp}bzuZ_deZzb6>z+=S!T)u(xB zE55I13-OhvQib@_EW03I?J((W_R)YT)!Ss5jNApyz8V6Rk^5jud4nvP0fecn#o=j( zNr!;=%zp&jw>+9Vj?1{acUn1Po4odwy*Q>lnkfsYXL!^;Z8B64v^n~iqw5`gEsje) z$s_aLev4=V?#t0M=x}>A&(S{K?sqg`l$@1$*)z({Yv?=z%fniLW0w;<8#)>}0pTal zmA+fG@I5kes012&AJ@YY{zfQO{Vj~ zL#^{|RHP(LY+P_1e=MC*shzTe^0cp8NGhW)c0PTkETZI|?Czmr`n)s-*VEdpS8!d< zyVL6epmWz`lR$C=*xx1PgJy^e)vHUGkW(I#C1Dfv_25A!7EYiUu2;vRuZRA)i9eO4 zOI7EKB>ysooE+BHo%sP4IvHh>+g2CvzeV>w-M%q+bPqChaDPWKF3|_b!$J0y zu-jqQVbWm_^XlU3p?sGL(}+z-GLIpdqR{B^jtrWi!(s2l`g+iR%gav$k8)PexEJ>K zRopXjxu)8=iok~nF%Qze2KVJ}rxDjM;BPf|IT`))=c|Qjhk?U7!me<>PuRrQ^IpMl zTA6M#|FXQ zg)g+u`kmLO9()@&_Dl%gNDNE=oA@uM*3_OWdUV0&#Iil?*Z2nd?5j5Zhu2)gZhQkb z$adQn(Dr^4^ZKSdvkM2yPyK-W^GjrF$*k@H^KrsiNfReoWNV3+1mDix0d~c{Ze-SW z>i(}elJit^v*IV_BxB_?+jm&SeYt%U>n-NeN^*UjHM z6J!HEe^|bm0dk&UA%q>Rv_~XS^P%!-A{{3_8|vgd&N_UWwjp_J=#TF-osrS z*Iv|7zf@sozs&c;dPC)N(#XjBlYBMBo4*ULHgAtcV`-doq%eGX~l zclx;LrTnlDB6k;H7W$p*(tE{M9{)OF_vM7Roy&A;X$)Cy*ShcTC4Q=@-&MD=Ub{S8 zhE%S+Ki!dXl!W%>Xg=ST#66!zKJP^7L@DyZ;)zPR>HTLO+1*oPlj@$zd z#rOTk?gISdG3&r03xnJ*r2tD!w=jsGcKkm0L-}8>&I#)OrS5IOtGdoR->oAd4j{ga z0O64M0KyTN<6;{dNZ9cKlSFn-QfkXBZJd$#vPCQd2H}!~j86#dC^elc5~V{4^H_E@ zcZ5Sybt-pot4?H>_A0TGl7=QsE;Er`-5JHGQ!*imaFlX?|MhXS&(;yLJ9F>cyPk9Q zf4}Q}*SkLV+H0@RS_@9v61whl{4?AabFckKWKQuf#@F|sj2;f6GA?{sI{Rcc^DoA4 zb^I!r#rU0cCdyP=7#IE?$5*=uGmhWy_^z!qj(>3y_d}Dozv}qO3H;Z-I5HFQ%Urv3 zB7TMAPZa*DN%+;1@RRUa&ydzf`x0=3@Gb+jj}OmBdJs&37aV;Sl-wbQtDSucl%7gQ zkC3mD8w8hveW3K61toXJ(fhy>=thSdK++5GeZrF4A|=VIMdh`V>gtP`U-=TQU6zSPgCl`BqJrf%KE7*>_UkxY;WfL&nyO zeIG~@KdXHlz_16Teod>thw;I56R7xZbyx)|9+jZtF+|Bz{MDw%tF-1Biq<*?h5wAR z*E$E$hd{+c^N56xfQrXzP~ofr6;ADo2Zm+feC&G>mcKoq{5=cuy^!t%m5%M8(ox?* z3P&qQ5YyTpK>jv6`z8>Te*c~HBhdWPS|6cs@QyS7RD<$|#*fio0ZM-vDE;cslK!ip z!Z8TSp9`S){f<5h;w0VWupN{?he5e(0!?^8#jgRBzgt1YYYQlUYeDJFfbw@8D0izt z>FP0#I&62CbJ*Z8<1pnA zkP7-gI?6if0Xa9dj~#TbOx6BeGS3md=s3d<5f<(1CH8hVw6Ev>(eZt~rv7@#`+7*_ zO0=&xzv%eBp82_*<#Q(Ctp_r6|M`4;W#p$ksl*Na;m-@m7xBu>beDIaA1 zlE2*h_t0-kp1=PNUjvVRmNNgI`4i;T@8aKU-?MaC3n=r;RzC3Woy*wCy?>9Xyo&bk z?MLxTw0}=GI{&0gCbay(zo%QVLnLqJLqzGLG5&2a`a>~#dCdKnVtnb2>d(dGRsN%V zx)loO9Wgqn|Fta}@B7gE>ljIRV#hxA0P!?ER{NXl4;Kk&qqP`5 z$&1lbSQFUW@z8{q{X~ zZr{y@6keY?!#&bEUpUpW@cQ%iTr2K;>lpsM^ocz3WXs zYCCi_`UYr3tV0uRj{Nu(?FrL|Dt};``CY)@i-+UgPuWt64yw>O%S_ zs@QM7yznfD(wj$mD|Hq`IeVR#z3_9l7rnkS)vq$bxxk~PQ|Sk?eJc&~bglz?)JOVQ zZvJ%XyxOTZ&q#hc^991)xo55+zcl(J9EwZt3A;rC;oS*kF53a88G{% zFE;l643Vg;_FVrt`|Uqv(lU7Ar#niHf9HAAPomfE@geBf*i${>`VeUYce991ePNbQ zU(Rcso#FWd|6=1;8p=7p<+jYV#+w4p7B+kL=VgCNm|sr3UnN=`D3} z>Lty8V_7h__P{$Iswye@m4&5?K6IV4QnK{tZ00lBr)z*bXSJEWUW&iz&mCB{>2wL@ zw#-N!yNRpn~_3!m|QP-b6xyYIc-qkcZJHvR*quWNq34|rhoI(_={^L_daj`n8| z4gCE2J$y?N=ka05(XSj2%K+yb-6$+2E{!>3s=(jC(ca(O==FQXvBJp885_ zg`>mt4+d?M?|)zHJ+dRH{qV;7(wiUL^uhFpHh&;s(lpyPXkP}VKR54Y2L+b@L41M< zZE9YO8P(5}AFhQ)?Ph&vCcy=u#_?|g^e=jeAjd9Pox8dvx4|8FAC_f_8fId>5<__q*I z`o$Q3M~qL|E|6ayqshYp{sS@kOpHDk)BnC0{bG#%l^6|K;Gfztvh(KlnEdx)MEOlI z{_n=VtkdisJ>6e`1LWqUQ$u{<``|a#iMSjXNIla7gC>r+8+|!f1q*qqwz08 zZJFmCXtP7JmknQx$cwZei+&0O--cF6{iC}N?b^wAo?qAj=ZS4>8mQ0BVoW~J^hFtE z;ln|*4w@T}d`aG^PsHd(c6LKTA5L=)Js%(1PIAk}2RDA$?m%Hqp)dR_EGlxa`O$Ux z4@a+)4_r1f%CFDf!3XGmx4oVhQF_`v_6V)L@vI5A-YXgazB41A&HJ`Nxn<#gH$J5c zAM);d?Xg{Z_y8aGQB%MF(H-}!Uz?vm7@Z|(w}g0WGfgN!n72D0@Gj=_TN7VTzH9rA zox6AVPpo^_THzskeTWyXbqseOJHjd|H3kMC<-{9jezvRF_fl zeBxE~w$}aURIy|Hcd@5^KJiL1=B?(_K3=Xe(#I<)XrwW6NfvMOyV&bd|Fq0j8b47Z z-BB~yckzG=SG#lAhd#xvmc|I}1epSr6P2Ue5v1J_T)|z^#Zl#LgvQfdU`>iggoh>i zT}(ShZJ9tpK+Ml);_j`R=$JUJ+Ikt=_uq02iQpP-(I088ZS;(|_<5kl9p9r#&Yq(! z)p~$)arK=%z`4~F^YT}ABQh5gbZ_Diw9wTM06i0vzj*ssL?_9FJTV}EB6`#Z6}r-=PM z*uSTUJ>Q`1?<->eKI}IYvEPLK2a4E#0Q(1u*gt@M!k&@$HS#}xPAf&z^kuw0)qImy z#>;}v>{CC9$^<39``HJAC+~Cf!mu;n>O2tU`}R4lr9*B&=S8MCqnYzX{kJ~VFLMkE z&xlP1nQM$Ybo;Vp+;Ud(U8N&y|70oiK7ONlM0QVemNxsX*NOJ!OJSj2W}RGcoc^TN zl@7J;j+MICrqv`)>l=~!iK05*Z+$PeyL8cacsy*Hdyqm#sQ>Gv0rMS5huq%~rpnR1 zf66y`3E$=kzR^qhR_BcQPfcOJjS|i}oJzk^`3pazUrGH0bgt6Wr{xm-SK9Fn+5L0(Tq>RTCR}rvc^54oJut%eX1CAV zfH^2f7TCN=aenQaxLMQ?oSy$k;`9R2s&Y>7QVuu%`+I-})yuYcT)IJk(`z`tm{tJ2af00*% zS{4(>E zuCEN9d>;G>GQ5i_=Tp9w&h&$=^yyndKHTTdI99we^y^h2_j6>VQ+r<^ZU0^JV6F za&G3|{0zVOzOPi->ipzWBhzMPu9eN#Tr7L$^xx4Jlq$LRyWiyu=zHVONrK} z=5#6uu60t6M(g+t^mWSTU%2_S=r4FaC#&NrGnEsi$CBBT=dtRwM#7*vDqn^;?0orFUaE|j-fHtxeZQG$LH8okUVgsj&S>ua;|5 zj(SevLI2}V5DwMVw6QD2^UufYCQh0IYM+;0p3Q~GkvEmE6Fxhi)b_>xjB@+6#KOxt z@}WWcDKFB0opQ>%&XrRuYxM@#zW&MI9QitD=KePmx7^=gZ|v^>#r5u*`P4&THO~n4 z^m*I4sDG!vU!IeIzTJG@k#;|zybt{7dcM4?4XOUs#7dh+syF{dBwYj2`Loap<4AoE z?}WlR?wZH?6Y53NuTEOeugA(({@KKD2O3Ft?ZZ`*#TC za}8$R~wO@hqnA`h8`*8)oossKAez#D5m=#@Vz9<}e;rcHBQ>@n^B~ zvp0`qDD%>tt8mXAakqXIhUrGn-owPjJUg6a9cWM83YaV?N0jN)qI$JM-GM(H6XLkhY8Jeq>hu8ErJ__2s$Yv$u>Knp$#J?*N_2 zy(IDu;2WxS2V+Ef)>OYH(5*P0MTg!y%HJBsE=o%?FI6ubtH)I~tL_VqQ;+{B;2pB) zv-KmtPu(q9Ux%lt!x!RC`mXc*jn(7!`H0u!&k=9hjFl-@C+MA5P_N%*!`49glFp}j zcNRPIdkOjUi%)GKpMRPB{s{U0Ve&uAJL^M?)0E}sEh}G`&wfqwTLST*sE+s+nvxiiB5vSU$*>)?#H*!OKG2vJzE)`sdiUa=)Lj)Va%E5#D0JE zQctB!87^##+c6ybEZOtK$M~c{WwB@4w|D$=?aMLwWZF18{)ugzV$YY-u$KBk&yRmE z^zyAR^pSg>38svF_n5Nl+Vy>WcXpB%=N70u*>Nq^6^ftAl}!gb7dl!uknTmF@qjQW z4{Uu~@tx*N-|gZqiS6K=)6^##S^&q=gBF2m~s9Or~?Ueh(Ad+PXAU0zhugYTrvN3 zp0CVA`M1;Yd1uIs^FIlnbWM-q4}DadN&i!2uwu1yNd&**{^?QUj+h#Fr z1v z14^IH_m#dg;GLk(=_RYOCoG0Kr&scaK*`sE%fJjMy*hUn3>SmaQvoX8SIJMsdjM3t zFM^8q1&iT%Q11IJhJB#oeHK)_wN6s;>ah5+M?mS*dAri5b9Q-`WiuAT4WRU`vly-c zrEi4DtO75Aw}HK&!r2YhfH_d<*bFM3J3*ye9VmTUEQUINSMk3D%KbTzXCd9`Q0MT9 ze;8Z=?gOQ7tFxzFZPINuD7`vg7YrAJk{hPrtpEoco(GkVI!{;WaLnSz4uMLCouJa; z5m4#6)nZr&ns8eTwE>*cVFRdiT?|TJmBo);;bC9|Al(lt{9T~J(F!VEa-if7Tm0BQ zQ0cQ1ls^p?!&*@8*MM?=rrf&Id|ljs%Sac;>Wgvi?Ck>Dj!my z;x`ABKcgsJ4#v;l9l~Dz3|b5az-r_!f+l>R-1UGYb@r^qup2btvlyNMtC8yf-wmDs zRZd&L8n6LW`DLDsNtcY{YktL2?B{^eS79;KJc|_e1E9ju2Pz!BAR<|<9{|I%Air$4 z#ZdDus*!64l}gP`*HJgEHCd~Ah_ zzH<|<9H?*|0u`=ii{U;Hud+=R!$wfy+6pRM8$jjH8q3eFwis4{j2)yaz?GopWu*CC zEwS`4C|dI~#J}KZjkAmHar7BScR0Gu(Z?Kp*wM|7-s$K^9G!LaW=F4a^eRU$c66nq z%N#w*OGV)u1{Iz`M_+JszoUB`-Robu$;`YS{?a;j$}SN2lbwg{?wZ!kb=aH{JUDG=8s`DeXr0lC4|SCo}@&O9@-YbNIt&l;RnRysN>H~Z-9veFZCPR(g&4~dI& zE^$3S=fWIx&263AmOoASeB}ks3hrHSj`M-fF6iNW;Esiz3(s&q@P&mJx%MwSpFb=3 z#G+H21$_4Ao}0@`FWo$F^B`vepL%EeJEtbv-g)AkWEf^%S>ZVA67o;uuD%_!org@c zo*$Xt=3aAT{J5f?L(zXtyGG_m{3Y+(!KWn8-?w{*BoFP|xi3f_yHn2n@5w*t9!G!2 z$@_NQOobOa@BdWMxbfqXKjL2Vb$mNd^_pnk?!4q^-;UgX|Kj_0wdy(1zMZR&aM8Zq zyvOUOa+5jYXy0ztd?2H5mgQGFdW|JD$IbA4JMwWyXNZ%`=lILLZ^!?wqkX&ley2~e zGB@KtR(YfPAxgKPH%iN&DE+H3`mUJ1hhntcM%}A^iqiisrY}ApXj)94_797?|9Xtp zdn3w!E=JeKYw&4i_-bID)wNh`fdC7Z}SJyx=&a4ZE8MY z%{l^h+o|8td?@c!(`EDpYd&oAw)&LCGXKTv_lvdP!v${iF>F_d+~8|Da>SwAXrpI!z_ob8ufhi)`|0S##lp zIDXaprPE@W)iidfE0eF{v_Ci3&&Kj+q}p@9Tu{v!w9zP=^*s@Pm`cP1tB6kpdz>+a zOG#i?+>D=v70prKOQCrr^^Y~}-L5_4asU3U_4jSeW;d}=$;_1cA2>ZWl8Xg>9e&D` z%Zuo#vSTUu77vmo2X>G~+s*m6+Fgc&(p*~FnO%{j8av-LVriv{l#T+1C88z9MapE}PIL2I*=@A2$uy~gyX z+B4>@&QDtBDn^o6mC-rJsw@u3j6V#&nMclY7Q8SeOt^Cr)zH zyH55VIN|hZ0*FknOGitMuPF2$C_K-;@Z6+7bozW&eJ`fZ>-AV)zx}`gPk{0C^Ld{1 z3XzG%cYONY_&s&jImkFa2VDBCqchlf5%Fo_^#=YuRf{|6k|VvRTA-DdBNVs{ensC? z>N?V2vUB+(`nFBsdu8nW3cRxKFU@=Sce9_Qf1~c{KLweG^z?t2{UqhL?&()R=IcHE zSF@koX6EgUwF94iVfK?1a`V5>ev$;P6TJ~P{+&iZE1&-A>?d=~4UqnAteeHImH%-s zqcQfU|77-)4U)m{jdm{DI2kW5ozZ*V7p(#3+j%?bE9Qr{OSWa!)iD1l;2j!u6HO!O zOqOKU57|BCOjvwcB{Fut2z9-g6aNL~w0NG{$)5j(*!vm(gFo&0qt!xhZr}L{x>Fc( zN(DMMW8bbFyE*ASc#r3MRKFX)aZiQpWg7Sw`P-PK!9YV=(aI_FQT;ph=_^TZ)6h8^h!M@C*ITwNQYtBUg!vVrAcb6=N z7eUh1>{F!i-)?9ko$az1DkFG~vwClX;USPVR9b~f>sV7D&xkqykLShghYW`3RQhBI zi!hWNXdWe@-RF1?ebL8CT3O@SRnlFONL(rz;Qop^XW(d}g;k&D5`A2I61`jp5`$bX zBrf8C7S%`F7hgrcS$B!O%n$gB@AK>M^M6D%1;f{aFF~ulxPF9 zm}ZUC{*(5E&iky>2ySm;&k`DBtf*9HAeTqkV8{0}S;{r4e7D!ZJ@sax`IrN@wDExb z&NW}M93((1i}itA|4By(kd|+^J+^+GKYn_Adu(^}joV{iGAGc-<2j+3ti9vYsUe~vsxO}8lYN)ByYTVeHl~JrkiJ?nP<1J$Aj*?{ zmk;4i?*uuj(w}v59|HRrWY1C0DVw+OmtkIp`O81m8>$Q6u8Gf^+!3t`ISv0ZOkR~ycW$dWDeo)F}KpsrQUw0Z3kRs ze(Qqk*I)FqPqTKdfwgPW^EB(#8d$Gp?pdSOkTCnBw2AirMi;J)6f1A{c91#f>*MR0 zuCs6SNPP+OR1?fsW#92nv0kaPgn7yNwE-qAayK(4n0eaxr=ocLHRcEVbw`?8nWOzP z#J(s`Cu-j4jkL?i%6z*~Vda}^jZ4#)I+?S5Akn&(a$?#?3)s(=ceC^xKMo{L1vPox$z%aS7PR8j_o5oQqMlkth-V>FCLCQ=7{zsGB34&-oLm^ zC+iDbSl8EbudqE-65KP9JZ(jzbLi*S*F02`oKSA)O)J+4TAl3^%C=lHvg>QXhe|pp zl&c-Fa!JtYOid^|^iwO_2|iRZXF|EopIEs@(CVz2P`37}^B;Vuq-sLBaraUZ{NrGCUQX_*d%6#lWb$_Ld~E!Od_KOEh2y>aAq z%8-9PrGx6l?18+`u2nGQuO!HQ-h}V(udg}Cx;d4FfbR#{^$uTWjYiP=vjl5kd3LdL zZpO;H=Enb&GIkyQ0CSGz?kALS+*ST@N$XnC-W~N_>n5J7l6!4kF+e}zb1C*}j;)ns zZadD$`;{5GzUI65^#j&GyzsN@bw5Ea`kf-bZ1}bA)2^rRbjs0^=_Pz)`t90=6n3if z=vQl{y|~`tOVMv4U#B&=Io8ZEzt-U9$gZFF6a?M*)5>Wu~)$2Qe*1JqgaLutVoT*S%FZ^x~vH?$sfB3{Hl z<9{UVZBd>-pD}6|i|hXs`3d|dPBy*9_%>f%{^$A8@{-R__kL<%pZI8gkLjWePgp*z zzsa$(Q`9fzL;jhi&-;~+*=L~F^kWCD(|G3QRR^c>=bEkK$NIsCa2uds>G@XrwP}Oy z@TWG~#Qe$F+N=NK(P zL0e5$nhz?o%ECDJnqMk2k^BBh_?H~N0UgD{x50dQPpn__Vr5e1IzE0)lej-TiThKN zxIZ(A`~FGz!;|p+{=G{7V(GKaeYa#Li2otSubsesuj5x(_v7;a4E)vf>j?2b+u>-T z=ypd7p~Dm43i?%!fhf!Byk9VE0*OP1Q0^KXEtI>hjuwhv=V+n$TR`fo4x#v2M+?Qz zfP7n|wVyF*kzNeeATN}Bm7|4{4;(ENf0TTXyioiRPbh2ke2Efl{Dq@j}@;W@t# zyaLitOKZC=PCzQLRjuy(@K5#L7q4-UX7K+~h;yzvHFbl3jUMTrmM++sd`IFKo6n~AQh2pPv z_NyG70%`B0t3aOF4x!vtI$9`q72sy%k|5u`=>W_iFO>W!HMMA=A zu%m^N8v-TQ59)akO70xE6#HI~Z{%!`#ZdG1_aP_b6_nNdebH_nf7l7FdD}X8iswIl z45WN#TP%i0!31>9Vt5$54Y?+;8r%xX-#U;sNp_3HFbm2bq5Q3Nv=BPXfC|4*;osnB zq2jp)T#nw=pwdYwxmAu9N-hO1L#_%m`C;v|m5vrlt_*xPa>ID8dQK>Pv`-8zl-vMF z7NzyRR=h5PeA{L(SPajDIou2RW&0g1@<;0xL<{B58Bp;Tir)ds z-*!;`o&xFr&YrLswt-4dA-}BVLx>jg3tPBIpHTX9;Cs>2465D}%AY1s{xpK}N9!c! zVBcUdd<1MjUdS)I)zLzJVU~;Z38il{D18}F`Zj=!ab?$84A+3tC*+r1?Pwvtu!f8D z2^H=XsQOhX{Z*j!SAx<%2b_g{g~c!lZb4qiFI(nlAwRRuL;6M%R^Js+`n1kN`i4Nd z60=(G0fqyh^a-W!lB0#vcL9_>p~Bk_l71aRh4&mN{k`B)Q0qphC$ncQhTWjbvrziG z94(ao4p91p(sv4!z7yb5unnY-E!%1_JO)aiQ2NwADq1LgIZ*n93a`c?s-cC_zYmoD zCU7a(2-1a_-Dxpw09PX~l>SE?EtLK(p!5l)uNIWP&EQfn1M*#%-C!|X2TGq%`qnsF zD1ECy=@Tlv)u7%pLg`OAS}1-MDE}(KrQjSeiCl%nFbSq`FO+{}juy(lQIv=;8OerB9c zwEA@Ug()uR=@9bEE_Sq#UpO3C`yucF^bLaKXLkhqxm3*~;5qlI!`?P#I+DMt&%ue6vSpKQPr?8`F_ zUAZln=dvH*BJ6e8?l9-D!C}T>%3#*Hn&S8VYjKh>eKq?q7UA1~@Lg%(O zA7ZpL(VZU;y_mR^NF=T%MzA?r+QN>wZKWr;wwHEr9V#8>daSIKbxC&D+@7*t?z=e= zgmc}?hPYlT8{pbHrHwU8EmMwhJv*g`YuA)+u7gvCxL%qv!1Y*pDY}<9c>#57!G*FLLdldVXpmF*J3U`?lnXWFm1U*~J>D z^T`Wb`;z@!dy>6eTc#ajJydSmQLa7HdbxH_JIl3g`ibc!i8Ir?rz1bTpX-Skr&tkn zV%DiyC5ir77iQsh_A#^aXBQ8BbbRW;ksWfEXBbo=%j}vJuSne<3 zM&@xx_d5AIuou6Thg(LQWsA-^dI%Klzw1BX=zhmv;%NWfE zqyNm&haLT|9DT~sPdWOGqrd6&^*dVM9n!bX#YdHt=n6-(C!tB7pE&wO#~*g?KP>l= z^!uRbNcwFQO&I(**?UE!!;f=)k2q>P`;gPG_e^wr`=435Ood=9f3UG5RAh{qKpVG)BKGreEvyqW*tB z#&`8|K7497MCJb~rvHD7g-`F}s66|)6wvJZS3v*Qn7)4(qo0V;Uy9M6jnP+Q{^ggY zOuRVC9fe)LZRbw28p>{-e}LXst%lmSYmZLX_RJl-_ciX?@0h!u+LvDyGq!eW@Ai)u zu|2@d`dvlr_iLLJzqDpd$)3HMX!z*v$6PQJhNy*~eZlcahqOMcU>57nU5{=%*rel; z?BcC$2R^Z9M~t!@A3Za##2kXb4gDdi#*M znM)RoS{~9#WqifqYZaqD8a9+nD&qxw?Q|Q-oZph1 z5mK$?s)30$-B8E{x>$rKVnu_uXYbBkO)RGx@B8*`2a4F*n$r4KFfA>z93VCc@Aey> zE%tWTXRW>G?mJV)6q}!Bi|p7ewc_gr8hK|2DgGF>e=bH}$i{Z;lB%%xEpmfl4`O4~ zeAJ(&r7>@Ho>~Q+Co<9}mD&&KA7n9Zo|;)^A&xQedGB+a9==tL(SAlW9VRrB>R9 z^!<|4(Cgyq6}sqqlDFTD=jHo!s>-`43|~CSC!43%=)%|T9A0tpO)ju|tK&^U5E)BS zzoGh;?A4tEKwrE1U4nhMt3sC?Nv?%i8LPlrCZ!!BA*1uu^kJvJ@*8L754BH-ok5|!=QcZn8VOc7f6b+@aQ-__O1N$^Ufv5_`;LYku1r)RJJJd$@sqSQNJXw zxd08!=P0I&#^xH$^{6Qr;~yKJPflQ8=tu5vmLTW-(!TOOPPqR(&)c@UqclQz;-?wLz{ zjplu2gPYfqWA0dko9|-wO=ka0_8@+cqG09)Q3fizaXY}iuCKA5>Lxe0hdnFjdUroy zFUB{RXDHh5FU+@k_lTL-KpwM)rS_YBi8+SdrNQ0FK>J0`zx*6)Aa1V6Tze1a$4U40 z_qlmP>}mbxKVE{!jC!UvILL3(%zo;}WzvzW)$bT34Bz(U|Xv^sJ7r%|&M1K4R z^BBJYe}vDAb;zM?VDLi zm`E!#FHPZ+?iR|0!rgA?e7a}Z&fj4Vn{MRBJ>Qx997|i?zfSrupv?as^SpXp*-c@0 z5Z#=U)b0Ike?G$;n|r_e@0qLin>=%NPu9v8Ho1LIe?mF?8D+)m@Xu&8Kc8Q2%VB)4 zPNk{RVWMYu31wdUUSEymjn}KRNR|6}qc%uy?ZJ^%M4^ ztz*ygDxMwc+}7`su8bLVw6g&`^2}JuzT6F z$R5h4&4NhURK2h@qCdxc)DiX;eG&PGd6uX{DO1Jkmw5XB32vUs`w>n51uy)R@F=du zbSaJF^O>XNGn$^!`fz@vKI|YpX$aIQos{nFl#_PSQ}?Rlo}v6#^6bgZ?}dCzFwg9x z-bTIVWuK*9yG$BLkDpWb(_j0GPV|rtV|&P|Ohk1Rlb@)}Xn$M3r#|oC)+GD(nrGbZ zFPne9l?FVw-TC-)9>u10ww$(8PUde7PB#*t%2df|z2{QIk9JIDUY@y_ug|seDaw@e zdA}Mcd&J53<Vu{8%v{9@%h~puI5&Z?E}=c(pWWaF^=Jt^;xWMVpkm82~HWhx1TOWAc znfQFgw>BrzefR8;W^0-N;y`n!(8yk9C;wvn^M*U|I)2uG8bjWzO*~HjD)$kxWdi+& z9e?u#{9eaT;t%cZar*n5O#}R5{%f9-%mx0a8s~o0@ilH*%zZNtxQv5>ZwlETc8osm zi-m8q{on}1$BXg)!^g5?6oj80akLOR9CWl$`~gP`#qW2tQ2ahe3&lSN&OyIW{2p*A zwr-PsFee+s-6`=icYDEq^p##fu2y-@br7xvxQH#&Qv z>~}g^2pu+n)yQeXc7~pln1#6&BfGfeAqcsmw>7aRy=;;tD9kw`HsC3AJ%C}k&udaQ1c9BuX%&QjN@-`{Ay6)(|kRJPpI&fIa;Xj zjlxv;MnHw{s>M+A^%NcKSJcQs~jy<`dtm|Im^SK_(K-ML6Aqm%&S2(+XD@Toffkljy?rSzff{* zAoFp}yc&wUS)UJvE!a!{QHx;?lslo^9d@)({u}}qp{LIAU3(#{g;qQ_gJfYgV=>$S zk_Fjy7Q+}11f8NaIsfl$P{5}ImOIp}rV5nr6YcIPCFt;Remg^bj)cDh-b(VA@ z(No^bY?kxo7s?Zf(efO#R!&WAX9i2})N|YqP95TUG}*#@mG)!@*AvN8T)UFpTrVXD zxSpEU&a9QI(?+=3-F=TvZ(-I-&-7ldmu3twcjbJ=g$i~#sOaO`Q_;({YgRY&SkBGr z<9c=02-j1y+h;SEW_AzPuG!sO`)2oZZJTp~U4HxK^mA>W+rb{cC+42w+BLVE>%iPW zuI)E<+=MSTUEta^uY2C(WTxhMc(YM71;+OiYkr{Sb@+bmYA5g8tB>MP{1la-%%}NF zpKp(ybhK}uUY9=jo2fixp5m{0BEFxyPc(erp1j}DzWumM{zt-7FFNA>*F{Id|Bz@N z1m92nee`KwNiX&?+#1@qk5&JOf8KC|K;!zNef#)N9pABoFFJlR50wma-;BI(&wd)W z^23{k7~PJ(DE~-|{$NaAAJ0*F9U>H^dFBe}kH`48$K0QY(O-?xoIP2f?@Ek*Ek>8e z=tVL5dMteZ5TjLZ^UIt67^5%8=&_+}`>n;W-Cpg$86Ph;J8)WHRcr`;qJjEx#bf`$J$6fw!c@iDZ52{zZ? zx34YS)+921ta0Vl{=s~^`1o(^bfD#tZJPJn8E*_F(&56;a+#=(><*C()Zp=e{!xg zc=7v;vrgpCYqQ7Bhn^@7KOz0)kHWzC`1;-C_X^6}H1>M%`P4uj$iHN;@EQ6pzWu|} zg|7xB(|)H|nnd^2ke`fkGX^w1?Z%hOu`>&crAIsY;?MQ;XZ1ZyI;6^M+4&CR4oV0A zr+=Wbm$XtjmOI(^Qf8udrCQ=T6@{8*)s;tT0q&+;{^Q>3SFH-(;qt_XZxAHb! zZP{12OYO5sesbn#8L*HW@>nF&sf&Z(-S+e>o|IGQ4Zk%F)b5CC8-KQu+bv)BQX6(tk z6H@n8{#q>VQ9m0BAqC+>)Q8KzVId{UIGu{?%XJ$R1CB zVdk^=XInDzU(dYpleBVkQ1HtlW|pyaMl9tdlC7*zjfFPH*zp!`278yQ2sZ8^1l(3|64$Q>CIduw*geRM-NJ6>mMCqJ@h0C2%_K&Vwf0AkV!yw@>lXxPany22^<3L4~IcR5)5derffO zEdv`t#cwC5_%(ov-x`o-(ySu~L-n`8?+_|nHI5c4TpAzXJ(*TRROx&MEJ3c_;VFw| zU9`$UBecrTR#5(FTtMX~Wiea~^2=6P3`I!(3Q8s43@RNOK#ilQzhCK)0hJEw-&Z=Q z|6cK{0TsV$Q0~>gsq|1Fi9&iHu=-R_O8z`3`F>FHJ)rcT1*N|Wl>Sqo^t6J~(+DcR zgbM#oM+>3Dtsr_kgyPpZS}1<4v)}CKHK6nfCBNFyLdn;F(kB$Z+R;MsNi$};gBysV=vkvLIyiuJHs z*_udnmY-o1K&w_u5(D)4C%6vM^FKO0H=`tRb^7S^1lN)2rNmeL*xr1K8}(cJet-{% zCWE`ke3@xZUiF*ImvAfh{(YlzCtCHa%tlB1_rbfIdtZP5iQ{i@^51rJjiZ0n(T5!U zUo2hb->*5xSN$yWxTF31YoVi0IsU7nBk}7J9f{u;MN?S%oO}ti`qh1V<6q;4X#f8I zKP_FRhe4)`zxV^_lv%}JbVdY5&lPl8v!U#{fubv%{7shcxIysePJYnY@QkW_=1o(K zrd?gYKNh2R#pr(@qrVfQhAyLkJPU(X1T7I z<=SGF_Y||dyO^cl>bXc5?lPUGcNTNy5927}>W+M*3nF>@j=fDgZ@fCEm@?JiZ+~Cu zwd+==tSQnj%euJzu5Y$jzigiha7w<~^*VY-PGmBUG2~=C%{x%Z2?coyq!9Q&vmhG3oSW#`JMFX71!xVNm^J zuCetnwMZ*$awIv8$EphL0yAK=A5~SQ{t7p3iK5}h`iACp*I%W+mJ<4^T>r{AH!l4Z ztOBF3;(ykKBNUUcn05g6yg|!MQs0Gr^!-Sml6iml{7A>>cZ()tQlN~|OZC4ux{Z)@ zpi>i4)A2~U^9%Epmt~mx(>=Bt+3>63oWi#|zH!Gr>+Y}%;EFv*tSG&~bEGz@kJx16 z8*^x!%BXzGbkg{j@z0UcUFNMmM^!YEWu#9k2U0=sTe=zd9NqX_GOwpg1rM`D5s4TV z+`P?X>(qR_8uKp3>IhjCYn{T@T2YY z8&)!pn`l(}c@2ea>c1A7>gj&`4B`t<(dy>@PQ1O3~XIb(ak zH)>tUFYfyeS!m|kZ{IK`$GBIw*Vm|d@DaI0I3|}tuHBvsN4gw&khK>-n)gS!lbu={ z^5)auc{!1M<~hQnaBrvnyAK&2g`1{8D=pgz6K?)!z?`Eq?-{;zOnSDn=lt_4ZJlZ4 z*mM551$N$gJG!;*fd0h?#k)$rbh7_%AAZ?B|9P(_>GMC0T&g7bOjK5R*#6t551jB; zu1uE9TgiI4Cu^kZ-?ZG^S!C~do8Rp1>(W>Hwm)F~ZYNx#k9c~irJwh7B4gs0Bk!Lh z9XGl@Z?8+`rXi8|3j64PrJ+2>K4UhHq?eh8A1{Z*x0U~KpJ%V%W5W@*PpmC&|NQ#m z_OH7#64!IYm5I3hQdb7tb91fH#LJHTMf;s8sAjEL?xy1Dmy4xeE|z||^2}+KkLs$- zn;F;dUXXT2errR+k)!-S%l`=f&un1*!ukfcc0>Dlr$|fRm+kwK1J{>){l3JvNB5SV ze)F+1)@n|n@41}w1*USoK$7zX631Qq*4Io8?oru!ZANhI_1VEozD$rVZJDWl9f{5r zNM0Ud%;SfYi5Zmf>HK|opSm-1`uqR=)8Bb>VQ}q%DZ%l_mjuUuV;S`TV`#^C&Uf$( zznqx<>I$CgdwH(EOy7SM?rr^$xi(B4wB{2{BUj6V7ptaP_tNuhN${g%jCHNTeWiJ> zyqn;7&5F!v_Fj2rCF?;3N|UDky1+Qfk7wo{ygEDc(obfv292>3jVb-&Q??!Aw*2@=PNXXTHnOXe{);N3l}F;+Jgqkeex<44C1-E(K2bA?Oe0ypwQ zc~e1oIq?pSg9X=qRyyO=(bDO!{**Ou3ZK%mV)@^m>`zp@`fSOJ%aR?Lm$~+GRZz!# z@8dsP8XPBGe)QAXV`Z%!-ph%_&wOUd$l4#4maP0Z&sRO^J#&dU@}%_v+GW2(nkSck z{p1YNu)bu*8?U8;y4xr-yO(_ZWbL%Rlhh^8_&lJl_)%i+{cj#YW;gZAbn3+wyFb1z zIW6<~n&s5j)xp{$=u}))Hd=1YoUY~Bm`3{3$93&<`0vUT_d)jx*5YU^_b({h(}|D5 zGkxatXYMVTewjVAoLz8S_OdHo6x8u9Y^DF;_~W>Jpk#)T-9$WpxDefhHTj9dBfMKK zrxpiweZ+k}W#o&CM%G>{oxidX|8FT-ba^IvM&{XdJ{pIqS)MuFl1RR~V)=hONm(Hs zl5aeR&XuIYN0FVX%K01QhaD5LW1Gp+ z%(WjA*4>O1D!c*Dfy$23OFZi2XOc4)Qp%ICl6O4w&63RDyg?Yg zMLF8Cd(XN*q#WHrn*Y+$zdm`rWX>B6L)Yu(;C>FeXMKFny6Yvg-gx=HUa#9THTd>d zN@o4em(vwrD)vm|kRd$_-WA*HY~8Q4e2TPtjkKnnQ29IDeZOO*dO*50vsEqP_Uf#4M`{v*AY*0oof0pNF z24zV0_hA>0^DAp?oV_mT(6jMb;;6Ex`=#7J`_F^ZK1_e~kK@m-czspz_huqp+*U{;&U!)Re2**V z-&+3HC%?)V{8vhYwO^$Ty8<_V&${8$Wg~0mRa;v3zCQNt@lM)P$&$)fJ84gO*>;}Qxc(^Z+geH5 zT70KGxg-`=g;U{8q-x(Bc=xk6OJ40>;ppB!rTtMtJ0wASq?C3E=RJLD%IRNlP7-rN z%sTn6uT)u_{!G%9#qGD+Jrn30Y5f*ubw)7#nI_8Pt9NHkGcNhpGnJ;{Wa+2Qt#JYb;Ir+-+Z=L)K&cjU{wW7Sr8d`Um=$ZznDoWZkU-{ZEe@W7j|b0$^1ozS-=xW}jM z^R$hlY2Hb?evx)!P%__qyO3{fzfV~HbZPMI_u|*uslnVs%f5H=Zps3 z9dzvB>0cV2ckJZTiHghZl(|2qoK?_P6J4@k%+F^_7G9oNN&1m?w87qZP48yDll^-} z^M8)a)%!a0`9|7OLzThWXu34U+ETkoCtsc!?=fvDpZ2ExL|7i+ywX7e zc$M<(+fJ|3mbitmrDxM#!jDGN4*K3$J7}iDr1nqMmva?`ZHPpKj^}ab>|pJSw7(Qa z`_8j%WaVdPEH0=2iE$~NRT!5eg!Spf{L8zKeDUPHpAJs{@sTf_q#QrFnRna|OBbzF z8vi}-=02Vs#q$B`L|>M-QJ3#tMm$Yfn)c-sdj>@F=6UK>Psih${zzxdSqdHy$358Ow6u!(wMBi|)| zW#$NxmIZB`iQc;ty{9Lt$6xu4;`RP3TZ`K#e!aN;_6h7Kdf)i=N<3cMf33LwgbPo+ zKWo73|6u1Sx@W}H!8dwesQnb3kLKrPMeB6J_5b=iB-)>#xbW>xe-ist@a<{iM*rJ~ z*%Jmk)fdrkea^+=yR*#^^leA`#yvN|@s;V!>1o0AS3geuW}mxhZ)}6FcSz%szLP6>_Ez#vbb035G_`Lg zkg26EzQ3{2v}q*&@g?6lY3fntNUkWEzViOYnspPkZ(jMO;^pV{3GA1yE-t^x+57nV z^jEvEhPu|bJvI^EC{J;^m-qD2)B|rWH9WqR0{S}Xdr+N}SYqu{Wqgy;_P@6zxU6(3 z;k%i>F4`IPj4tt`H2GBc{NGVL+}kIxe|-Xbe-@^X=l_a)9WeR2a{7((b<^z=#CHPw z=O?g##o2E=aA4Pd4TGm1-L|`F*UtB(4lrb$dS7aFF!>f88Z6h)%#L8Zni`|$)|AC` z>W&pFQelYNBBD?1-s7eH?F}6qXuMrZl5{+AYDt*-$ivxe5w%Ed-`(82ZF|$MNu}&2 zpf?aRe!Y+Ir*6G9Wrz)_NHFRZ{vu(hsoB@OKb4l~HkLGPTah9~YCL6JrQY{Gqi_Xc zH%KI+qFj;px;4K0=uPDNlDhXlRJZB=x*C%RtK@J+kwE_1{dKkXf295c55E8X+4~== zt5NiBAh+?s_kU!g;#EwhdDj#B((l`|>rk_DTRD?Dd^qKNur9|$iYchs(YS4YYURom zV`Ay|?W^}16}BQ#SaP6|#ajoOiD8W#u1eLgr}Bye5?`g%hhg)$n4fZ?ypLq)M~%~u z74d4kkYXwoMTCv!G!KEx|9p-c_2!8n%danQs2P zH^=cc&sB!+LKzLe7MP@SkzzocA>MKBb&j@7Bg!%3_^nQ{#&j{`^mjUbFHC|m&V3`3 zWM$S_80Ws-@mDiWUMzg)Z?XWmq5u~u>9UvE^s0EQXb!@^_BKumY4^ndN5#i{U8cRQWq%F}w;& zZWuJ_U@;s7mA?ZP!wyjSD^&Q~9W7M&n?c22DE>Z23&r0FDu0FIH#k}-{wi<{;iv(V z$O$Ev0_n#~SAutea~xkNeublj(sP05bPaO-p!5hO*XL-VLd$7K3shfJ#rH zh4p8O3-C}qOlw6zT zXIm|X$3UvuY>UP4C@8tZmY+RjF>D5@lCt|OhE1U4c3OV6!D9Fb$P}XNR*PXBD7mcV zXKO8nn=L<^u^4UuCAY@%v#TwJtH5`nuf}3n4N7jY{qlGFT8^Epbh2pPsv{3w2pq^);_%)6eir-0O zq+ck0hogn!p8)kd3&n49v{3xRAWeewK5z?iLdi8bS}3_Kpu#B>Uk8PW7K)z%6;7e} z8yqbZ{}P#_a0+dCPxd! zALU_JxP{`6I9e$F8BqCm0+fF(pu#DX{82{>CEozbf1&t~I9e$F01u(UBNYFVqlM!4 zf~qfs;`caODE?tb3&lU=XrcH`&R*><(RHBe!3?N+a22TfOeps?juuM38dN=22@>RV z5>!1nN;^;PgmO3HXrbI)1yv882Niyyglw7Z~?{Rbo$W*~}J9rz|=J;xNO8ywA z=jOu4uo;wGljUa{ErvTm9*t~+#qbeOa&?xU-C{A!f)vect;KLN zD7g)mpIv7$Tmw>cva2nIt3b(BTYffWF?Lh-9Xg<~yUMpv z^k~x3LdlPSir*Db@f)@nYQGmAq3oc=@FFO^Lb=m^s)~nDde1moDE>aM2EI`ICPxd! z-va7ApaBb|OEswXfKc)&M++rC%J;U?K`8!+qlMz12W#L9#n*nSqTRl#X1~vfeOD+{KJkGim&z4R6*%SK;^4Ya%(`P zvrzPEM+@bSaZM8rq4;Hv7K%Sezk|Xh6rXW7Lkq>%`ak(66n(>1>a)*ShFU*mrhKVlKu@zpvtMcz;b?-E{zg!=Q2u1WInYA!)ek0GDE?+p^}q&Dde>Pr=X6t5nswEn zSywH&YA2U+a*IK#7;`Q+7*;|{uENPBom?46dSwHP;V7O-?kXsMwf`SKvp$~ZcFZ*lk0VIJs?HMoVN{zr=XSYM?vMEQ0bC$v{31C z7~F*1PEh$!=Ww$_x30yUSB+J;nv2SvQ2JImS}1*r+`Z_z3b7IFb9fe{Xr#}8Bu!fT z$nwjcuo!CpSjua93wR%x0oBganmAONePO|{26`+03;AWWeq6MWUs%OO?&g4Ur*-9W zC#IfDA;0WsU}+(Acm=!%cY~nZ4Ok2>f{L$D?k+f5D0i*kYWPC&k2zW>eip2PFBHGl z(L(Vvpz=p3K6Qhkh2rD4*3y{$V8x%~?0X^jmA5<0Ic#v4ahP%#I2^F<%X=NRJIpz3 zaF}tJatKHTYqxb~^0AUu_In*D8RUAQ9^i(M)6PI{0fPZJ*P@uCc>&uCPn)nYmr;6gxck3fIB8LvztSH+NGa(Q#8JSM42( ztD8pILAGOF=R86)Z;4VXg!72f5}J z99=LqF*1LY`x6UJao@V2jceC}Zm#_c&MzRQ3(qgam#Sk`$X6ZZ+FsSc^+eSvu4k)y zxOP=_b3I>mfooq?Ki8qEVXgyJgIsfqjxNHNs!{Iy7oA^33M?AMrt{`AH)DVEDA%5M z^uB|AeBUwfjzr?p;(^8N2mH>KcOv=DQLe-9y7I0>;@B;%w~*_%^mDy<%O$QosooSJ zOr7UCoVvobZOMrxr1p|duANKIEKMZNF6~)LNnLu8>#1e!%h>C8*$J-amtEl6x2&J* z(6V8!1Iq@v=BkfY6RKsS+@GjE#eHja8`rMtZmylxXSnuN_jB#7KF4*SdXVeI>PuWl zsz_yX&K1L42UZMn&8=qmKwHp=~pRj0UbUDdXV zkgV$AzHe1O_am!Dx$jM%OB3>R57&$7OI**VFL1q*zRGndJc_fn5&9jafSsQ0|~J-CaHTA2^?m;4q!%4C-E7wyMYo)(R~UoZKvb6@Y=-|6Vz zarA6Q|CyuzJ8tFvHAk}toS~;uNy}{IFaP{F&6ga1mloJ!HadOpr_)Ym2C_z;#-_|G zPX2bM@85X$j&5=EA3FMP9X-S8KkMjqj#m3X;r%9^7c&3c(SPpv|H6gmnxl_9{{F>Q z{zHy`r*q%z_+N1R=Uw>Q`Ph^Bs^fpq@n3cH3`gr6Z-wWtUHsqW^ncOO#~uB5E`EC) zJ>B_VXc`uNed;@ikJdGh^06-S-yE&} zEt$QJKF`Ow3~R28d}oEFGsI2q{Wz%hj~1K!(KjZv=hojX$ zCG$Dt`Q?r7qxAP<^dH3N-Wa_L{ZaQ{gNV|<8spy)qm}GY`5(vV-;UAu#Pn~E(J#g1 z|89^mxK5%z;>LwTlmXJ#{ZRmiuc{--Y@FZ&*c-JtlL|2K1Q10U6O-ud5=WEdf^d66;3*o-ia zB^%j*g^d$#JYehy7~7aA4NXWSVTdJzd9z4J0`bUJy0TFkQL8Pr*;qKV6`1@Nr*aEh zS_?q_WQf%T+N-CI|!QWe*X8PIX|73=Q+=LKlj|{ zoMY|VLF!t0Gst>Vx#|*;msfzSk9q45qK{#RB|!|X0W}ZypE}v8e13iB8=*IE^5uTi z+Wqh%4Up^GNt(ST!#*{`eqV-N)5jn`UPaREsdH`UrdN9hg;o2fdaYfzat(cv!|_dP z8EEvMMrZFIGm!a1=KKXqstKE7CI^Lu){Z3^N8?;=e>p4X`BH1EzaT+#oQtChQ>P4w z@#E1vuh080+_2sGV1Mb`|GoXCo$e0ym+F7L^0>)l2VA;UKNe4|T_Bk7OY|<#HsxVSH0fYe!1I+L50R zl1c9){-bdrVC5hmRf=bxS#4^EH+%<=X1eP7S1~(gp3HNZ)_OO-*y`tGo^N)w^{><> zNaL#>-~R8de~Mp^_@!m~Ro1_#VdKOsw!%;KPv2RN@fC$r!*zg)vxuK#56lb(W}69$}v@XO?3 zy*wCdzFMOS%9FHAwv&&lzY|#BDE55P+2^YN8h_P??T4-z6uSxh;xM@rl>Tx%j=}bz zBGXTE0d!-{d>g!)Cv%@Y{rGFc*a3d%(%o~bIcOvjP-eut$pws!QOZxt>E0MZ6%zY)yNq>effoZiX-FR zNqX_+Aw#|=mt>G^l3`FT&fR(IsS5V}rN{5bQ|KrjCucl#TJK2S?D=hEPv4g&&wPM; zA!tWcn%im*q?091)Q^+zv6NcO_it~XGVRjyFGL1ad8Oln{CoCP zMDn&OEeqf^0=XB|-{Yl6=Znm>=@CsC`ylD7iY2peKZo4xcN~9BF)6d1c>emgt@ACEkIK zQf7b3uP%=>8Qyf(M<@&GFYhPw;rk%`=ds6nE@wVPyt^4pnd|-ubB9NleUFOrZWSf1 zm!tg@`PzG2y$YD}0OSe3iVrG@LWmsK@3mmhpRjNFR5KzQ@ZC z%18C3nQ+&_FISz)Nl%^CeJ{D_nBRD3Au7ykw;I{rrCjF?_x@Lz5a(O8J!jinjO z)Tv6xIbXxwIqHw!&k;xM?Ws7j%iP4Vi*YGR8fm-RKA?^K3;FRQ>iVkU`0Uje=N}!( znK=piqE(~fzf;5+A?#7VKR(LY_E4d7zrt}w&)J>7yreUKil2gJ5i|;i{r-i}jNmM^ z5e2ARM4fF4dy=rP(jV=b5dTUaeL&QSzC&MhziA&vrbEaScJEam`P#GR#SfL{2k8rz zqklJq=ge9pet$uDck@|-#Ur&x8olyXpgFN{RCs_s`) z4);+Get55L*tp{K1-j$wB=sea{=wAM;ywRj>uWD#yXyJn;`iEtJum9-0(DJeC26iw zADcNwYtEuOeUuL|^|PE0Q%HHdKz#M%9gRKSTta6dn!HYp$Jz6e2<=;E9dz9c&Z?crpz*PJe0+A_FE7o~S%1vU7G=&kp36~=!T#e0@~Hi(pU+l2-rZ>Sf5w$n zCyA%ysV~j`x%yW|VNmVa_rzIf*?P!H(~IX}sD^UHgoyLFYuvgopHl5)3|$X(`U@Qr()K<_szb4 z?z{)*KlHGZL6Z@jgzKR$IrRPB+*$7$dVkU4nchEWpWgcJrOP~|)tejZ^+0oC`a9}&E#4wLr+|24|GvIb@UOXl$Jv;NZ!DvQ#d3CcL0W&HRzi~r!dd=CE$ zmR{?fVf4%iyypxiWs$|7{?mI(4P?o8*!o+-EPve#qlZ3L<(0*Mk}3kvB>cnTpY5%% znmR(TEdFuppDX_P)?a#cJX!HeFIbQC<-+3M6*c}Avf`IMw4SB>V3EbYKnqkn@(-&Y z%dGz<{KMiuX8os$Nl5y8@kfNj34?AMcsuK9%@(Iwj9ENF;8OfMK<4}9JHW|cD~NoF z7K5(zxXHTm1Q-M3)_;!mp9GfRKH9pEwC?>RVk+*v;H}_skf;;K40?Lpibs0epxXmZ zA)NH4VUZ{>==Kx2#|QNIfOsX28FY_;9v_2l4=6q@py;FrExHC!bn6Vdx_?A;bp|~> zY0;@3@mD?v<7RL=sC=0UDtyeKdx82&B`7~=u?UP?BQ>C^?pa{3Vte zbgMvxUu@8o9<(P1SVs5@1&00%DEd<%e~Dg$?g>!z#|^s2K+$)D3V#sfFR|aC+X*WC zK7;OFP~mrg3f~6umuNNUwtx!XY|w226@EI%dPMnDi)#OQ*!P3f|3s%jPv7`9+@)`P z2dMj)WN!zRzCHpAyDZj#AHiM;DnAcX*=64k%D&jzE36$ikG=+ekPM4kj9GLn_Tnl3 zE{p9JlNM_%#x2GyIu?70hku84S!}nMv{+*?ZZT#N@aWL`9KN6XeOe3K3egNJY{A@L zco1`6VJD{1$2?wmg8z??I57f!vJuBHn~Iu?(3Ts?27|o*k>@b`MxMbuHtP5&Gzdo> z!ECy=8C}d{*BwXyQo5LEp^k1v3-jRUF3grOt>|B#7}v{dyW{*m`4Rj+^$c#(Bl6eF zzE2|M@Aub#E`MnJb-o|SANvy;2zk1!{SIqywDf*|s{^|geuMR&srdQn1y0Wf>;G|U z_w}~?__iv1K)$cbPM!1D<8Fgq-vRvbahSCm?(Dg;_B!kE$DqRd{rTAf0{r9ZDKi<;kdEx!>S@l}{{Qf>-`S%e{&sb~s$Kwxi zQ~14fih4e0>HYD_*W2>PPpQ8tygy!i27XuvpD$+EpUkj-ijcwZw`TaOJqG>%M}}Q~ zLH|=3_O~ zowqZS!*bB^c;-v>4NuhF<((XJS6Gn2%RoF~Y6G`}q~f=_BB(1hY_RH5zCx3=rarXl zJ5|G4ZcAFpH&*|{l}}fVo3FOiuwlhU^sQ3XH9xgi^dN}@&qMbGwA4L zVM=6gUcb7!+Pl-Fy85mmyfX;RMeu=~)|*2nx7^+tKFYS$E7zn8p6SrAcH`=-Yo`MB z;x3r3sDCoWBo)bECZ?%mWoS!Ty(oR%8Pp?6|B!vP-+5+EpJ_iNW`E~tsDFB;|Dh-I zI}csnRei_S{gir|ZR7Io%z-oy(y-_~SNff&IKa=Ng^9*Wu-)4R7x~X%^PM43m z>AH$|+3V%k-t-O5iCq=BuISoGQPH!J$cAr3zVY&!Ykqs;Q;`waqpNz}eR1NRziWAU zcpmi;OHP zEBwZyMZ3Q_whZ|f94dRAxpP(7-1xS#m3MEui+_mI9loZ-8OHM?rg!+z?G7dcb%#dpfKaQ0+j;nqbz z-hA|q1KZzw@zMPsF06j%!-Z?#|M00T3txHk;-Z)S2KwJ-O}S;(wKqNe@P8QFLOy?k zyjyeb`LSGzf_toZJR5nJwfW#Pq|qYER^qD5PZ#vy0Xh^djXvN7A16pncV|FVGpHJ<+h z+{&QgJj|jyw_G!>e#?TQt<OjEc-d2B*WPsZHO}J;BcqEJA?M;P)i05+)Rh+}K8{>d;Z+^EZq-xo zZksszy{4CoW>ddLwQra=e_q-A3g_{a)X9galTDj%d!^|@?MqFY=NAp5PR__HDEdg= zu%a2?y?M+ZQ)V;n8h+F5*E(Y!pdOyxw{7B+z2=dbomm*u8lwd{=sWn+ghwzCO|!^D66=yY@9r{7&JvqVGiVioR3WwCHi_;ddfq ziblO%{(8X(r)phuyezSKo$nX&zd&I&p7g#aKmJ5K!7uWEQod*rT1_wDi+)BD#L$E-^{hrhm&Qx4^E z5dOnr76H$`5DdP@Xpqr+g+IRN{ZR8@|IxT0yDt}gxS1zgITSPy90i3ZpVoM+$(KK! zvM#kNp2~7tQU3)L)6)Z{=^S0{JYmN4>G#|l(~~(*U~pZvvLV+zLE~JH5)$LbBYlwB zX$kY32aTi#SDro_#*bI=Phf(VTOY*dbEjx| zju#vBOwI6yZI?^ulC9QcH!ysF5&F*&N|M$F9r4OrtXjC?&e!N?L2aN zxgEFepg;R5-%V=xCY|J)Nui_rTJ$}t_%!=Ws$R`2Jl*`<3*L8g?kjks4@Te}V1M_1vGPJ4Dn^)^mpcQ`R1hjCiMm?~@9L9`U`pH$h?Q zh_{ZuB+B{5eHSmisW3Iey4=QVqmMdGCm*fh{;wE)i@vK6Z*gW?&G*;jl19$69LK2Wf34t-EbnciXg4&Z>cJb;vHiVEQ@&>8s@41ceEv z=Td&;-Jg9rf}TMh`U~hVe9zeyE#}@f;*lPMzG?Y-3{Q|xb@1;apJ_tgH(BQzzSG(B zs(ZP6irSX;T?qc3&VuSe)FE%VL#~dq=nEs`w~n70+0EXkH~DsL?^?J%r9*S^QbjE^ zjeN^1b;wsxdJj|Jue3^cKLrJn!~eP1@Z5$5inu7A5!@gw<>9{f8meb0IK z++z{aNm`$GwrS3+Z)~-stC@6>W~nH*>8HBLw>3}ZBr-R9GNWID%s(NWl3DSayie7S zlpMvLPLOz=M+UGsf*guV>7mYfd8Kb(y zqcLP}&#JTIz4rM7+GkHl`>dh9jw3A{)Y(e@SG}YG-RIX?`nO{GnzVXbPd62fjDM$& zI!gQ8DpVf(ZO^OAmo9nfZKkabkgwTgYWkiC{R7{mX^Z)L>SE5j_5EA;7Mc8=1>7I@ zL4MgD?x5RU?-X(mMc(PM8PB~u`DW*h%IPn>{OoIy-Kyi!8z+ygd)vAH*%4-sg6eGz zc}L}VGbj_~>ea;>@{cmDP`!{`a;H3&JPX}Vv8TVQ85voR>|D-IvON2ujW^=V%#4@r z`>fH`nd|jIheGPI`S$GWiEMUuSCZZZ8R=a>T9wAql2`xx$f1X(anm&{*e_@7c$+rTO#9@VxXya; zspsPNzc^y_eY*b#U4?f)Ku4mme#-2>|7GRTc~%edfs6TP>x!JJCrLy7l=y+dBHHxD z>+b!#5l+R6@YEfP)4tQi{f0&FRC6~E{T+9D6}|J~l*n$~eeyo?Hq*ZPMmYD@k*1Cj zPUmm%`$1m8*;~1{g}g?0Z~PwO-}b=V_}Q|Hl}BGg4~)8dwu3uTZou92^XgxX{#)-b zqkp8n)5v|pp40I7QGU^$5%p!WSHVMiFVZ8dmi+X0Kgi2F`#s+M)yMbIo|+l2buUB` z{jnr+)xb-05xGT}hcNdz8%6(za%&6DL%JC6m4}tXoz53X*8=WbdBKj$C~g$rK^ZOL z*TU~_fBE^N|LvDwJ9-_uFhAg3=YL1gCjwg{zy0zL#>UUCn$hy|5Aq^s7tYwq9TIt` z8ON(s#!Lr`n~{k=+w1!}KD_j%*LN~DNFP=*sXwiw{Gxf$d-<+Vp}cLTj{9{~b!wi~ zMT)^Qm#)=)_;GLT4KFZvQhEL;|BgKxb1JD5nlDL?I_k0JOU(n9-b^xADubqEl$kFj znJ+~zTLWDmBjQu4MBK3*LTtX0XbF-+~iAL~(|s8Ijvr^UZF zMt!SEOKPpl8|y>*Amx#My~L@xh}ysINSw@g9;J=@dY#Lf z#WQw|sehH!qi6W(uEgTAlV`s`yPuf?DCSa?YG znxoH-#b5R}WUo6)8qfAp4+?k6zV7I=6Y-aQo9vs8K6?xPw6Vg*$>`T4-(z}Tth5L} zKu=ol)V()I&(q9bl{T+0B9A^m?-Cu)^F8z{rQE|+NWGj)_|i!8%Y|pt$IC+MfZE`c zZF7I|yxKH7t79i=_j;ji%C+?2Vj>XPbS*ql`D z+o4~G!JEju`-rcHhjiCpn`g#7>9lR6ZmOMU>a}IpEoaXIPUP%s)W-^BQ2sN2d~+h{ zcwltgbFZ@Q9h3oa7MEW5{Lv2TYnyfNrkPmNhQ-g{_|w(QdD zt0~WPw_x9M2XoxwQu?2%jEl4hf7~bU+uC{mQP{$g_<^#>Ei((5Hz=?DeDK?Z+H$kr zuQTRcn&0(gyw9wfGHK;|nj}!9B@EF|D~4oL$(s^<{Kr-+Y9z2jg)wr0>j#G&%a%ob%H$0Y!A}cRvu|zhw6VmWv2SBvMjyuwWCq`wXpiB`C-%FA}}IfI3H8bfpXBX>PV_=Wi&L`XfS_=Wkm z=Xu`Vo-KlA@n>xDo|pj}+E`>(TK~!%{;k$Om;9S;jI=K&EdHr>T{Drxf1UN;k;8wa z)qlxFzts9SwOpK2F9858tm<)*DFXFKJ*DYmdo?Q8N-1<*5!LsBl zV9?bQ^UUo0pKAT}4LvOW2J0V1zOeLdzRoZ{4utvZGH*T8@eJeNqy=)GZhm3(x)(uD zuJkXn{x+Jd^y@x`%h4yTzb%F=`WEXSHEgo{+lHWTA0qzFA^0D({<+e3cnJDqL-?Pt z{<-q^IQ}#E9@hg-2fIKTVM20&?mmzrEU&TdDi68qo(s_>th>rl?$f~v++(2Vq89tH z$bQ`7I*_ibe6h9b{s#Wa`^bnH;0aK295?9QuTY5lB8i>X zgW{w63&f`%6rVE&-70W8?(?mC+`1ownfM<8aVp;jO1^e*CfE#$?>dVkLGhOm;(vh( zru6Rx6}}Brc%7$z52$_5vPVJj*JfYEx0n7$*a1=p%P-JhDcliI?uS95C}*w5OXn_7 z>1+U%j@6*zuQTZC9CpdQ7h?IhgYw^D&`pA~aM!uvcY|j@+GY7>Q1Ld9nTl^2C_WV+ zB<0gV$sGk}fEN%#d6mRh^?l@$I0kt_TFsPMg@!mj{n#N~59`lIsEpwd|YDxLFjgoSthvE%3pZzYJ9T+MmE* zc_00Z{MUhUUjfQJ4s&o=%%UQbUFi~bS!}nMv{+*?ZZT%jvDk|c9=*kOi%E+$7ULFU z79ESd2XY`2)SSYt76F=o-R*bA{oZ?WBC(qfIpxW$-7$6~L^pJ81V+bt$7)>w>N zj9CQ4LTBgZ59Fh1J!%&k)dQn0VD1>#&Kb1kWZ4ThCOMh4Yf?9-v7WiP|7NtbOHPzP zOa2A*5dNI}kli0|zG&_K_;A|V{r;BqJ5O)H|K5EI`2l@FlFFs$?`?SXr+OyY`27C7 z-TEi3|5j`F$E)Esygz={TK{$%{yuA0KdvWX?f!T)#oGPxMS9`aBBL+wo3iuszptN# z2YMF7YMw=;PkI;r{GtL{PY(kcJ+1r{-k<;d(1!QtbJ~xi@c#Vy`^H}2&v(>rMDNd! zSP%B>{(P3b?w;MBAAiZ({rRxw{o?P>Z!4_bpU=Kv!~65^pICo?K84kz_vd$?uy%hw z_+69U0)Kva#QOX5A-<1z^#1%uA1;)hGoYS7;wQU5e`a04v-|VW_152?f7RLi_2+A! zw*LP7H;;T5zjnguIc3B9?>{;(UHRe9NB`Q`3;g#J`Z%?h!RJBzgZ6J^*y%gd{2$A( ztDg+gzlJ4fcd9?Vc+vs zy7tL{(}tDYEd0fl)yu!k#jL52gN(iNu{hi@GeCyBIg&6%|0FRzv2g?HNq*9l(CQV^ zAWw5yvk^hloOPPz8mW={;l!(9Z372tDhC^+b?tk3Og**hG#9e1feiONJbh~~IbP0l z5ZDuISFEhgWFk3Id=;h1y_6f*zt%rfm$KJCQ|$?lo_WfV(yM;Dc9T8&^Gl}GID)BR z<%Tuppt4k0@7%HsMelHFQ#7VR43>`NzkKaR9dBm!?tLwBKTA|UO!cg;PH|edvB8vS z&{09tYDA`Idai(>pZp*DR8?ZZqYurme)v<5K3KKju}7=#4|ALy=6GM2y zv%(xJ!W?}~`4GYUlQu)VW`wbt;UC!*LNGm)fVr&qpl@gO=VIP7+D;H)Vo_c-URKkgz*U` zZA+(m_h!j6jpa-n2%>iZV_JRxyRePs7ro7#IVK{7+y4>ASpZhviOwMtapwAi=YHz! zL;dtl%N$zwxLx%VT=OS8jXqX>a>;8&_WKFnW4!MytmF1sy#n5`&Nt&8+#lf6&O^@} zA=(_iBL@Au^bPFOe}RrzPOWN>zjGbwi?z<<)?2@zRpG4 zFlW8a-SPeWc(tzmK4(Mt>%m&Lg|=90t(Ts6-t~1!Ui;qU{V~49MEJcn&UyEF)@rBn zQ#_KFu-R7xTw)>Q#|e0I_KZI);Z9_Hx<^Zw)W&X z=ex)!<&pfEZ>@itd~APP-eJ6V^>X%)1+9M;3UoY$N z;b~8O%kX&*mGASfFyA9%hKf5?ZoxR;=lg|U*7}B!kL*`k){SF-eQ{oCI!})K_r>|E z)alyme|>RYX*v&$|M$iDtCZ*53BSHLuQZ)IZ~T8BXUR>!zBsS6tpv}w3hx`j+h^}^ z=VE62TycecLhu}{q2dhdi<68;tQB~A)*9dDp@Y?nuG`P}sUOuDRX;^9N@w`U9-ZXO zD4gw#DSe}PVsuOXxZfY{o$WU!e@px&|C{^!^r6bL%zhSn4bfTSNlD=BsPHso_o;q= z9UL#ZetF3oFNoxPCGkfYGmJi_8Jqkuqt1>QyhESY_!%5C9^u>WTVs7)sO)$%)2TKP zmQG*3^zkG+tj6VBXT1F^aK_uu87DO-n8KL&gAva96692VD?huubLv9!wZyamf85rX z)reb!@%jPE!l$1+$C<&pYE@X-MC|!xqOE0K!MwYebLN)#=?mt6dm-msAtOo$=f{)x z*L&l&8IL&(=KPJI`|gn z?~yN|@;3(LZ%jWki*gI+-)!qgGxZ}=zG?qAb3TOCEul&?^dgbHfn6v&o z`Z{l+v-ak1y*hZdR$6}j?9!XLWXPN&I<(P~=o=XQsR;8YXU}uq{3wsMY1(Q#ZBg}2 z@dxuLf6Id*ZPVz|`18ZivbQ>px#v159;(NFz68_Q8`37J8|+aq{mGTI$x&%-GCj^< zpYua_n)a9qL%NE6xw6}0DxBmG>mS?c4|Tp`EvWq_Q$U@&sJ8e#`YV1L(md7wUv0pT zGnf~w#dWGb$2NHN`{dag6-gj!FJ%}kSQ#09hfG5<4$vq-eul>vh&fGKfC^AhYic8n9Zk?KcM5vX&1Kar%){XTW>)6}^-+b`GAFPm}E=t25*Zu?c{ zRmojfU+1#N=9CQSb*}i|Rp*lApW5@>KtAexS-*^e?NxQm&%3@r-uZP*dG{)LcR86= z$A14R^R0IJ)#sZpzwQe0$D~|s@zV2o?_OA2u=^KJUc=e4!#ERnIO`En_L&s2&m?bK zJ7bNv)?wEqq6N;FLiETS_MWS6QUBI3CBFN5^qQ|HA5(E(zvs1&8rk(uANTZdv*#rz zZJ1u#>PhyHu$IG=EjwK8{kij@nDqww-{SFLbKZol4zl=iEdQ9HQ`z;hA3}9m{I#}n zC;Kga_GxFg&T0IEdCsyD_E<*V0SzjeoTwlX6;>*9mzJ$j7S6(hD zV($z4&U#ock}l^1h0gjz^r4bV`oyJUI1?DRAEIwrdL#c|afm%K56wrn@7YCpmVx@?k_G$rJ=Zbs&kfaY|Igjp19(92OcRpGiUJW8V4>_ z@&EbiRi(2J5iW1wQYYt5?um3sm)7W>{yFYHJsRKrvwY@n#Np?+#`4!}p0oG0cmjDF zrM}$o$&Oe0p0H!v^M~e~eE#h@y~CXE^i3uW%&~ROs5yh&^vTbD&Dk9+E3JdsKECzu z)7HVp53Yl8zOlCsrh0$zs|%>dmDJ}?P_G}Rem}JP!rJ+)W#xHmSy!TKm|6pV!g=hI zpG;IQp1Wl3Bh~W~^Q+fwy_a`X^&}EMK|dnONSuNt$OGa59vK%@TucJ+RNbga^FMldN%Xp zTR@ioDbLq&8VqLnFNLX|0+8%BA^iRG zh;q?4>w^qWF8>Qd`0Jd=%h8{*{@Zipuk@t!6qAqFh2($h2;<)XeOUPxpuD6<`VC>_ zSA(*Xp3)rt&2;v9blz$h{V{~nGa-ln8GUTw89;vKd0F+RlkZIx=p%K2aj+ePRbq!h zw*`Cv_ayiUa2fa@I3K(ZoDC{`g+W*PBM;$zZmi?X2YW3_FGcQ~K)&IWOK)%Gst>LqRF6} z1QmX>L3b0Vco&0n!Resl84cbK7Jv$`k7l5|pYm3`dqKH(7<8o%Df-o*;$I3Xe(6W@ zZjeYAbSpv8%{S=ALB&4-6#Y5so8mtPD*hf&;kymG2f=%BUkyr*8tcEz`o}@VKMhp; z(ih@8S0ZN6odk;C1cPodsQAy&4ix`kQ1R~t6@NRZ@H-5;ZD1wt^FhTw+xk~nfA;5k zdOC^?>4hm>#h~Om zGR*Kh2#Q}PNK;8j?-q3Tg5uX<(3Kvp`0?G?p{p-n21=evQ1o$-rjd|7F6inURMA%$ zbf<%&kAb4^V_X&eF;Mh}L8^M9$Dk{HUD0)(~4Z52^(bs{ZpAL$C5-9p&kfKS9Ht3E7MISZj7J#BZ2eIf6Vu-#2 z6n#5LmL{YZ2)f%r(M#VMbX!5uCqe$o;~1i!28wO_SzZCp9 z?vp^tPaF5>X(K|n-K2Y1(qfIpxW$-7$6_x;{0-}}*lsatvBqNDV$7mrvDd^qtjl7% z#iYd=i*buFi-1_5H$9RwrYjS}^V%ZYBWOrRx-oayKxo!5?;%x^-kI$6+EfOd7k zF3jx(J1}=#(|!$9*KEgZ9o7b?=3y@(N) zWA3}Ilhd+~j6OyhPK@d0ob1D6j$n3=>A`Fr+cp-d#bF}q5-F%M4Z znnIpT>BBrRr5Cg1*4A4Id22If_pLpcogdl%5n{Z({dSevKhqfm_0>O1AxfXy*ZaDQ z|K;z$KW>3W{#*#=Js+1pzw=Da^u+neKF#{aX>77TWbK?0%O?RykI{+q15-r9f1 z+NW6icdY#+osPo)wY94q%KpB!|I*qoTKnU4Hu9ff<=ZWK(&N96wOW4nSpV-@dz8tp zp1-s4kGA$(tp7qA{-{mQN^9@2`S*2e|1InPnzc7t|L5)Emoe@uS7te03&L-rOzyCg(XYKy`|e=YQG#_s131-+$k1xBUJ0@As|Uf8YLywJ#$N^gLqY^Vb9Z%F6G*-~Ug- zDZcr{qelz!vitA9-?j1k@5@VVc>n$NEa@ls;PVKUpnY71zs8B6|1aSmwC~6WUyr;& ze><-jjITK({3kQQ&(E+k*GS{{52Po^zaLA`{-q55c3d8eU;9ad;V)&-|CbE^TQm6m zWrqE_jPT+eW|L%NpDL5n)}tuSFe3y6@CPi zV!hdc;O`g+%a_#p=MW;K0*0o;Tcy=9>JV%O!+A&VONZZ{f$txg`pl~8b!*v@u>314 zH>~x}%=h*d1iZBhYu08{tFnPuGuCS}r5#+?4UlAH%wUkgb6gRM+UIRTNXvK0&$0R& zH?V0#IZrKF{LrJSwn_#o#aU<4XGG<#CU5i>`g6+@2$Y!`&+AIay)dEFX-nio2$2>x zlv{AMeh6m4psKLX)IYgq<%;U%Yi6$TR@S{*tgRn*r9CZkzgW9^-U5xWf) zEU>f-0Bo_Qx!Jq!)4QcCNAEu34I4T6eq~^*h~?++>R=BENghnAK7NGeCxPTQL}F~H z%xx+D?GUDh+B*#VK)yAsM$UV5=oo_`ylMzhXcE*t^Lc5AB-l`)9Il9g4aBVsGjq$q zXR|AigHXBT7@7fcD3G}wqWUhrJ>BJRUeREDwfj--nQ^b#juLYI^We8gIwAic=wEd| z%09+wH{vrCYLEh$U-h#9|>GEVT`#*wVFPATukHhR;3FdnZ zdO|wyO?P3xfUcqwqRX?wtiF znP`{md$|k1&xbB_1vBFd(?9d~>geoh>Gkwd?>v6!(~L(~h{M0DuBV*QLA!(QrC4`P zU&_1wG>xFD`70X-de9LvdYadJbeuui`96Fa@$>aSYdC{1Q;%BmohCn}+SS%54Ut~Oxm+`@UBWv z#Os^wZK`&*t}TReX8iX?ck*iRS;~KOm9`fiboTCxlr5M4J{xoy7)C$R_U9{d_^-46 zTGtGt*LtmLj#{{o2V*RtiObERMO&ePy~W_bm6`b+N~K>EM(1-5K<)8TP>4 zbHNw+!LEU6WZEQD-9@I`;0lO5{I~p!yX8WeKfQ5vLw)tCm0zX@N_(O8b~oFuiRe== zv))U$&w9nm3t6avYT0_=IxG`LZdFIXwqCr-ulQA?*z`@E)WHa`_GN zPY;mFsq8mXRt7lMAxD1MAt3Np5-O?<7W!J^zx`#TAlLhtUhcfNB>RrS|8!bcdoK;! zPv!66PXq?hm4)uO>2pz83xRLf#`DC~?kG!KxnMOyI^so%tU>P-^ezy7<*Y-hOrE3BOi;gZuIuXC#-< zW{Si7N@k|sKjy~5_Us$Je*9g?;>FJ#Uhzls2h>oq;@o*}a>)|n^yzA~4=)nG7@afl zUL^A5x13n*EqzZu_1(UY^?fLN-mcnPqT=anx+M}>evAAYp}CUu?F{T2C>gE$VuEK5 z82O*`-gggmAZvI&1bEEN!6Pi4huDiiyC^0v&KF*+K3Y#52n)CKzT^`61~1&?L#3y8 zN}vA<%C5E|RX&F}Um+}QN>gxO|4z=Dc|7)&cDqILUsKX6;omZs+?r&)P2= z_PkUT;$F5n{u1YrosZeI0spLqu=F%qz5ZVIYJ}ID)Sl*&yn*|)hv6i8`#~9ckkOYR zN!hDj?d1K9vnLK@$}pLBL0h5DrP9ztJM-yPzhVycCc>WS4Ec9*j)lr!=}^CLxpb90 zn9A?$x|E_-etnQ1x#LRnYo~wSy7DWlex>*#|M@axEi7~nL<*hrT1JXRx?HERagN`A z1pBit@{m09`jAS$523u1YNzB`JNcr%ME!-IS2eZ|ImCU4>3v9Qy&jd*=Rtmc-!Rja<+=cf7s8Y+Fkm+1?h@cM#Y%05h{l1EbU)@HSj zRC@e4{d#uNt4r|%eT4(}rP^UCd{|tOM^kZy)eS#=rmr!);1k;4GzR1js}DY}ar7&7 z+*!f6-}E~*NB=ASSDKD{@(2E`WKr(2-1&)AINj3u|B-)2PU^h#?D6enpf33JohfUv#`0jl z)QG$>hdNBZUvj+m^UnO*TX-)B?MDw)r)10SM{}olXHAMOyH7N9d5n3QpXTZdO9DKy z>zCo7elB|M(x1YkjbGaQ_T;jZ4B7oviaxXam}`D3(@io4=Tav*BdI-OE>*&qs&?KH zP4zh_2@lT8ALuIa?zjq*b>|bwB~KGam|tUUDjnhVBQ;N`%^UbL^@AlE$B?Cx{?e}x z?HcpxGfJozWfy9W))zW&zMyu(oF&zNqOZG(04vZ}`aUUqTgQQFy? zy1z(#m}`A2Y_65w$ED)1aohTvazA-1?e!KiPFH#WO5#Pu8bsv+LO9 zX=}fbqRp;fm#1wE#GBo&0<>2!@ALbz7-bZ(bG{Chm);wx3x_B}zYcUU-}mZ3j=m!_ zk5=XGyBb%g@*uo!=5A+thn-73^<|4OmV0BG_A%=n_TMgrzC%XVC70k)9PB?dr{!Ft zL0*SQpFf9;el4xf`x<@T*StPY^USb*NvdhM#Cyee;Ly9iD9;Wi4E=PYAS)Zcc znKd`c9q-&gyxDcw#_N1Jyid!xmsR~*jQ54$97|)N`U2G*Z;nO2sc&fx^mAS8lULa_ z@($tkEu29SmPaSQlw9&cj(%?E##H+Ky3|NmeJh>J8plcGD7~=pDDS9mruvg7z9m^w zeNOtk!|Ma}{$uA&aq5Lv|4BpHh3cbaMPYqlI*+h)%>7zQR+aUqB`5ur-lJpmshRV* zFdm1tq}EGEd(5mE3*G&abBOAO1=ITmAdwneyp!bCkJ5o>gbspW+De^~>OLyh|pg@}V&+9}M5%JHO5wQh7O~ zwVgWuK5L_#(QrU*wwFFt>phL6yODRAN@v{GDCsRAy+34K)UOX++%09^byDwhe%LV55`^mOrUF?8NjaziRyW`CF|BkljP>mzCPz+Vp`Uy_;= zsUFa`1na>EIo2;PC)4HDT6f-@N{ipOh0XE9>WSLfWT8_vhPGg)90tcht>PW7gF)1&kwTST}oa|g{`IhBOzzz`fEMGydqD$ zvv@RqM;M>$Z2MQcSO4SR{i!ol^7}>Va3^!|&a`oowDzihB&~6^ zHRgbtgZXnQf1Nhw_-pIA=ctjkl&sO`LSR;E1i z=iH~Wg`aBn-lKQxF4M^JtZ-p+pZvYt^QS}GQ?k`&)eDoRV7Uk9`ZeUG>UNUy_TK-Q z&#O+9a>urx-?hx0_1;cjZ@;PJ&Zmc|YSjpWZvd(q8+mP-VIVpbEr19I7#V;&xB7c}l zPp&rL$*yshcWFQFzoL#H^S4IO|BRqMq`rAs*;#k=!`>-c)*gNPA9}Q#a?*y$x${+X zAA6`@yZMe9=GXY`+-;?CS1Rp?a9j3)me9ZORfT6%^P?6wH#|LJ6})9tFati%i^$fmHcrkoZpY+ zdT-bn2%BA>Q+eQ@w;vW?s+}AV@C=46B^5(+hgQOa@Thse$1uL zALA!IVx{-noR1eFKQtE|>Mnucy0TwicGA{p^SYP^@8qYxTlz4;xt(;SjsA48 z_f5;6vyslwyshob&fE0yEH#(NJZIR{i~Ln3^hAX9q{_CNZ#q?wDYk1-TB>A zoGSNRWqIh0RJiQ2G;0C=UBf0HqO?1em(e-rZ0_}kXkVIhO^y_wuGjyxwaN7rwq2$3 zXs0f-=H%t;w@n!g>g9x`49lO!0Bv^pnY{7mB7U9r8p4ak27qN97dD9^QrM``x^-7eNOdYN1C&e|EVWA^)h z>(@DxFQUslPqsbJnROC6zkHOoZ~r$#=TK*YWiU|9H#%EBejF;lDK;MEeUh{6Gt2zJ z?;C!3gb^1=PuFsFTBXUwl5Y&6K4XKbR+WYM$6jdd!}`=pOB% zQ`_lfEf*EtV);d^TO7A>$Z2$8ABOKkBFJ4QREB?u>OE{-c z6OK6F(fWkS^n1u_=gxy;aTn>{$8$b7$au&cvuZNs(MVcLm}6q+)-`g1$Y!?o8@_s1wM!!vz8SC^N!wU;^HkCBlI5t7+Vjs|`HZ01u9j>18P#?}RJxa`oZ zqp_b{xkg)Ayfb0Q2j_{k>%Qz=mHOn$4UX?AVtI0awK<973meuxZBOMG4CH4p4*t2? z9-|FwYF9hrU?YYR_psuoa7dXRD9s_jDb0Pb>3IL>rIK;iul9qUa@Ui~zr%QYFT(uG zu$2BBwAQHxv;2Flzl}J{|CIIDepQ|<`6`$Y20XIpXIuXs633H8@93Zao|tE5%OA7; zx#XK_{dGTmSpM~E6BSP``g7J_`>(?2b>6FuV z`ZwgD=e`{8i5W1V%>SOLbBp!ll5djrxBJg*Fhe7=YK-|m7roAf*3*?E|0Wb0|CoU+ z`DR=HUgMt?zkj}6l)?!spV)Xq7&DN?KW_a+%#+1GZZ~hmJn!uCtr@~UIfQ?^_0N@m zyN2-Z7=nM#5cG$K@INvH|9yQzi zX{H~^D!N|S`E4_AX$@W zHt05in+UfWd=89R91T8?y_@(bl0=t5_aG?x{RZ7mQ1rV%#oGod-WG7W;xXtpfuc(q zbT@;dTMUYB4k)?`P;}D`y3;_>l^S%Xf})FoRORwB4B@DWipy&!f#e10guo>(Gw}2hs*T6Qg5u6V` z3r+`<;9=_DMz9+c-!6mhUhqq}w_Eoe)_pUm@awGmYU^GDk_F}S!7qYytp9B5Uuyji z(;mF|KrcRnZaYX?yy03FQ{;nK;_d&Q2A5&`p4%t2F4&2Sqm; z6x{{-G0~j^$%;h3LH7(Ox;}&MDNuA>;Mc(HRw(SMHe&ZP69=Dm`W_VgP`a-LDB6q=6kQS&-6l|U z4F=tHpy*Z`bn8IT^-VSD+y{z&2PpbBkfKbq8gyGg(Kj1(n?TWT0%28N0jj?k35w5! zTMeIcAVrYqH|U-L#i!4pdkPevW1!+a3@Ut&LAM)J_%4I)K~UivK*du7if$=L7AC3; zx{E>4B@DWipy=jr==G3a)K3O@&wT+=|&O$Et7<5;I z;=2qK-zt#5#A1VP0*qjhL>+n`$kif+0=cN!?VsPRt}7<3)upSW{6p!g>Zx|>1Ktp-K63=~}zD7wW4-2^DQ zN`vlvP;|$6j}ToqD7u57==K|QJ3-OyGwALGMOO-nZUQK}(I8o!7-`Urf}$%h=sKY2 z&P_Do`VG2gK!xiw=$--4Ezc>8Wdd=6kUNq*8xR$;YJVL0Z?@N!42RpP~qDRx;sFH-)_)t z0~J0Aeg#|yei^I-MYqDBTLX%2nL&3cD7pl=4vd1LKR3b9p8=^ti9UnwDNyvi2Hg|j zCc+;FMb`s<8SDZ@chI1_9~51uL3baxiEwRT1GpL#{Zdf$i$T#R47!z|=;s@BixDDw5c5(AE2W9qw8OKv}B14V;L7t3kH`Br6i@ z47ybyQ6&}|bf<%oHwH@H2_S!oVuS8zQ1Xs6=te=wTL6v#kF)+E`fgD42SL0N`whCC zpy>A*boYXy-vNrQ1r%Kqcs=2g2Hnk|=r$R28$i)jfczz<8+3KwfcOkREI$39_?$85 z_JQJa%Anf|iq8>H;d?-qh!Wif-7Zk!4;pm$g9^VLRC-rfjDlXg5PR{0;}ow!w-5B< zHR$$&;&TENpM9X{cYvaA14Z9z&}{)l-)zur0!5z$MX!4z#^PUU&{ZPDuOBAj*9VTl zU-uz^ZZ9Z)Ck(pBLGe3m{1ZI}-EQNb=rZUY1ikcwinq$5gjGBP2%&g%-<;y<2Nlm5 zgD&@wdi2LZg+Br+{9%J`52*0n2Hh@D@wI^p-vTOpvq85BRCshlgzjcg;rj@r@V%hI zpD^ei2NnL9L09+NDSWr_Pjne{4;uf(euHi&sBl`JRQs9^Dt}|3;?X^Hyt5~Y4Z5R2 z#WT{N8wEu_Kp@fefu4Mz=uQ}PkAt3k2Hhi|==Ou6>i|X94)T}SVbI+UimuI|+X{*< z35sqVD7re3zr+fIZVf29Wd_})py(!ng&_O!yzm7EU0D?V0_(V-I{+&DK2Y)K-aEz9 z1`;&UYS3)~Mb~W5Z30EN$@nK447%%#e?s@>iGLlaa9USh0*(avOGFL2r>-^e>V7=M zdl=*|(PPl<1{H6YLGQji@$0}YdAEb2YX$jBv>0@oLD4lCbd#XybkCmXbibbHszCk{ ziw(L7P;`|B-T9#Crh}r3fuhrWd;BGI-yVPNXbjPfH0VY_(G869&NePD21T#KIYqDg z^azqTXVC2jMSsSi+XsqX_v|U0?%4xF@7Ys0eHYNUQVA-a*`VT?4iaTznnAY|R6J7+ zx-n4nQBZUPMTV{)6rJwj1KmDQbf*luy`U!_m=9eyDEdxN@$Lmh-(k?*1&Y4ipt}PU zeG4eM&7kOXpP%T~8FW{JqN_9Lt^h@Mj?PPTy`bohgQ7cT&^-c*?yy0(2Nc~wo$l`gz5Dw_S7XC1v*DK7a8)+kVo>2O3^V-Cfa0%veZ;@lpnC!o|KkSTW1#4c zfMiYiK2Y+tgQC~D>!R2FexTb5ioV65+YE|+J}5ff>nFNtpy<%;_UNX9qKg@HCxKqP z*BCn8<0raKP;~nYy1Lg-bm)r<-CdyQwj2LMn?YCiGI??tbelni(|69tLEQ&L79~a- zbk7u+cu#c zqAu^E6A=AgQ1rV%yb|pO-5sFlw;OcZK+)@a@aMs)py-Q1(d$0GJi?9cilt}c7^M<;r7~a9X8x9ok4d6$X}wypsRb5MYkAKIGyt={*}f*G2fsY2NkZ@G54<~ z!6xj}EXJw41Q`~ysLCvRuW6^lx-7O^Oj@k57`GU+=vY+y6`wAPYM-(vE!J3!TZ~zB zEcR0QJbH`m7LyihEXFOyEIJl@siYpg#deEHi!~PG7GoA2i@l~k4(qbmZZT=G#$w!J z%%Wqlm%{Mkx7cnmX|cv)++xh4W3d-vkKSUt#iYd=i*buFi;l%!%9nqKby;k;n6y}9 zF>Wzt5%B1^l`roIw;6Wl^X4|Ok+;!M8sui<$ z)G5s4qfTI+xVD#j5071Y9P`4pNp3$h_aW}T?jZl0`w-j5?Be#r?PGT6Cd9El+oClu^+Q-(spi0 zY?;)Gd1TTt%$`Yy<#KZ?cP2L7+>F_C^I^=co4aq$%WJ-+h5HlF-7n5h+u?9~ zH|D9^`!G-3-g|pqUPtNPQY0*ED}zs23+9=!e#}#4eVE;M_S{J++}VYB=FWc1Q+M{= znU}Y3TIV!kEN?2O&P=<&|NF}i^8dc_PRzEuw%>)!ceUP?mv`i@W0?JSox^OsyY240 zy#03{#O%HM)ZIus{m67;ncjnWa7Nb*ZjGF=AG2@98O+`pr!Y^=?3;YPQ1&)SRGKkFQ3->fs3E%&zG3)Q{NnEUTL zcpo9}>%=@V``B#qXZB&t=KEXjCtde9VK#rX<)i%n(I(7YAML>0@zHk7eIM)m82mrB z7qe+j^BiROSQ2ypoP(JA=5%5%_bCQ_HK7Rb;r1axQFfTlij8iTT3_L(8;yd`i zHQt8V8Q+h&H@*+^Ncs(SjZ`VA+&)b1{+F z4s+N1j`>J9za6u0{u#{P`KK_O9%_CF86H0VFfu%R1heN8hd)7%eWDw){}bmh`#y07 zvvon+0#d!81@qj(frXU#!hXzsi#ivP-bH(5CiW(fC$S6jRH6^_M4}h7|B-W#z~_-O zm`5Hx_9(GDdKk0&v7W~$*~hvtlZ%@cBlBYy`2XG7q6TzUj^|8E}rO(glvPMM$S{0x$OW-n&*XInlC=g&4_c73)RbN^=# zVzz#+?Q{5kuH|$8kx9Dl;q;$h^1tpSNZxH+J}ZChuUq^7#985eJ*eBPf0y}V^k6Qo8 zbYs_hkob?c_P?;<`)&ArOwQ$hr}f`t?Q^aDqz&)b_-|o!~f5${V8i-$-G4V zU$OS@Tl&$K{xdfGH?6;G+QpKk3JtUYe+x_@5b7hC&(vGy8kzthV9X)FJ~ zS$XQM{TIx8B;Qx9{cUUCX6-+*{MK21A7P%N{P*>a?zG|m*oOa@{NdMb)AJ$o5`}NR z)#T3y%#-B*whcerhVQiDZ?*paWc^h$-e;NPFe%|_j&HDeN^`A^$$bXErpC)d_ z@9W9@sg=jqYx%yV|B(&9)6(DJ+iiTGv-Zul{v>UFd{K6I_~*Iny;%2b_9d! zj+yi?vUXoD=Og&ZU-LgbUnRd~kFoBo=QHq^y@o|^J*NpLyRSF-Ipmey*F$=e{FB|+ ztNJ4U%kJypp=^zSPh^PJNKw z*ZZ1a>H97H53RqiH#gSG(`(3`hiv*!S^HEgkFSUN_cng5hv<3Grr*~CTWHho>%D#7 z`uloH)i%C%E02Fqt*?jpMR-bn&CB)tXB)q-r~3ysJ-*)QH~sv$&V*0c{P6YGuCwXg z5i|b%RvusPO6wHFM-4L1L_qc`YuCDoHa=hP@IAxN@%5aq zv-#`mHUDp$9$!!QkWG))@AO<_<@NRChS~h}_5QY4e_zi_?{SjX*9(2g+I>CFd*CU5 zU$6N&o4>vubFGzU=@>71=gU?et&{5+ZS&XH>-$?PPr({;M+N9hPBNT*3G#o-}(L&!GR`WbprShTWE_$e{`stNV zKe6u1fqQlWJ1fkUEY;psomtoHXakDFUWwG63C|^PMN5`n@Lra|EfPV;)TN;5-2F`# zA(gkExZDG8)I%q=CF7n*D%maI$(xy0DpxKaO=mDTB?Q~W|`lmP!W z;|#e%oKviPPwu)&-GB_UX9Al@|h!FKz^>Xo%?HgW|tseIyT&~MNZpj5m zh7D^x2cM>XO}+LcaiQ=N)t(0x$Zl^kw+zo*4ja`f@6KV*7Px?kC}*VIHRV+{bNh5k zFfWod8&|ImW~wqfZ9h{W;YvxGpSLqBRjR4oQW->HLA>j_tOqUFY`Y53NsvtMV0>XT z5-^L#&(klE-e)d*wY68#vM&7+Q*+mKuwn)3PZovvWI2jWmSc)bmY0~ACTda?ETqsr zzy=EnsW{Vk1U*x6rw7TbM}&K#Hj__gpmY`)@_8+6$W#PF1?BYeKd=iiP)7psWQGcI zNToC_j#Qf(ywE!2^6u2N+5UxSfml^Ym%X?<5FjX#q`fR%AV82Vl@d$sUyH5YX9KN# zW%}*nsqnhgJCJjsyCs7$NpNocuHLxj>9s5Bzfiw2{ig4fBe^)3ecpZG_WJIxcz1?7 zzJMY3b}Nc`xvuQCo#Y~MifJKDzYaAPxCx-VVnhL&z= z$L7VRYn*I9Y^f#|oA2{=&iN#t`^k;bZjZ-rpU1tQ*XR6ypa18)&pGeo+;WNDTz9Qr z*j|u8gI*gRvJiF`#D7qCAq!!5{d6gTa2+;u2{fpm{pMj;E&&F0)o&hl)lZ0}BYfB3 zx~0o+p0l8CmZy(uhjW6D*}=!$`GHaJF?VjD6MW1LKC0$8qq(#A;CZ+AtXIvR^LF>F zZ>d|ebz^X+q5Lm&ui*(zRFX2a_Zn7*CoWdI@7>M3PEVJ!6R4%FKhqlXywiIPPcRSF zBmbB(d)kMwNE#(xRuDWx-9s4obE|W3g!yCmk>BBGsCx*@T|9GvBj{4x#8-4id0x)J zten5*f#y9-91C-HNc*$AGWZ4?K{=8=@e$Zh>S@1{(jRZV<^1)Cbp4s4YVV8o6TRyP zS+;w;x0ZfivPsx4jf~yc!7k(m#^c^I((8S==!G}$8g{U|Za8vPMj&4$j@*{ggKsS@ z+C$j8CBI7luB(w1XXFYYuN!$M$cTC>SL{6%_mBxQ!fV^Q%G*!v4wQ8<6*+Cv z&*6UYKv^O$c3q9UQ{p&-`02kW7JoIy9XW5^e>3S&LwbCWbh+u^n|IyFU28=~w$T%W z8>OKIIYM3UvG*lqAF{G*raAgrMj%_JSaNfapNNbd_Jg#wlV10bUfsk)_l--RVvy(} z{z_~1Dj?@9yJAN11K&{EG>(lwO8WG4kzQ}0u0iHW&ZSlEp?_W2H9XaG_Mw*+wj!^q zWjJ|4T3>c){L#6{>-pwL+>xGf(sK&wnY+k6;V(XTQ1WbEc6U$8T=~>IY42m~``;6% zyqqPyC3~rBLaOJLDXE@kp{eyMTXtHJ@m479Qm^-lEw@+kr6?QOgHIyUQF;gPZwql& z+EK<6YYUW*M!* z3RuR8(zhNk@@)fob`xHE;QIlsN|T~uuj+a1islyLOl5z1fDAj#0)OkVE15sCuX1*F zfK1MOnJQtwQ^;cc=2&D9j!rz^Bne-YW+dlT6eYlv@)>;4LF4||yQOvU{*xW5Jet^0&= zPcxqH{#U(EC*&XQrrcZA-CQ)`5In>-wr}r#x`?_=IFezbyHS4ZZZSFQ(N^4GV5hO>_p>w zqPzF$E!2V2lWds^%1sa##j~&MC>>l`QXaHEd|P+4eR>XAN-C$6fjw{C-!B{V;)dhq z-qax8ic=|auUe;(*Tj7W@qUDOD-9I)($A;5Z{{x7pHhdugPlU@Q-Pft?EEWsM5D^l z4E~{XN+c;)VcCMEDer{}+V~kykiNLBh|#vZ727lw8AcVKfAC-s??Cotac~y^aSH0; zH1xtUK-EvZQ+YmSoRcThhk;L6M9*g$Hs94iY~176_>h(VIDONxU^2iw>8!V7!qNs@ z;ru7(T;$MZyfDDLU4sZ7?O$Un{{Zu}8xN^t;~5Zs#+f%_NV*Mh-;O!`u-Qk6}>-@5AB+v=QdFOuC(aaf(pMHWX+(m!kKH|qT*ZP)XE&GwLekzkAviAcO zW_tRZMZXIaeP=+NR2~5pP70L23oYK>4q`sM#bMTA#$n1~(jj2%mlQ8dvAyF$tUJc$ ziP-sANpVZjfuh!;lHxNZxsuKjwpx^2sjr*XUydpLBhr2=fGx9Iwp1Zfrx_2<1|4r;`ohu3Ik^B>>gL?H( z=tb=Rb8UPwfp{kJ_|l!)BIFR-4s}2Fq05;?;#Xf~)RrYS;qLyKWUMv%CA3 zHzNG?5W_`{bzxSFOzLi3e&a{Phl7W>x_(Q8VXxPTKfe0zy48($*WFpac3mC?;t61H z>*fYagI!LO?wW>GTkp!_FW8=;aOl=7;9)r*!@M@f>>9v$vl?L<@7h|w86KK*;Jh+C zvic@5*YXV_+_Q*swd1XY)0`D0t1F(x9K+O^ZQirU(s$2Sm@|7$(ma`w>(;JXz4_ja zO&cotsR_mWDKzT(_mMzWYbSTUgktI zK4vUFyJa+TUUfeZ_qvQ>JSo|tCnaN)xhsih)a|H=cS85x7(MO=VeDb<28n@^eH`3v zqw)O??%&9bO1+gU_V_Ej%MQ(!d*;d+#{N@~W4ahWcQE&U=r& zB#+;QCmzSyhePJb0oB~RKa6tZ=z0ko2P-pKX{I!2Ms9NRFM6M5{J>BnyF%mXFEa-~ zv3oCh5adn2Uv^Gn+(Vc3)8@m8-(J#vf;n9he<(l3zqjuHAo+e1`F|tjU>W?9r3Wb& zhF{YAaE$U1L%#^~V(cNO`hH{sBa2vb0MXM+I(_U?=5Lgj82CoeY}XfBk-fE$a|)3JoiUX#!82IAJsiVt5wb@UpXP=?Fq`z z(Gu_aKrS`s*{+{>aq;()ChawEopcDk>3oHsM0W8G^vj2P^8@=6OH6u`ZrP_^NqgVdGVHz% z??-Vxi$8&!TT^GLkFhe9C0jOIhCS_|y*)?qcGs zbjgX=GCI5BYV1X6{snco0eyv=gC4a7nt#e2WgMB}v|ZGnsgwulQAetzr*HAj9#I<; z_ckX>7vEPpRlLdO$G$|}oyc5w%9x3-9=u@rT-eXco9CcMeu%amq)#xH5ByeHf9w7m zsRPTX3rndJOQMi`aF7h!+4^-`8%BCpu3NX&yw~u)b0m^p?_R&*p7qJ5 zdp9;DE3Vu+Be~(uf9hh znDl6iK51+GDY58lGOl^_Y3R_rTjvJLz&23xP0g#X1a)3e{xyN}Pv- zYe4z85S050a6DK7%Kb$;9l7te=+ovJdd^$)&w+B^30?sn0O{*1_k#*&pGAK=Xy^eA zJr@0S);!&4(O(0~zuQ33lLBd=%(=wrU=p?F`z4^%j0e1FV2i^GR2a>ha}G~|j4RV8 zE&3-wercWW>7TKw>zmd;v!S{^CK?kZO&_T#m{kS zYuCu#oYdMmvYB`Ds9mG9-!(jM{}aO1JUbX4{|CfLU1uoboPtx|=hWICD)T0%e%z_E zPW@%4-s#jAo%(jC{ynD_A4|_i`OCi_I`!+$JfP>NQj?&;czX`^HIEPK>)$vvV4gPK z823FTD8lLwN7VlwvH$6axjV1f=if^a`(+XPdm`q)6Hzms$)o4)h-*I)x|FzIh>*v7nnjc1Q_F6ajhk8fx0~y>ex`2K+NMDn7)x%x6~43f`h{2- z#<^jBtliMR(+_`%N3d(Je#>g}88Ac~Q$qe3=XbvCJ|t~jh;09{>;?kq`>0>DrtY2% z;y4VoK_^7Jd|sj*IoFZm*Igfc%nv^1<;7IC3v6hSw%cA}{n0KP<6*GX#3}oj6xKAv zt$6qRiUqUg%rfkXY9B;7?TMG<&qH73HRlyjquuwKMI*0A=g0K~ zYWftzub^!=&pYK;EYn1tNB+snMmn<>r138K6@fn!9qrr2bPYX@+&&%gE7osm3aOVZ zu3g-x^fF=?@TlL?BRMWKtDerS6iS|<_#a1{e_2OJm-DY1{}Lty6Mg%|TkSUECXEg3 zJF>50ABN(w$~)QXBIC4wq=Ug!iVio-|4^RluOzw3eFN|6$+0dPUiZ>mHtsQRV6O2T zW8utir~1~qzFK6*<(c72`t^$4+=IOonTNcmG%gO-yfig zUf5l9Jv_GWU+Ios&goeyZ{QLm|8EtW|!Iy$aHgx*=osdIj{OacyCKrnuIF|K+$A z5!aDfzsAM&OMmYj{GUc!f(kN z^XDSw(Z$TCOPE*p-#K*w9@0g4NGb;hsh5kWmrqbHo7pQ;Mse{_TWA4n1E&9jy zq&M$+{>HQzMtaBhS#NiL_PfFCI?@3-ZaAD|MRI{+hg!9RfphJ8D5Zh zoKimq@5}NRE;s6aTE)95H+nhv5IJ~A%MR!{QLN0^%H5EY!@=nY?=)xPP-E~_tV?9i>@e9(61?l?Z@sd9+!j1W8Gv| zJUNJa-7_USvKu4Jm$Kt7l{mHp~8HACS2G5NvY+tlo zPFbQYeNo{nKW`*VeJ>p(?C^b2(KrPDRN+=UT;-d>5Z^c_erepBy#s!d^rAE_cKcz1 zyoi0?rYYTZ!8CXR`{OZ-jqpAigyV5H{maGPHLIwXw*Rr^V$0ti>ML4c0=`R;@)nW$ldWMzDF3;y>xoTle?h zkJnwdl(uon!HXN8NzO#g(mSIc@LhohSaH)_sC?o}bXR zb<)npp+6q8`$bzHp3*HIrq$E_qQy_;ekb;nH?G~!U7Gb{vD8znXRv=%ZdmV`;Pp&} z_o}<6f4mg?(9kuCc2Qzk$36b()`#l`?1kDv`>VBwV68!J{-@IQ6Z)d*luKw#=v!@? zzJq&8MZ5k*q{kAZpDl56Ul>Miei?fTUlHg9fN-Q;~_Lox_IX}wEs z+1Rk!o|{>ItbyGBs%Sh6ziZUbTIq*q$>YeBhN4$9p!Q0qU{ z4kdSlHGs-8(5IM>ws^ZbL)q&DVL_#H7X9Pk7}V_+eaY*QyTcZ5-wVpWZBD<*>1ROs zmj=h;p8eiJeGKdxtI>hzscbBU;?ZFOF(!vM((MQd5Q5?@=xXN6sYu;{8N*!AWn?jQ_#pg z6&nMdvvtpK{*`%6-maLAj`M--fx|wK#YCoICB~6`h6Tp~~GxXTK37%hGEs z`WaAkYTvKu)Ov~RYyYp(e<7&wDnQYh1VyLhr7FB~Q0@~J{W4JQOF+5nwmi4=1&e+c zD1UOG=s081?*Qe`X^Z|TQ2v|%DeCFt7X723+#dnuUh-H~1Y1G5KVZ>s0p(u%kwx!r zi)KHv>@_=kT5pxTZD19+9K04>X3f(ni~dY-4*GFtevy`0{&ZXPJHdIFcYtJVTI;T$ zuYJyQ(QgNT1JwTJ1>i1lHdqDD0%w9GS-QfauXR(E#}r7Am6GRj70BGdgsXK;!Z-Vs zrGJ5*M)aJw=pO*_%E&>L`8sFb=*%;q^jA9lTBjce@w&1D&t$H3QTeNNQGUMGL#2Pr zs{7=eYCROEl{MfDaG^724~%g)8N3Gl(N3SSzR^ENcOw5fLA262i++dGKjrjKI{lqa zf4kG)=Jc02ecCkR4|Ul1Pud#)E1dpxrw=H-$0{8NcX-NS(xDcxTH}XV$30!z!M5z~(u=&?M;>Q2SDUl# znl7utW`p+OQAf}@FshaJg;CwS&y33PK0T^~_x{l>qmjipdLQr3(OtaHjLu1C5DA?} z#~wpA=aI2(yt~Gp9NsjmFvW_yO`i*NJS5kaoeE0Z^$ml#V z{v_|#@rTEk6z?6sZ~T66SHeo`%uVP-a%cO5;}c4X4^KEUp$%0>;!J`VPi&q@2u612 znTa{Rn~ZS@&KrP7@h!MaZ=ZnX}dG1O7!F$?dnpNg5(!MOfLrw--;+RrcZEMe$Lfl@DY z`7_0-XF0VtD;odlH1w!FlsXvKvu0q_Y6tY(>-^tmmEPB!c`(oUrgI<6TV|lfN#9e7 z{jhpr#Qe>OdN(e^_Fs*di|nxZPb2Cb5p^S$!}i%Tlc)ZAMD5yVbnWy1Md*JW?XZ9J zZFy=jV8iA&N7OGw>@z0LvtJWYs~-#d_jttoa}jgd4cjkpUg6_6*R5~3CvW9Cf6X5Y z{pbESnwh>=hbEt^8@6cm->s5f7qB7%?tu6W*Vzs6ZjHPDpn(%27x@*^O+#1Nm2~J7eQ@3XAmikrebbh0sHB!I2k$rdlb{f_XY9-j6 zVZG^z$tQF^HTE2?VX=#gB5ejzZs`OL^&Gi&|a7`XMZ=X$V;mF*XrG1!&b^ z`CY(fUcAGJD;C`#v5#6)QmTk=-O{kRPK>$!7!JsHW9+t`gm$zz9X6?0VJL6ARi*CM zkJqMe{>Y8X>Tde@N0!#!eCtQ**tQbvU&)VAU$R`cdc(Rk*Uj!HEx#BKFwV>7f~Esg zv!Jy|Y6W%_(OI;I1ERv<8Tlh~s+0ZC?CY!NE|@o)e=<35)@%&yKAZVfR_sXCta*c- z6WYAtvuoEhZ2s>#A5_6OMNgM&>;pA(F3r0JyA-!jB84Piv_CF%>~XoWnBWEv;%MwPn_qJTIA} zzU}^)qqr-_jvNV3p`HouX8fkPr-pIM`Rh><>#uO&scFCKyMB6?#$M>Ii?J?W#JW6k z3-0IKM{$fZ`Ngb@7jd>Dc1Y(E*dxCJ&vjOUJsaMksi*_JF0&Rq;ZSR_H;+8&+vkt@ zi;@-K)=(s;VSw8tYi>Vh{pl?0Njkq0$hsf_s&cH^P4OnYnq&QFKzNujcB*>o{$rIVLH zK3ZCAJ_Y#$4dh4udiajeI{e~f|9X_Qt2EB{BS)DT%nW@K&v&qP6|{SSG=deke&Xh3 zH?A=K)T*s(*KxD~-`o?Y{h{fJv>NcRTs!Bcad~xKP7}_2CEv6U1Kf*0qo;;Hp99R> zoO#tC=4u!9IEMqmKR1N=`60|N3}N0qgt_*Iza4$1!FwC}OI(Zwi=X&ndQR~tr~&EM zF@*aw@4)W3rde-<$hCL^x1s$1Q}(F%JKAn31{rOXl!#Ejw#S!mjPFA{BGSm;3{aWdvwPf)ASvaMR>?8iP2@Hy+>`_QA&b zRcqI+ZCcxa)QkLRE8IMDJ2f1@6w3EiyGrWJbhVEw!JNaei}EdQUB78-1Bt$2W5Z_T zK5sw-bbj~+Eadwzg!>_kHPa48Frf*0J`G_@5%OTtz=ntxJyXu$Ms2KbS`B9_-?xZi zw49|sBTbUqx!~fL9rq4T5ibP z1yzHc!wI4Tj}dmr1{x@y|Ek=Ob{6&Y1pQc`W=#ES@davJ|1SU3wYA3We3=no7G>Wv z6kj0lNBnXgzTGC2~!SJe}2W0N39`e%IBdm-QL)5sW)hu94S11-b+;&N>G_ zJtDX7nZuXn`*zubcjVlR_Ms#(mm}HR=G4dn@J^r^<_nMnT2t5hsrH6w-1n{@$TsIc zyiwT|FWWtiiRir3V^2ID?+xsl`8)fkgL5vJC6eq(kIttrFxS@k5AhKeyE8Xg_PjF= z?rEOp?IE2KrNb6?mnOWP(j9e27d;i*lxE-UqCbson#n%pMeNDXBHuykCqQGj%?FOObFy*=VolG~a7`d*{VRBWIL3be!`*&BAhI zGYTiO?^c+^oVj&;y3Q4V6_^KeZO!F5W0TW42lfzW+3y>qFrp57PraIbEsFQpL^+ajVYd7UkT%fNR;v10Vr2kJK1~vH%3x3HG|mEWjz{*1 zQ%|8Z@l2lPr_(##TSx46`;aVN{<6I zuUB{nZ04j}Ec*LFNJ;Or=&N(aNqV->y?v(CwzYH7?&H^z?E5AU$0%Yt^NnDJ) z6OzlA1I9dwC4R&866UP_@OFnS4zmt34pR=34gupHeg#~cncN54QhWf(7yF9$^WI&& zm-o4n^Cf>nB*OfgpW;sZnPA+u!gAW5c^hHqkw7SZea}+9!s`Ew zs7oUDwa+GO{{w^Ap@hTbynrzj6kUQC3u(^PtCW`q+{Zwn&m7vz@el-bR=wmB5 zQZ+l&){^`P=ys|G6OAZ||1A^de)3GB7M$ps>ud6Mj>7jYadxn~yuN-Zy=bWn)ot=f2w~JWnB5J6C5e zUF6Oq=Cl^eI3ItVEWHVb8X31To@xuvI|8>a_nl+Z8hQV^aX1{~A7kUdjr_LXmJg6& zF43>&*7G^@82E>oy3gJGwXN0A%zW)d>GyuC2sr`6I14+Rb^H;m=f_$9=6;j=M;?5O zJ3ZcDo{Bx@2=?5$zEh0Xb(UV=oMqnhp&4E+G8T1zgppnP2J$TFrxoU2{w7@V$IPF1 z%yoMMIQuwtOur03di)g&kPBeust?=s<)+@=>z^L(jni3r`NbU@cmMm9l96~BYv2=& z-h~idIy?WxpQR4=Uah&!ghS6c`5A$oKo&r5y4R*N`I2k7Ww?&{+jzV>-m6vk?;&j{ zi;16eR+;l7gm2GHWB=|$!xX;GIor9D_Gny2-iW3kJjR)?Ef|q~><#9-mR2j%G0QzD zQU`gUaFg0^5z$K(&};u?@4T0X{SB6nOJi$$Kn66mz_vUd|NvNQNqM1(Ze}b6e4r8Rb=RpKi}y=3R_~+k$zb^7?Dc zA5EM|C+P>W668+vNMSbNRV^6djq5GC>~6_TRG7x!af)j>Zu;l#Zy?{1`ulXCuW}jY zLnJ3y*$RJ5{jqkeyaf5zGS1dD={p_-`(7q<*80*zKXJ6!yti~cJ{(!KM#g4&-aeYt zcx1^^=HySn$HtM+>7k0Vy=_5S%TMJ`HrHEqI@deD z_gB4_Dt;W^z0{;9`~%r>f7^adeurs9xvKit-ueG-{am4P#(Y!l%XpWaNh7bZOZ>BO1d`9H)Dm5qRp1b;W7vJt5DEjRd0ov>v+?B|6a_RdEp z@TE!2-@5-6+Si+DXKQG0KS;ZK6EX<6Kj~Xm9&k9WL0O17xuqA2y`DfX=i1M&<1aEE z3_mdi&!`Z8NNF5%@{PoQoR7@lm;M&{DwKiN;i&}`@vyuR+pcE0mnkR<0S_-Xe4t*c zfL_Zmuj-{6Vw=8)Y~`0e06!RB@k@Uh+mxg2eCcoC9V1g$;ZA|)>tQyV^ehWG_PwjeCuLYiJRFC%1ltJQ{*LOa5Wp>3e z!i+=f55S8X{*v-jSax*p()bHMN5;?V$WrKmH`fhsF1XVvj=yp0mj0~|U*4U=&ROgz zO>^82r1m}Fp{mV)lr|r^D3oo<{|;o#T=r@^GIl;qJ0IAk&fNW~Y45F^aFa*KX+Em9 zJnf4!`hlM8$c_5(K!%CJ|1NoW8R7pDb0hnPK2Y}5hkNwB`i^_$k4}lj zU*kUb+6V8hu3k+0EdK((m(s>bc82A3C+H(4nLgsrdwc&dQ`&vK`l}$!Ma1K~+yfTG zOJ#y~Gw~(rQ0v2=*3shpJJI4A6G*;SIr|bXJ4D)Z_s~E&#uqpIZ7Z}EEbBX*Y~*(8 z^>g`mWQ{KrWY2eXrYAq(*pUR&fqNntKH~d!3nx+^z9Xer;na!YdkhNk458@96A%M5;f)7qwcy)7H=)V0C& zYdmgT-MX&93zmE%zQZKg!d({|HmnotLDG}GHESiBV(n)el6Z|~vS~wd>w5Gy+_j$T z&(~P-%HF+fWBAmKAM=_vZ*A~uSA6_NkM(m7blkK!{jnRp4R_w@-Fnkak5QBLq2v@S10`o*A;;N{SiF6^Q)|5y z{oB`p%-1S!1Fr=o7l0{VdbveE4MJL4=MzC+assZwUJ6_QYW-LKmsq_0Je64C=Ro?O z$~N$Na4+~Fuo;{Wu5;!Yr@s=EJ;?#MOyODdmx0yjOCA7?cctV2$lnrB{+uIyq&@?Z z-IXUm(R1A5?K<~A0sopT`Wr#TXPrgA5mbCK;4Pr!0x;iA*IM+`PJbClg-oX``q~dK z`?Em$zVu9sMvj2=B}afMbh_N4&)st-owsWOg#I>*{zg#guJv@$sdN9Jp8-Xu&iyOh zSAwE53Ce$+>mQGK!lFOg>6d`x(Dy9*-IOocmmK0U^mYCp^mYDU`e#5`80ij+{!S3q zK{{*E-v)|4o#%%|kzQxf*SUVtx5lD5*Dv~Jp`H#-2jTfv>b$;C=k!yc=dhFdG6S{F zNrIyWnNDnOOf1gLOTqjj!c z>oSW#?L(CMC@4A)gQ8P>cG=hZObxgW{2-VHmw?saVvxCl&42I))Co}aK*;P=(C;42XPutFL{$6xsAji+g`9~fL&AQYT=ubvn0hT%Q z(ayZx;_w!SS%(>iDThgifc)kB{bxozEA8aHb5t|O^Sei0P)CXPoLI3{(VJW;_aU0D2$rsek3vYDeY1$oW_A)FYhwyP}8xH=Oz!Kdxzs`ad{k=EAmD3jzq-~N8*Or^jmulFgqLg7 zs=s=o`>(%&dz|+@4H5NnOv2_jKucJ?Jfi+w#QjPvhwYz@n4gXKuXu#*KNj)-#fUk5 zeV+XXBjLGz2wV0M!zs`Ih+5|b!sd%2^ga@yN9|$Q{`I7HSpC(Axy-`mZ${KVinx!; z_kT1(kM=)={aYPzAKf2+bHtoGzw+GwNyNWvBWm>{;qab``1gT`Iel%O{ojg&_p^xk zJrVa`h^W~j+kfZaI&&|~C+eZp+<~6w-RM$t9EC(N*<#yVkCiX*<H{@wZc z<=fQfLOb#M3ch2!^at8s*$Zw(Fq;^{xwc`WlOz$+%-hir-a(RQU=`uA?1W0>C#pRl zV6w#J2*ig)DCCzBdo&=jg<+6Q2TruXfJR60-&f=| zkU9Nw75cy2eWuRsoLPOo%%XWW5AqA<&QJC~L&-0gJ9mDy-4HS0-jM$N5S#n24k>hA z0sgw@C2jcdPP`8KlEI#RDQlwnpq@a@oKEvP&7sWmPURRJU=piG{uwfsdfs>RF3RJ0ewuWf1nQ1jol&?fcIl%@?uHDfWs?JBo!ZPuO0E7XB3fweiq27QqGgDc^nZ{pXce(YgW>_G>`i3x^7eQJ*|32d;&p)%C8k7xWfWPeM zR34>BH^SJ>e~-cn{Ly!2IQs*%_g&v(J#)^)d~@a`%Nm*aMwWe&Z}?w5jnkCh-kip1 zu?1oJ6xV?63FJ@IjCAPnCUTDl7z6P)kA9_v!fGcRv$u$|GE(PY37RmuOGII2TzN=h zKS&#eExY_p9I3}$Mx86LXTgiOkDiIq`GtTc8ke?4_A_;{)~0m!9BoO~qnkMk z0ROq|5z5V?Sp3y`*4-w~@b+XWH#8}`SCi%{XGQG$DVgQU4(plO%e|g2P4jxH4NLpo z(Joq=UEU0cbEOL-6ld53i9+eK*x7ANa{mVRT*SCPS81g^6xP1dIR6YokhUr8#fa07 z-JT4^CrLS~LBE-JVK1RHXeM1svBy4(Kc+2sYAyL!I?iLCiuaVv;={Z>&F}Mi=8_+B zL)lr8b$M*dP=5Hm-zs5m*d^>$C}YpUIQE2%XHQtkp4UTb$$j}ozNjqqZXrDOxa5k5 zKb0#U#=nGrG5;d|G5+3DubX=3_8Eu`jm-U+ONR^EZ{lc5v9~~Nn$kyjw%FDw)`Vv# z*-L=>P++dI61da42zIFc! z;`&kIyqtX*x3Vvz#GH32l&5c3<|&VffF6&yy`8_^T35aGZ%E%5_da`j0=nbSJz9bZRL^47i%jYnlRxwO`DpOxy{d~sytA0ZL!^?sCs(%0FF0aj9)n9&$ zpRTV{9OTE7_5E!d<_V>B4RKXF=gJ9pw+w!V`!Cox@rJ7pqJOF@TOMhn{dKl3cu#$j z`iiX5o*#_xp8h1^h!+0uxD91*(Ti(wr?Y@@+{M|u;hDeJ#yE=mSZtaYf3<()50-Ru z-soizY)JaPFd?k9#P=uR@(F~#sJN3uUrnZY)^076Wo=)gK&tG zIeRK~40UVK9Y=NllkQG_@}WDr+gI6o&%UsEIs6IdZ}|H!h}+puF6RDt$%nG-i|Wio z@*=Po>}3knN-z4_wqG!2Q5zcQFIjEN+T*mfQTNX~GquB6{QlxKATI5%_x8~iwD}$`*e_oZ}S9glY7iiAXo`%hz49pp$w3xk?{o^6kg$(|M>*6YRS5#1s9&+kJ;}I`o@^65A zuW&yS(CNLG@znMGacR+bV2N$VOW%5&B4o!-EhTQew2Hpaj=9YEiZ;AI&eV$~j0u9f zhB8;#xCddWEIfIGOP5LHC4M&1pW3!Fzb}-Y!gl|>db=1uN~sHPXXk9S4JSvReU^VL zbk|jXniURnF!ONRt-W2Q{VX3?h99Jy?#-(M%spHg&S1uVjn{OBIXuQo(nf^Uy-SCg zvA~;ml`%gVNB=mUesThRRsy+o!}dsKT|mP-83Qb)jIjr^C&O9Ppv_dCs(tGl^RW-P zkv^b{F+qE%|JVLBse9?OGwg#3_CssmSWsUm1Z{EpQuY56)&DQGeW=?jZ2EtVFP_B@ zuy!A`+*8^;U-T%Clek;(F4}44sEJ_zb36Wi_Bv>0&LzLJhiw#N3(=>2Y&Y^Ut| zHlO>%;N{MPj<@cwB_BUVey$*2KgxbWH||+F%#3@K&VBK6{m9Qum{!go<5!cGnaEs9 zw6M1>ug%KR{)fxd%dX4@`QPq!U!SD!Qrd^@SvvdAM%emk)r6CXRi}EMpggJXZgk_6 zBzs}aTqPOPJZwPQ6UbPMwxdN2Ha;oZ6xFBxwt{o_&MZS&Nl{k&%_bgN5}46`W^kLO zy;OV&dv8|uDUU%qQr|Xxk0n_f&-^+s`~36Tm)MA$};yqER8x>N0-9dqqi z*n2H)`NOfNPCzSToM#y4@9CmnW!$pci*e6d@k0w0zZ`u=5VuF)CT>KeaNMr2VRL;>-X7N^=|Z|C<_=~~+KBeS%%?Jzv-P%yeEcBo z%}vM*wR_&f{n&HV9pw*v4`iX*eeIIXuw=6>*Q%2mL(PRh5VRXD!wN|!AC zMv#6*TddnJs*iW$e_PJ_+Z6S&eg3`GYw9h2<<-Nto9_i-DUMIN@I2Bg+>V9g8HAOk zT`>K&qn);*stMXNee)EJC;RDC{N4>+nm5=nX}=#ycp}ld-sRfjRg{ahOPKGKc=Ht( z(fKmzuW(I2Mt}PR`?2%-ZSu^dzvI=kQ&zu3Kb3X;#k`{U^+CTXd%^caFEJ|k4(m4; zd81m3;-fSN$X)vQ<>M)L%C9m|X$p@We0S+!^CG{!(;c~k-;dibD<{sJnReru%Vwr} zen{Fiegys~{f%f3+Vsq1&P+K231^Ko@<+xGvV|c!rA1@%CnMc_>w5gBxTu0j#8e@FuGUoH7FL&dvsOB%T zfZrM&W0ZU4Bma@M`|+YlW{kl;luZ{%>yOh`WPs;5~A-D8oFmeQbX}skERCK9re8yIj_<|MF^kr=`l9_zP?Vtjb-z z_+aMG#vFX)J!%iKFS4AGK#oZFZ+*h+d4)E7hUALGkSj8#Y|~S;J#`a7(xmRPvP~&? zLv`;hGiOWcrj~8m!5GT8{fKq@8sn0>VP%`x3s_qh!#-tN>K&l5_W^6~r?NK=bIt%u35P(YDr#hWcN+FjiQ%9he)xZn0{~Co<|KR;_b+Mtzf2pA6JDSoI0i zf7gwy6wbdXO(e^ulzW;VA#KE$Z`GXWflEJjFz(HJV>o=BVT+GG!ue?rBV97l6U9u_(FHR z2KT(GZvCRGciyd}vC{JOk^T20YpxjMeB>3oY_)j=m3k&VdF}Vt5}%6c z-a+OcU(YaisKLLNMtZNEc&PcYm&SUp6;ZBcpqCsZE^pV5yZ}ujhj}l2sOP~i+#E}N z<1qPL+2ZZ_&*D*s{vh`F(cQ7^GkYk54{`SJ&%gbFgGU}&ba2-WZ_iWw|Gw0FP3JA^ zVxwMdpnItk@I!!*B2dBJ%TU%T0Q-< z>Zitaw#{MPfi_2N-HDFgr@zBFvmmdqXZl6iPq{I!=47~iQFVSXek|dybDXkM4_}40 z!`#`;+HFF1>PbVHDP2`wptnu>FT1m?@-ON1G`|y{9RJK*qn$7*w+ZE)+{m8?DT|g5 z7Mu|(KeXyWYhQV)vpEm-sqI;vC!Jb;1&@!2h(>bT*eLaf_6KwOZtqT zK13OmTm97s$-cgG&=9owchlFa4VV)1HXpw{b>Hjs5w*$}*GB|l8T&DB)4EU}@nz;> z!5BjRzCoX%Ggi?xyg)X&DR=k2Z@kLgeDeAS@FLqT_O@lieH?AD+70z_((miv;`wuE z^=;46x2ZnJFSWnXF^?H{RrI%AIodLl-fkR|qyG($V@G2_a36Xiy<#?@9hy%vqF z?0V?+RhYroLq=QwInD06<3<)6ZVYcc0dJhUCXsCz$R#jqgo)F?zofgCxx?8d0T|nt$HS2H+`$&b*ue(j`9}pZ%sL2jFW_pBKWvbvlMlm^4!xL;SI;2 zC*Ya1b3gkRuY+GeUDDiKX-u0}r8)IKQeNRrZF-gZ6kd~k4*h@z^xL05oTe#zf^fEapBOuH5QZqZ(TBf`%>0Ki{~As4;-g4{%Z0v^KkxH zoV(xWX%5g_+$ejSWN$I~qV=*Me3i42&?n^lOhUA?*S2pwCH)1c)oulGf2k;O_btSY zJr?8H&t%*NWAZFxSWCa%FQNXhSYxWJrHyiA+Ug8vkAt@NKcK0L@j^Vdt&h$f?5h}q z-#?~(&qd}Kl(l)HE9&MfV_C)RUrbrM)U20I!=CaeYInz*w8zGt<&TS}UTExfaRYaR zd@E*nib4Dzr+nYdI7KwrxY{)v!_O^doslx6y6||>#JgjRPn32_SINB4x7b+@)T)FV5d+LJ{!(ty(oit@ta}t$V-2PYQ;U2W+xlh=Z7#rl%JuIE-X>j4Rgu*FVmg-sK^t0#({uD1y^{jUK z8EfCrTU?v3uP~$ibFiMk8nelZ6nup*|7z*?8}CTf;wTrT&KKKXBe}Z|8_>K?% z%9d4)w=$n*9}V`OD2jiV6Jw7mPFwHrdYVV3zMwIB#ncm*uf>mR)_%6SCKkV@VlDd| z(eLlW2g*%VyKBosK0iVF;*Ce+F%3GxvUlq|@0lP@?UcDz;hQsl-uT~w zrkb^l)$uF8b9p@Gjc0uDOhA*;HrluM=T$yU-WpqO#2cr4k5@X!*1!WrjlXl^sp17e zUPb8+@5{-UIP~|~8R}DbT=pn=QE*(gQ|qymCCXYbCR1Gw#*Kr=<(>21yaMU*GVP^g z?4~GlgME``W;|7>>;>&e3_DZJ8ltTaS;}&tr!)_~gZh%ee21IcM9p%TDUGs>IpkJz zpI|*YdsV7OV+QH}|G{JTT>BzE;9155j^~$v9{Sus&&Y^Kh=(&{`=uXS#6Fx`Nc-e- zzk4}xtCBkI9T{JG{@L*r&oy5ji^b>?Y18V>9uec0QA;oUCv2nsHSz7_U|c}9MK^mi zH1CouE6I$wjBqp-3Hpev+q)Fxm&YEe=SS@@{atE|y-CuaXxwDRa`az;f3oxP80%lg^((TceEyK_|5u2=#h%D=l)+^0;r)|^Pm-uegjD5p#RGPIwKWXsMDI>hu zQ)wf@;Y}NF(@)_wlK$$$Bqvzuqq;Ykyp2M2+l<{Q13~^LsdwS|NS1y^w99YhQMhdj z$0_cqA4xMSZ z?V5&7-+Xt`zAU&`Pi>jPvE|3kxs;ah=i6Et`*lHA&?c*`&QRaJ$lCTq@=)W=EoK}k z*;-cqmHcW~Tnyd$eJ>RTzcgQ&NPC(;j_9X3-%XV6pVM{)V~2qD!NL>Wsz)!ov773e z-Pe&HMljD8?fmoGfqQIQCbMAf|91B4W45g2;D;?v_RA^@+y?6!q?hI^3E8U;*;9E& zzwe2=uU_}OE4eb9KUwYNANd)0t|{LuHUj{T_x8YZ_zC{fwM|;j>{f_s=RY8cO~oU zmATi=ziv*D5ws_H598~+hyE(>Db7>%pU(-j*(;Fu=nPNz3GzMAqYue@M&_wJZ(BrN z5mC>GsIQ5ruZ^f@N7S<->b`_=`ZFWul@T?v9P%D_%%@L}xl-Q4oFMOEj+OT?x66C( z%u{(@CZfJ8qFx++tpc`DEQt%&;Wh#J0i-t(C}mFKOGs5!2b_l(L@^~q6+=nhmy>qTHA zX#WEBf49BB-=Xj}EYKE2tGg$CJ|3dC1w?$8xg=q8R z)i@o6Q^@@VXYR`J0QYg%VC@>j{a$C@isyU|i2p(uc6!!f&at%t=B+NnGT13ZU)(i- zk{eUVTymWBFz+vzekWancoaK@-0yS+(s?r={=1y{avT?m-5L?@0)JT2g~13;F%m?fLQqH_&5ckW5aL)!6^HdMwe%BEG?;gT@?-1tuhA`hhgn7#l z<_DblVCj2!2=lff%#RIWetZb?lS7!F9>V<05aylEoOQ2){d37ooAHuASEziJxe3i+ z~iMo1~Kn;=0`CvME?;t0b4VOdE)&T@XWH{qG=U+FLUM# z2Qkk&^TF!pZf8DN`??GB2a%(<9sCNo2HX$c2HwK3c%?M`qM$VPg?XRgL2ijHFpN% zZJ_L}bLMM6vOJx!=-=kdSAt|gy4Iqf2Ib!}kR(f|Ec!{1Ut0Y>KR?I#Liv3XRD6zu zqcCr`=pO@>Pe(2KZJ^@2A5=bX2Nk~zsQA@_%J*fU@~MmQ6~D?;ykvhrDD#C*T?V$J z?q;0!dGH*l@VYGeCqPpkz*5ZHXe5+ghaK(&MgK-n^f!W{e~m>y1IoYKEcz=!(Z3A5 z16&A-t_o0em4ml~B_KgoUcAD_;|QpD?gM3i9e5Z_gK@ANR6BTPn#JRwu@B1rPKRq8 zra;**0~KxwDEpmLt^E$L6*Y%LOuDv$hfwbaWnYWAqHiboXJ8ZfPvAQ6E8t2{>9HJC zdZaD-HDC<&GK+o+RC=(0V)Cmq>B0wwO@+t;(I?K5!#A7OZtx1$Lp1gB_Aj zZSnRCQ>^;D#oLdA%FiR9(xnAde40SfodHGnN>Frbp$+txgQ7ca(XRnbK7vYzYEb3v z!uza0IZ*y|fb!?GMgJ5ie@C8<%Abry zzZU!)`Zb{JRfCFG1t_{Y-)r;t1gLt_4E_+@2L3&`27Ca#&EYJNB2_sZ{0f)^DUy|w zLB%TpDqdw4{n4Q4iCgqbK*g(jvi0}8!%k5Cc7USyB)A5mMNJ|Q!KsTqQ49Lee|2b$++KX(XRznUQ?jLt#()fn)YjwE#GXCH|^Vg zP~~hlsCZ<-AAxJYe+EmyuYl(#T6()cp1ZzNwMCHYV4YvzaI^{rxd&Z*Q0V>?n7X4G8!aWAc-@~B%-4Dv& zZJ^5cI#BK!E&6Lf#cw&NaB4t>v&^EO0%d=pMZX$UII}?cn*bGF9F+fBftUS@@by6d zJgD@|fwF%RR5?0o&C_ib{q5khw9DHp-o6g}8|>ZY^jA9lg-%`V)D_^<*qaVsPPj>n zK0Q2~g=@;_w0!CaJqX6d_G(9d0B$4{-G#w**vJHU-je~r^$ z4ywG>fCs^HQ1K}N6`zY^?R^K`7X1sL=sR!GKL;v4U7-AL0hOLv@Xx`GpyIg_lz+=X z)rYi2zXp_l%PjgSQ2tece-D;}KLRfhDbd*l%KuZ~*TAEo>O(82`Y;((I+lU*ceF)c ziK6`L9&Pn6SoGULLpP{+?*c{VPLQNbXD#~MLHW1MqTd9H&W)hlXF%D%&7v>4+Ol73 z(O(YAej1eh>EJG~9F)C;ML!PyFZ9LWD@Ok!i3R%IAX$>WVA1aa@5kO5ho>AK1%D6y z!=U_awdgm4BthjmQ0Z`+!{ydIown%D1b1OR-RUQt{%EIP;`Eh?`0wi;6or=q72X+( z{&7(G)dng)M?l5rutmQWRD2Ft^!I{Fmqu_OxDpf{(fd&rqA&WZK!rEUqMrnhpg$Q@ zIOP`o1o#c~M}tM^>pm6GzsTf*qE*=i%3UWYcR7px8Bp#zK)E|@(LVty9e0EO8$>>p ztv{f~!@5UhI~aF(p2{cvF0h04xYOe89Zr4PsgHvye@8%-zgCbWP9L!7w}6W8evAG- zQ01u!RJl)qKLmA8iqarW?W+7Iw+=pP5a3F^+(&w+=* zKLhuJ{{*f9mA=zK(Q&H8jt|>Gg?G%Ne*hGHyFk-^fK=gh)}pWbPGopZD9~IZ)>8g*E;j z2Ti;|#WM@af8CEF|JQ)>KV#9q4U~JyLKR)Lp!`pPN}mc){*{CBuLSG@&rqngfQLb~ zTP>jK&t9k2da=siP7spQS&RO5@G11SfmGczGOvVwBdB&q_o*0qEc(m9htXf?^tH|_ zI;%jHujwFFv$71NN>pCJQ2L#q+_gJw1No(oSoHUTYA1GqqB9H1{ziu@L86+jwdiYo znjq3?i+&BrFRgo5`1!MV-G}=Mhe^=1Um#T?U2f4&fC{e+q$sDw_XhnEQ1;~+MKgWT zGw64NvVQ?oI-a-alLv<09Eg+j8H;|a)8Fkd>#zxwy^R+Am7u~)gNkR3MSmHn@KT`S zyU?Ov1uA`}J1hs~U&5k)1Wzhyf}6papvu=ZU=4UPSPc@!Se2&_f+|lpfpPFgu$#aL zdu$iD6zl+(fG5Dk;8E~T!B+5hz5z!M<oDUm zILtcC zI7~TAI`kaosGP>V!xo2GhZ%<{he?N?!`v|E-eHTwtiz1Ml*6P$&ta~_xp&y&FzYbm zFy%1m&~uohei`~5wm8f>%s5OrOgi)&=BOXWy~7rVS%(>iDThgip2HlDjeCbJ4zmt3 z4pR=34n2oC$|s-0+a0zz%sR|COgT(C1dKa-r_;jJh$4XXgBYR zu`KWNu?t-7bS9SLeY&Uvos&hUcpoo1!TU&YTQS!^l^pB4<|#XD=dck)7fQNy+0*b& z?vCmheuj6~h;t*jA}Zd(#ZPE!5B zyw8n2&(%)Nm+ZO(pD*d=-F3-1-tCth=Y3#YE0;O#AJ;Ojr1j&Wzk#fv(}b)lD= z&^ZC0CUo%Lm)OtsPWGy&BZ)S5)e~1mO*}FYKPI;FJ~J`LJ3DFTq!C3elMe7cIq4Md z)=LjxN_t$HC6z8*+RgXg@_l@tDbMjfUEaYvd)dy*h(Y;9*}1Hn?_HPgz8oJWpPEc+ zO+LZ9`@I+6ONzet0`CLK)+8}V9_M`~nd5zIYWvg?MQu}$^6s44HMOW{@AQ4sONw(> zbY9VQ1yo#l_)2VD+0Ogam8W@kUwM)DuB&!m1-(}txT>W1=vBwAY6m;6I&)PH?7r&a zRoScY_3ER%FJ7IkfR>6AypL71^X{rR$NS8T+zjF|ql0(nwO!Yub8U|I&i6OJpOk%n z3-6XW2j&pVIXiiG&%QXDaOduxOB&DZ~-va^{9zymJdX7h>P<@JTuU6z|g?==cENA2{`a zlH&7=E-dO^6ffGDYNpJdTykm&u~~A0cV|sk4OG|Ucz1p1+=rm(*5kJl&aKCI?_b`s z9G&IId7ob1!8^CSllR5t*^g2JYLC?NU7P(lvHZk=Pf%7qv7h(JPn_a??33-EB)>nk z?^DF-Q@eS0ed-+V);kX0f&DuU@b0+d4DVBSoMv#P=M(UW!uN$CE5zJC)lMg)r;7Gh z=E44#?~SqQ+pMv-+?khDSPk(NWd9t0J)4|)u>a+#Ggm*Z=kMsBuwN4FPdiC_C-=dA zG|d~N4)$Ma9QGe_?~ms$J4e!kD*R_=EZj-E&POMQ}lP0vo5{X*)W$Q=8X&i+ZKp6%3s?bP#~`Z1?o;MBk4 z)C-;Zb56a)sXJ|YdBJ|aQiV@=f9cGBQ}#*2Y6cB@o`W`-?{(()Is4ym>VJ0rf6uA! zcIqdcT6{>-t0dUpAU>tiFYD6#g6yLX_9y5*DXD|~eiNMgWzIh5)Qq{-J@q^;`~3H5 zV9N6yXCCZ#`lh4jEk}>|jf&5;E`DEi>M>5e+o|8<)PIYgq9@oNwN&YWde#gRoVQrz z9d*j7e?hsBdYMz3``A#|I`uy=o{+iLqxF2#skKh6XOt`NTEEuQ>CA)uNuADI>)m={ zrPjX|r=EtM{6Fyj*n1c7s*1C1c%0E{`q!16d+vE=W<4`&&TG~TbM#3Ce~5Vt^Zm@PVE!2MBV4|o zW}bSQ^#45bFET&O+|T@F=I2rR;r_2Pr%6-dYJE?L%fDLBLya@Z)%qQpMpaNi zSFO)^iutx2D2}U#@2}S1U{7n|U#+(}#`*VRe*VAb=d0?cUlDiY_lJq&nW}R}egrd} zpGT8`bnSuu#MOGz5v7j3uaR7>|E2SKiL3RzuRveoYJKhn&_%e% zOCY*#Kz%}7t#AGt?1=kW{!8{BM>^0&^Nqs)g_4hEIgPLAdK>OYuGY)a{0nilzBR&f zwVwQCj;~rD{&hSba>tyld$r|(wiN!Men zzgqA9iAsMdw!X{ysr8ze%Msx{Jykkb%=&gR{}rdVT7R3%@^+T5hc2YgVw5You!ol5 z@$)6$!tqn5EWeZWQR_p$&-Z&7@t}*wxfH%yzxr*IFTthQdYbP~<5Rl6#`jn2 z(f^C@r`EUriREg&Y%@P!wZ19|Cdm=MZlv-(~Pe4DLZbce;Pg;G>ND zJ!Z&%Z^$1u;gL{qpEkyZu z`hU&1|2c+xdLQL<|D+**145^KyAeLk?>gmVcJejIuTK8oAWnXs@jTx^d3MU1P~M#U zd&d1}zS1eLFx z{L*WT_}yu^UvBV)hWq!8^q679r`(7Sy^nJ0TVTj7y@0Espq9OmBA*c7q&hV+5?&KcB|GN-6h5$9^IRdb8L!)Yik=SL*b^TFl;Lunj%8SAt%;W zS3$ePwm8O?eX0+u<*Bze6Als_qv>`aJ}wsuR8%*FHa6k>!B7MtyX~QHmA1A+ppVNF z9Ry1D&LdF;=eRqM(G>RX&)dc4>v)_9z&><$@#+=QMmUXy*NW7N)Ne2kxs63?*M{f= zdDq=z4Nb5Re(4MKP;*p7C)OM$dl7fHm0Kh6b$z%A58AvPvPV;7Elz+PMCP&V|#s$smKBeKKgg0yIbD`ZjI3B^jdtK-xQ|r^u-PW#^Y{m zX^xp$0LcKmA^C|;gcM1DkN9zPrSjI;6hR!T>myb6&IDT2ut7wM6E<82iCqNbk-uh2 z!)bH4qE;lR%e~vyQRpa+e6+F=dv!oZ%sU!PRy~!9mtxoLxJ3H8wYx?y6$2 zs<yaEogre3^BDY2@_3K+AO`CMdHB}iRR_db-5@&FW z@a($2vbhOIa8unXP3{LHiZwmhiiQR_a|U&S$;AB~ zZe*kFklDG*<)NXa9tFC=5oD#?N`#Bk$+;Kca!S^=1yW<_@{3ojT(ESNIPuweD)>o{ z4IkoQQSs7}#i2zDhXmzr?oNKdxZAyGq0mJ@@`;GqEt{wVD!JxjA*!V6$}p-6Lnxl; z>Ln!?hf0^ME=?p{x_t4{MGHz-$WD|F)}0sViExXB>LZK;=+&v`t5=tVR<2rc<pMOIJvZ^Y9GNTa74ARtdbK+-4Q|QL3&ij5R*#8Qf5$9$s0mFWd=TsKZB9e_aF(R?Av`4z_4RBO1bHST9_<0!=`@qV5~X+RXH; zY#r6c(4*&N17$w`s*|5RFO#yN;`&e}%1Lts)e~A~Wp?YQ@-4NOu~186m2@vMu4oTY z$fVWECCkZHbo^rxXV;9XLA%c@GKHzMYa^#&duA?IMy?;aRn)M-40S4N@rHVAwbYCr z3U8?-Y)N-*<4zl~@sgnjmp&;&+NR*uX^4S*w5TR~~(aOeumIaHAXI~V9&%Hg^- zbKJ}JB5RXGlFDdxZB?kU!X1=!N$s=4k3F2NZ>X9k^sZ%@ zc2IZLt!h9M7*bt%gy2qpF}y~xCQWrwN8YYpTTPZCFn3$Qy>1GYADMFJZZn2=m!R!P z=y*sQlF*f18juFg%E)D}qK(GCt{U?Ra4O>_vIH7OJV_ps*!d7cJ~`AmC8yLB%2Fy# z?sUFEB($CS2IXQ}=XPXJSz=L-(~O86lF6xSLSiZo6*L5+UYnV@^e{taG88G(i5iEP z4%FD3s!KExVa}4O^$zg>Yvx>K2oxxjZNL%5p_v$r%?!*|Cfg90Wz{ygMQO>>iGhpq^Zoh?%qhs5J1c;n-#;ri06{R9 zq_f#oATW2fbX`7*X1B!1DhH+!*w=( zwB~ZStDgnE>_%}+OViRnTK*=k5GIjYo0$MY=s=g1YHpfTcnC61z|&LLoxj=|Bsj; zOmtteC(lTCs~gx2#5B6tdkrAcjna;il)|QG@>wr?IxMm-T)D}rz>wUkZ>g<4)o}Q6 zo~rZzYwp@`XQZ82w~JQ+zH)G+nUCh#k#1tWE~dc6dR-*757XcDOfai1)@A#C1f=y6 z>Uw~?XTFO$rs2i4jd=$1dx_)5e&*K$Pjm3g!5z1!Z%kdBWKKD)KX!7i zoodBn))kOr#?#SVmy?7J8RdwCo+!U06zEFC7RR{iQZ<-S->OA%FV3TkTp8kL{m3mv1LgEHUs>3P zc)sO*yIO2dBhR`ROiscXIY~GpCmCntq~MI45jZ0U=i}Un^JZ~o$tIk;_XPHK_hQfI ziP+~kEgCJD|ERToqG#6xoCmXm!V6=+@@ui*^DWo|{SKUkV8PuTVwq8V75RBQ$y0M4 z_C3Fi?TEj2nnj;AVn6+fd*8(V^lxFm>1E@)3#NZMIA{72BmvH4yA|QKU|)E0U*WS# zMs@~FM((T0N4QazUsMsQ{hbUy8NY2JghIqga7^1<`1 z^*u)iOHaGTy8P=$2j{$(oINdl)NdvXdeUpWuz&OXu@kp@e4}6SjIK!!esjVro=G+7 zx9=A6EeLN#a{99OHb1;;^3CP%-}=d5>EAYwo%q`w);Q9Q&UGRE`k~*WI5T4+berxO zwX9~dXZ4KD-`lnAc=S*R=ZRfEZrg-qX@8th;~6#jmMJ6GKZS594c@_dcz11na97Ro z@76NS6C;I98XYiLP}S!g z1k(MUmv|i&Ry?yDKXipVs^$fzBtJjm;E2N`@SQ;F*3^{booVf9_d}uILGJ92jU$dQ zRJ-?#!Ji@y9aKA32affDDJp%wEIIzm%MXAa_O;O9By-CD-Qd?6oce!G_cs}w+CZlq z-@3VYz~ENss+9{CEn8AbbI6rg;2^tA7QK?JjN(n867v+45Y&rTYjA;SO6@|tV#Cx^ zGo~?wz&R1M7Sn~?cMJzxFmo6I#VzSQsT%QehYBwss9%L4*U*V9r43$h%Qv(kjO*oS zTMVt`z!z~uKQE6vZhpE>*3S#%&lclbzuz3su5UqnHq>Gw-7$VMg2Y0 zKf_*XeQz5-EX9$h#dr)^P+X@vj%{NP6rS=c0vOugJ7ND!g%g*zx9GcNWOr*j5Px*J zf*-DbMvf>i?t>>Pgy|^caiFt5MsDaw;fjI^{H#|f-C7?pM{2hj8A?6!epj z40Gvh2rteM%*yxXp>CP$Nntx`BbqaXUDmOchrF=QI#zth>xG*!(oNQ})OrcB7r=KKDi)6HuY%}qnwI1O#k(kVD2Y<$t(^Kmv|AKE#rIa}Wi zJ?E!c>%&M}?|-)*%7(i$(H42X6+M)ef-}Vzr0q@f0;iqxOzU15O#W_j<@k z=WOUKWKXc{JHWAUb1QHhFbo{ee$SSE--2In_4NhW9`D|zmL<;BQ~CCOX`pQFy4aq+ z<)>?iynyS0;pB%|zJD11<*r*-b?KFgRZy(ThO z@gQ}`y?x19OI=xFMIP1SAv6$TK68j&&HjcV8Rq{C;e@AC?V z8`tai^z=$Y)%pL^@x5B_-_L2LxT^1|j-~5V>-$MOAgAysGi^sjwU`1JTHl{=-cp4_ z^F(x|kV1~j%%~?D-?y<|evT*YGeU8reP__!qRSQJaP5a0-w(iF8+)SmB#s7z@*;f~ zauD}$wkNQnzM{Af%02ZfKl6nkw@;z1RB(p-lNjeBfDC1Kn;h@B&bj&k<8C@<@>ZNn z1h+ejFb>Knu`te(XG>9i<~+B`bblD`%ke{fd=v?T?PB6DqD&q=r0j9FsIrg3-Wl%T z7S9VGUzLn;9maGw;!NH}o*f@Smk&{QDxIyf7MuMmM7+wr+OalKMUuAo@*Ud zeui~>+tzvE+rB(cxSxFr?r%?)VPA@KH&M^3xThiQGcMb+i|*spCC<9EK^J+Z*Ak@1 zVvKhe?Lqp8F|bOD+s4Z0**y~Jjk9pEC(eF4Yu!06Mjpjj%G!~ZV(m%tT1S!nwqFWP z_myXUjlvmOX(vpRusowrq$T+ql72>-gymUr!@GB+i5dU$+wMU6-YL@;=aNQoPHz}z zjF;oAUJGYts_~yXBR%ewaW4j%aaValrNMmaOL^MvL;4+6b~+vY-;)L^ULvoLqB67? zc?9_b<%Pq+uLoby5( z%7>X3;>ZiPa$aboGis3+Zbe>*b6!A4AfNh9X8g&H(jl6JKAFc_g?eVLKY_cGpQUEB zot2igS}f6C8IHxQi)jeByrDi~Eox|LYH4h?V$C^?IDsre23lfESQUxEn|+}!q6^i4 z`(k_bndcDsRCb;V#B-w|hU+S2Rt8KYe~9H-5TgAW;$QWX(xtm0_kSJ!=sJd9qVW6J z2Q@B<3(q_-R~xeVm~Ufr+FL%SyCdgFc(PnlYsau zq5XsKS4iVsl*^J7iG^f|u0jcY{|hX907&seTPXbB1f=`5N-Qj6`w}4CuUKN?47Sez zBFK_-iG?XZj4?|nCjkrlkf`V*pl;`n(d&*AykEd+K|HC7D zvCqn})Hwb>pL!5Gue7J$kN;a!+wlL`h&Y+k+GvLrZ?6|SSa=`6f7+1+dnh3?&hg7^ z=ttuh)qnj3$-!6PVbMkB4iT?o9%H_N`Sr|iX8uFwE17?j`L)bDm|w~KYs|};f0=oN zc^7k~-yY(~0IGldK6G@Bx0;x%dg)x|svg2#R>J-32#2mm@FV}Ko}hY!xT;rZp8(=h z$uX{j_z_q2CX9lUjINQeAUkzYK6mnI2LC!7I_0YkIgjpigCN$EVF?g@t|31K63e>u z+GhG-NKHN(qK5hke0+eBq+#z2bBK`E0afx1S-4Ux7ZnRHnp)@;C4EG}!y_|nEY6dy zl$d8cadhPBK0`Ta$&0NLxC~|Le>{&$`I@da&WwuFFqVF(0>pKyvy=_vwGmG04|*4 zUJ8hQ6fWuN3K;xUE*c9YdQV7Wo{ZwQRUdjfsEXPdy*UG04tResKCt`0K0f;G7dKr0 z*!w?jKJ@-KGGBlHtj+ONt-Ef2vG?PjzF&6mkMFlu_P-zfbkQO2=9hMPk1sxy_M5YI zWpB>dg?D9p`jV|39v)XxxSdJX+x>ZM_jxz>?mFZ6szZ~l@o%4pcdx3i`tel@@g8%5 z-Dg*EqIAY{rsmIe-2?{9oK_&xB!}uj;^YYFlu8C?dvYOhB%FF~YQBry)0K`NKR3b2 z?BrZQG*{PQ%BumNKGuip8$?#;x<{Ia%v^oud8=7LUZ!Whr@%)FO;|)DK1j8T*O2l> z%~KC4?#B-o`ZygW^W>PaL!>$l=PXnzt%I0d0hT@>4BA z3pvX#WnTKxeITa(=4Za3ww$-ZoYie33s6Xw`6wF+(rP;Zs4WDKr4Ys6U4bxbpr4MO(8qyYd<;HQC zQ#A9-#DNaX71F#2&3_=zym%(^&EQ?u0hMn)IWK9)0P+p;bjC}_FOPn@_|Tb1kN#_Z z+(r4N7Hg8yuH7(zz30Zgbs! zYd4DckGgh_EB?WVoGj?VN#^?D(I#_ci2&4x~Xp(g1VEtKP)D zu^t8McQBWXJXDObI{oU-u3M1q+mP-hS4RghCK{J>byn95r2Ac)Y6jj$y4NDTx552n z&zPF)(eA?UxcP9i?CPum@27*a6Rk5zl)nF1=T6@u%wt>LBJqx_C>e8)F!v_`F|SSQ z-r7*MDc_(?+MkAXa`euz2G4EUM>ik3be#3V^r_F@S2MQgZZGtl?6Hpc&tCWs)E_U9 zEDP~zL-^Taite^HRS(GW9Dh;F>5aDb54ZM-=HS&lIjwD)Ut}Fg#y$Iyp9VjVwMa;7 zgj+hbIqN1lPsofrJ)eG`yA){Qp|Sc8L)Ceq2e@$&=zPX`~R_nm#o znR`2ZMR%v6uDJ(kmxg!F*+>J*FMEhv@w@ND9OP0@+Ff^GuJnx7tN}mdW}h_D+?68+#Mel?ZXS@_(YOTf%yKe;qzBEL z0mXb7xu=+u{|{kF?)EWm1>&zHF0rs2D8iR`9lbZE@YC6z_DiR5=y_2%uOn?>Ea{V2 zco0bbpO<*uHXykx2a>xr5({&ItGh=M<6+bI{;x}pTyK|#tz0fV>x3Hqn{B# z{xK6}rKBX!$i;TCYs#^B%yZClm?pkFuX|FGX%pg|nDmM#Z%s}~epyV1r6k8O$<>Bw zuAM3E@cME}U&`x1n%vrk1!sp-X|v&!@2(i8*!*+M)RF(7m|Ku{aH``NPB}e5b7fNHCX^U~!r;UBk3ee)mQrKl{@J@p%?v{4acu zFlW}Bpr5WG z4fiF6{2fDHZE(!PyV9rDkl$eNsfK&h@h<=G8SY~SZ#MWJ4UP=p3h!q|_!|xRjRwaz zEiV6f598wH1`it?^LQ@zaYKHKAwO>LxWR8V_-zJ%%iwhepKjcLiy{B2A;)_nm;Pvn zUHo=~Z!+9}#gPA(!S68mYX(O@%5}f1jPSo|$ny;O*9zs8T?^`|Ipz34c=w&pBuc};5`O^#^BEy{5gZ8Qgp@VZiAy=T?uQw;eegTHOK-)Hbg432TB zD?Tq7{85Ad#NY=EzRb|)XNDYen6CR>YVgMl_g^;TzcA#F8yxE}T;VS^_!EYEEber< zZ#DQjgI5|HYh_*jFEn_>xF7awcDdhR$a@WbkKz6)L;keE1BUxw8uBtj{x?JZD}(>p z;FzOv>Hlj({uM)xF}BP7Hw^y241T7;{RaP?alcm#-e>Sv4St6a-WG%3Z16*df6VK- z;nNc!Oiz zm@7U}gTHKqUv0=Ses}rDINrr;4c>2rH{XyK8GMGpPfu}&f6Qn<#~bntgP&>eRD{2GH_ZSboMUS{ws4c=g+_qUAaxz*tRX1IUAkbmBgziY_f zH~0qzPc{7ihatbfkbh{%KQefR;r?So{)xc{41Uz$w;AExWyl*1`9BQ#B18U9Lw?NQ zpBjA7;H!-A{?m|q4EeVWzT4m(2LFP=lMJ40@TCU7-{9*F{-B}nHbZ`k!ABVU27`wT z?lpLt!J7;|%HX37KE~i<4Q?4%xUsR8c1p&!_kP;t&mUfkO}PD)wGFX|zrLZldhI3) zZltWb-XFzo?y+dNCSrw~n`fCb%@>GyEpj0NcUB6p0gHESjWyV!W9zIhH$$ zx!gN+$Bt4pc-uz~rO~Mkb{uSOz@CW8vmfvKDk4qNbxfvKW30xHBMa)AtD9+ex+*A& z_1#r|@!65!v9KSXEYm)QLXIs=>%&NTscfvN(I0l+lPv5F?_<(OQ*)!guBO`Y5MpFS z>P0F=j)jpn)AiS4Cw=KBR_iAlTMhjH#X%lWvl$1W(0-Z7M^z1x7-e#bC}nhP|12oI z6|JDH##M%ELmlmBh?#_dqw86 z9L0p=U~7W{gzdU(DSz+CF-DhKh;nT^|hPeU(`rKS{1I3AeSno8fvN|{&kUh zzw6mb<%CQ>E1X^9$gg&)w_wNHIzN&`RFt*IW8qrbxPB9AITY<$ioCd~vQ{@2mYjvK zg-cTt3YWi5L}M*&`zYj;zg!-W{9!+pHb+K~P7_Ix24N(i2+Ed=N|9>@L*lCO+%l14 zaVUr^?`~ORO9h$~%FD*B@bL;BPeYT#nl>=>iwaukQ4wk07@_n>R!2jFqFi4ci;6Tu z(`05X>|;RH3*{^>gF|fm4NW3_xOS=wS6Wq3qnN>hRThG~h*jSZ5fbzrHXz4y z60$WnoFbi+MsVHSgbI{8D^Qeukga-hb}5y)f_f-a0o%=srR`~tC4V@!2|FjR#lHC{ z>gbiML$^ovh(v{sXGh1zXa^{T=-WtVv}3!94AN89jeb!%S_lV?9P+TgB7$cb0YS#L zqRq{XF>1wH@$9&HCp()|qncP3uJwy9gfs70N}~EpGHY7Z_2{BuH~%K69YGf5UQIPV zxkASSk4kjJbmzt;(A^l+RgLus%;C!+jMY~gvesstQ-pf0Wi5JY)Fz+{h+XKZM^Igl zvV>YZj4H6%W>l=z^HMGxH5V0DbltS`hPpb`0#2Twi)RNUGohQd$P=Apv+EFvKB>*o z0U&MVGZ$S4CDNTLS<@+d%ELNsYz;+qR*6PiH1o=_Q9x~L(POgx#waUb2Yc1qQqFK1 z8+A|W*EYzCQrmNPTPF~8qG(Hd*WIZ{*+M;sSR-;n#J(T46+;)0YLplk9Esdk!< zY1gSplN7Vg2Tuxa-lKh^oP={mJQ+G`VT>d4e~kYvwMA+^bgOO`MW@=+wx zz~vkrhYOpjrm6C;UbPa%kg|-d@a%iok5BeQ6NagtuX^RF0_%A*u) zOSE)!%nfnTWfsbz0;J>1gsr1jKto#Xy+QOg?OrJ9wK9Sy8pU!q*W8go07$HUpwLaCUOXx-F-*5Tx`d89 zDfbjVIff>Mlr87V+VCa}d!2#=s*zkacCkvF2S`keCed)ao}$>k-5#N z9F0h1WXOifSmV&q2aYGeBbU`Z_s3*8;q2{_J2I7>3Vye9D7Y3`n}{V~6$3Z% znE};t$QTwKJ>?KlUaaClnk;10w?U1j3M*wOYK27S8;$nb>Q>9P6C+&FE;Lp*Mz9kk z^;xQGX`I!FGAHs5&9#UUuc{=7VCAS*TA&f?QygG|5{j;;<;=2n7f|I_8otM(EzRQi zIp^esxXW6qek`)a<5PvTLRoNiT3KO|8gMQ~c zgRr2_TpL<2xNB{so=4|8McuuqtG zm9to7Y=a*WlM^5tqZlVTw7|_!{$$xx6PmK0Z`nO7oa%?E3^W}`P5Dq=vlyy~A!Dma zf))(Ra2O?ehc}QP&OrW+IG!ltN5`I|R)R_a4QEpmM!H%=gE?vj$;NEjEb@I>Q0{UC*_miiieNlnu!=KPt3iYQM!deymf zjnQOxZm1)fgrc)KBmgaw9cSUdk-&BygWw|SNQsfckhzSZQqI{ll6MOo)sJ0{hIi2v z+0al!kJNR0XBeDZh6~y|(H=XxffoZast7(ipdg)zU*UJ3M4n!5FIWF)(jqzXHNc8W17#3T#~=@5Gw13HR`TTTko z#F|SvHQ-9@i&MjISB9}>JZW7^h|UTU8pn1bUFtBegX||Q?RhTd$mAR3Y^7~MeLyCt zOfe**xl9zC4S_r^JC28qic$6i-7dH$rIOC$84&>c4_8)FtAI&;IuOh$ksF3`m1YQx z8Mp+}1pbhPF)W0Zh!GwR^%4~Qvbc{^j`mrAI5W0lx}ITavX zIrB|ReM3bvChNpWgi_p6PZ2_+g%(iGYbbkN&$u#_U)68&DMN9&JvqFgFvzZQq*6?7 zp;5#b38ewAZ>U8;<+Mr6amp82F>Sdq+*B{~DOnMiM)~;3432Vb{*i$u38wEz0g%x9YZ^NW)t0 zTTr)^m^K^>y zkWWz>VqxwV4Ft`N)3$_4LTwQp((8DYV#^xIo6EH-bhZ(E;OgV5<;JtN~2})x(Y&(J{|OjbefcN4E=_`Q|s2!wE2=p#2($6*n}xWGLd* zc&mZ8$t{@1afuvBpbMWn865U<;*Zl%+shZBYiq;EUG& zI$%3+4X_P(EwB}cHJ`pH5Nj`eWk9US^%VoJ0u}(VM$?xC#J32(Od!6I@Ogn)+w2?2 zuq>?6@%00-7Sz`Z#2Qgw4-jideO*9&1LNxiVlBU~9asWv17dBquN8_8bF)$0b1egiL8fu>xh_yz(fio;?A+R5awXeQjU=gqfI3L&r{35Uu zh;J8s?ZA1!HXzpi_*#Kj)8&f-u~ybs2E>|LUojAC;e7?b*}yE|EMO)uALs?<0S8XE ztRS!-7y$MHbAdfTtTps?0kJ00*9pX0MPEB`2Cxk{9oP!Q8eCr#m<=ogW&w+V7Xk}_ zSQF;U0-g`d1WpBdf#(4S##z?6z<%HqU@y=Q>;X;&b^);l*VhTe+FV~d5Nq^(ZNQ1Z zR^S9+6nHkU444Tl2A%~h0AdZaFAIpZwZ2Rs)|~mgK&-v>4W#27GhjauYb|}fz;s{_ z@HAi-&5KrU?%WGpcnW7aKL9-?*sdRM}WP+_kcaXcY$5N zzXLmgSljMv2fhPr1LE5VUn}q}U=;W!undSb#J*x6zBTd{0I^2amj%SySzjjbb)Xmc zXW+nC%fdH?zJ4Iqmiu~veZU?d)}s5mfPVsZ0`aYguN{ar&%QR`AAzkve8cFA0;(P> z*baOi*amzK*b00W7zN_nK3^HI2UrZmT7F*v5Z?g!vViz@z?TVp8t4T+1soV{S@>qn z*AK+E6uw?yH?RlzIIs)&3n1bi5@G)Q;5Z{9MT7f?WMu7)_Wxy_AG4LnA0^pB< zS-?kunZW%(FYre|+K=o%fc?NnfW5$dz#iZafnC6V2X+D<2DSqq0=5Bv0Bi;B1xA7R z_QzKS>;x7AzYi<`Vhy1$3-~=?Ch!5E7x-NuZO(;n+<8`u z_5!y9dw^dDb^*Tz>;!%lNc*^L1GWM00=5G01V({(0Ly@Fz+&K6fCa$Yfmy&W12chJ zfnMMi;J`@Bx($f^(X3m6y}&pSdxu-M0O|a}n}MCc&A@ixO~5wbjlfpm4ZtXH6R-@} z3M>Y01Qq}{0JDHCz)WB>&Okfqz3#<5N{v~Nv0um>0db^*Tx z>;zs1YzM9ZwgImNwgRsKMuArY%YbFTV&GN40^pUvEZ`NuOkgR{3tSBxNJ0A#><3;B z>; za1juDFIfwLIG@H^0PF=80egV+fnC5a0y}|)z;@s~U>ooYz*gYrfl=UGU>UFgSPYy4 zEC9|1W&vjbGlBU)FE9@{kc9Rhh&{Bd0I(OB3+w@21ndIN1a<;*fbGB;Kz}uu*akK z!HtDSfS^VH8T$iG%_8$FbQ9>NF2qUf+f&3A)V|O@K8hnxiG6$2z9TP@e+2wAB2Cu{ zau5Dr%zH>#a4!;vt_7qtcpmd^QW|^_^ZBGa_%+ObLCS+im{UF@ehc##p*!(5=0QqC z@CTXyfc5KQK9%+RCG&5wet%$oChPYG^Ltsp5141LeuK>KVg1HZLgV@z>vt~m@3Vfh znU7@sikZh*zcS`W=^-PGwalAXzZT|i)5E6tGQXbnyNCIk^w1&yHgl>ci0@}un6GF3JgBVb`X_$m{!HfAvVPN;A7=ekF)37W4hAUorC>*6(WO53+tS z<~To1#P=TN-)8+DX8t+W?-}ObXZ`-dJiz*W%KT^0iPCR88Uwl}vVPgjcd~w$FdxhM ztzmvU>sQZwkn`K!%x`A>zRUbL=eMVre?_Gq^Kq=-UzzWMPNd&4=KtjKFdmHlycnXhC0e#86-mxp(l-v}K@ztL!1>7qmH zh@a2=Io5X`^Tn+1YUV#@eXE(zW_>p^f0XsTmw7(xyO;ToSl{QE7qY&uGygT~dyM&o ztlt@ap{~`z`d!HUY}PNI`Q5DFa^|C1zXXR0-p2a<2lLZezuz*ypY?l{ z`7zFapD=G>{YFf&#PxU1e`hma$NJ?n@8j~Zn0bixt6=^oE+6ZeU&s1wWBympfA=$A z?~%{*C(K`9{eH*%Qr7Pc=1;MH$C%G!{mwX7>i;O~cP{gM*6;Jof5iIX@L_QUS-%ML z$C9KzH!#20Bl+FTA7uR=W-PobJCdY6*D%MNk|+-`<~Oo_Ut|6u=ePTr*Rg&-Wc~){x8E_xIieyw?4c{JKXHCb znkxBqtlv4zUrv_p=P+N(`d!ZaJ$R$?x|aD$*6%jv&#->qW4@5}dzSgnSik>fp3nNd z&-_QM-`VF&{erAtF7wA&ze|~4%=%ry{2=RB$2^zyyPf$S*6-WQ&t?4{VZMv?dxkj< zuoLn96Z3mmzYmz7K0?ZqFOd4)&-$Is`~uc5$b28`x0HE0>-Tl$cd&lnWuC z*6%mWKji%OI`den)aN7S@25!ay-@0RlhTiQD(g3m`F5or^Y^$sT*JJY^{Zn38kdJ# znP1EL?PPvQ^C0W{3G>I4zS&aWNvz*F%N94#)PFDQH$i+~C+kEf*6%mWGg!aZnSXV(bU(;EmGwJ+hScvC)^9%ZPdUGpGvCbm-Ol_NKhFo5-_H6y z#~kktgnoZz-pKlSbL9Qr93$mZm{+iV^O^rKP0H6WFJ=91W`2nE>tMc$^?Q=}3#{K8 z%&%qrQfJEh{{=wp#|6xnuzrh}|AO_aVm^oUyOa4o*6#u4*{t7_%sW}Xzc9a$_4_CD zM_9izFOvFvf%Til{FkiXJm%;7q`s?|f1CAN&-^Ub?+)hMS-(BZ(^$V>GjC)4USU3x z^*hF#HoB+u8I>#bo5=c2X8t|a?;_?SSid6XH?w}1G5>_~+n1O(vVL*qZ*qCq%{>vGm_0`otzeqUf7fg95AO6K!UlYArdM_J!*F`vo$KF0j} ztnXpwe%ALr=DS(n(U{z%>m1g18uM?lzVn%1$oiHte}wgoG9SnKeTDg*tlvY-lUcvt zFu#fQdzbk~oc~fW=}K2K>vtaW4>hl1Rx>}w`7gr!cGfS({0+{3w=)m1e!H3X za{2fP^UGPk=a@gs`n}A2DeLzR^B&gkpUf{|{l;T5nXVUDzX0=VS-(Zhf5!TiGS6rI zqRby={WdVafc4wOd^hX&2=jATzeCKw#rnO&d=l$7dbZT>LDug==6JU)^4~({+gZP> zn5VIR4a{$2{l3EdpPb*m&AgfQ`!VwmIKTaxc@yjR2j)jOzx|#0jjUhF9H}qf5exm& znMYW^$;|)6`E54yt60Bf%n!1D<;<6|eof4KSii3@zl8PM∈Ve>Idy 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

    Uzzbks1SEG)qXZG(4gpVLoyBRwe{>W9tA%B|d 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

    =`h@alu@ z(ZH@)dSb+SgLlM_MXA5&Z(!AGZVN3SfP^J>pI;-+T@WfQKhrEz-z()sd6 zO#6EY-MharY~;vcW-^`J-#{Djs~eb!n8!Phw2aW6iJ9@i^u~9yd!lK5mI5TZ684gs@GkPzw^#5wz>!r{g4zH@K;ITD> z@74l-8_6ou9ZfX9dgtRB{q^3HNE>YyeI@ z>P;_6&=20~asS?osBy zxZ_Bt_M848>H+el<5`(rZ)?%g)~k5Zan|CDza2014FRvv5rr@z)YtXtuJ=`(aT8wZ zvmwFlGIW$b$>Fe%=XZ$G=d+e{lof9mx0q3X0>6rTl`C$~Hsbj28&_HG9a4&MuighB z{Fz)IQ~Dan=mP(WM_G$Ls%L4oJ)lx=2?6x4)Y5a6v3JiuLmnI$o7vz)`}P}GssHQ4 z$E9fBwzM*NKc}}G(`BFP^pTE)^!e>F_hO8#f7Gus9Wr*3C^uvUMctkb(b{W0?k%K4 zHj45~=}8#tqDZc6{>T)vlfSr)osC1keQrz~w9a@#{U6)Yj?MV0)`Z39)l^7tm ziF!qxy}yTyfGVTrP34+^a_Fi_7E+IL>d_zY{`y|(*S%(rt8{qxYU>Nm{jMz^=zn_P z30cQlLeTF*<_1(ghqK9^bNwqbZlCT_wv7JMDrL2-+L+GhKb70HF;9Jhp-+f@Ge6R; z%;*~xsOt=rhw7+5!nV~L%68~#YmJD@&}aJJ<`y4)rvm*d2Vwh3wrWXY)$gJ%x;sZu zU8BEX?(w{HV?ez{;Y*YBP3h{nl6H=ireg&*$mZQxdjPr=SlN6@Ka%=p6vmzf@Er0r z4sA~5X;6H%xeC`Q1JHhdU~Cl9!`$(adT-r~-|Bjts*R<7fKqE~%{bHt` zAB(iHflQ_JK-<)0FgB9k$E#_>C2%5)z)i3-SrYYb4aynn(%(Z}`g^^Cbr{t)JpmoS&S zlw-_6zPF}!A#3>>^{?Gqp!KPjTG#cE=dD-<+5_in8z9&JFxrLWhAJS(n~rmMNy0dA zX#L4?tu>Bhe{n8%3H1*7XRZI%wY0{*hV|vQ7{ipGUTS+{y#gL8JKcqP4QG^8F4A`) z(kAx?$d|k(OUM_(JKdf7sn@IF`$(o|6Wxu{LB`n&GC$ss{qcbe5Zx*@cWW5#K zkCauKh~_SJ{AP`-jDpU7^MGCvVlJUE{JKReM?K~sYMVx-m$e>p2EC&6r7cQt>(xb4 zwta19$FN_7UC5G7%ZaY7 zhRo^#DdD3i{N`pewy>EXHp?xKX}HR-Ep1QT{4Hmpz5=ekrVU6ut<2>1)^2 z5}hY>l;GZ0*-7ZAxQZ`L(W!j|a^h-v=#K7KMc=duxa%P=Ok<%j5aSo~B9%K9{T!^o z5Xh9+u@_RI^VpE1dE23%+*msWePA;B!oBDdlh8LN;+_rU!8U2~U}Ei~GwY7tN~W`G zbsS^<(4!rw&(e6VThn)zbAQW z`#O&=3Y)HDu@wuou_ZyqB^2#Q_4?nCX{o^anGSs_66#TmuX>rqY4sG=MB_`0OS*SR z@n}reyT!3dTAV1<8;#2b>=|$j0rFX#<2&rw4~6Jq{|R%fm|L9dcK!%aw=~bRpQnpA zPQ{ry<%eWi8ZkD%r?IJ!On`*8zh= zvQg(U=55+LP+iq=y_xize_H|Da+xTr+(NQ z>krkD17qkXtQ!?rPxSDkvJa~buabyfjThw(siHcgd}6OvmIy!X zH*~-8yKWVm=6LGT!ToTp&Ss!KrlVe_p?;>Ko>DNzlW`wkr`G$SjWe6WGjNZ`C%i*C ztxm=oe66)c9~D;WYY8vCiZY!G@NdT1YfCfjO#`LoYuJ-r^JXoL@+tYf@<27u&&dMyxD;S!M zD$@+cG#LyVSHs=u?3|2;Kk>lGbmmVyF*39X=t%zLbGVaf#0MS=mRVOr8%{FBLqkvx ze;p!`nTxL@|8(wO1pkikpWyySJBj}WPjM^qfwkWweR?OE3@r>W9{z{8Kb=#o9*Lhd?G4DP!Dtnl%M21$oOf%!=L0s$aLnP(uM!*F8mjC;h*1yzc|0{EPs)Re>db67~s8t z7cpRl1AYlO0+8faVgSnlCjf2-1lu@z9pGfZ34j!S2q1+I0i^JCXe{)p=o+ojQub&t zAs=uI7O z50sEbB-wKE!k+NBX2_=A(Zm|Xv9DqX+ZXIBMz?%?kE+&!DSFW~MefP)Zz0(ZA@ z_tAhfPNTTL84!Odks3_U15!HVNbc9Q$vB}LkjlMXv!`t3?lwRw$1v_bgu7ptwe%YS zsT^lCm{1ScAK||Q1Y=9pb4YL(?37t4JI@Kj)!{%AeDPNhqTV&FQr(633R4O?Pdm~ z{^X~*r|7x=msmT<{~#dw*8svRWse3EsGeZ=HgiasB|Fsz!8#7hIdpKC&Y_J%Glz`B zdPG*^b6C!ygTr(VZ5*08WE|FO`SY&hu$)5&hv^*JI5cwzKqw%0MrxdWKZ-QIf;Ypc(8A0PR;k3$b>G5taO-=#0d z|1 zKkOf3JtlLA+YfR3E^hDDL-Sva{y_Ky9YqHKWM6>wjLdv|gzqmr{+m306Sp7Zc9H%c z$PS$19C|Y1liZk~v!((U*#+Hsn%f1PNpf`LFX-a;d3-^qtbiZ+3%cnD4=?DHQ0_12 zN*cEmUeHOuM0|%I#ubki+8(I(ZV0FX(>I8ftv8Pw9>P zBS@Q>>1O{me4PE~qkPWxd)(|KN9pW8#0}qdH~Zsm_`i4a_Xjd(d`|lN)jZ$nmOk!i zxP-soEkDn=*==s=-Ehl~)h+x(ZsG5B^Z(Gze!>mkQMdfQ=!S2(n}3d*9c#Hu`F6X- zU+-4_K)3kw-0E|qTYS1#;9TG3Zsl3x7Jj~4dalxABv?fG|#4y0NOhevisAc%-Z6_%=X zS;o>1WK~_{OFIxn<;~_So$4y6c`FjDyjp&V_-Y4&qV9#GC+aZL3N=~I;b{eVE0!(r zY)GmDl?y4Rk~Lgz)U`Z9@YFpO8uvn+)Wfe`($w8c?a(XcyJkllMnVF4ma8WpZ(KY% zk&nrtkOWl+=g<+(vczt}pgc$?lAfx5?$}sWUQ_$mrGD-7zzM!1TsPG*oA%8S57r+DDNQc5Ks$uR_}w)!eF_C($2d2%m_nI_Q`~h5TPv za+v~89S>iJf)Q%kpJOXe#sxiiARWqOQXrz`=$;eNpu-TE>I3YTHaScRLm%O#Fu%m8 z`gPX%&x(SMSv_=wO$PM6lopKh>R`iU({Lm1^Ecs6HtF8TfnLv6{#)qbutHC562kWN zvMq1g^y-}R+wdU_>DQ?wJ)rzI>6^sc;8wyPg*X)E9KzsTay86%_&u42p}Zhp>KT;& zx)kjDh|es#*SuuIV|Krwa{J&IW5g1?8*zTi)ArAyFRHKPx1@1XX}HDWi}%DQ2V1g2 zXN_fsB`o+!?cC(wz@Y~YHP7qx5qh0I`5fc|`reqn-15<@;Ze}XmyNvEku2Z8nMPCx z_|3pixT%c}ab1o%OiD&QCR9*`Va_AWlhjV6uhj|16ttD)h7@c?-8Z4`b5ZyHsQYPgei4UJ_ZLw2M^N`; zrNAZUHa!!rN7w*_{T%+A;oleTjhi-yCs_=58-8+d658Z*OMr1Res9L_G-h0434SVE zAG|pn@(@evaSkTh9A|k|R@7%Q@SSr?JD21B9%=s>X{Sm4OTI%IODsmbOFubyiHg^E zi7mJ^JZT+^u<8uSO=zz)wAT`}7kE0c*?5CKjrlJ52=Y^Xz1VX77#6JG>j=kX(jHXT z{Z{nn3<;W1bw&&_9?38gQ8t z$Z0a4*XTS5#>4*&?thVdJ4k;!kMRcicM!iEjzHn<;4qy-8;52N0n~8yfX@7gzmXkj zi1}^{?6iLswSUh5>}cI3yp)CuV%TrRT+jO*EKu|l)rq{Eym2ANc{I0euxQWg>ebO^Si7z0GSIs_&WDeV8Lm;}o!p}W zd!cQRBk%6xoci)1Dv%i;4AIv&yGK<=0~)50SAwvMaZdf7%&pSbb9n^9N8_c!mp5hy z<9u0Rk&0Wx@A?joz$1FX1QhIMmlVBKnjBqv8oG=>mV!$+twF^4rc~`bdp-U5kIZN+lJ78VhivX;l;J0o;Wx66;j$8ICHrOA z3*`{QBH73KBlAXBqwzU;gkdkj{{;Uls(+~ACne5Gc8Xtv@Y`gQ)wF6*?WfEq`H#$C zJkIVg6e7-#9On~A<40wLmFzzv&O+JSfUwrv5$8?3!E%7fO_`8+gdXnF!;k^~hZNkD z2tCboPvY|QahUs|7YZ_+DxD8mPiNhVq=TywZ5fUFH8|C;+P1u2MZL|qt#6Mc=sA7& z5!*KTP;_ZE>iRYO{u=dnMj2YAlXa!Vs~6PjBwg}jsLO9rmp-c&*3QCLB>SK)jK<%} zv4)c<+ZB}MD#~&h<-ekgw340b=dW^41M0*Yvg-EQvrKP1%S_4J*8OJZZ_o}tQ-5>I z?SMK}+u>f|`4n~Z52iG|1-bYOlEmxC(3FTe8_RUdji@V<%T8Lq-Ts+llidiNWU6d- zc24cvk5uife#98zA78z*8vXih$Y&psqFr?MyX)&eECs6i`u(#lwHB;VW3fiPhJNk* zuA`72W&aw>t}ej%44%z&KdodFUQt+YsfbxN6tIDPeAwW>N3g-?2C%mmtYMDJX>7$y zcQV6Qv)Gh1cd|RaiDI*#x3K*3K=x)<9xHhtO1U3d$zJ=@GM3$P2V3`E8vEkuG}d@+ z0&6Z_%w9Y-mBk$mX9KpcXVUNl_Q^yYTLdL_W?UBd^W~xJlfTC?-D3;!F!>br*E=3y z?|gVSd;F&f?2%`xaY_RpYL_W0lP+2~Kr?A2u!_Qnf#9C+W$mc6u^8A9f;O}}2jLi#ObV;*16 zn$Im^e>bjSC!PyonG+*frr%=r-B&5>qCv-c9rR%(6CpKI&Dep^JT~Fa{%p>oG3+zr zy=?u5>)GV^-t40((^&3`fvo;F>)2}$V(~q+gyljgz_(%w`@_g#?CPtTY37XIF->L9dut!=6QK;_5=CH0H3^56@&T|7HT4?U>B|`-QvMw(t6~IjtkuiP-~K zbK+gB@Eyh8}er(egA67bU5%U_gp56F%CF@_mf?d691}g?-^Z12f?9mseurE%n zWZMQ6v5%!GtarQ@^UKh&an*BJ#GZTD*@9R$rap!Jaa}kY*jr)WJT#cS7;Is8&za4Z zPc^Z~h6GmZYhp7m4q}t$gt6XPlh}vQ;#M{qk0*UFg*`RQ&c;3#$&!t?vEQ7`V+Tr> zu!x2pZ0tQ#*)adb?3){_*dM(^*rtNvEbsdamij<0d(n0qTkZ7#d;6Qk%dnU05ZqHz)w+&+N7Y<@u z=RU%A{GZ#{j_eWagA+2VC|t@8q)ca#>tv>{3S-M}M6);NqCbx6&9XP#%kIftz!Emh zWbvQGv7XZ1tnM})yLzx6`|0O=b~Y}Y1>hig(!AB|Xi7MHXYK-)efw?f#bpawtal#! z>YKIfRN6$Aw=Q8td&SzFAU#a?J3Y)ojB^z?&ZZ>_udR8C0 zg#D@K7?%A|Pxk(m0(RKa$7La=wY#Hzw(1VARM0ibFi%oMoc}^UB=fO(`d^1T{!+Ny zNWvSyMfP$HCfGFSZRQYw{2}2`F1-P{h-T%wN~SD>yEDCuFe<$(=q2!}TW+9`Pws7`|-SL4q?q2vG;1GaU{R zozX|>P?%q0^an#{_QjjR6_^TuOMMf}{6Kay(RE1iF9fHiL{FHN7#$nS_^*+1;@4=% zp1GKJk9a=zrrx-9HAOBFMfNT!aIV5~2R{-Hh9jek* zs6Q1V2Txx(O z^AY^5;4Tg#yF1Uv4jVrDru>n@jHUUMUtS*_&GYJ9X4V2wdo=Q}9RWQbS37w92|M+3 z`a}o1)p?%ek;xD~id&BHppGZcc^>TLjLafDzPvIA+Nsh~Ca4klKY^#7+v|`|8ov&V zS3U+s*3=MP&7-x5w-q5N63wHN{Wbmu$;*?@L+5#v#xs5BR_c7p(}V5SO{?OCJ9`1( z0S1CM8if6EFz%@Jz@0r4?ml|n*|X{BP8q9y*lerJ##;|R;;wQI^m3eo{sPj|KzC5- z4lwaVo3YQX1izH-++w~9A-*Ktoy`GXaxD0gzlKhRt52}_mQ5_4?#I#HFd1Qyd-Yyg z2K=@AXFaRNIo(Tp4LsEb;HEe-*CnCeSA)KEJ>uhjuX^vc?{o4cJ>DqUi2L&DyS{j% z#Dcd=D_cPH3Gtd^(!H=DWw;;S! zK1FA7ZOA*-72PNA>@N9_(61xf1zo=F{$=AGtmQ?z^QOA7GO>o%!YwU`EguPe*6F;h z({+jJ`&-bby*eIu{I5c1j(Ue0d~3QNti#)wqW#3ZX$*qcMkO&G>wj>gBE^gMGBc28 z(0A%R@$9zvy*%U7yM|8j>FzlA>X#@!)kotU&~c)!`@}m(f5IJa33c7kJ!)}>TCFRb z?e-nWmN(w8iliI%A4TXF{j_eH|#scHQj8~QN_Z??Rq+k##?cE zU%WGde4GOhO3(Dk7D=C+1RO@3BQFVNGbh7t!23GR`N=`r&Urx?_1yoadD%qo%=x0P z8PMm9=zD$`@BYv|py2&R(!Zpj&uDKnYyAWLM7^^c(d;}vH+XCJT1o%GI43;^A7R`= zZvphD^D!E%-IGe=lA&I^$2HO3i`LYY%Z#L475o-jXmzr{HeB_CB39K0V{5^YM8-?*qh<5LX5c+$mqH z!+mI}taZHM*cH?_&7oJhz6ZK@>|W=j*IqvvI^yxZcO1qg>8xtNxOQ%f43w45lt}lL zvo4C)Fuybm(9WAqbKMqdJD^OOJL%2n34K|bt}8loC)t3G-sz*cjK&c4>yG^Ufv=1* z;e5$eZ`Jj@Pt>y|)ED@zo_+2oltt9R6|5nibr9KHk2-2Vxt+`Wkq_PnN1xE{6>H~d zR5l6jq?>}=Wv9NE2=^<{(?IusNp}X7MQ?W4drCc%5By76j`<+f7jL&*McmmKhs_v= zSYJaL|CB@T_yixod{1l1*naZz43yP94U(e(?-Y1(XC3PW>N4c1HQBXKt%XYE4w_$$uptr*}sV$hu33ILB*W zYvy|NQ`h$K^r!Z@vDUR8yY^wvI1cpTCX6xEm1;=eEXqYBhl?S1GD85db@A}O$f=-J z6sQCF3CxA6+1!ag`h;p|AJ7s01w;tJV18!EtVjBE|BDRi;l(=c;U9uQ2U06HNQ3i0 zH*@z$?oRj8P~PZ^C?Dbd5|HrL0TN!)$4z**Yj9pVAmN$8-RWK$r5DES zA>2;)2M8bEr$^KMGQt}RNO%VV5?-?g=bcCUspSVG_x&22NAeA0o;_LoPQ~w_X#e4eP^Ky_AwiUv**ll+A_B0&SFzw=D;=;klTpZtcJ|SK!0lX*YEEp4jT9~ z>wb*+Hm~~s&-Eh4%OaS+I)f=(-weAlj?37i|NYW+e~>YgNq%$#Mc%o%Pja|^-T#yO zyRLke>!qU)ZQyBq>Uq0<3;enL*!2cpRYszvY={VL=esoT6$-k|e?Pa65Y5JOCb1=v zpjO0pU*Px{MfsSF87rIhnwj$Sy<4UR88ek=+^_y)o&RI@b=jRGJY=S#Hm0zrEWcg${fuSIuPD-mJ;SW-j(OznSW^jU;$SGyOa(&vsLq z&OYy7S!edJ)ol-`T*-dZDzSNY+^p{zNqt{n&69bDGH@k4sIL>KH}U^wD&KziWB*k5 zH};(@_&L`Z;mzx-a_r{mextCv<+9z2U&TSQLr-h?W%?)sFGML#D_u7B24Fvkvc4N? zX$q%(FYsXB4vz5r}b+o-+4`%9tcwXoaqH9iGPWzh|*#~i@yD-Gk zGzq(IuJ4xltTgO%UcC9*_-(~yoCv9CZ`m(>Mrw}=SMHqa_MI@e**@@_S2HP=`m@0~qla@x$hlr8ns zVdqlg`#zwHo*L+px=dod_C4#h`Tw~0Xm8xR*rPkM!c^(QdwFT9cUi+s-fUNW`P~@@ z4|*z1XW$*LSf8>p)SEzb_i?_s&bT03ov+gLEqYyNCMiu9c+a&7n}J`4(B>?nrLO88#l9ANM;(8FZNd-g z2vgMdWfHc5G!iavP;O+sE4CVI=r^_4C_Bb}u%3P+c!0w-c|6-H58|}UqwXo}tQq@$ zvgab>R2^yRAGb6OK=(BSS2TYKwilf?y))+zdUY>07yoPuYD@tK*~5`MTs9=lLepwD z_L$($<6|quKDXd@Vdk*PEWJ;6YMxh$lBAz@+F9G8pGrT^Lzz=H&kW2V-#Xge-QTib;(XIb`jXfo3(@V3OZnxAlBd&#=-2eui|s8< zw;OdW^;~3XUuL4NWuB7wQb$)z?Hgom{%hOiYxtJ+*B%)IzQexw1@LgvBRGZY`3oPo z#sMkgq7hHpPvQy=u5cM|gwORcqF2a`uQ5l<-giBCH}pxV^y7DW?p?3OO(P`}1 ztpD{QJiQB^cIkh~_ltaE$5Yq;T9|votLxDJ+Gyw~voEaM=ZvMFNq>w|!y9COt`5HW zI-Gi@Z1z$9?w2iZfeWsgPpj6LCITc*-a>cGLtql=q)v}pc-R~N&hD}IDWhry$w z=O*Kqt4_nw8}}hU*(YK@xk>7DA@v!c_>VoT`p1cm=nF>OtvCCRMUPR}6BWM~poMz( zv8#b`FEFO`QzhI#jXI7y%y-MQUl339OI_*SWuG{f{9SF31)bbY(&?W`-B)w|fvgxJ zc-3Jak$Y$#fak=s&@J`;2z7pr{LX=&tF41f0Y2x<{oQ&1aKRvSXc-sRG0r{= z?eVJL*uScNY3rczLB7ZG-t=9RnNB$SYiSG6tz|4ullyP==GZtHk1MIuO6s)!=#@cw zUvl+RXs&6apE5Q!>irb{sG)zn(_##j@kDr}Y~o)g`F z=~L3L#rCR{u>w1_De%1DBxMUv$`~MXn$RMA>TU2QeSV_!xqqEEz0v}&;Z3if`Xi(?>afmu%BE5pP7vc5O3pXP4~KwiHYJ z(ZnBPFE1|FdW=XT{@CXDBZ)hgc>PC=!#~}wln|$6tC7z(BcJU?J{tLC80C&9{sd>9 zlzTOwiTF>lt0fhBJ|hX6OBww~OveAVpUHm;`A;?SpGN%YZR9@#|J&Qh{|@}`Y|j5` zxxdllMniiHboEG?X^)|fHWhEvQmG>|xMfpE5^lj|;*?i+Yraa)NPS%A-RP7HS0?ZK z;YugujENVRZ&+*Uc94Y!k$49 z@A-PEA-e2ZkBr)Ky(Vk51AUxz$7boC@1RfWxCWWCri-#?6Z23UYqc}yl*&5h-sPAOuti6uuYcJLIeJ5#OXIN&KGVp}RQ|%3Tio8UYJ%)UH+=ycdRR*F1 z&)Kk3mZ_VA%o$(8qnai@~^H8;$7#7yUEW5r5wGr+?xF_MG2_Mr&xEJBxgr^ZcwvBKf!hH!JM>u2Ob@=%a z?oYTzct#uH0fYw`Aa)!Xs-3ub7R_1dNDWt)x*fopCdnKA*X-E_$2(q@sQ4o-_ZwT zEEPZbEq%?kUnBiz)s0S`boD>iIJ?7qz0OKXXXjb+56f?7tee4@H=VI>8e`y8^irmv zm*T1GrGz3Qe^3AV8X3fu@9!8lL{5^mgoKHIt@LZ7PfIvDK>C_)2y6E5ShLq52d!oQ zP~;+Xg(jY14bp&2A~d+x99HCstMYM2))rG?+)0# zV7(xA9C)u`0cT{BYx`N6%84)Yjl>nbhi|d_J;3N!3C8???H+Keao(_r-g56s-f1Df zkY8(9Ti!0j(09utr-e&q^7v)eUAeqy>3WWySXV708J?IN%AK?9syD@7{gd-i&Pf;= zuKg2#`7;6#x32wr$N22-gx94%YlNTWz@ROCfRA+zTp}R=wHeMPn*8131lQ&7$9YIQ zjx6L|@nGP2AmzgY0y;DpIyw@~N{0t$WH-HirwdKz#w28Q0zQYrG2*mMW5ie{L}Gq!ep`I+!g-_pwQFV3Ge(6U~b-)U;&LG-{XMNPDwy%r-4Am_i_E5F!=_c)FW$n zy`4mFf-3Lp1r)sG++Fah0ZKc)4wUkC0VRL2yDQ&C#`kFBTkP*jcxRyGBX%hzA34_- z_^AQk1PYyh0Cod<0i~TUG5OPkeK|AJ@jKy!$zqQ^2LJv*X-Co50p9s3{g9u1j{x=h z1WGwufYNU3jqd^jPBx$gDCJYfdb#C5^6@A#V5R{r28=c!K#zwig=v>*54L7cnCnoe z*yXhcd$Bvb{=oku5g%f`bzPVBT{d(yxy-4ONLC~UoUUCVpr-^Ud3e?za| z_Cjrb!dto)U@Apb^e<9nuY z9=qN6zQ_0$JDC!Hlq+2FYmvS}zHzSe+>V5ae#JY^;&j+j-(t2A{-zN=i?|Z*8eicV z{o6I3zCnC~oBwKCeGC7z43|o1`R&;%{#XKAhCkdYJqI$^gmZoHn(rg6zUgDvgbQD` z%>Rj2t$QZ1p{-)%Q)UzNfY-e^IM%(XVM)UVW?Y@vZWE zq!qpPR^g)8)H1&=t;+kdReFzB;Y#y6;Vnf4rwGt&3i0RP4tH5~Y<2BKo)T}_RBT*Bik|)((1``-a6L}VYaMT5zE@Bqo36* zYGGXUN2IjtV@O$7rMPRbzg{=Vg}Y(qvL((f<;E7J{8*G04_UYQemdDLS(Ni5FQ&K5 zw7G#@H%hO!g4u@cO2ZPRuROw9M8PWI zTE=P7Eb-Ws&53tC_ss~Q>tVSrR7J~QvmMBrqN4}(Pr&C!-SE^+hPB8+{rlfc5Pxmh zr&%z2p-Tm;t$SCmGR7#;QmWG~O>g=Bk-wtfIRid6;<&yMzjXa84-4Yg%EbU|)?EoQVvGLNwRUMTjeKehyl#1{c`c*IN8G&T5B;m3)aSC0 zUjAZ?{5n73{C52}yj`EVKG#p(*PXY)8TA%pu(v$r)aS}%LU7etb7uUw{{HW^^p?Bu zVLp(*rN6y)9&!3!{r_|NX62-pKaor2Z|Sp6{MLgX^11w7L-LJyAm57&>-^v9J@d6M zAVVQLOCpK)+m{tZHb_Rl&KeJ9LELZFH=D_CamdL^9xej+YyaAMUs?9;ivq@8s&bmS z*Ut~+oZ$GE&b_b9->}~xHodraq`I@mV4N{@JLe3Scjw9jhF_{-UwB@e^F7yG;&P_c z99Q0S9d_Qxuj|!4wpoVXpW7+=SyZ`6v2WDh@V@rVX0KO&{@(JH)$+z;+qTL^OL~7L zf0K_g`GTQOMw{sOpKsy*Gwi18XesDsb^XSPr^S~y8pkV@JGk56HSg-1-%Zq)Q^&`- zA1?ZN(dfLm@@N?*I$hD6QM45%Z(t{QEr@0Bu6{i3(bGut`$qcS@>p^N6Lb?cw0>u;MEQGZ@{a6ST5*cX%g z?_Rz6=8op|eMM!@&3V2i^{v7y*_WL(M*Ay!qWU}Air#Ej{ECv-!slM_P(Ahh5dC5% z?`5X3znSL#P*|GU-e)E@rPgs5?2NZEQ10Tz1Yhkh!Z*@qj(_jW-^mXhc0SH~wQK2H z3Vq8(Tj~$aI5nJ6?I6r+OwoSfnR@n-qu*bf6zyJ=9Ib9lI>VdF7XRmx;!?sc#a4%1 z8k*AO(twokOJ1MccXU4IU~$#qm!eZ5F11&@$_7+NTv`dvQkIFbq^*Rn*4{|naPB^j zvnlNGHbqm9Uj6Cw-(K0fhrPd<^s!9t14;d~rb*~oZO{`<9`Kajj~=9qSOe!X)RhIC zE#PYb?*`7IGQoK)IH!U0#{Y4z94$Ea@Gct-zCZSEbzA)K!}4p#6jwixK5(GkS%<;{ zdY>@9rH?QShq&rm_-d7_zNrtFzv;@=^sUPo9gTh(Is#*`jTq<8olC{1A%^pcw9cHx zjj`-s0UtDQzwa#d!Bi09rFwC$;bB9MBfl^HqDK;h!|vF`FU@{CnWICxM*r=Z@k-Fn zBWsjP=gom*`*%O`%sGcLVW>&XKWBb4?7VsXGj?yqw%c2A4882xIE(#cHFx3C#snq! z%KJ*bANmgc$m6^kwDX)fcxTJF2MPOJ-^VSQDE*;#C_DvESakh5#U2eF;y;Fd@*s4L zhAtoG1))oYE+1$T-d@01+hEYdolJCQJZ$LB=rqaRz1UI1F4)8`%)UBJF9p6E^c86fJ9r-kZ}zwH7t$7jv+zhTc%L^1 z=y>NuJDy=2*{PH$+_wuJo7uhUnS>8$3q{RuG~0MLv*?*~;9Vhn{)G)#@wg` z4?XN`i+u8kHYqzBnVVY1b>ZC-&j$L@0`Tsm`s!`M*_Yi5zCw?(Y)piuDcWeKF*mq= zGj|wm<^^Q0WDmGC#;~71hQ3?R*r%s)Q|zNjqeyx;)!v)9(r2ZuXAwvEcrB23a(Um{ ztozGv$xF_yMw8d*D_8b@o$)8m`Bm=4Dz?$QRl7q~_PY9sjAIJ2h1`?fS0G3@43S7W!#M& zLz|z0C#ApoVw3v|#^ZkI3hYuXi7&WY5_e-4;D~?c0q0d^+2KOBNr!`jGJ7^ba zi{U|X4#u45sx$pO%lS60-cHn^@OfKrGfOz`8u=vVUFVp+gSKla-$aW}b^D@;BHOf; zuKF)+r>kip7dg|ljmuB*<)xXgb8dX?JKED|6EDu&eu_60&gU2SxgW90$1M z*6aEDdOX_V?a9>N+Lk=cymbb8{}rAd&HNxd?FIZLJiQiv7I{kgW3!yh`{rxm>3PUp zJ0mSkV-qZu{)v{#jM$XQpb;sRD^&l6B2~LwqmI99Q72rErvJ3XhqZ^Dd?;g2OaAry z5xz}%zwP)ge*Y<+t&Ep>A;lie`1@mh?8-0`_tf3tUk~&jJedQ$xUX+&^?rH8rPloa z4&%Lyc{^5Le~)^lpV+1tO@5=ucO?20BY5}Qq^}L6UlcLMdvWe9eWO;!5a)ceN9Lk= zKV0EWboih7tj5zhx2dYdUTaqEVz-*N$n~+8qcqkq3VPtCofhnPn5T-KI_nrie@X7f z`=ZAn^;5$;;v(C&?r&W?UfxP*Ub3)jMAZ_hI)z+2!MaPXh4;Jntc%kD^p){vyC_1ZJqi!`MG9DQF4}NQL@|-iojL@b|n&Pi6dj7^A1nv zozdo@9~D`Yf#|FRe{J&8!zAzDc`6ewQr{armHctcX`Rq#k-Vj!w9FUX^&ic*D*5_+ z(L>hrUC}aM@bee>w2#wPk9qs>$}{+l#g<#cfU>Z=3hz7m2y<#5+zrgnq8D|xpSjYG z|BLvYHwBh`0q%$WeV+X*-)C<&Rpu#yWmimr4YT@>zkCk6E>}#x4P6uX-D6`IXV>c! z;j09*8}}@N8eD>{!}6V=wTV65w+c+DEtz?H0vKBf9%ZEzKI;9eKaRq z+Z(x0+q3HK_?K7RZGDWqo*=J#f%gF~lGi^ZFW_y!3r|*PdvK41P0}Wj&)49zguK43 z%CYV%nq%ElG$+2eU4Hyq?eeX2$h)+v+`7K1JbpLuW#D4+c`5QnZ2)-%@%wyn?~K{x z=Y|^@xlJqXJVIMjJWJcPBU5vW?5=IiA&-cy+Nok?+@T_|sqEEQ{q2>>!ppK|tU`a! zSL6e9*v7HG5r2Q~qJ2rm)4gYTRRq~||_vMb=HsL)B`m40t0&`&5 zS=Gz&ukaUzaPK`)=r$=-Lh-}?r@W*y_ZFh`=}>t&n6?nX##`(W)Pa~GS09iAMoFnp?f}SNd-kWA2W4h5_T=S&NyX?^q^g@TPp7lhueovCU z1HKj3+Y0ln*XESO(E*)rR*n0+GG|8NzX*EKgPeF1ZUnzOQikjchq7;{QijaAE}gEls%rij^Fv_` z=CWt7QE2mHuViDBXX7gND886KZ|OMpcxD=VJUhu_EP0$^FRW!;*(-6*-Qd#SDGya4 z2T40!F@-j)Mut;GP7quT`l_gpV=t@B=^`^YZ6Uenj3%rukG1ehC12`O>Mt7pkhXWl zarxIElep@vh`mwQZ}eCOimZUUcJ293Cw}u<$?mP!kZs+|sHIM1t#rjKHlwcJJ9oWF zB5fC~@8u}=LHzzlv;6iWcC|b$4zag(t-Ka~$%8$zD6XR0T~i9Iy2TZmoaR&savCDt~`(;R^w;2OhpGCS=QzA2 zJS%%rT~|vxbf#}~V&A1B?a+a{($2jleeFRS*V>~4{iUYVVlVP=t`S*xgw(VMZ>t}q ze15eb$oin=I<|FR__20YY3Co7Yt%_Pbu*4S8jH?-8t+v&?aWEJR}RXX6=uTSi04k- zc~E!iHEUD3OJ1z=rkieaLu_xznqBTDtyL^sd1PJKjdh_hcIfLu_E1jX=iEE#$eKZH z!iDT~C(bFOp6cie$iSR6GEU>t+D5qOg#WO7B)E=xf!(eV(!B^h?S$`sOdg@u&Lc_4q{_eeRj(%4E4) z7LksPlNFZ7JJ&Bi$~@lAE9TR%`YRhJp5e{LVg7DfQJ|al5VCU$zvIeRPE7STX~zQ1 z_CacIAJePl)@WRfugQKnk9O-PZ#OC-7Eg=4DSMdRRJAN#saj_328;m?@04OM;de2= zw*$8VgCcIxCg5(wEyiuY{T;UtcMe9z@IP7=TsAHScL-OEJB{0lOBnf@H3+vD zHxaiNw*hw%_YqF+opvqRq@{3gG`nQ8R?I!uZQLDwi#waAxua?6Y|*khr)UQ{57&;f zjXdn+a3Hz z0!RG^;_m_8p5Q+kIOabPe=qR%2LCkR*#AKMeZbon{Ko;){{!*&18;xu*MJ%S&*JYI zcPyR(_A17rTE?OSol~`F#-mg-cUPIeL^fE?J>(he#c=O2|6ym_727^h+CS*`p~P#r_X%J+h7uBrs~xg_x_d1k8ozR-t4!a3Oiq- zv(bBv<<4Gg7w)h!=gv2KmvL9JU2M!JVP~1Q*YTDzXScTV$Ow(Bo25ScnY?^n%vJ^q8AyGKpVViK8miZ4jT)raXMh^)bC~)J zG6jyc_4r$u;PwS|6o~)1nCdX>&cwaYTps!=MtOpd&>;00gIv)Yxx$28QHQ+|1=t(; zqCN7(@%EGLv#S;}w=TAp0E>aAhuvmxz*nKIp(=>+;B#kr|@3J-8=uAK@AU9N4Q;D--txnT`+?-u6aL(IK0?*^Cd*7}$3(k7O^q-|#2eG~biN7yKBWY~CU z2(h0G?_fXPehP4^eQwoq=vmI5>T>8=Zru&s3j6?g2q<)XjT1ULg7+&19iIS&4#8Jw z5PV%U2wg&h(Dh63F9m18{|GiYPC|>|-?Ma^j=#taZefD|2=E^X{vE-)6ZlU9PX7A%^FI*(2=ML#{=Wgv{13!G61=0(L8?wZ;aQ!0(ziPK zRA6=Te_TH{uLS><;J*_5S0*2C4?UfrCmedBs*}HqD*8X7$?`K}Q#E5#3FD}YtsmlK zZ0%@_t;+CC)~?3bdZ^erHkBG<(?Q0g6S5v_5B{B2CLb)>t)*bANGX0vo5dPUVZC!K zd}VS?)XL;)^jA6Kw}}mf1Vgn;^xZPAd%NkRhZLJBs&3>X2>!RWu zYj*K$>sL`#$s>yI)_USfaf@)GS37~TtR9g)v;<(!$ex-F*ekM^mJjS7*5u7FX-rk$%^S zvZn#3!^flTr-zN9{MnR02b$+viz&MYWsStm#jQ8W6?&yyp*J5Wc-UH%E3^vD6_k5` za*sz~J1TMu<#wjLP|BSFyq$8>D0l3?q1-Ua3#Z&WfOk^vILb}`Hi zw<`T&a_f@1ZVArowk5dVaAeCKRXOb8aJ>7CaTw~{zLh!aDc7~)939~lyp*B!UA^GL1wDbKu^+#N|? zDe~sLSEJbGlW{2egpwgR#;PV;3cpw3%qNu$w^K@n`w2B;=Vp_`_{i+u~0iw(iUL_OkfT^|$!}>Jx`JiHpZd4q>q+P^!_jmc;&9|hD zwD@=PR&5FS2IB7C}HyHV0rsE%M?OZtG7(~<^2f6UYPOL&&* z7y$h-4%POyza>3BMs*yeKI1<@N8Qho-n~|FJPtmCLRFhBfbR;v!KdeR)%JnJ&r%#m zL#dmmRonJpOM2fJ#qn|%i+|rwRNJB;$xpEzg>K^68u{*4!M8i#wTkVfcF-H6+7^RH zw=C6mx`QRXUxjL;e8N@R_z+9_1=4hVT6OfAt~z$}-6K?W46K-zG#MH`;JfQ5ilgV# zisNf&Sj=~~>58LQsN&c|otB1L(r<`WY&~)n+hk}6>TF4muB46Y72Ai<5FAE5#j3WR zxvK3R>hv+fyH&zR^{VY_>huEXH-P&MHr3H@g6f#t#ge{AmdI-2D z*x=y_@IizneKK_x6RbG8CO{wYL!gne(vR}HZ@wbsq;DYJY1Tf2s;4DA0dIc;KL?fc z*KXLY*p^WDd%-nficdzLM#VO$qs6}ixJ{hmn-QO&+6I9a`pxN!r}$;`%U5lCsmmw4 z$#aT-#tpkwNuU0A+94=1M(fk4+PBYoi}_`ZMSOIrLgzQOe->MTEUkJfL$YP%O)p9II#5xcZLO{#4l zxPAnV{Ui5k--748;OLkVm?7b(BX(<}jIkzGb+d7X-Kc(sjaKv;6wZWYFZfN)7;3t; zvsEy@h_2&t&I?2~;thIq12{v#zm9OzN;%&WTfGsS>vZCL$9Yc9S<=8d^axBHM9vE5 zjL>;LD`Q%H6nX>L28vZThMi#@-#|WpV2@&9?z~$b!PT!e?LW6Vb-&n?I%E8H*=1Td zzxOSoCnh+rTUgzw#9V_3B6m8RbV<2)u7=hN3xdBY$}Wk5_yWxpONl`~bphD(skY~?T{(wsm2+i zd>0wtEzi!Rj^*8{mgi&Oq3g#U8zAj=RX<+h)&+9sMb3nR$J{S?x0UYKzHKix^F3Om&x0PV&hBNZ!dZo*fa|sYUWXE&Ji#2o?#R3 z8fN(jKV5y(um)bNH9L7Q)i}?x;3seCaSb1 z+n@V4yluD&o|<{Zv(XP*xxUzJ%;gTleC{$V;7-F>?lP=Ezk42h@%;S3OK12hHi=s& zc7M6wFecbLZYbevDX-E9uV>#%-b)kSyJG6NK;>;i6J9ib#TV>Qxh{v z$a{|`bdvY-QoH6i<<^XxkeG~NC9i4iN?+H$V!v-<$s5+r9=GQGowyx6lJmknlJX*^ z49@5>B{3t)BQb9(c^@HtcJVIjYRbQncsJwsQ70wuNXehAA5%Y{;ojkU31RPox6ly0 zW{1$e0$;+CoiQg`*)OxXRH1UeOkp?A3a*Un#bFPa5%qjkr%Bs}ARPF?q}(>=5uEc5Ckqo2(VH&hE)t zd@DG-O1!67k1z4qIL-?hB}z3n#-P9XV`Fei3%>t8Zvys+$HUhd@VB<`+>rEzu6H|i z-e2to@B0$wM;w26KLFkjL?0pu-Hl-Gmbuw}miITq`#3e|D(@EsUd#J6=zhEUL5^?MaDE!(RUcDJUO@vQxxh*kcFg*G$;b-Vq4U>~I&eC_zyCvoQkK2&E z?!L)CJ$Sfu0TBGq>_-eQDy9fKh!bcKE_~kA3 zSTKl~cNF(dh?4gq&Q`L|s;;SE-Se`RQ1X(toAOsu_Kl>QNV);=lE_8*vRA`dbMKWj*!PcaG#LJXSlaZ?bd`+&b{H!)5W{AQfLUq^(TE0>Ay1a%jK;bSwoEi&mi(t z*;~&n**I=CdYl)~@r_bVjVr(UIX;{KFOA18X9j$z!DH$0+Bo=d?7}O&k0A58a|~|l zuG}w}(~(hr^_)%`Df3^N(S}ZnQ2-wJnpF84tW@BX8Quhw;F7q1+XyH%IUE zQC#mWE4CokEWTcf?F;TE+`xQR#M=H#?kH5yhf}$uu$emwZtUTSOwfqD&Rt@g+>hp+ zTJB#5?F>TS`vmfGu;Nyx_O&ccxNG)3ZOe%V|8A{-LR}z)RS;z?I(9an_ zUgv&DIeHA4b=djB$7Wwzar9Bey)4M&Ue?3Uq@AE%Pjbh4n{p&+yHb_Bt7Y)yNc$O5F?oX*K%Jm1dPwLWR9MX?n} zqr=HQgwR)X5xE6@cJsWvrP&2)cus-++2Ze~9bN4g5T4^Ua6)mC(mp$>*r&K)i%+)V z7B^fmk6nXbiQB;7LrEj>-|F)w{%-U7EtNaWvlNr>Fw*4^CpBrfPd4dN6?2@ar?NDP zJ0+WusWu`z$=!B;#bo=EHakaKRnb;0?~{mrk?he(n+5wQj&Uv8Omu+#l%O&<-W_ta z*(NoJHVe9@&A2Q7UesV`o1Hh>EQmKkP1tgEwb^>wY@OP=%|33`X63Y5Ic-)>o0YfG zW)-wqMXNTO)uPR^TeMkDi#E$<@3>`~&1%tR*+!fFw#_zM#hn53yhTQvy=e!R_A^-z{>R9m;1`lD?oeXqDhn?2N`&BVUAkKShL|CKgNyROYX{eP&dTS za9Iv+h2qwbT~z!`HsfQy68zp!qpvlh`zYgM0)4F;eJzLav4rt)H+P}1aZxsc@lo_e zPca7_Qa($1`XX>oxmd`-a% z&u(RW+!7QNzJ_sbE8|>o(i)$wjDy9Bd)#crZR|GuwlhASP8x~-HlLIDyU$Blnm}J$ zt(bjfT$M32+ZaD(TwSgAHB}!UpJROV=Du8m4f&coPqW0PMlf&Z@SdHC-*V^V4DH!K zd$O;cr!u$orSEN`?*-64{)%7OL4I!yw%F&ezde_I?k|)40?s9c1e{Nb2x#QZiG&As zKAXUOq=W~2!w(nk)bG-r1D@l~Q4nF(#6Mi<8y-ZQ1Ef1hx^sNLN!sFqo%(oFT;LlX z!|x#Sh@nnm_)g_JmEYL{`OfBdPgAeRLtXr|Q(ZzdD}JR4Gg*Wmb5n#iDk4OCyGw-j z2zzJi*mIg&lw+M!loNlj^C&H+I8!TO4m%jpjWeb!Et|8nEu7hv6wlI1@jn&OQ}=%p zf6nf-*~H&w#NVpN->Pj6W>11UCBtaPhj|OF?m=V)<{dv1dMeamd8>Ix>TwHow{WHE zn5|AL*gD4Izfe^jTPFZlDvqtw*$d|`pV%+in(}$N6`bE1V@bEFs_m@_z?H!1mh?u8 zr`1}m*yhAo3J;NoHAS@@A`fddkUaQyEK;Wz9FeeU#c@Q!Qhh7&<4S7j(4vZtFeJFLxaGL=M#bAIJY5 z=)dQrQaG|?j`jg{Fq!ZY>TRN4Z!c*J^HqnnQE}wuQxEjNeEMTnF!f+#FQ0n2`z@s~ zJAt~`Ox$h4%K!e^)XTEBGyv42f9Cm?mfg= zn4mb8q_n6D{Ps}~Pf-W1d!bF#!9{pL?sDGD{ZQ9EQMns>5%&~zu#Y=stI*3&q_hn5lxDUUl@OuTnOVq(9)Ir$6a%<;< z5rJG1v$ zKc)^o!T*-1Tl9Og9i#SXA4A8|FON|tD^80k7h4bs!?CEctn)sa<8KggmEVia3m zg<`YDsJ4X_s_hlh-uFIr5JMeQPzSZtL6&N}Z{@UtsnBvWwA@Ue=tLb{WSq#WRc-%Z zoPfUcr3se8SBdj6aV|+6#3+tsE2kGM!|!SQ_TxAB;N1A|gZc4yK>G}6F9a?JE{FEl zpnV4L8G+Eh92dSiKYsA)x$)D&Z`VRgXK90<&(x+tYvSB&t#j0Vt*Ko~91!se@eAwzOhe!K?7W$MAvB*O@xFMfjjzwcP?AOoI>ZA7m-~ zBlP|k^!`!mAXITIub5u29KUDrdkwz=>flc5;5lgj9kl-$_y+I|X#WA)e+T?jAoRb1 zyOTO7pbnl1zf-%NIw*jaXP|XCw9JTlO$#r*-&#N&6ypDSRFdxhEdB-5LBTgl;k44F zS{Ui>ApEz~-3-0%{-`bFOv~z^4kl0s3Dm)E>L7tS*sa>ar2hU+9dOo_W1|ilse^pg zc7OG>fHXTBM!H3uedWKaII_kl zj#-J^dEbvrm#Eri?^kXAMZHR%GsyE!(iVQA6fWe9%=#epQ7XRdlIL7@uEtYg>O<&Zc+MqZ64eDe?vZe5I=)VH}QS_fWX!ouz zw|Z5V$9t{m9oQRMb8Dv;R8qI^Qn&Tgk=O4lv^wZcsGb`?l=0HFR%?VeWPO&fa&COD zu+ds0WBpLZfYVXEv;@WmIXBx~I@dasv7tBqQC)^=Uh^jftnKJymGH)>-P+J0w+C$W z^sx>F_Xi3S7rxUmz#4f!^z_7U0b!kh_{}REvhcH>0oI|*@#}>jzaJ<}UKlxJQov`o zj}Lh6Cg{J3@Y`<>xN`gSfQ>g3hwldphb|0C4YDpyZEux&+L#(*{U6HvJhdY*z?wKL z)Vh3FxK;32J1oK)miGWRq&gT z+RoY^9CxR702=r~=Wb}aklM)_GOV-p-ocXtrVb0UeoMTI$X?$PZ_#vR;a2b(F~`Tc zbxweF&iu&%BdLp1lff<2v~bS-d{Y;vassTgL){jhWKN&`-%8;E_JY>MaJTivE0cY^ zkr%yHT@GijXYx#B@J&F`S#Lmo%)BZ;_7gi8eUKk>{7nJAicgszviKT)&*@@WDEmLb z@TBY`h|Prl$S*k#TT75} zw*lQt=2*8$-4y2pyv?`ByW{ASX(@{BP(&}?*1}upe$7^klI1S-LH2pDqaGr6vd@BV z5%|hFeI+t3HiOo$V!!(sdVkHo!;6x=RMpn}js4N)-|buc4s7w;x5aPv)|=zAw=TaQ zqYQzM8*qaGpD^H)27JnZzct{~27JbV&+1UM-NByT8?1XGsqcrY6~`kh7006~?CVhn zwv~!)Wwl~kRiQX$<~Ag)&Qct!)H@0`F-{y{oH)if@df)wn~>cfi6LDUcRLx6yH2#E zudhJYfw5KY-Yx&y-W;07+NMxjOWT>d$lB%seQh(kINQ2_ zel~wiq4vmra9ajViHgHE2AUp(rgvFCKCL*4rz?&%xqQdmQE&h}k3pA-F>(`fcUPf> zF*FrA9@=r{)* z+p%4;wW>URYjN+ulh`Xc4LxrIPyOz7Z7Xgz^prr)LC!j)ZPq}~W_{i1Y?}<|$%dX; zgi)`KM{=Pj7J5RVXFBve4ep z-D#uYw9%R_mcljAvXyp_wdKQOsE67+3g+OqP1?*`acsl?ZRptrJ*~%(M(8>XU8kX| z7h}q4XbF1mb;gz4__v|wWasg$?+UfIq32|TtnVJs*LNl8e{Lzx!A?t|HmZ`jFrtsP z3m6m`f1R%BgxL>hf5xRsTHHg7FS+Qs1w{T?`+~W1)tW5LjC->Cw+(6XGNQ|*)i_gh@1%PrbJCU z)u}4EXN-q-pu3-S)9}vL9*Jq%pK~?s&wQVHD#boK+FhGN_%`ByPWbG^aoXu;+5d?4 z(B8tYXO~KCWRC#r_83p?ZPIL)IJXSfPMNEcUFmw{rfIuk+G)E8KO*5>p4Zll=xCi2 z-CoaQ+cHf{hzZep_VlxElknVeT7Gl~t;d`QYr?WLZAVN;tv6viBn(}^H93*i{AJ^` z-IU)Wrjzz!OlR#y^6odXvo(9^a4jb$RLdc(TTGa?H6~n}P1qXJKH5RGm&7Rc(v+e0 zRfV_O7o^DBz9#m6u(|oMb58Q|HZdo8H5^0NLZ6d>UO|d2Rw;T+=B2aj4W;+6EDflh zxipadt8>_^IbZnvv$CHPc&lIdd2GrAVT0ye@_L`32X^`Jc5>Vi-iQvyPw_z8E@=Y( zyM2O`ptvCH%%G>^`!~{@#}3V5Y|xy;294b938;=*8c<6a*vI*TGG3$%*+cqbkYD(V z#6PFoWqOqOFY0eG|4sEDD|s}!4-8JY)tOH}-aHP(ek5v>&R8J;}5Y1^)`L}Yxr391(=uhJ$X;&VDz=M z4+&dB-uIICFSX-zFL^H^@2%Ky+Dm#_r@zI%i>$Y|M(ouFmCUwoEzW1pW|n3ntS9Bl z*^lUA+lV83H?PoFKBCWTMP5BcA9kJd>>?iWgO2Ae;_WBi$MmO;Zk*M_Lvlu%#XeYl zx3Qe3rE#t{hO^JnoWVP7CY&3x4?mSK6K8E^&feXyso;(s0uSsFcye}%ZNKH-oWq-J zR}Ka{PQ0u%eIw_G*jW?%=%VZ6#XK)I9mMT0cf54+HKpk_^n~VN_e0LyV^ziG155*o z-H%D?gU`(CH6}K;(DHbFxYFbeTsq0J--6wWW8HY?wU5$tPj~OKno@sz-Dd2$VOQ-k zWnLWSnOMu4vU0ER*vr_vd5t&fO+!D5zJl!+^l~n)R`*Zko}ugBA$Hs*Tt<)W;_8(B zqN60XkiVO&R9@<&?5`uO8iW23`H3xu3!BA$j$um`KRK@y+X!{oj}yDub?ud=2eD=L z{2&FpFuZX{daoXqriZ+g{4)cv^Nszru}y)t7tnQTSfDgLZ}Kf`xLs+IHwK^g!Edbd zP3D~@pRzNktL*7r*00Iac7{8B5;oo&TWr{Fs=Vw;I>k1Qu(LxXA1~V( z?DK5oJk4}t#^p2E!`f&>&d6ytnU9ZTWN~Y(>wjnzbD^*4UNw#P0`qdizQwC1!eyf+I!z8 z_q}|PKKM<5oAw=J&J<*`SCGv*Bb&(^zn3{j{swz{!SvS%?)bUdL&7DV#Q$bURkGX( zJ$cm9gnc;MN7P##^&N#Ryi1~gNPDEmDU-dSU*z%j&@c3!eI7kTu?N;IWxv<}+h}Uv zkjl6GKHDBY?7N+P4;#|Z=9anmp764qc&*&mCIxQ(jBPrn?C-ABY4dw{Xt}jRDPTIy`6l<;}rBjvbcLEn^`kG&GzT_V=!buyKW$Vc-!Xdsl`~fpzs1hoM(oCHN*Hswj^FcCFL+jM zF!gtadFebH*bq$~^-paKv(Zo4JzmsI=%M3H}N|iI<^2y z;P=ukL3!iht$g@?6#RKNygvZ`N`SW}11ADqXDKc{jD+X*X%lfl?Q-JphX3>7|AerK z+KnamX_J^=^U<}KIAuzSIvp*t>nr&60{klHG?UNix8YOa_eOa2Zg~GjcwTs4X*WAQrQK}nF?iQZK5pdG1K0~FeMsa0=|jc*&H>iK z`$agpb0zoRRPya^@PCZtL7&(J?=OJ&eLNdx<%@o;kR7K~?g(sa45e-aN*hiH@BK{kjMxQ0u7pYqfK$ zl2yK|Jcj1IIVCyc(3GT%x6r42+ha)H5%eh?=u>`#-rH}{!FvWByl2tDdkh`C4d~!K zjt<@v=-_=y_?_s`{RSPnnds0BLvL<6dUI3Jn;VVZ+yTO436CSZ58=nqH!Hw>6cUrs zlej~OJCwLL5VxARS?IN;;GQJ>4&oiaiEdqL@f+I5z~a(ZwJKm$NxAkeFs8Utn}Xij zN35j|lx)(TG=9HXvPJ7?{Fb;k8NaJbDs(#uZ=n}=2=`CXi^H8R-fhh<{ex9>@J^!V z>5h)wDawAEbf+WYv9BpQa`Bow`g*5|w`tX^U5l}~aF9GiUr+S(M9;2k=?-g231fZn zON^h~MI@g&xPzq6CZAD8esS#kh@5z=coXNT+qBu_)qTyzanbORv>Er6bUnK)^z6jG z9x_$_*>hJWH!?pD<#+FW8^d~=yvEk|5t~~$aNr2a9ZtC;{te~2QJy>Hjs%XP+>w+! z>fcbV2jzKE?r7i`${kI)WBv{0dQqM?<)#70Qf?aMj{P^3>qB|IlsgWXPPyYKH~rsG zt{>(3Q?3Tgpj?e|GyYf0?dl(3-$Y;P?j2~CelP13{XHA(<*lu~GEnqZ(p9DG1>SGT z!2Q^s!V9@KEM143kL=S}!8%RsiLlmhR}+qG6;l;fhdnX{`_n3OQXOj#u^ZyWJx?=m zOAjTlH}^f=C5*A9o^j>dPL}URj);Lz}LY=4wnk5p~4I;u7? ze{W*`-gM3UEwby}C%0%laf^z#S?@01Zk@>8tsw4J2X~Cgn}pki-%Esv?PIyub%DE| z4qQ*}l+DGRLf-Yr-I*kN^fRGJzXM9$#A5sSF81eT?0g>EdR}$QkIMWgI*%I|Uu6tU zAnbkYvIy={fBvkw8qjz4C(ikp_n+}I`R%+5yQ*i+{$tPf`0F$8V^j64dEGN#m>&*H zqYgFp4@LiF6?a!2oj-r+3&>iZ|DfdGAoWW6Kd64#+6ma%GOpNEt)b3cazY*Rd|iuq zUgU@(aZlkdHfe{SZSqoJG%LD*Cx9d+XLWVN?s?(rHk zu8(1^Z#mD)9$QUmx_wiC#h%JMo6R0?O{r$z(lNze%=cElWiD?$AB#@f|LL53>`{OF zu}3rPr#6na?;4qEH=&oXD{Yv)TS+!`G)Eg%GFLnCRDgXrc!=)T5nLngF+&!3sf8>s z68TwVfl-`aiY}Sxhh3Eg&>v$@`%PqllZ;=-9u2ggcq)jpCjckfw?z)8{Qvzq`Pieu zl-G`OCjlo@?nui0*XQIz&?qvGOV&B|XnT8C>L8W9c{4Il58P_j$*ItOyex!rv4!!} z6v`b>E*fVK2>z~DEHW-9VvGzgXP0;JeJgH_^bi3B07t{RY0v z415y}e8+&VyMgb62EOka_@dLG<2%N{_dx^Scb)jUaJ7J|6+N>j==_w6AT<}P8{`maa@b% zCf0`~tPeB5Q_dkbd-~^PQ(dE2n7m$xr*&(^bzipw3UkOK1o{-l(ezvOiJ2Zprow?O4@oLX+NTF zJ_5(RxQpm%noIB1z5%~`smuMIK6#1s^}*Y{`h7AW(b^|pu?;~-V7ZjDTd^&davFhB zPJ(J%F6HC{rJUVBDW?%gIf+qm+T7A*S|6M07*aj0K+j`>>d^BD21*_dbQC2I8&L9? z03?qYuhD+N{3f3nU z{RVDLPTWLKBw@}2+VsfXoa=4TPC)y%=cBd%-r|*UXp2|iA=>W^%DsazWqE0#CUz^5 zYo`?yNj19wfDiHHXC^!I(J9?f9$;rd{xz%_rLc(C&{^lkU)SyBAftf5=jX6 z9OcMKK!p$^gVa$+nuHKcLI@F}g4_-lZ6s+6n9lIA%-^82LnvvngB|SP7?rjWr~~5L zaXR!hpq(Z{EmYLt1o?lTz1I#WH!q#(zwhV${CBd?Z$0a_*ZuOWXRS3O|4Kn~;ALbA zTSxiwTYuqcx_I4>^54gO@Ve3Yt#^k4n^4R6<8kaXQ1-tE{XOLPBT1j1Cr!?O3;Z_x zn|l1)%2@3!%)c@6mi!g0#aE;L?#M~(Z!XM#bmX-BF{H=t2iNDH;e6VgNSDooYXRe# zUFhvb9gE(pynm0qUqjDCy@&T>&Zl~K)N}cNyzbfjlP3R%yK9mT=XWlj-4yaA<|mI% z%GX(!H~e$*f4}CACT+~fe1o<5(X7p%rLER(xi8;QHYeYK-kHsLxY2Nh9Aef1q?FZAE14c6Q9^4w@A8o3S{0!bcwDSDbSxp;#qfB?h zR?o@T$3*8(!`|hjpXLw4ZiqZ@K&If{>t4!Fer&$^z2AK|r>QkLGJiyJRQ?F;-i$qM zOk)0S6^FBq+@`yeevp55Zgap3uekMZkoRIv=0UyCKR3T{^vL|{a2LQ`!_D{bO)K0* z$j5I)cJJ$i^;XPBiaGM&&4g1QV}&t$_1ye5qoebSZj7$f<-5eu_u$CNe}3$q{6ykj zI65-_0m7Ap`?YsqzUIFC5B@2;>7QXrSmrVLXT8mVf@C9q6m~XXXZkuvQ$zVZ`RA|B zY)a%ig%2iGu6b+${zT`mgQYbRQ{YY6w7&Z zQSdE(29M$i(+qvgU!(5G*=>)b{~+(X%oq3YZf0&cChQEWjqogFUZ{8y^WEGF)6P2M zIl?Y{iGNK#{`C90XI~n83HFc8J$n67_zdP?k#g{ma`>nW#r(xdpV%rtIgn7<@tA-_x4G zzN{mxP340>2M@4Db+NewzEcV7QkJ~3z2~R*y3}sgrFQ54F;r4{F;t?~q!yWLQnFt~ z)}>@kYT~O^m6@+rWt?CS)tl_45_z$~$efD5UjyY1Fj=4a4&`JL?~l2&tBN<4HLf`3 z*D^=`kab)E3m$vZ*rgJWGX7Cf~!A~Ak_T;g}uH<|Zv9h@JN_#M{Ne}W8C{jK+SUReJV zPrWfDt)4r$zL6i5_#u0n3HXTtjLd18&Yv~5mpwcNW^7iX=#S0MZGgTdN@I%GfO z9=>$KEafF}B0{Kv2%gcJIsA2Gow{jpdCqTqoaSz4i~Rt^Q2bS5e1)8g=ps((6Xj?jP3< zO#H=l&ctf=_tg`(r}Djt)x_;P#BC*ak=1h-*-9hcyt8b{$jHQBu!rw=tmFP?f;aIO zq}PY6-`rX=p^nAdY@DH<`iErrf-hWkl2ajk`X&?B#i6SfZTh?&j2;7G3 z*Y`YQxx37i7XyFD-D*vw+dHJ6eQ%k>MdI`UazqlJ_oyFtf&U4f;N3x8vG325yYu8e zJh?~jtK6aY=ej?ynmQA{-%RSxN7SJgs5|yudf($Ny(gL*kdJ6UjCj7Z3>dnh~?8P&z=dOlFd+Dxh+PYWwN_!^j z`XUeaK4r<0!_v0PUApJs?@C*XKmdD3y|v3odnqpikx$=F8PUnl3`3v$1~PeXtQ(m4 z>bgc#mL)&SllUt6D6%YX1T0yWS9K$;ayW8HTAVkTvNOh%Uzy3;{&UE$=xN){eXOzP z4DvaLz5cPKmF73njo7(O_}_&8Kf-@YM$lu*2%a(5`m-q~yG_A++i&;1R?_zRdFGUpoP zaIS&K^_-=T${x#}Yc1~F7~(vdIRA*c7suZGGkV&#kdA+#?wz5|iJZmw>E6UMxDz>x zKLji}i!-{O_H93B(y^A3X~cS^4NErLux#3}-DVqhz^$!*egOH;*$2U&o zMNTy4W^dvN{55d*2L8sbe-@d~*ff!|kKw$Bag>2?VSbXlsUy5^ta~20q?ok*185t` z8`dh`beAIUSEX$inN;g+4rji|rWVoGsk1r8%h?=~Z@*`)W)$agTLY9^D&n6F-RZTi#;zGooJ9gQjcSAwd%297-gR zU%4*0+Mp~?puR}DkH_DO$oNX%I377-{&HivhHW}Hh7ZF)MHa|trEm}BqwtusJAKyGwAe!RiCEw6BH z%V^Fen8mpSm7M$X2i?gS#7!F2OfAm*9l&!OB=h=MWTg4#6w3K1h6m9o%C`TY8pyFjLd#7Spa2uZ`opmi_ANj{)Y{A3e_% zaL|^%!FZdt%51-S$|atmy}qi)o*N@)+o?S9YWkm+7rOpu%8S!~!Mxb@7tRagPs|JB z&y*K${{{16=U+H4oPT0oIR8v}apEtS7u)_~d13DR*d;OsM!t-9lY8_N5v6U@zu#P# z@ej>~$ad^T#(8%JeRt*WKpAVxJ}Fz~`RBXn$9exDR9N}_P+`W;*z-ZZZOS@Z`=u7c zpZtD)MCr9Nymi`2#XmsAQPZ4PuU?JdjpU8u)p&JYgV(|PMds1i8NeIEJCN7K>*n?F zdU-z!`_uH;IGgTIZJP@kjzNQMI$Uk*IV0kS$ZON#7#THmn9w$co7rlYJ7Kt}ZM5}m z^ms=k%4^d$Mh{53t}nH%Cm1tuEhyy!BtUeC7D%RV9@xS5~A? z%9xrlaeVQL)m7EY$1kfWSX#17K}NB*92*6eCI+huDoY;K9tQC-90;d?rjq$W?71fQ>KbyQhJwS%7ls9va*#c%PJrAiHUD< z*@Go3t9?Zk4=!I(R$aPmrSH+wvWgO4@rsh7YO!_wO8J6jeJowvE9JDQS+;UQ=ETWb zRndx-B?VOvFB0pxDyw{?sG@AK51op#V&9F`H~JnaDXw0=LMyARE?H4oRN*UGv10iO z^+9p2zNcJ>Kg!b;kM#6(McE@o)g`_gS9bZzC$Bm5l@_fm^%2u$Mb*Wn+JhyP;z6Gu z#;jyTS6r)<$6~#tvbd(g({pum?-l2)OWO$9<HO4;o4bjJ(-*UuhuY2w=?(>vHo-!`D@|+tZ zmUvD^w`-S-3fC{Z?|c6ta%JRiJy#;9MICay5V67Y1BcW7xO;*7H%78MTHk17Mt>b2 zT}z0*WDM|BxW423h4*IteeW>+A0qE3gx?~JNye2(C*eFAamX>p{X#@u)CSKc;|Gp= z+)nou$K&p`js@-}$8U_Wo@95cBU=B+yU_@FG9ynCgDB@mQPC0g(aW?)^{w8I+|iCS z*S|TJMb;CaU%O`LuX_KNXPoho5$&1edc!%vIN^ELUEmn)dB?cq8DPwEzT|pJuk;$u ztFA|#TU|?B-*x_*C(U@oQS1I`HLHrM>9A4NnsJ6*TBUUNR`-KszAsB@RQ{?4gu zf9I@oZ`EJJ>_-u|x$cOpb*CBM#h0tDO7Baq0meHwXhr^&I_afR4!GV-G4xQ|9SBa@78kvhZloAvKF2Y3=l!S5QO zs251t49~8}y`*@SaUpu8d#dX{w7+(&_GCr182gN89FC}8>cvq3@2}lUqWdpnO>m&2DpLkon$K7)yUe)(HUe@3DoN_LYIv$nnd_6i* z4@CVuYK7z9z2hTWJhy41jQ8BZ=uHv-;dBO^uoy@Y~jRdVN1nwF3vO zhN_pjrrMFLe%xm%^Mn0_@4PZk!2iC&=aj~bC)AJm7HN!l9>APCGJD0pRke3(`*Ht3 zjOD(qANR9jE%RpDWzGQZ<-c=;WiIJ6tPk@;iI#Z~^S<)0Bgry94)hiNBiC8x+i*X) z5C0bsD0%j?5w@@JX@1N60SkKN-vi3L1@perf9%bc!y3Ndm;d{3vCKR1Ic{L@^x1o> za^H`6X0~PC-}gI|c{A4f3g4j|%YBuk^S_$itEHiSQ@(B~F8K(5AK^>dV3{8$XC1!Y z?%Ot7=2ccXBNpAC4$SY-w7g3e26k=KG_oRZr-gxoA&Wj>VW5idiFt*EfuN$ND>?zJ z(X{lp*K697npW|ag$rA&HSKG-J8fa$EpP$!2@3-);N8$iEDRh5Iea_skcEK*;9o)S zw=l2=oCn=tVPGeC7j(UafjTfBy2ir5D)3I|Y6}AuU>^Ua76uBzxzG<-7+3)2LeH}> zFdLi$J#@DAv476!(Gw?q3Z3?zWJLC0Gdhz4gtyDSVWuGC}*lfG(+ zg<0TC%qLqI$OI`WdE+b$q<|Eyys;Jrd|(hd$-=<4LbFXycY=~%nuUR2fu)}Xj^TS6 zm;lyO&W2)dn}vZoa0qmbg@Gzi^0UIig)J1CTQNUkVW1fdKp(a+a0r|ZebBi~bQ%;(GvG1I`A;{VWR?c2Ia8L;pA^>2(N{^g0M`0QZ98z77=kofIzl-g!{` zX|r(QY4CCM4=XGLAA+6@UI+R>`pI-Bg<&k%Ngyzf;w8|2gJDWK%*g+%MS=Pg`#5R`cAQTh!^zaCtV{uWUD zs|N8ReYQdkl<;?sFmYk4g%zh2-3*HT5Gd)HqRhuCa}AX59vW`>bI`(tGES0o*ah;5 zyqy*X>Oe_{Eg(+wLKX(rf|3raEDThGk`5K1gu76o4}1(d8e9jSr_c!&f@{EWpxEb3 z7MVY%j~it5D=8KR8se;SI$Pm+#+?jZ(@%hsuDigY5?%`f+d%1G>MRVb0wukwEnFA` zCH`4pIhYAbdZ&OAjwFz-Gd&ty4t5N*;(5tJ?z^4KNmz@9&AR!q;Ho!c~f{R&)|5`4S5<&drOqFra~wFC7Tqku-UiEDT%# z<-6xC477ogFRdU+ns?g5zzI;?w}9gQh=qY>P~0E3FmMPI_aV>&9wG51y$*q9_(75? zJqwg{O97XI2zQzO#9A1TOq29EPbN$Hw1V=T(-sDfgOWa_pv3oHkR;0E;0nROY*4}* z1PMysbPEGnp!hS{!ayb{;q`$eQC^aTfml%7yFhX8v@jrrPTY4AIWW)xiu<=gf}Gw0 zVkP~&+lqH9ST5$E#J2^M_#OtupFOq{Q=YbO6S;{=9%rilW?>3i}E^9$?zskbE z0}+RKGA5{7-P}1v?Vfk~x!oYb@()B%X z6L?zTTMCaWtOKQdtOZHJyj2zkszAx#QZNdAnb(7XLQul{fQ5m3LCN1BNK)rbw=j?i ziuOqND9VqTbAHF}*M zWgO94_}yvjGNOz+V;jHqj-8Guqr>P#ecEW{_ps3{zs_c7l+oba!|xVn4Zj`EPJZ8W zw()z~*~;&Qh)WSsMswtmNNh&!iHb6gN1fpJlB>go|DJ80DC3alFux}}Z}Hm^+Zl`f zK}QCmKlt$AC}Y>qhN1XBw1(f#At8R>8u~WBhle)vdvNF>eoqf;9TsJ5OQ=sko!FX4 zED~GzJ)GFgZ(Y*1B)*u~f%<&ng+!<0Qc_1!XOh#=aNVBk_FhMrMxGdnjZqz=hj((djri>CmLZlbnt{llM;EKiTOx zJ*9QZdsCc_&MBd(Tc+awv^~@IPIEfWPrESf(zGaJkAJV9boSTr8}e`QI~_;-E&k)+ zwwvp3-g&dr(Q$L<&7oVIj-9vcx}^bZz2&`I+Q40bhQOYH({cFL=39^4>U7l2*fyhn zhSO1h*Ur0k-9^~*JMxKpek;Fk<-eWpbhJHm{-FyG@rCM^>f_bK<&lm@Iv*j7kG4Mg z-lK+5ziKCPVRftOR~h_nTSX|>URZl+t<&-Ly3^}g*BQp%_50WBM#K8O>kWSQpsruv zfVzJDPSiE)>rvONuUn7b8}*Kjdgn$8&fAacryti1<4BX<(xmIg;U*oWA=oVR!6qH0 zA$UmW{Y^SbL-2smdzy5VhTvYIcQxrK4Z#MX>zj0x1fogbDRf4?MY#+D`> zr6E`&bmx8@r6Cv+`oex4r6G8Utpdh-`*oCtV4Kiy@7GZpf~SQ(zF$Xa2%ZqSdB2X* z5IiFE!TmZ);nQR1xV~5DUB`8lB+YTXLGX0D-rA1- ziFO^OA^4WiN7{9iWJ$Z;BJ`nl9i<_7Sm^!jI!eCNt{)J(pxj60SD=EuoLJ=_m z(N4$E)(3Z3I`?1}Lx))N9gD6L`^^Wrg=Q%D)UnZ&LJJMKiWB z-P?TnVaoj@%KSYQzTJwRq}*>-^exK0&8L_33JH(RcfKO-p>00(5W*(3&3Aqtwa_*n z`4gdW)9|-e_-Cr{yrjPOJr$lKimp}ZVe|QSsr0b<&O20oeyHp(QSL7*`bWyW&ByRm%K2l^!;q-KFe@ zlzEe~zfI94if&N!P(>e5^i@SSD|(NjPbm5UMYk$?fTAxb`WF&k!mn+!!e684SVhlK zv`^78{ule1iasal4;@tW&lNpS(HVAnDEgH8ewCtEDLSO+R7G!7^sm+T8WjCqMITVK z%xC2L&59nQ=o5-&?|@alRDJ$f`QK{$r|1iczFX1Sb}K!cijGzEzbOBGir%2;OhpG3 z9aMCbqUS04tV*9kMZcuzDn*aA%Y&j{SKr^J=t@O5D0-Bl4=DPC`d+i5w=4RDqUS5R zRnfy0eL>MOpEJvYYLEU^(Xomip~B}=^vmk|nTj4@r}y7k>36%BQ|9gVb((w+`l_=3 znfMRwQT6lR6+J}JpNM_*N>zOfiT`2rAu;D|Q2D!BXujF7)B65%*dIupwb%7N;#)%7 z>wvf8m(cdQ;?p=2+Fpl!ThaEq?bnrkdmVPXGPlrWMJuj9(RRNUL^j+rWa_BwD2-xFi|`6lM!^nJJwr>FFw zpX}lOxgPYRJ^b5?XW{-u_OO3L5C0o`xKHol{u2To?q8sXfAf0K|I~v{>fyi4lf(T} zd;&XpwExw^eMS#@bPsw_4|-$||2;kE|J@`0XM4Dpu!VrR9{kSD0O;WBX+ZsfC#h>}u>r5-*DMGkS`N4{Um5-Jo5tmV2w5Xyaqi-u+DcqNFfqd%DSp_o}+-v$+aNGR( zmSSabQAN>;f=X6y3zQlez!H%PH1&G=wxVQZ30BK0k-sB)%NIXf47v2q<%{PpUtYZu zW&VN%wsMZ;QP(prsg#}#mjow zv7{FZO#Mg7DwixTScU{(fh7nSR$MHNZUw=T`U|sTX>_ymAOSVK)hNX)tBZ=478I8* zEm%@iRzXaxbX`&+0*eJAzgPfD>Pq|;mn?etL8T2=tyt3KV%73%>W8ZeR+K2xDn)lc z^l(YZV@7}v^*D7Ytn=>)1 zz;7w0*@~=!322!mH$$0a6=d0#lmbhrEK6Nl(`-vhfu$}jQCZfnsk*F9wH+!24!g8O zr5tvtP*g9gnqs-iDo~1PwgTr}TB1_UyHqG}KG}Az6w?a2bS89ZiAp)|QlY^4B(0!$ z(c*$hwl7LC&DNQ0D+o=OnW&U^T`ClKH_`HLqV1hhOe;`|$+iOTy39nSyz5e-z`F^y zKT0vJKq)5Mib=L2t6<_a+t;k4QeIzEnOZciAXrKgc8g*=|h@rxr3%{S*`wFJD$wR9s!~aOImKkuj++Qk<3^VH){O%8X4IfkDr;x3&_+&C zj=|@G`0wKmC`l*yYVq=|*T^f%4Br^i<$o#ux8D?Olrq(bTE0=HzEj4xxI5%1^Zv`F z>U%HnJ^7}5Z!hJGx#&Ue$l2c0Ul--TrNN9pnBq&)RiUdX@g;d|bs)_2f;At%$TIS_q$j)MdH zF!y1G5i@=Zr+~t*vmcqC3qQkd-=uAl`LgY=ST*O*wgY>dXEpmW=9M8%*U(34GpaSU zRZmENNX3@ttM)rnCQj?G-zi@9IsFdJs@5Wb_wn*bzmp|&KTj)(Cr_KQW7BrOqndw4 zITckf%95vNKPK`i^7zbO`mxyVnXHVJ zsks0AeyrK{PsMXD{z=?K?#Jq@?C#9+vcG;T17nN9Gs);OE9c~YxK-ko|zi%WH1H^}YQCJ}c3s92-Xk)U0cy3_}MHpTBh>4_$e+cIg46Dg$JVW~=?QG2;>07n!r0M0B&t{(*b=h&TjqvX^ zaFcvb?p{Ol&*r7!u_hp&c~!ZrA+HF|K^RvrXq* zSbf%+N>LlAwOMB?wS59G!hQIZKa`eufN<360hd*WAzditfp+xgUSOjyfCl z*HJIB!cnt`aFE8Sj?jGaHQqIR)chL0SCgyU<)Y44?($L3SMKI({uaXDNcgvwmu2PZ zLvy#5r)KTEUE6*c|Bx4oA3;Bvh@DL%xUYhAvD3yS{U_-|zrX!S(&uCDCi|{aoBFq( zT|G$Oa5Bvy{lDj2>V&ON&j`?#)6aMuu3EW&sEqT|#N7`JSM3Jwt6Ic;LJrD7VdN{* ze@&mXoAc9&e`Q1Y-s%4p^~{Jf^s8k4-Cc$4#o>k#tn?m)60a$%8U`U zM@i3IeZ)ELOnW+)u--(U$GKShW=Mbcn^mXKGshEUw~D@dUn*%{b}MyCA9AjUv}65h zyX(r#Q!YLD<1)VI(cXKL{=aq-rSq4{@4tgHMX?k{9j%DdssTqm$#Eoge$j&zWfF9 zL&ivjIXBlz->>T<=1N_)#s$~hN!@K_Tv8O-9FTl3j0^=eCJn^@SRO`NUT#H4O*Vv=eTlm3J@ zahTaAwtdMqacRG8;;?geo5;8%{wn47Rr>d7%+IB)UL6fh+lyRz{N>MPohm`Em3f%- zfoGXty-WKqcV%kCw<9L_$3mC3pzVXTJ6@n)<6g&F=_AfyPujdsn7fIeGXIpmuEiL} znTf7*o7{|lP`fz)>mBCc2DF?t+QPhMjy||H75(=O&oOV0Hrehk?0O<;-qE8?7Ckv9 zPvS9C`VeC%V=!w@-e#=ZL3_Xbed2SD_?&01>tlYKt>(Ce%yH|~9QP{W3K3>6eVB{+ z)a!<~b|3FK!+R{6aHaFg{4J0A%N;nX&7ZE?{G?uOzJ#lBUK$o=ALng)2y>IvkLk3hdUCC6y5^tJ>9|-!K9AC!7jr-vi@L7NK9$-z z`;;e3?4{PaxdYRkrTJ4j=bb9mv=?SzSI%Tj#hzz!(4V5GSav3hoqN0NJVzgE+Q|&F zlPPuzyXOk>(f3A4kPIE68?ZD%HT1DbZmT6Sp5YGwSK z%6PhrFiZS|x8d<&o;=%2U+0x^w#4_pQ{R8uqfe3i46oyDhTW(9_v-jY%AC|mIXCz3 z9NG($Kc^lylQ%N9@qfv>>Vwbrd3Cj~x@5Nr27EGUZ{3Vr7{|tWmX>B6V{8gfE_WYe zQ*WuI_LQb%wK?2rVn^yw3t4d&*q6q-z{-%X1wL1?zwq| zFLvp!e_?E`!~fK_%e*l4O3tZN_l6y*oYz*s8N}J-@rU#+ZS*ZV^RQOFCGDoPp;y*q zGY+)Q{TxiZdg@`X>v@|qgyi8)C-Z4hctW9VF~w3awe0>Vec2-?PcMGY9!p;vi_5sy&2?JqR5K&m;h)Rk7#5|n8_O{TNH4sR7 z&hv)T|69=ql=)*q6F@ti-xQjNH7oPSp@ko3mjmJF32o==3yQY$VWdr~@a8;e(2{^Q{n?&viYb4yUilW2hCL~T;md2n!T8ZmbT42>|!-q z+GPkjXa$QND_OC;r$^OAEOr-Hub4WyplC76x!u2ARMbnWYh|{0+0@BB?W^w>5OfT! zwZX6@Jz2Ih8JgzuEh}yEd{w^Y#0iro_OqV0WYHJ!HCIW3`{b(@U$f0p_W4_=>ibTW zNj7csHC3_r(tOQMRb$0Jaoa&XG(XXculf0WNXrrJkP7uq{Gpg@J_07lV+YM7zK9Q* zg*)LpilYSH+0YWlL;Qq5X_n^k$|H8>eS?F(h4nRu zzWqbiS6`%T!Q*qXmL>BRoq3D4Z-zsAXjVe-(>8cVx4Rgp#A=h<=%Zd| zKDsq`wK*q!GS{Eg$h>rp6FwGq`Hs^4<@XKH289?a7C5zwXIT&0NMC+4YZS#XTG*PD zwLUXrhV~GA>;-L(;c2gzmv(IBWqy0~$?}vAcvl@WMq!R$u4HX{U*`6DO2JIlsu;Il zTl2E~Z-I~TB(Kb4Yh+!9w*}tElf0%L{Exl7_p|=j<(FFfV{LK%2)Fh^3F9QxgNnfv zkCg^b691!WUM}(9N;-U*G}z3%r)L=ZN&|R*M;RY=NILYD2I1yi;r@a&;ND2qsI<$H z4t5%tdc?oxbJE~u#*<@-dpl!}`&oBAd-3XmPsvy2L|PCYeSN@0}QqIEtS#4-9URg7X@;sArokRJ~hUfJ& zlc)V`6zhr(1D>UUo&z%{b|SC~zj94f;}v*fA5-2hJ0dCT)?8iIa67x^>Y+FP=IYE- zrR8g~=6JP1?W4388GFr7qdd$>etkrHqW0np-BsQ;Ff{0rqh>?{>#41d5U<7aJqus3 z*;;#KeiWZ8_2@~XX2cozc0QL@>AP-Je)5*&d_CU1d^hWhPcB`Pb?&B_sj2!+9+wWE z{`#XMNWZk2rMF~}ZrevWMx2woHLk3=gE-tyTy7&yvxwVFczijH#MR{S$vmY$9<2-h zIsDMe^0p1sE^lJp@k3ST!}+(2&Qd)6%sEOJSplF^Ey{<8)ZLr zaIoV^%2euRaD~=U1K*E3pfBpwd&%!F@`o~*+x`Xqv~hnM{e8E)J#^ZQzIZjHgS{rn zTF13V1c5ucb{-SjDGmIY`M_V@SB~Nc~*!y?veP&Bi*HptL$)!^oG#( zlZzsZls%T+=xbvNvpX-y>b+8G8T1+hS=tk>*$z(@8jz& z-&4KfbH*cN!&j2;390lJc^r9cTKZ~v?Y{WSuCvO1Yo>|{wOoYAGeg>(rx@>|G!u#Re7k@iz6sDRrigwl~Of~Bh?W|3hYSt#&S(h-?tV^`B zCSj^slW1o>!c>n&JyNMhq8_2tBTx@j>Y=CyDfJ-KF-jeS+N0DS)R9UZiCWrT2`4i?>=$X&xYVU0QV*qeJx)*3bL$Y$KJ#vCv7FYok4 zJih-Nr8Rz;GTQk$W%Pl5%V?6h4%-$Jd~vY5`Tl1ps}9O)g7)lus$~4^Kde2qi#1}K zSN;s+Q#WfzHCJby8l@+kb4}R!beZAuj$(cI!_7~QNZt6%(<5~Ev1|PI5%AxK!+#&P zuPrKgS<_jE^)%n#7Nfm5>B`k9ZEC%(?f;N6eFPp@66N!m^;)Anz8p=N?G=YeZGwyR zl6X8PJj(yW;?dGadECV~SjuA?_s%EkGKT&9b=&avb`OnkU*i+emuF``=042ma_A*2 zwD)}qEsyYJWPD-wE7IMCj~}Fu5ZeCEwef=4-CpbcZB|A%ZQ*rH>XI|QCSCQ_`4Cek zO;%#Sz2thUSAI^vFWu!=;X~N`FPjfx)6~U3so!saKPZpQhmdoHCWyvY?DuVd?7>?W zgHaipHY2aa_+B1W5-g&>em?_a;XlY>KUIJ@k~|jqDABJ%9_n85yRUJ8d`H--W?=%q z%F`boqF|PF4~y`tZ=$^ud0*j0h`g`xxjUGbeagIKc69KMZe$~-=`~N^rwu!1_Tlio zWzA033FkP5*Uokfu6+icxRpo`beUuG`^*-@nnY*4sjc zc4ZXnZH0u>7lD4H(vL(R-be%E8=o6}kJ9&OSIo6U=6!F{9`>7d%*PkuR??2Pp;y|8 zOb+w8efLKPciek^?GBNPl{m0|cu>+L)saw}R#uu-tJY+;vL@p~=BB{mIw$SaCq_cA z^k_py$4mqL895p!{zH+qHP;^cPK&QHFAXmX$@ndOu9N{g@28OW_h>_oi43@u3&|rH zGk!{Wxt=~E#QZeDF|?N378+Z}AXjS)tv$=U+(EgKcn?*1X~_r=G1J1dhd%~(tUhK$ zmtTF&JCn&nE55zk?(n(iSBf|JI2wN?AN%@dA?2AiqbofS0yAZy?Zk?EHFx6@)ad9PH zFkfjOgFa~LGjD0*tzk~nek1yzsn6V|jkkt*Py0>igQh<7pElka#$WB@(FaX^#*;Fp ztYQAtJ_&u$)Mp;m##_T2t9=^!psCMXtBtpYd06``=!2#{^D&u|)i76UpMgGT>N97P zd7F!R`;PPhwDXNdytz-|Im+qlw81H?=eByUwW|%Zt20zP+&U2b7^}UdkH0cQwZpB0 z(I2Gr2WeN{G2Et1$Ls9V5E+ww^dYspvysshnT};)G9C0IN~Qxj!D0RJta|hDY#yGp zQCDXQ@6rK(&k3I|0)Ag4d_VY>Yh3W{jqSbaNLU~6A7*=OP$%?#U!%Wlrf=A5to`vL z^oeK8Ika;heSEw%??WDk@4W#n?Ww(2MAiVLJ-tj_6Z3beFTbTux6+o@^9p}(>P&6B zxZxzlTB|K}um>l?Tt8^gX8bC={+yxTG~3`_^#?g0=HN1)eV_U>msjKhwo-TAFMl{I z*P&6b6$BP|a(@p?8 z)UiBX(+>5^v@;Mpyr!Kyu|s{!<2CJ2*GxNuvBPWHS%@9#ULLP$hk9q)8D^QEqyFXb zirKhj!K_;9pP0Xo`J6<}&l#VVKkM*^I+@37`a^v*{Tao#c+GEp6Fbz;JYLfdb`yrv!MtZC;a?C_d)UcwG_IFHw~L;W@F zjJM3sQIGR@#cbR!i5K-)%-_d+&LrZ+Yx?sW{Go2=@tXcnuT6iZ@hx7{&hN29J4UhP`BAT=8x73vLtNw zUK^?3GA>%lH~OmIBAa3LkF%+>cTjh4rw-pnU7iK6er6+eyNfsdmFs!fI9bL5*1kBa zu1j6C`@k&vK*l-rfkV#~QRgpHml?~)U*q?TpsqTo-_CszjF}o3Grh~+w@>H`rBBqj zcauJ@34XHK&pD+Hr4Gs%;Zxk%Zp?nr>>C+V^r+hg^t<%A@6m49_NC9X`q-gnyYl~e z`h~TV%z3-UQZk14Yt>eMOk26y7@FxZTTj4yA%t;|Pk*+xlAu`BTu zb4kk}yc zUSwbE9HKAJVcx#XJCwPsqx5BNuU91W?c z^LfbU$RqMMeYxMoJe~jaQcIqvVzGq_9{>qYdM1b$>DBzehpwoyaA6*ZQF?;Xmve0~ zUl)5GF{G}6?by}tZ5F4J2^*I^xv{@p_2|?>>nh)Xr-yh$0>a||3>_a zR!}Nb|v60;Zi~e_}+-N z5$8upc?w^z%N3e9HjpUtEaMganO#0dpcdLL?_-s@U4Kq18ZaN3xQczd{9abHT_0E% zHO=k%_0Nj7>+2S1oOeCK{|l#^deGnPK~KYSxP4KF)4k-VD$7<@7n>}(K6rz|sq3w6 zZp`nc9p+IlK`YDuUfPyNUE1NxkM@G3bqbH1Q_{uB4EvBRZncP0GOk(Z9-V^jhGDL4 zd93ahl`MGe-4OS9#>NL zHA~v2ZV&rUIdF#y@04!O{j8bRF$fl~7CUkeK=`Ag-=!t{Su0mohtb{7c_>x>g_Mm8 z_(v1k@AF0bW0}*Nk52_e?l%zsI(+7N?PAs~h!fEeKCiSF;paSLKndSBl+4+Wpg0nH zDWlE%GPJ!kP%boStGndVhM<;L(sT^3o#!aO^dtLYQ+>fkx6jqczNV+VzRovub??@3 z5iL)pa~F56KH#V))7khf%-%r1DdPB3ccK4*9&Cax@mPzwN9ZeN=ZvG`@y<4{AqjWMhQkIeLQ;eKaB=s&OfDR)0V)$~)cN zcno!us3&_Gy@vZ}x*=+BqsUs-qVE|O-I%7ikIvOZJ)p51b*-t6X>3H@g4*pH*eH7j zNQ8KK!)3W;pYK`5nzA2A#)b5nG`-QhUS1Eco7cq~#T&^R!RzF8G;xU+uZB7lpx@pX zig|px%bC!%KBlpz2OsK1Sr03lpY2cm`_fb8_kh`+edYIO`%)6{%_`HF0R#Ut7NT=>48NIU#n9 z=&f}TcOKpFvCek7F9gk)IXM4ru&?%D?458QAzs)G_4WvY*B_rjwUT zvAgVtab{k6$*1xk4(iIw@*fUv+)DoK75!)98*6Y|`mG`GTdv8{cN83EE~hi6Gtftd z@-+<^GAl1f9o8<7TI*;;y!N8-hFg#~eBBd#vCN~rSV}tj7Hb0wW3-nRFh6*VG9mlI zE-{~YX8o4NPf(j@nXs1$cm6Vid_o?o)X@Dc@D0l%6&(o;zp%`sXb&`e!m=1e$3Vj$ zEE}ZgLD298%Z4g?C^Y=QvJr|N0SzCpY^0(`Lc{+n8?ETk(D41rZcy|M(D3`%6KaJo z4H`aQS%#uBpyBV8O;q$mX!v?%Qx!cG8h&2c&5FJm8a`gxt%|-?_m}=Oc)4hkZq5;< zJjdtvebWgp}xYVT}M_j~`i?vysbl}~%OEm`d& z7xie=2K&fGJ;vNq{w{mUH{~a%?2c(%A943+{l<~Tb$`Is3 z-IQ&SH*l}jiC+%k$|ioV?WMh%FL4onq}<>sgmbE8$B#_Vs%kOGk2k z%=+vXnJ-MfJed8KQqGoy0vp!rFG@KZ3SVXwvLnZ0v=xP<$9+SzgQe7+vYbfvEDqn- zM148WUPSMlrCCe$0lBrvOWibQY8En@arZ@NC!Zm|n<)del#8WOCg5?2yKLemWe}Q|^7CEC(6mDGRO;{|zAa^bDEXi0ZN7hoBlBW0 zYgiu-)Lu*=e-5**__w@8gj4E=@H~R>f<*6hosf# zeSfd)fmh#`{%|icc5{^wq!ZAAx!aJ8Ryy(&nu2OM5 zgPtAVQsOIpw#2uTG@G$myZ9V?=Gq;@=d$jwbT(?KTU(96$8uS#D`1V{HPZ1MXe(62Lwm}<^;U688}IVSdJqLwq9Qdh3skv1^6<5z~;yG)Pverws< z9S!9lOxKrwV4finD*xehZBEnlI(Snv^yqWK8=b+KO-1A}W4(B3_w0B{oTP3`85ACw zgi*>2;o7%9w=8SG+%j{YYh7+?)+3aw=s7pZ8hf0W=Tg4JZ*l*~W71yqUPlc-yWsQW z2fs{xvd#_byFPu~M|~Qu>eIM^R(-n1tWS~DCwmWY^uGPnspvWWtaR#>$fe7k-a6{l zJ=CWSsylceE<5t%GaIQ7)G4VOQg;fV zr9N$?-iTV-sIIyO{jRDzuUD?wadc2{hu`7$ezR=NjvpEWYMUd1O_kK67(E8H))eCy zQ2XkDU{jEDIf{~!E5C`I2K4JTTJ=fVQ&~&=^7Tpfn-4eZ6K7$Yb;wJ-T1r`~rCwR} zX?VB#wA!psf4ZFG=hdg0q1uA7q1rUzbzh>7k~3eVk9zdy!OP)&RK2%%AC*X*T1_8S zuIkh!>Yd$3oult>GW#gcKF^$T&ej=_dz8AAHpi0TeMr;P9bZj`l!TSbxP!6{nV*vs8i3G@(r?&19^}HS;G*S2ly#_{LZ_MB(py`E#|uR!kwSfF3-lSlX!f}_@eST)`Dgto0_U@COp$=_iyaMk*^*iy@ zlf->_)QzrwXKrfN8dYbkdXm_!o~-#2{my@9ESJJq&dpfPt}8P3mHFaVsVfz#uGGg% zU9tKfDf90;qW2v)`=49rf67fcXX$_TQ)i^E6sZ0uPxU|Hbw$ji|M_-UU6Jqnsdc4i z`LyeSEqnZVbx7)o)R)hzD?R_F!L_gs_YjTV^2OiQ)_Yuw76-@k_P>RGJnQ!&245q9$s4g)mOEL zbjt2t#ykzoGj^NvM%vy;)Pe6DD*_=7o#Vfe|Y^5V|)pDW7V&=U4y~>El(&dqn_nLY) zqL-X>qseCwwT4IsZoRd*~G>eGmQT@;SZjE}QqTIcbdPPW;VD8k?Vk z`75}|#=S48AzvFhd-=1ZL$Gx3bVs%p7an(sM}wz1u$%dyc?R5|P=IoNa07kbY|=^M zY|HudJl{>u?G*l`%s=}wGw19*_zU6rrjvFCujGr!U&uEXO{{r(H{X;s{_Z>gExsqO z!ah@wWrl6AowsXQq4_ySE%`d;q6ejH*kPA%NS_(*r-Tod^tK$_>bRYG%yb+7e=|>6 z&gF3r2<}LYb=Rg{A8fn{bza=-Pf1xyg*SWC>ZKj!ak)ob1J>?H(U4zB4#MyB9(BR@ zJ_dgxx^!vQH*pigJ3FrBsf^W?9Y?XB9y_4+hf~CE%+bB@N$TI3gULMAa1je`I~N?&EqCbT*Ti+{Bu!@ zTwoeuPm6`$lNxNyL%l5S=u@866&<;8bC0GHmsHJNdlTs=X_HD^?6kR)^pSp4(kO#> z4rv?HM;bN4AHEZ_RP4A{mvyA}NTW2;==HEP8bcb*C7!IG_~#N&FKINFczQ{rxx~{; z8qFo1UeahT@$`~LbBU){rBNDgJ)}_@Zat(?8g4zLQ5tSNq){4fJ)}_@Zat(?8g4zL zQ4VLrxJjpCYSGg3cu()m_+4L)`8@)(bn%!{@DK7XzO!Rkmb1Sk&xBknPuN=R;s-$w|%8K+!8B;SRjtDP(t z^!51EDqb+lGA)$lcb-s{g$)%JHZy#drxiYh`JA!9cg4cszgt-NGYdn~p7Jz&)57LP z3tL~Xu}B5i1?KN5^A;LY{*^aM6WFhOECgAj?PVUV7VpG8>ny#@ z-%^`B7GOB44|C2$FrU1B%&P}j<|04Rm-_};eB^s2ZYNb`@?y9na`5NRG!R!%=0iuelc&h zg@HW$GieJ0^Z5Q4mc(a)Bvqb-7Yw9;)V=h0a4hIj=1yhaM!auC{|E@9IXwhk4@QH? z+vK?{49G$*bE&*eMgw5rEs!kBJ7Hm<1!Vm%?}&wggCKQ3?|_AYJs?FOuff8=PLTc} zk9mt=pbn&s&a1I7Fb+h9E`19*MSkXmEDXrK(iAoGUTH8;0Zq}&E49$Pf0_Kt8%GL* zfdix`%Dnv+2KIvd=gB?F{0CY|bIj8v-=Ncl03%y1^T=j}4GKdF3l# z%?cY7h7=Ym3@Y>~1Wb2P#(w7kZrk1OIKWN4dmMWmNCLXIu+($O6>@V!C%5f#Kd0-G zi`zL}=lQKkt4rf@)YO_Zu0~A_p+1q?nabUqsc)rnGiT}v)JIZVP#;J=g8D$}LDUVY z2T(Vp?m=Cj+JL$~btmeY)Oyr4sdcH`)H|+bT$Ir~?g+mv8OJmD%{-ndA=R`Gh-A22 z(<=0Yw#)ku6m6GpY52t4t}p*4?n!f7F5^-U`ZtQ+rsOtQU$*3?6y2%l1B(8wqMH@X zSl6_FLec9K-KywHMPE>Kfuf}{$Yb6QO88A&6nF?TX)yS+uN5w*HmeBKe9_{_B^gaX?Mwnb@#$Lvdg?L3X25~E_=A5 zx?u7mImfF@Q|u_c6(!4hnm%aWaAi8NZo}ykFB6F~xtOc_fnX{;OYn6i_hNMqj(JR2 zcdZpA+-fD4S}AS0B<9?<-RF?fZs= zv~Lx{78ek851TDDXKnWFVQ9;}b=wJSdT8Asgookhl-XAUp>4KAUsVon>O_A(=anrl z{-X2BL`GHf@$yKsQPZtJn%Z4I9dyF-WQiLdo2E~beywXD@@3BlnMbEAkN78EW-{)f z{}zuz0`~Jo_b}N0sNiWe3?^unx*q!YZqFCV!4;}-NqZ#EPW%ghRP?*FzDRCur}D2* zrR@p)qZ!po85gKIMK>?MNN%kecUia>M+~8~4rpoH4lxdD<{RSYJYIS1ypbWRL_>W~ zjK1{Kmn@LnPb6z1HlJ7aWAJHOK4A(1sRnzYzZ zfCPa@rft)Nrxn^HdworQO9Om19iGo?gRM9fW^g9_NbO+tBCYY!U+awzb6$MmS^%;=Ez~$=DF*l?)JK|gRGWqCzteNoZ+uPp3Ao9)#1IsACdS= zTDSv2zsDc+-$cCUN;<68{N5=+e=c-6dE|K*9*y4Y*N}UWZ-}3IT(C2GLeOt)4<44h z=<@p^jiu4P^TZf#<%#46gOV$AA_&7e6^3<$VRcv-UL*_;hlSw4B4I0 z4@nrZyNBUg;Me`$kHW$*MfZDNAq>OA!!WZm`l5tkX7?~m z(ESd7KVg^?7KUUMhJfy`p-z_$MOG2)t33&qW3_p=K4-9Lw2S*$YAm@_-;1z0#q`O#OcCDFfLQ+NF9coY&+tWlwqd`F_%Fxzu@gdpD2lm=n}a!tWn6BcMJ1 zu7`E(S;*{UYtL^+ZMJ`Q+m{dulvX6&%^oBF)xlba?178djbm3?zm>K!gbav$U-lxq zbZw%Xb=S(deysyTfwrsYMT{8Kc9lFuc4!f@L#?lA+jl>woius%n}0LCH7XQn*u1cF z_frea`_UM?Uul~W^t-wH=Y8avJVR#wqYGXw_nOR|8wmO zeyA`bXI4qZ^{9(Mvptoz^l9y-Wc=84sIXF-wWuC2kr9LJ}29taX za;}g|qaR4Sqfzc`E4>++NvCyBTiLDJISV*_E5K) ze#w~w*UqO%LG6x}v%uNgexuwgHw+$i!j}%iBNOd9+*=03zN@Y0T1ZW3n>kaG`odWt zL-(~%cV&NM%?E4Y<4gLwYSSpsH&KT3R6je8{$?EI*X~1ZqQAL`{>DeyT}pqml>R1} zvYbwt9j(f-^l$s=qsP(TjOnMp86DQ&_~>uSBRsij>sT|O?O2Jdu$-l-$7`2egiDLl zYkRIMkxu=VNs%QBFPD#Y&N?-Ga`1ANV_5A5`0R4VTq$=Br66zN8r=MA*O1_wqrAww zO{#g?E`z>k)|atUO#4taHF$Xm?b}$+Tq(&hwm-PZFxStly``KtLpf{Vo{W0dK;`_e z49YmNf$ZJwtK1Lox7>#$JZ8C{W0m{duyUV&t=vnQW{-GdQJN~(X|#uwUB(Ulmchas zngiz9rpP@>-4Q<;A~#M)t^}FfgmX`F_rkBJ4?fnt%`}L9eR|QR*G!p1jr|OE-D1q# zRkvuX-+YoYY2N3RF$-q_o9EKJ!#M`B|61x0YlLBSh;?AfqO{H2-O*Kt%sLttmsL~0 zxPE+5{@b#-(k}g}`Ct5Oc4OapFS1AfFMDqT9oKQ)dA*T?Jkx*H^wlQU<}*?nZ=zPfem z)~)ZVTes?|PbikX%3bAu%RjN~XUwY4p8YVTTkrg@Ua3e}e%&|Z^n%y`0$8Mdt`Z|(QJRCl9u zFXA+J1ze~+)=vN2GM!Hz`Kyh}9=|xxDxO#HGPQ7jRCG?LzH|{|$12Uy+&WS1L*xFp zI&8ZX-vn!6f361p%cFaeZW}7N(0x9q&B?$g_8i5A|Ox|1VsK8E9B* zmxVv<1bi0HO8z>Zt!ENXR2*gDXPK1hN#f7=S>}IQ3R^v7V5RV>>caU$Q*ZugS-vUH8m(uxnRP`fC3-8kA zk>Wo_ISGH%!n>w{!Vdyb4W)Jf#lPRe=8JI%|CUX6*BJ|&U$^sHcmc`1{B2i}?2Y0TOWZ#!p&u^s7cc$7XTY9d4|VWX#Xpdqm`EQ8 zkrUbU2uIjUu(r?Spz`B zimeg1o#1y$qG#jnxqSi*jEs#9PmK?ZaJ1azLF^R2<5{wy;;?2zWqVIYcVA!EfQk0p zTPeFIvTU_P<=8Woo+y5u#j&ll)xssG;l2s)(Y=j2wlwD5&saClx&FqrN&A%EdpdT` z@2}7V-_d>N$6O`zdmi3R_p0&I=+{*TFLXb{^AV&wDL!TU8R!1~iszGb9CZH(|AV#s zaU#dq&$nM7q80p_T=*fN`e+TSet$qT`iZaN_@_Mc-PNh@t^5ghn%|qy_f~Z0dHj1T z1MaT#CzyBYTN_ImmiVUdvdzG`@VhJbhIgKKa+dRUZ1-0tK6LjdITJBWIRDL+Cpc@e zv6b~GdJ@@V+BJp!CdvTcT%l|^yLnCQn=7ob&J6Iql~eGkT^0Y{iv0X{Ms)5^`hilu zr_gzQmfvdD1IIWocZ&7HXZaa7=jC)xF66;^xmsi-eZBvV@9!~XSpFt=c6}CoU>V=r z@8w?adz;{M`?1?Uq;Fze&Y3H74;S~Ca(=Axy`#SDRDYPFs5z89cwMCaIyxSzj%d8| z^-gsmI-Z1`m2H0EttF)&Hh8D)eBJuS#>(xyklS~j`;CWGX_NeTv~PK?`#aV$-_mnX zVR*dTw{xaN=DE;zzNOaEi=S9N%RH}BsIqqM?(fh@jeNp_ASqKf5*Rb{Jeat{CwOqEP?0S2YuS{n^pzmX@Z|gFO`)n z)Z)oDY zVD?2T)1Pgt;eO2}+{t$_=kG7!ocg7lSHFyN^h>#4vnF=G=CKE_IV1b_Iqss}c}eih zFX^{`ML(|e>72H{8|3#61 zlRv|qU-WnOySJ>pPe6Bw-=lNi;(j>Npl~bhZ~1(PXMJvUgZ3Wh(+gXkI{o0kzV(#{ zfAiM4EBLn0NBCAZGzw?@7S=pv@O^=ifqL*J>!D|gd8WHL?fr2(+5efT37%2do!10! zw($N6au{BGpS^|i*k9%xwZ;<3M)NlEQE3}}T6H(c47!0Le`uXv?lk52gD*?Jpz-L6 zP+ylcbTi#|r`Rye6rEy_7@$5ujDmm`w`|Uoi`;k$+jJ%ONzMpg)d+?KI zn5W0S7qp5o@9q0~DC_N%c{gRhjXKc9y^LGAm$4?imoci>@cR$RfIV<@mBG@MH>Vk| zOq|Fms>F}~m`?5#IS@y7|kx%*C!n?vMZC(!|9mv@>>6hZ)XY;lM(xaF< z$R1Sfd)X7XWcIJt@cRk-1h>C^@V9H<{`1eXr;6Rb#n-+!I3A#jQ9LS-o#A)7bms6% zlV7u(wRxqD{rMYgd3fC^ok!ywXP3}_{qza)%jfTD?n6#jIh`=ytg`YK+ZXbi{PXnW z73nMY=M2NiEf)oi(y>-L8x%cPYSO(R_$apiCtpEMFZ(q0?ev4Qx9+@%J(o82+^!Cm z&9$*#(&yg$f{pi3CcogjT|YAEy9!$jdtRj)_&#J)-n6Jb7L9>A-|p2Vch?r z;G|7wd@sfCqbQB0?B+>}z5%W?vi_`-FGF88lmXx1;vRF(&e(IO`UbYj$hK|Or`fyD z*gZq?{uRnV=X_4Hhp4iXKFznSWKFP+cGA1rwig4>-k&&rMs)lvU+$H3ZLyZRQ#-t& z>Dc?@^=S!pX^ZL<^(jYvQk^<}eSprl^|8xqIM;(zOGqpeFy!}2g5?7jD@ zJ_T3z{Q4JHJ${YR|C7I}C-a>Rh_4luC>K*VJ-S^=^RurYD%Io4%>Wwn?i`we`~b zD_^L`rp-qETj&>}eO;~chy0YzR8=Hg%dCUBD{z1%>yB28ZfRLtMBOgdZ>IEQcw^S2Q^hx0RfwjOjz-P%%=EkXm zK)LU9P~Tx&h5KbnKzzOq6rV|;_^$wpAM+>!UjT})?nf1$8KA;TkFXk;bnX>Eh10#L z=$}(>RT(?P)JwoyaO?XyYtc*3Sa{bV;0M5K-E=+hQx1*;mF^utSatPV*xcj%+kuit z=O84H>ML2(b)ALHOM#NF21q?l%_Z#l5UmMs!2KQI`+&1Rva0Lr7Mk-E*MUER`-8w~ zAiC_-IFKys8nLi>5SZfs4j@_8)o)>Q7x3NSZvrY^?*(2Dybh@Je4l!u^uKK3U5^2& zE2&3-kaQiiuz3);9DED#YG9+qcM(=}%{%$S|BG52Ogbo}@TV=^MY9ghI5_R#P6t~Y zOgacK;TKk|ZCqG&F!4yDruyZ?_YXeb%{s|Cc7L!u$T}ubtcXKVNn9&jR)A=NHw#{JEo_rqb*A zx|7fMKa;p237^v?Zuv$1x0U$!mH2Nc@oy>dr;Wt;T~R`>iFh==T_yf|O8oz<#63me zXn1`uKI(p;gx}9g{Hsg+-(TYXQi=PalJI{};_fSP*O$2eZ3(|%pyOjb18to>TRM6N z+WL2x-3NE7!j9pQ{RokE z7*VQl10#ww+ZRR%&z(Jyf${W2dbAMuZH;Jva8n~H(V%uYoG^o91BLp110bTo6wl4} zlkw4Q2fO{@S+Tj1F5CZza`C$#VSwyphSMe6we8W<+S|I#YPlw+GLr*inMqROF2Su# zGBvroDWr(TqdYKsDpBMfkMyy#TQiZ}ZHrL3H#I((o@8G|{;rtsaHz7q8PT{}1K+g+ z`Shp@8L3Nlo5n|{+GR0rKPm1#@19P@+{xzI?TMzYFrLkppyt{B2~W`s+)VD?9PS2L zXZSTd>nzX92ataTekrTazqOr*z)isb+N>%ad;^o+D#`-d(+SV7wj zlKglWdqW+#L6rP?TFOJ7CWYZS=G^L*^GnI8GvdRoti zw3(+-iq3O90|UDXg^2&aKznO{YZ2ko<%Z9qhkG*_7{Q)T?_2BgX~uTM}b7QlsU*U;986{mLi;@>*1$IY0yt)qx@n1 z_l}?QeYeEeh@xj9p3nwc`qRg2TYmP+H9^15%G3r=f9}VhPyg{j?y1msOK$+LZ@o$9 zC4F&AQaX!j*4cLLZFvQco~>fvDDgjiVG*{)Ll*_#UGa9?i`Qajc=eLt(GRiC{D%)D zj+3V4(s>@c_d{p&{dDe>{OK(FRmbkV_srZCtX(tk<|nhj0(?t-RmEdx7^f?}cFF-*MmP&(X=vEopi4n#9!)-?}jP zu8$kp-Xz{fAFsalRSLI%L-n-}fA!L9A0A>qY;xiiAb@bQQYyoWOI zjtqZ;42u8i#5E893cZo?;yU&UX@52k?!MLJ!I2vx`Ed8AE+`+WFEAheR{8MdmgCBU zf4~O1G=BE#9=-7RuQqw`5z3($|0g1OzCJb07%uZ^Yu!?q5Pe(f2W zdT{rB|Lp1K4&q0zj>Wt2%nH)Ik$81Kv5oh@IpSSm(!Da4?j4bI^B$&~cc1RdsORjp z?!3P8_lQ;*o%aQNi>SKXzR})I4RfpIry3vbUH$E6CeZ1fJowg*7a4;$9(=3kMdl^I zEicYp8*Kd1%3!0uBblZRevJ8ty<@PN`H1YdWvf$T`mi~*XVN`u_CjsHX7`Y^m%9AK zPUaK=`f#RS%Y9!_%Hwn-tol>!5y-Us@w@H}v(zV8*%9o<_yGtkQZrQLrsed0X( zQPvJ!d(0L3MD`LMpsZr7BoAca^qit5MGb;SiJh>kiqHCBM$TYJmGt2 z0D9)z516qFg5XXPPTrOA*Fik?&r`CaVTmyE9SiT81u`zBjsaN%q>cay-1V4+%_9!K z6NqSCcUsuo}!n?YF;-~!s;kADNyi50}i2fOb7yfAr?>Yz+z3vkdUV44eZ*lH+=WYT@ z{?$O`!*U>5*|pTd<{F^VNxx$Fyl&xL+7A%_8HYdO@X}K%{G^4=T9Zk>n}CvIwS{+0 z1EITUr-LmHCLIJA|C;L6H?3V*HMzg0`pCkWg-62=mMyG0RC}1ul|5g3s`fkjY#A2@ zy#;)F(KCylUBqX~P(vSCT2no@^tGk017BbEi)Ck)L4U=mE538Z!m95tKfQcm)niv4 z;nQZ{x$=c8U%FCJ1`7}>s<(b0IO&c3dKz!z@9VABn)0u4>)ATF$%|voeYPaL^q^7y zpUX`i*E;&Ua7)kY+s*&s+`gVGKcjl!zjkilPP%bRM*n=7m#F(-iTjxn_X8#FFO;~0 z0ej8dfWBZhm6tMQU?Ppd^k8;(TDQfdbNh-8y*njTgnm3dXjFWK(9>Hym(hk43a-e) z`(w(rgD@E#+lO|nOoItW^#tTq`F(`o07$+ZbMVU#&vc4 zD%&yFH8!lb)TMf<{pMqC^L?L;D)Nr(m>;7K>N)5N-@EA}jb4f>Yn}_$OYM*F^I;8x z3VNy0@icl>Dn~9qI55!F?xHfl^GSLn{g+rLflkyI`}y=fB2wF1?ZWFki~1HdBd_NX zjeg?m#OLjuJ@eVpFCu;*oi6G?2SPGh@LdokzzIdg61 z0F3hi=i<(CK6Lh)mV1A-?6EJLWzJE}Ia=AAoWV}z*!!P5wgtNre-`^7=Vm{{Johwn z56w#y{?&%o%r{}qKJweQFIe&y55N8G&;R6>#BqI7 zXbU=)U-C_rtFXg4%e=1&x?1K&dHHFTt90^h?MD}Lr|?&9 zzq{$C+)&fV?Kd`kFlWzMo@Ji3>K&%V=-%hSCOG>@2C0B%82=X zQ2Oqhj2yRPUq6g2%45kg`wJ_}7m>xcQuP;==5_L?UC(Q`?)w?F{pffZcJa2medl)T z^xl=eJ6S)k-MWov&o0}uSK4nlB_Wgic(mWpB=>xeQ&!J;8t3-?y6@*Mv|sO`-_#?1 z>MLb;BE312;b{T?ocF#h$LEj>&{R@r%oStL`Su4+JAO$Q>J z+ziE1e$#{-0xFQkjXB)RdxK}0cTWSOd`KLT*zg5k8ehKUOi_yhhf-de- zzE4*DXnfr0#%~)mUFZd{zx`IVu^*jp+?c68a;qOVW~vk4eS%-5aieW1_nudO|JJ7K z=rdVMCKB9_Uj2nz{rf8`8Gju9m1`sKS4G~hh`e*JOGv*Y@~&~r^PxX~f;031-+Y;= z{^G5^FP>>bPJWW}#4VpXe(VGHh2zAr4}AFekQ<+7_*O(0cRY_`YxxM@v%DR+?d=0E z{u^+A$lV|JC${|TD~W&mg_gvg-|LWER_tXDyN!wHUj$L*85A#2|cGFXt z>)zj8)BdCU-(5D_{E)eC{%H5#e7@x=;TE+2O}@w6L%+7W4!G*Ny6z{qV?NDq75C9U zNZ3t;;qI62A98*_fM;;s+U^$ad)Y<2-z44uKizAuve5WBbS6H2Zdz6xKlxbOcQ0i8 zRGuhr{P?MSsg!>jH=cO#(`I~89?w+&U$@%vvvNJs_<5}Q&Zb50Zu#7aEADLi$_;lm zJ=t()Q!V$0)V40Zkvq|Eto`)P7i*tba^gfA{(bmo?reIh08N^2WVSBhTbUQ5AHL+o zi3jg|_IAF}^_6ek*);s`hhBX0MIhhEeDa5PHvNa6-`RBc1B*}G4lVbmpE$wyE|+lc z%$iRp`qqqI+q>r7+*kfe>sS95skhu=N)xi0SWe&pTbpWDVg-%q`JKkofsy&F0BcFKv5J+SD+3hIX)|5q^n zzw0mN%QIWwiZp(n^8+{jFCtIZB(AGhS$&0Xc6FIKz?!D5%mG$62OnL-_d_%`t!9jR zC*?HrTeh6+JfL#sOhRd?Rt` ztDoUL!(8BY<^dn%2S4=jpZ=Wk_=C)~hRs}H_^sAl?ydCQAAGAN$3?!(1*FGHxVgZL zn+q&rZt@s1vCn88f1kQ{`+L>>gn|CZKU#Y8SfKGykNST5IB!Srs}la+?fL(o&i`cx zJr|9iB}1L@dX2y6dAjB-Y(5QSsOggZAF%l)AhLG7U}5tqAbh%>x3Kx^K!*0NXDw`g z8c0-KPg>Y~6j+0M#=_>ufQ*k_hb?S=1jty|b*M;oRfSz1g{^o%KkeKfaPC>>Ug_K~IQMqB$-vXjt+78oZ!|_QPWj>Ibj9f-H@U7IXbNPu;xCx> z_sg2=WepyS7z0C77~={pVT>zk2;=U4MU?sV4D-xKH*%1&vYuhg*bo(*qM_1!^jS@k zl8V*NM_0#YS{CpB*1Cz^%Z_HwO_-?5s?Vy!=DE=M=+|j9dc;pGXPLY;s4(W6k2ZTjt%%~DM` zd3=AQe2dCweT#q3XP@KqJy{GA3eb1Ti4@b{|Tmem?DtPpM?rJ3b;hpUB%%CITy^NpdP1?-e zu;kOB3~`dILk|HJUVAX?CGed}?t3(Qa?`z3DXH;|ebB+PXTK&o<^DdVK6W4SF z#}(fz?o23o--!JP{98^k7aQJ+-GlYFXEqrtoF8Qo) z@Cr&kU$(xyWSjB8#m-iP`Nk{!5{a3KD#}9iI-9DqnqP7>;w2u0H+*-xywYCj`M%>i zdl~vC=0T;w!6PsynI|Lze`NzPxIAC(VauT->uu__pJ{OPBqEJxTT@Pm<6> z)A+q|gROtloU#4+;{6+HYdBZ77(U$51>Kubnw@;}&G;{x$6t4-DSYib{<>FE{+wH@ z$p0eePo1jhPx+hh3+D0XEUxiKUs*A{%3JYseyyTE?brBIpDOyJ8#Ml$Wvl2XvX-@fvN;CQsYoF+-5dMKGwdcg}-xL2%SKpLB!cYHp%WeYPnd}ZydG{0YQ`CX|jqj|}p zy~cyIy`Q_bCq4nTnZE6*Os1)OzD@dkO-J%|I+Cx#?<~t#&beM+%-49j%g-2}{Z{bZ zx9_WB48X2}{@|4*iQ`@_pO?P>`=RS2l>dY?I;dJ~M%M6SO*Wh+AFh9><#ZHRDVT;|yaBb{F1G&fNP)e7<8V7aW*6qxvly z*RNrpI7hf|u%7=Q>rCIBD-ov}aCDec9A{MrU)Cf79l@IDe7* zzXWGCC|%JuqxeMc$G4r>+4}SeAAR5H>f8PQ7#!DpBg#iCKCEsxHjln!6#PrJS(?dtp}Wi;*UJozPA)sGBSO*4n6{fp=v z$M_+CCBM=>)t43b^$yP>tIqM3rcL=XMBKGH`-_aCk)03eIV>AZ_D{eqKXDLQKa!{& z{!3)dL9g_j=6)XaA+Hcd^xDIdd=K!8#-p~PJX*ysiYLtSB!2SuQ13r5ys`OKIG(fj zpFJB)b9VE*-+LR|b$2#1$;aT_x-JuJ-*o#xck8weeI#apJy?zpnYEbs{>j(>XsuxB z(`XS4Y4OM5%|Jl?Df6Fm!@gTlmvn%lr>JjLuh9@~?3V$hY88$=@fe zMUhnC-=ak*5A#$#P8#db-#eZE>%3RuFS{E(t1T!CKk59b=X%Qg4?6#6@vOwZg-N}h z`S{CTNY7FW%J}bh{^R&pEFb6p4E~kkm)(;dR}5wRXU^k)^gRB@&g1{&dHkPt{uf&@ z%jA>2Rtxq;gTRjfWuHY}9Tgyh3*(oe2xOeM^N;K zf#UOs!wU+3(76T0NA_MHfNlf`>n@cauz3)e1iuAHULO@y_;%+ORQUG-S3!3j@K)do zAa$!t_kseOWheG8z+VicAM2{MusHxy)s6~^uk6U=78KtzK-TD~UjUncF9Xq$rCtIq zgZ>2zn@>6aXMqj)GuJor3X1Ph=N1&-BS6+wM+N2om~#ut{~=%-d>Vnumz#jfm(>BRfl4CVca=h2V<|I&ZTxVf3=Nt?lLGfAc z+=AlsBl@xT!RIuPq#qR&-OIoafd39q@}07<`5B<<;nP6XLqXBc096kkb9h1F4?DM@ z;yVbu8MW{PDuGFC_Y<&%1?9;1}`Z5tPs|42Dl17PXbk+1m%Csxdj#fBfyQ&9RxCDcRgfb^E8n7x;|xL z^M2q$+>;g>duqDUt`Xe8<{{uZ_zVK+O1gGh*nB6j2KNpNo4bJ5L)Q+3|4~87)#BWO zk}GLp*LBWK8ce<{2P$7E6T#+-f#M@bKA35;-26SGqG<B9tRlGyFYV^;lJH)sgC% z>e{Nq)sJyC$|Kc>^kLhYV|?WH2-l?Wf!PJmFIZUh?1HazNy^I$zR%z17oA!JX3^LA zE4%fDRi_vIXc5<$Eq-Y6!m8I7|AN0qmdq?!SoOk^mzGpjJ#+E12zTt_C;2;b@zIO< z5bnj(m+-mTOTNQjd&&8cOJ^=+L-x|gxbXau%MM+(u=Px_O-={Bo zhQG&_KDo52>aoj@Tn_)sU*hl4%a8H*@Uq9aCjH>DNBH~J<qoIohAN_CH$5UI2!)G z694a&_}^M0-!&!ve^nB`twf&b5_xhZ?x#!K{U!X?l<-3*ACv!Bi9C;$xF0X!$9c3^ zcqyL<5yu zZw3aoWheGz2RDz5?Mjc}_FN0Y1LjVcp{e|E1dR+4w7)J#q6(dzm>8QV@_^W5ykOyF zI@logIv!cIP>u6Y~`&z-sXb)4&tAU29Xs$uzD#5% zCvw^7DJWvvmmZmloQqQS@fmGhL8JmTt*qd#42sG(HXgr6DB9L4TrlK=!anBff=x{2 z2gdRl$>HUX)xroqJ;)715q4@MgJbvP$wSU#MSXPFQpCp<)4kNou}oMB?(5$JPD74L zoIABlzMHdM>q?vR&Ee<3=Q;UhKLoy3o#eddzvi*as&A~Tvo{l!p8ryrV>5IPyR04b zwLwy`TKgESHRpR?UuHf1If$2?Thjpj-1LB?PiFUPap9iQ`{+IXrK|0m_=$7RyQ+fM zHBiiFmsN*$ji;2~X~$>U_+n4=ZnI8tF6K7jn|(Q-T^4tAo98!XEPNS$(Wf+vWcPHg z`|VHvi4DC%12fN#|IMb?y2}5S^NZh`bmj&-njZX#4Li<zap7Ys_ zO>6SXqji~{GnZExe%4j~_k4C^zFv5K;vo6_W2N^l`+b0Oo$q_h$=AX>MbA>|o#FRX zmDZnnVnu>Z+N8x!hxuD_uhY{1P-W((3M3hiJzW(@M?SZyIyiNA+-~fLRBHXuX9sTp z(Qm)wC%S*BeZrmW`?aulpKyDza+4>aE!l;*5#q4+SUo@Qj_z^RvQN13^5Ep6RV^n^ zuur}wvG~SCs{(V!vHTWY&VD@m&5NL!)n0QEw^z6s_By>>*IWCGvb|XCb1H6YD`9QO zO2d$C?D?|Ko=85ccxJKHSvh`{`BsYeTeJZC@Z|9?)*{m!YSFps;6~wCQt{1O!mc^~ zMTOPb$*7IM5cV3!s^9bM9DDrw9`R}R{R6&(;PV#Q4)KfG>P^d*$H>%j5*?m-53sFJ zI%crrK`-I<&|BVo;z7PK4BqUYYd@Lyud>Ix)9lUK`wWVE`qSU5B(uWsGjdSp4sAl7 z=T=$UfPiv&h4%*{wqXJF!rKgZ-W7Q`+YRw}0z0zTv1yOkC?0NMDHX5}?rjmv{LDVG zwNtG09Y&>j6?RvWhy3i-onhSbuBLE!C3j9g%r|hf*Ns0mcgs(F6DYsgnll@)J-E@= z1KksG{Vmq7g}ghBji2uRIZc^azROR1i?DS2Cj4pa?d*4Tit#}YPPQ7;-}Cp?OTJ

    h0BwJyA|VJN@z$mVM~UUgS;Powto@3Yjw(r-pWvwUY2-wKCz=daG9A}cS~R%^3x z*pw?};_dzBi@UTw&tZ=;SDiTS(?yqe=ppLM={D}|_><}02g#!aE}wSFwhTLpXq~I2 zodmR@viftrHX-{p;;O|q1HCV{XttkH8fUOwTTPs_$&*Gt%1^XvGqy}jyOAB+o6Cut zur#6aym{_+TRtXl%Ikc1e%06c<;1y@zEQknJ5idZig||(&}r_X`+r;hZTV-&zb7{T zbLXG#_^QFqcL8?37h&hS5c{iI?5`GKe^tfzRqZ#zUA=gdy7A`RO6)u7S029zn<&Ny z#-NR#p&oAG?D-bp4Oa$@cP?)^`S=GH?fpw^b+K#xo@`iEhS*PO#<(2V%NgvlyNwc@ z*Hd5d_I;hmu?2ZHBiC)n*TLOJ?Z?kPSY_)6eJ#Ai@8iTjN84m?c5f?k z4ZU@C!_~yC?_mA7di9M>pI+IgyW~jA@{K<{@Z#LNW}7_ThdK4@vl|juw|wreX!~B~ z*KE}2#y6fc|$q(ks8~!8_tXqBdz>7nq_jjHBvih^xGiRT%cN<-8(%W+8Y@_Z@ zRGRPQI}X;5?@)kKezg4RY-6b$r}>8Vf1@A&m&CKCE%8&nY1sc)v_FMSEVkjM-#FX2 zYCx(xr0b;worBL!&ejkoAlYIw+D|tQDgGJjCT9+htGZ^%mCRpcOYPhH^{qCKl>Wju zH}Y-otCxHjnb1+~z4*VM?N>SK?kL?GB^h)#)bvlzHmdyO-br3vNk8@my8O(**J&dO+6p$A_f>N*ANP2+)qYoeqHXrrgV&w;)eZKJys8!(pT_T3 zxtB^ZDsO9Rf{&iPeRb368)i4Y;$&h`*Z2nERDWgXIOE2?nX{Y$t!ml0@?@~L1)IlO z>d-f+S2ORKZAvf~Q5rnWYU=JUl{fDWuJC@djI*cS)6z5qAJ%5-55C8~_3~5jqz`HQ zZ}6He;Uz!a+3?Hi-~EE*k=%29k7Q15Lun%p|GlLaaMaVwUjeUt4AYFw^LIE~tME$m zu?O!w!?ZtkUt)r~raUJfAB~RxX9k`(=Q)(NQu{z}r+PXOeC;KEU*#t{ez7@U>kgYY z$H=2v=6i|1slHrep~g$q8v;C|xD|GWJYwGfx1F0L$>T~qSAD|r6rbnf^Nljw=dT%l zSDskq%lGVAbI+vs&d2|`e_5Ho?4;QnRy{Ozp0q#njb*{fXSxHvQ(lZib@3a&VR52W zdZM&!Z}qYc=Suh;&ZBiJgS{{PG#qgo-cDc^0)+do_W?zZ-l3)^OgP@%$ils;tb&i_$XNSxsNfnt^hgH%#f= zd6qV6!jPW_$=6Epl!i$nkIKB#+~xEoHa+60bgAA?UtHuHaA(P`j4d0}zjJT%EN5Sa z-qmt)hB7jiy@j(dLzGo1P1T^~tG1BjJj@Vl(^8sEo`$(`z_@=0)O$16T){Z=OWNal%4Icjog%F-hH16)+7|jBrS(_HvH`j+sw2?-JfyqI^y!{% z2!HC_$UC@UebQPG5fXk;>zB{51A_Jfw4SM(EZo-plhx5sml{Pg#qWRN-tf6L z*7OJNIg@sBQSOI-srn7R_L3_fP9z3merFd4Km8%|($N2be--mrcz&_E^FS`r$GNe= zud|h|q?2uo@nY!umXpU5d>bpVXz|eXd>hO8?OcYQslpm$hB@M;gi~1r%cqTA%)HYd zX{<`XA9-SPINauZ1Z{@%hw3A&yuMG7zkg@$VdlZiPY-2S*ZZ+ZG`7Fz3=8FO}l(X6-!qovsg;KWj3xwki$#_YME+=&K)0jQ;qBs?lF;XTEqJXKku=&c^6)zL%rl zpnoyvUB08W0_CQ&FV8VIPqOyAoOG{T6zrX4jCEgd)hQ0_*(w<+jXDp&IlK>my9)R&e%J6@!S7mrM;1JH>%XsF(EWSW z7j-{geR=nh>MOceKmG^ZpFQ#i-FNfb%5UVkujNOd``XPV_VDjKo$ms- zErR=Pa5sTVMR1=5cQLq2BDjO#j%+@bKfC#O{;xNm$p7i)ujG&YLGqSA=l7?7kR1C7 z@UMXn1J44F@LP4=t@&TQ=Of%P^TGTlSN@Cq;rHB_zi(x8{=dFwO@777)%lIT^~c>0 zJ@m)j8Gf7iJ;nDZTi-m}|AY5@IKQg)n*S7Bw?6-w_cY~$nyUYlXbIr63X|X6zc-Mm zeYJ(Ya^-^G_!(`!|26Vz@!sDsWuo#(P%fV#4>RQ5rt7}k{cvLOw{J>Z{BS0c|3~p( zKpFfdxZmn%`TE}-t-a;%jxN2W=g614FaPGz{IYKzz4@b`e6+jnqFcw-{_g*r|GW05 z^RFLGLX)K2KagK_-P-)7hkn0%`10V75}eo7ooJ;pCjb6yKYH$mx%cMV!<740%Kc)_ zGv2;n@se$y{>m4hdVBE2r;cBI?akaf_m`{wk|FGpzqtL9;PP7Tozp!bpP=n)F1a|c zXVqFb^V32-RJ~k8{asBzKR_MFCZ>Ne^EbWgt}(R_wfzJzVf%pP1Fo$MsI4IH8rq8V z+sQ=jR`I)@HnW(yX-lwpIKiEHN!m<;AANyoE7SBr3F3S}eGxe39?KLiNgKB?e&(l^ z`H#-m1%#=M=+0NKIrc^I5s#1tIYqPj)5pH3er63i_Eou|Gf|qw_^T}rZ7;?dPa3kiV7 z>5TeM_@-r!_mA-YD(BS)5=(|>(J%NpfoNu`4t_!YPgH&O3no1G86Tt%3&Zms3$K2w zLO6}5r-`q8U1HOsG?n`iqkHI6WOr@$8L{U#`=I2hY*S@F8_>toWQ=WP;7q0h#)E*d zfGWeiVBG(52|vc2vzPI!<+q66Vtz~b)$m)u?;?H+`33x_t7ohDRr7lX=egW|uszR} z&kfeILu}4=P41sG?>E11WXd2$^7Z(e*Fy0%gV_Ol{C9M>cia|CaSV*FB4r1Ii9&j? zkPCYIT9fTuQIYJ+W~Q)QIB-+4GoQIR7$43Q=JQPUY;Efcwzby>ql5Lpb-;B&Z(Cz9 zk>OWJyRRAL#`0p3a+Dv>O%CBK^EAQBJ$p8FC}gU=qc0fWl@$Tb*8CudRNJPuz!I#B z6Re96>{z#UZ7`Ud;9T6;#DOGMKKpW+Y$3UN$IbYx3Gm+-v~>rWF>Z{_ck7c%Z8)a# zlM@Gwt1G~MAkCNBt+TH`C`^)<+b4P^#`fhfVlY(OgRzM{>3r_q^du>^s5@e~^vE69 z8W3FgUa|d!TjCL^eB`%})l((T=uF!Co~)MQbpMx3{g{1e(ayn=o>VK<>~V7RDbA z^55>sh@8C9L^VV`8bTjMBWgus1Q)^xE{qCqV~`z9 z=SErw2Pd+8Lum^00)1F)Y9c#mN*;rQNiw_tz<4&me5#P%lWjL;6{tLO`91wPDxj%; z*$JW23L9jGuwu#P_hft0g~B~!6N53%J~oUu_(WHBunkML-0ob4TG~2^3DB;o$!sC$ z&Q2CGY2x)S$u_F|R9vmhqu<>r~WrzO1dQLTS_gs45H= z((=@6JE*adL7|F$k-?}(5$BXD*7`=@?FdC{^R=^Q)7JLe>J1x1?07l$b%vA8%6JYb zb8Qag3!AX8Z(~F--x;iAct|Ag$iFG-Eg2W=d$+Zc{$E)MMjPhb=!EyZmU* zxYWXNsc~;>Z_@-KQ}5;o&gGi0rW2{gwVF`~sO>ebH4&-v=T+m-=I&q*Ic&$=zHX`o zc}^!P%f6fpa;KOM(allUA_*eT+H+*BI!78=&sa2zm48uRvd4I99@E{!gd{p!37Aq4 zkIV1L+~i1BgG6Q`H!jXWTWeqcIwLeTos;W~%oe9SvN&avqa$w|9ob`X$}fvE!;GH> zX_nI_mYN5tKT}5(>Er4&E3-(ZW~o?5nW{G(r_X0X$9uw{x3i~XTYKGlGCwz-9Uau0 zl3xMune?{VWKLvkBIULN_c}Ll<4;nIKZ%pSk|wtj_Q|f!O~Jh*xm`)-V&fV=m3@9t z^DWcYUNaCe*cBUP(6hC32g7k{cwA*dKcwo)RkD4_k7sxJu1Prc7PfN@G9x)$F~T;3 zN|q9i4QBi77#+0np7ahg;4>GTWQHk$J5rhfBqNwf#`M0)^yoO_d!PY68M;R4BL}mc zd{}c^E;BJ!7~4I`)O#?uFE==q9-);-BC@n}p%Gfsp-yC|e`U0!8*wAF{S#A#$z&I` zK9qg5(6_lQLgKpb&GdwW$+n3D$E`aQmKN8z zwv?=a0jh*qLyGF!PsP~~7@=>cz z8`x)~U2qEL%TfJmDUEvLD2*xW@}l`)e=p3?|ccgZW4IT)^+qUFKOwFt_f7jXKawVn26-MbiQ=?4GLPut@_?}Kj-beNn9hpdg!uZ~Z z$7HVPfNv_pfu4}J5X!t5VvN~D3^7{RliJr1$FbB(nbE>5-%?FY=k(sVp|ZDa1M`M< z-qFyR$rOr?EHjTHM{sFMUrVzXa(rsnNUkuX1{%Zn_w}oe#BuHAIJcB7qiz3KTc4}I zWpP@+!Z?%HY}_-Q_LBR`A7(OM^hHK5)s^0r9VtqN&*(_U{_%8va0|m4`kk1clW+@j zw-}xhqf)zdcQhInBk6J1)0t&k)YGT8xYmgJ(u;k}oUDl=X~wK7Sh!Cb!6P*Z$sNDm z?C$J@Sp~&HnlHZ7t@h|^;ZdK0or6UC)tI-Mh#R6s6OS{TiS&;RXY(<>s{=J=Y-nYmnv=rfC?AGmc5On9PmGQ2-oAVLL~c(mQiV&rd&|4Q zSa2qv6lP4{U31WQE%(!tvqUem{KeHGNXf z`~`2aCv69<%%~||!Ya(5>9*4u1NNej2br_qi*2yg?f@n_mF`M66!paSK!p+Xt+t|Ce-JcECkKKQ~}H4 zoIwkncHe=~(NvK~VVOSfLBp_(8KE?YL^YA!(>BR^#=iO_JFI-eQP$%$5hE|$Vz^G%6|s}db?Dg@ ztB}+pRNL%+m|jpAE#(V*O^{C2&QF9am~Oh;942-lnE~gqfF8jn(8ej zM|QAhdrufK>)uk_$V3_nmZ^ES9#CMKzi&X^Y3sOLnmr6>BNf>q_e6686_=R_M{z9t zCJywFDD^BZL1bxHEI87B35xuTS9^;}JT|e5^cOXBR-k;i6XEKV# zPsY}ChRhVr*C*aNkAPuV}wn(NtEP%(;)E9O( z3zNNLW0Qf^ESgt34Cxt$Mzz6R>^IQntqr{jmGx@UAU*oN;OyOYf{2bH`AbmnIrQHR^*3EYN`bX;a#88E)umqLDY zd|!Rg*S)O=unkRa0H5pxAq$L(9g+9J3`Q6zeS^WwcKg!K?)Vtm-#ltrsucm9J7_oP zp!<%lE+QQvRF+yEPID&BklW`xlHsnc*(ofbq|P$JsVzwb?=e zqx}a|f8EZMnwit`^tmlDp-L1$uEo(>6>}jlt!mtC1Tr#~Za~>3BI?+pkDUxfIEVA5 zwq$=eQOb|88f)FBJayXL?y=}5rSVGB5CS^-Tna7G`ud=?yRS2es)$$00QC>seC*q* zcVH}_oC^%6smXiBoCj&iX6#t1fzO1g+gMM35WYH2!ZuiJeZxjipjStrS5L5RJp|bd z+r=p@wCuJDt>5f)7M0`Dkr`AgYG2g0W&C&>BWYd7 zrUgyc5wqc!?c9?eo5*&S_!!=<$1(40Mr+4}fkb9YbUB$Rb$&EsrVHLhXD=1^#BFU& z_4TYx(j&~8A@1&TeUt6Edb1-;2?iZ|ujy~I_D~q9u&m7b&N3>)_K5Y9O_%l*&C+l3 zfYE-9IOC%`82_dij+nz~#Y6u^*$-~-^;Rs}JqspwXAo1}@2;`^Z2GX8*qz=tran5` zPA(0b#JN4!@gbIjhNsQep)qvlqh>sq2-9z;5ynQqXGy=^t99A+F&W&Djo#O)%tNOc zB;`NETC$&>nppE$CjsLKdnIYq2}Yac<))A)w~Y;I17pyvB%+8-EF;lU$e1TyTU3GS zHw2?QoNpd=sv#?EZ*^}O-C*S2sYqjN08(hKAd3jo6G`44awHvECHaYtgU3%I;5%)3Vr-O`)&wYek_) zr$#1o@(VqfS7#@Tn#d%})J~TEQ-fpq17@brZAW%)l1+AK*1)bN#vlE~l@L0IEOT5< zATS#<%F?8rO$d*sn?;YeG)tNZo+`NwrTK>mZijlyiIszbWPr|wtTfmzVjmQ-X4I|S zW=0*l?23JT%thcElP1-_sn7ez{cMDLi~dfmN{Ag1Ax*4BA}>cI zR*xzYwPyCVr6&e8L~bi+Usf4kOmT$JWDU6xO+`ppC=wC}SyjR9MKuIbE(W3eEeYgM zv2Y~m|2MiHmFoTK3XD}rZMse|=B~kWh{Y#vYY;~weCTvPiW`mz5mDUr5m9`w=^H(IU(t4s|4XuC)!^J9XsSLJYeeh@%t%%#?66Ncy zCkov@R)ZkVV+8TY42eUIU8eP#)V?7D)ETb@j){VgXN8}4jtW5yByl4BFe zNo}nsHH9%dxS>?k=l1MAD<{gPY;rJbv~MxWl$l(mI$Qf&Q~VUzq1rjHgKDOTXr+F# zUyw(^H6g8Z(dTyTN{g*e11ayUm<&$PBUvhz@Ui zYex^+`xe#S(g;x0KIl;f|i}h`+G{qax+m1)w{KX=BiG z)J4@Ob)g=m=wlTi*2ifsY#67yaADBr5T+^0ttraQ`B-k&$8obhj$4z>b;+f(4X9q~ zJf_KGER8=kVF`7>rbzAmY!L6)#7QL-qs&#FGZXG(K$I_BhvcR2rCo`qFzvXx7LJMAm_T@E&+M`cQgKxj$X zZ}oaW&@qK#$Yn4)E}b;m42(p>cd0=!upmVbo!_mrCdesaupe|RwPyAFpA)4yRa)StZh;#^@DrpY5Aq@Vd77oRM2{A zAEFS9<+b}z2qwoZ9Ct8NKc3%Jx4r@8W%ycOd~I;A8>HRL)K5aYu`c>5T89eo>{{>DP~O+4eP@w8XM{+ zIO~(mjMvrGN8Z$RgR5`yINls?{n}v{V*Oh0%bWAvSnqr(pW>UNqk1_UCF^kO>YW6W zb#)CEXWk6I$vQ8ed2_h+4VKF!#o!) zytxqTHq^Ngyn%DIiLKaC6uQ)@dnQK;^Pn3lQ#V#dud9q+Um3ljGPwf+(`lA{#Nf-PY07)!Aw`3Zz`m&?SzHiQUk2AL>@#+Dd` z5HSkBH4%%&os*oY!DE~W^Liz-6n;%X|3tEnumD2S{xDY0Z} zPbHSBI0X^KD8w~JA%rO0{$RL?stK_>DC*jU-!BYFirbPXI+^{`Mxx6=b4JP!=uF+^ zU*Qy0RI@0m$f>pHjKlhD?PL>SSQFU3j*fOy+X`6*Ow}@jQ7tzZ)oz1PY7IuIv@{;0 zdbNc^2j&2mv0c%Tb%SAOwnq^{a~6Nnmhm(@NFbI=_ULVLmoQ18=snxFSb{VMqI0_$ z%~M-wwroDc$&4A(__(G_{b{sM%E|^+7ciAqugHUekL^A*uRE10~ z*Uwr+a}n0*w@D86099YS@ur;Ag@{uHZ=8`$Ozj}(geLnhvAxZ41_n(`Vn{oAiG{+dn2LBrp?TKdmFfSKee&ZZsdB*+7zaOb;0KCef`PaWJBZ4h9;@lk`bgMI}fXk zjTgWOqS3*DJxEkeE?HGEy>yb-)Kn{r7cWrgQn{Uo<&4*giO@|Ot$6iKb&VTRxGXZ2 zVVbR1POx#VQaRx%Om!ch*qxI1gv-FPH1_nGy0{q{WwI3n+u^eOOIm~CBH_lyQnHPW z5h5=}s!i+AF;*x#F@-7Kkkl@&FhU}223PP8%e@~nQe!gM$J(g0B*Pd=DMI#@f`^`A z@KkGRUJgZ~O&3Dcb|FOV7ech18vrI!b^N;k**x*u3nA|9Y^%W4)&iPZr92Bgi`h}0 zXBCLb^Q;0Ri4%sl{pd$ zkchGyGZu@B-q=vU@+~v8nKS%ZYzD9nK-JlX!Wt_>jJqhYh*<-!?M%Tk*-hAtj1L{) zo&>C2-9ZoQW3+*jCDt2q@Av2Tc}LINk1RPL8 z-LcGo&m=LumNnn@OlFE>a@qvQwvKRcQx-UWifc`0inH$^(;CtK70;7mz30w%=@5Bz zB46smNp^FMj8h=W+#EeS`#l+~OCu%9{LCEWh$k!f($-oQislTmxm$9p?dTRXM}ZK~ZFO?c#EXVIJ6wuO4#JseLh z`m{xSGBF>`tug#C2j|@EJ7mL5Ji-Q7$cFa_8#iN*u+gmDv(bBzja;6M-ivJH3Z)6{ z2m5=&BwKACM}J?Kn*FGeg;#VQuXo{f)IVJD=@t>K zCsJDVc}^@KErnSDQgB}15;@#pXh~oNTIJfVObM-GFQ*kYPAlu(zLYjtl*DXddpbML ztz6^gAV}Wb=(6$V#(K?!*%->@wY2HsDh~8`G52K5y-_;Ri2ug=m_Itsm_P2g|GM>Y z|8?tQ{tfl<_;JVmjh3_+KkK-dKMT1Sf86-@^!0SKb>7z5(H@NVg$vNZp+5S85p(Yq z=Sc?Jx0nU`@Zj!LAv1)zH~CeGLVDcu(xBHp9}Tjfmj?OgqsfdhYOuyXkJxdtbI4vo zIDZ1-gy%>_oUk-0%JLM6BbU)d*t8gTrRGBg4;y8)q6=TC35E0}jmXmjW6j9Z3t!4V zGdaK*nPChYC}e2(ZT(!pV%&ZYtFNsewM&s~e2iVnd<8=ESn`OFYKN9_v;t4-0ckAe z$l#eY(cX>SYJn?GWTDU%#9W$D`Ktw^9)0~WI@wj0UO5;gZ;MeobKTh1=XN%QefKuz z4bjQ@5YM~ED~CN^@4^?Aj;NV5B>Ar2beI~KViX#hViX#m;uMT9aSDc+IE5LSV@h3( z(?uFYj!Oa}E(wUZBp~9Fh$1G5C}NU`A})zYVv;D6Vv-0ElSGJ^Btpa_F%(fr3`JBD zLlKk2kVq1SXHHL|8wnf$F`21fAJObkPN8x~?~X#VA$wxStiBY;90qmEp}P73A}Q72 z)YV(X7+y(jd2sM{Y6J@cyM!VP9m#xQ@QQ`;a@ad7y-KV+-Z~U?rSY0iqBEQWjBjxu{pW3|bTBc09@w-si}*3cOvCio9J# zFhyu4Ix3EoQPwHzjOdyTB@HvHLo|8nqzr|u6j-uV4D7@R17mg}n`)n#>F|QlGK@*R zE7GcxC}8I|7eU_A*kHqJ2iVh~RNyMB_SG%xYKas|uyQ+NFI>a?-5k z_9RUJvxe4M*h^I*de6D_oNRks{7Fu~*#=#jXG)6awdulm>B>^mIizg8uaFhC3@dn; zlvuUPJh^N=jYz3aT7kTpCfVOszrG}kI=j1r?VEeMIdRw7g|W3gq}E3<_DhYg7wsd- zksRCY?{#$6XY-P|jU`Fjw9)K*x>s!+c`RM)@YKEe16eNO7&co<5vPWLh*O(M5hv4+ zm^1EchK8YZ8w(5m<+rYwK<+zN4{4 zxvs5x&iHXiS{DR#ZtbuyNoz`l)`s;J%PQjGu2@Fbad!Jz-nMZ{{T9~R`*Je=Pky|$ zC+Q9aT9S|V_gESf>k%5K1Tkj|i4LjyhS=P)_u~b9eOr?5HR7o=rL=x|x>udh?lpHE z1bw_F-Mi34x1VjMsINmsskR#}h6!t5BS9m6KBPra#W^*PwKi8t$!Ob3YD`Z#1>D`) z?_@XE{5hJfoZs{nj`w7*KODTHe%-pdjlqt_#-?Bk_r3;0niFr`&jKzO-k)OehNGjc zeM^U&Y<~@9K{%&%7++SiTSJP}cwyL5c{G#`3F84r3v-8b2pg=gw?~``6XWnue=e75 zwz=v{g2|lLh^9mny+@hdIYT9ehDt0&)y`tuAO^M81|i05iW!`k^X}1f!y%e?p(T^S zNh%@CaaV&epN!ws)w;E#ewTXiT_fq?tbMiEg2q*gHLsLkWEa$&YiS$f4rDWjRtFaP zihukLY<$@!-9O4rbH1sCZLTjjzD1u^FEC08Zr$J7{R!nAN(v*hoJM4W=yetuvU5mJ zIBN`bBCXy>JJ6wz`h}to`_4rlx`@z6d(@$ix|YyKQ_;}J=wnPgOgM`Y;3!I<$!REo z=B1$o@(JUSPZ$r5q69dK5-3b4fx^%W8rdkFq6Bh;637usAV(;H@$nKEA1{F%p#*Y- z5|}Vv0u#nd;4CkwjJ_C15Y^G=k2T;leiA(NGaQZCr~C}d(9iM2ATz=fTg?bh?`L^B zKgZMgIi8U_-nhJ~UkEKBt zj9H|aID&2Pl=j79EEO1D3`X1bglkCY#bDIn4Ms0uwsw&5!VG8iVlWDBFnXZ@M>hU# zY-UbsxJcYG3PMFFD)5jrMGCn}c}ThyHMr2yB9yO;6nV->t&F9llBtx`$yrJ& zNlQsxK3YvMBYTE<(7w8Xb=HO>l$&u+cEO>*=cGr_BE6ORT=bGQq<5m9i(Vp!^l}tC zd2J$0c+)=gBE=3T^ihA~ebm7iRlmZ>5&EbDGus26n{*B#x1tZ+LLV^*edLhO?%hm2 z>etdMnYV_u8|v*FhNSE5+xoi3M*G%;X%Sl{nYLDTPugOZ;u`g(O*kO`UhB_UCAM_z zG1p{~pl@5FHRu{`G^2^!8b}JbHHOG-jJa@Yd@%m%$PIz|aEI{-@1|=Ji`~2ETHv7p z%^(;_bWnkBedwmrw(ex~veL0ah8xxjqh77tx2*wJgDpY(E^{jiw0Ic87cYf-OS}&~ zHz{?E8cQe@W;rQs(k$UM;fk-0=Ub4)meApHu;S8^7^Qt#6Yh&&*wV7?!j_h8CWr56 z4W^j14(I3!C#THnFKF-UzazPs6giV3wyHN4y-fjEB1uvMq+LSK?^&6NOhsCz0Hw6X z;;ka_Fe@eFt1e%K&`tymSeDmWHAgX!L8dmYGa^`uc|05I8rN}qiSgCDOv>t$=y$mj zKFNBA8*B^{`RyvB+m+kniKf!5w)SP$T2|&gxt2^dZyXR&W?F2W$Ld=YA-3LQ8=}|- zk8O-%8$EVi6uZu2*GIAIJ$6GByTM~Qs8W=n$zwN0u^WS2Hp`Vw{9%q%xQAm?9UUF4 z6-f@=2FC%pa%pUWVW#B~e6W z9p=uWx^SThgylHMaj6+avWHN5S zR(HKmU+2fdU6n#^U%1Z|;u(28o^UCT*Sqj`@vEEA{gPO*TWntuTM!nVigXW!g3&(E z9#R^l1n;5yvW`AWA@#(Ljq4la+7Gnu#(L{+)PAMv8iqK1qm$!z^xxLxFYAyyDFo*o z+~q5VZvW`Gxz;k+;a_Zc)*^kq9}D=IC5c6Lw{~)8|Hx<%zR-n_57ez|SRa@-Gt)3{ zW~O1@%uK_)nVE)pGcygV->9Q7tcHU(CKv90GcyBm?_T4C5X0jsuHr;5#d%a+vl(pK z+=I)jl`O?3U1Sj&->@`tcRTvUn7gIWkfCC8-zYF^C`TDuDml{3=+@0lda}i%bKAme z$&7A}qp9w~kH}02X>?C!TH%Z;TenqmG`TG;a|v$M4@qR_Jq5#BMQBaXk5kyf`6q^n)u(7eRyZt@ineW_tcY*ue_x-=0|G+cn z%sJ1TIn!~^%#P*$*?Dd+CP|&-TSBxuV-s@Lj3keo#&?KDjHDg^Xqt0Pmq-6jA^g>m zT%Uivl2eu>@jNNV2VhBeKN3q@er+I@YZyZ&AE{9v9$K#*E>xW%>U+uQkFf?bv0L!D3U*2!|t(2^P*jPGlpO&0b2BeSoMu#GsX( zmoinqDdaRcQ)?=p+9gV(I(f3qFPOa4&&&JXUXdeGN4|8L`|VD?Nj}y`8$&KmG?$YSdJ4s`H`8`OxZG=vUv>3 z-}GwleHSchNZU&N2sx9VFu8w29lcGzzVet<-npH{?+7$jbo=M7n6vpfUw7~CtbUz7 z$?lZpiq2V~WW<(SM|K3Kx;az1^>Q}qHq&UOm}{oas&e%05;+}m>Bvj_Ip3)5<)rZt zEcyo;J@1O_aePcd_U~+N2xd56YjVD3$sQ$l2u@07b+-iPm)6MM(yvYTm_}Bd(5Kdy zpJy7zB=VHt>_o0VqKT8Hk00x6%f>T)Y>vNrbQKM6e1p7AB1e|&i_*?b_DyNyHep(w ziPN+BqlCk+U~7u~Lqa|KweOqBhfK*~d+SS{=gNsu+KEOR@j5OqA~|jHobRCF%I;W) zPh<0nc+`|cuThPYCnq9g-kNkjwILtEis~_~Q{C4r$&Q%{her2-LF5HA@9fJ-+j~RP zbE0pcMNYg}(!Nz%jL9y1_Q-w6&C~{E?pZp=1B;ju#-0!FJju#&@iBvI1 z39&j2Pe;n1Bo-u$-6m+UwsL zC*|C7ZJWw}TOBELUQ*?V6tR?LoOdlT`1kjuR(E zj~-eqUmK044QsHYQDM?d=NiP_9GE+foAObY=&Ep)m;z#@ z$c7Yox!GF-kq`b+vd$yaM8IwPm zLn1%F$~XI`drLyjvGUb_`CZn@kh7gO7~rob_I8@ha&mV*Vxbf8USf^?>x!=ET#h>` zmk)itGiBt2?oBjy#E8WoYxKTy96K`gpAlK3=N{2jhDAQv81o}dWQvhY?l~f#>Xq}P zUXw~S_+mLWb!A~_?xriGOKrN)3b(e`iRl) z2cJ1bw&VR&{(fTQAq{yvz?eKt4rJc$ zPXt$wv|&4c`Q94S^0|GIW$WB6oOh(&YGpba$2X}O%j$fUl4GHFYK)vn-Ld$agy$QJ zO*XUljH$fL;!R=LdEMA4L=K3~64t*se7=e3TO*kroo_$8b#h-y;XRu3jigWRXFKyP zpKRf{az3}8o9!$iUMgnSJfF#`lx(Nge4R^|F*i3eq=7N5Os4joKGoN+U8l^*@{i5r z`Jj9zH{SSM@}GZnK0ljl(j3o5jU654FVW-}%T1o4KU{?Sbjdv)dli3wBgZ&yQm*p7 zJt2qbCFXKzG{cuea~A5Rd4JJ0*9bXknRC3HS-HlGIpyc5S4_H&F@5rc*yZo**Sm+@ zibmF!w^+n;mxu^XELws$yE3vD*IX_}ooB!9mtEyDqObQfIGPkKDSE3#%(+vPGNY*y zb&{i_c;)qTK1J@#fS077Cy&g-@Zr&tyn_0*Z5yxr;lsVcyz=qAq}=6Cp3o)R{VQft z>n`mx-GP|8=D5-mDd$z8XO0-{?HxJuorU2Yw{m8AqfVwtqr1o>mqYB=G9_=h$E15B zMdvamQ?r9;1qL<11TgG|Bxt+FC)H|6e(lcf-7; z5_6cxF#1Y)vxKnpuNYxBJ z5##1~b@$Fj&VfjeIPxbfyqS?}Dh^TJu}F8I%=+GBC!f0j{>Y}cC7io}21Wr5tpXx5 zp0frVOJ$jzXX+eEy<o^U?WLZnwv6$;DSyEiKbm$hd()eo(*(_h@k3Kk; zbFq0kf>(ve#eA&eWk#<)V(wQ)I?IM>w&{{%qLjq-r}L~u?}+%>O3vZ2CFhzt*|E8i z>7HjaZWE^u^Q3du+%YmeC4T*Ll$NU|xym_DeYkkguWNc!JZGh%S{`c_9l z#%uwcnw_iX{;maf^)=bC;WI-rMrw)ftn$($1P~H#R!{!p;XV=PJ%3$VeSPi zf8vj~2l#rt{NmL?_Q`+Zt<>Y7VrK#EUV3ZY~wq-WLI%^Kz+26dzpIk?>#Px zoxx~nWQ_MhY@4vEPBX^78IL**2<2%5S-V5oWD#MsZ}H?PQ~(a96jfB zBO}IEIp%;Go1B;FyAM#J2V`q4My9XpB08qIGNPlpyJF0!F}q^?xsLpKr0B?AQeNhk zAK0CD(_$8wmz0;$orl$YQBnSMrSk{mqP1|JW5?vhDKFREWw#vrx3kZlb0KtTlj8=F z!Mu*h2jRQ4k2#3=x;QC$9KC&)b{%3zmf<{(+P8Om=a{BXt9>$@$5HiY=#9x>UPtsE zQbZ4$(H%WzKH{vP9JjJDqxf>&$HrvEDXq^)e)1jZ9UfxF;l@#NGQF%k&Y=F$i`ask z_FnvS9FrEOLTt4>8TYR7WM5z~*EQccx4;qJHF@+Hnup7|a~5^}3%hgbdWq*WsdujK z&cB<)yTUtX*~6lDyODdx*gIe^G0qar!-e2EC(V(>`F+T{=sWi%k(Wym(LcHor#4=x z-lbIRXwhB4%l)60>eVK4Df$25k~2>W<$r(idCua`zI5aovd73=SB~c#HS*iDO7_W0NeFLhOi5qOZK=9+9j#BQ|S#-YJrGt`T!?L2Qqa0+`9OHo9q%G9=flb?!1o z#Vuo09?D=nM#_*S5VNe=Mo|0ng zbpDdaiLS77mE;J~&gCk-g-*j`RbWtyj=B+9WQr1W5>%~Pj5W7WVz6gw{#-A6Rz{+5bv)Roy(DTiscO- z=M84!=W>`v#F03T`ymWoy3H{l7dbw@!a9Bkt$&3E6KVg;?jFOCAmaDHLfD17KjiaGz{`NKq)mqdq$LwRLVjV!+sE)Y7!OY}yayhK zCtwENLDG-GEASG$49DR`H~|YO=SsZ0VJ2J;x4i^#823M>aXay) z#FxN4SOD{3AuNVvupF*~6|fRk!D_f3Zh#wMFy-6{mq8)Qy@q+7M0^4)Bff}9UWC^g zZY6CXEGB(4;XK0Wumfi{!<(TFWn2vP;0*MIK2Qtl!_}0t5$=Xf@EK{J!(8H@5}t(D z;B9yZYC{8f1KxxhkOkEs4Ar3@^oNa1|2cRbUVyjYZFmP3QU1F)??FwdLE1yqeJ4B! zyI=`v>)4;JZ-MFLJ;r=L4%ZN0FXO;c7*GCc(tpR_Mf_oS z1RjE&@E|NA?^-BG{BFXf_}9U9SONo?Za(tz!*Yg~QSLIr<%9)D8v)s{muW9&{54RE z;m$bSp(}KP3!oSDgyzr!x^oPFC55jN_+y~df{V)%$;Vb}wQU@shnC*cS@4aearI0nzc33vuxgxyU4Tb9j2Dz~2DCmHrb z0Hm@DNN-R2b%Y6|B|->-@Ghjl_l*A?>>++Vqpim6#5g^mGh6{Zp%?Ul0dNttfYxvU zG>4XOA+&JG=ZiNgvGE3hQml012rL)`OOFUDgP$QFF{&KC=XSjDtyHQnVz~0}sJ2co-go$6*gV4bQ?9$~;Zke^Adq;XBe^Ang~z-{CLV&+tC@k@)k3{}O%= z2Z{em_y_zAhZ#NuKM_Ab_#fd9aFqCOgnz<6aGc>|@H6ovgg)3y9mW%#2oqoutb?sM z2`~-kFZdIhkbW!v3YbmaHKY|F%}=}mVPj~^ytIRY#BYP?I8~tv{LFa!;5&F2mcSg+ z%i}GijBkZE!zqhaHd)_bTc$llaxJli~Kv$Frop39rFh@GCqIufrQ~H7tewAQ!Ujpe;;+ zj!==ZDnUQW3PXPw0DYh@)L^_4cUI#6Z{DI$r~Uc z6o8%#_k!MVF=UXonKH@|mWNEJ0NcpBAN=e`pE0es;Z>MT-jjrLp&9Y!Z~?S{hR_OH z!iCTXnnGvj0$rgSbcasR8rncxXb0_~19XIopa=AXUeFtwKx6owdi?|c!gug1_^9V^ zgx|oo@C*D5f5TspN_|JbaL9)1VI+)#hZwym<<5slo*6_zOaCh_t$dHQ{sON1!S3F9^ScdcsCJ~V(d>XJn`kNGZ1SOkheSvZaRDSQHj87>3qP!vi-aVP<$ zAQ>)&6c`G_U@#1U%iuxEPokUz;sGcCg`gm$!7VKFe1xMR2+iRP{#VeF_(gCbw1U>q z0=_2i0>ZY?2A*XaZ^Aq99()gP!~5_qd;wp=x9|;o1*hS2_!>TgGw?Bd3ZK9!cmv*o z*Wh*d4nBYjnf`}_AHj3*6Z{Il!7uOw{0Kk8^YA-71FynKco|-T7oiem6=7XeBz%S8 z6L1{%!GGXm{{A8O3;u?G;c3_p2jD0igTrtH4#7b<#kTY=yg>X<_ybNboe$tc_y}Hs z_u)%e$Mo02$HZTUFW@VfL)s^Vr{GmM4R67E((i-~P?54LL1m~5TUe(zk^UleAIb1Y z{I?l?2mU4g4f)@~qvTB@Tnyin_ci_!;!or3g{R;aoCLxh2f!i3q9eyT$ z7vUd-zd|+Qg`hALgfu7yFF-mJfFe*7-ea2Y!W~Sf5PV4d9@6iHEpQ9m3Y*~$xDU3% zH+Uz3$@!ANPkbei<(mp)AQ^_hP#A|ehxedd*Mss1qrVtoWM9KIQPM1NQG^%25x|x;U-uM zH^TkU9)4on&*5blLRpUzJ`Rt;2XGjkfTv&&9D=9eNyaS$d!Z;4gHli$N>YEI0nbzcE){2${~INUV@k5 z6?hd+!fWt4ya8{*Tktl#1E=6!cn{u(IWUpBq(DAMhEy2Kbf%COghaRo=EBu*EzE}n zFb_g71SZ3Hm=0IM444K}VIqu!(J%(CfUz(FhQUx64kKX{WJ6hK4HrOhCR?s!vN?H?V$r?LItP@9ibC+hDuNwsz4Vg4MpHW zxCqKX7Bqo|&=>kaBWMg^=nCDSDpZ5&&>ea}PpAPkp%(Olrce;-LnG;+X?MUT=*aMF z=mb~6out*IjPAsHz<gWM7$>9Q277jc|&!kQwmBzX($7^ zpD|p@a=Z)%!{x9G=V8c%3Q&-=@0gz#sQWL3zr$a!pW%J*Bk|`6|0Vn$4if*B@DKPK z4l{fRej*nC;5fs_;Ai4T2z`+Ip8Xoq3Xru5?q-?(#jxD7Pa?h) z%9Fm3@yik3KzJi$5YL2K&=M|$3UI!A?B3*EO*QYo~#f%YWxuh+>`VAi4gL zYn?^ZV>zsWTI|owNuNkuu4NvE-S7?GQAU*O9J#jnhWdO9-ZhMO{o-A>$o0w^kn5NB zAlEc<9dkEyfK6~M$aRriYYZoT4^)A?UK_|Yft>&48c(k83vqc?y^CoLf~oki&#Whqp8>a# zemks(4R8nC33owWpFJisoo^{?FylNzop!?$@FeVj2Vf^W2#>;EcnY3@hhP^x43EL% zum_%oXQ3_2ath_1ru;{kkHWTZp9Chb_wxmgiQ!|ae+cW5_A=ChzHky=gF5g7)PP(*aa0x`;72ycok;jKS@}Kuo*Om3!nuw zgjUcJE`&zV6fTC&&;`0eH|P%ip%c`H*3bspLOW;=9iSsz1U;Z9^n%{d0GdE!s0LxE z4*j4e6olWIr~m6`gYzi&S||$hVIeGlVz3C7z+xy4OCgbEHJ7j*VMpiyZ?R0@hIeFn z!%lb*+LN~ecO|TX{0xtUD_{&<%(}ae{WpntPZ$JUp*Qq`zR(9cLl?Lh2ErvU0D3?e z`a?hH4xOMI{7;`H_G8(Gp+5|OKF}A|QPx1hOJERO3ePcb&%+C_ANIjPH~@#?5F7>h zO;>);mEUsZcU<`m_ixJk3wlycFX#;yLx{9PgmnpP!so<~KvUvh5Pk{uh}VWD&XndXaH#}_bkGBEb9a0?FacibQe4fk3dQCi$F0b3#V~Dg-@U`!(|{H zib8294ke%zB*R|3J@6#dpu9m$^HS2EU^s8z6>shA@Cw~ z^-;e3cE1}Q2l>5Teyf+?>Gy*CJ}v``iI~z_#6I(r(r)FfTM5>4#N>R z1P9^&>RIX;>NbbET@4%IZrB8$kp3Bb4s#j)l<-}64^F|Wa2no%x8WUFk9Q}?^Vcn` z=bH#`2Ki0?MdtHs(neDEr4r(=CjK`0??6@Z|0S&&VRi6+zyF@J0DO=0HR(?i-wRK{ zEsWn6ek1-n`~tV(-3~t!zl-n>!e8M%#(fv=!2gi&9`f#mEpQ9m3Y*~$xDU3%alCKf zB)mZxZ$b?i2ai!sL%5c_-{DXA1HORsJvS}Lawq`#AU`Z){H3r2u7mBc9G04Brf$N$U<>;R5IdouDVQfNszQRzMHf#`r&uPD8 z_)3_J`xD{k@G=ZxULPfV93F!Y;4nM^Pr)8I1W!XU<)#3W`X4`cy^-2?GY#kN8kk*McxgB69}d4 z$8*GAf>YG}JxHXCMT|R}H2yp7LOv$4UdkqX3#TICn}n4K?;`zD%6g7*o`)A;AMA$% za1ai`VK@Ru;TRl;|LbR}e(Dr}1=MRIb-Io)f#F05K@i4L-}x|&yeZTn2#IhF%!RAr zT9^+DU>+oZ9|919Aut)n!%Ub2)8R^(0TW;j%!1i)6-3 zhmkM}vY{-rh6|uL6oMAe5=uZxNP{+z0fnI)w1sw19$G;u7zlNtH`IfRVF2`p_Rs+` zp#oHdj?f7@LnWvTRiF!$h9YnwTm)qx3z|Sf=nMUz5j2J{bcJqE6{Xa>z89g0C8XaJYPB`^pE!=-Q;{Kt0jE;M4h zILLPKJxH6VD@j{Od<{;RJg;rkYSQ{J{2klakHmj~tB79#Hxc*RlZ~Z}(I9QZvS0x8 zffmpoq`g~T=m%kF4HrOjXbG|H-r6(V38ekp#n2ggLNDkBU7!uLg$~diIzm@y2X&zl zOoj$90sVumv{2y>JIS z06X9=SP%EW^>7Ppf;Dgh+z4yoCb$_k!dAEs?uYHL4VJ?yxDHmsN>~9?VHz}rp==Ms zVHg}^yQl)`q%UUMxdQ$s{eHHsnWSIKwzdqG!*#F%R>CS+4cEgBa3k!-AI12y7{4iD zeV9!A71E1Q{v_fvh~Gom_reG8IeY`I6ZjN9gUXDX4Zkt|os_!~Ixx)? z%B{Ji^OD~RxP8AH1Ogf+xM47)*?txLel`4lFDt>zN(hF-p>QY|4kd;|N#Rg(IFuR= z6fMJz`)gGW2Ba7CHkn{#Nu>po z!x>eWbV5Rs+Yf5s*D#==mmbpLWWtbtLDPW0SR__lW2tNyZftanpadxnzztX(!AQIr1_#F`=Vp}qNDqwyMV}kCq#V*4I0}vIGLr`Uaxq2BP&1M9U3C%MHYo8##id1)M$c zw*peGcQ_&H9b$-j8xGOPN>B3+j51nuEd>fkR#>1&G@2fbMz-3tKxDg33lxtEC8E)i z(P*h?)H@zB;WE+GveBp7M7)qoU87m=^5Ql6_jVPs{dc;XWva7(UB6D3 zlbKUnzfRY$)Aj3g{W{%%cNAAYs6OXoXZ)bnE2Q%o(&=$Naq>ety^xL{((yw&en_Vm z(&>e~@^n5!I-en(&ydb%Nar&_r<Y} z#Uy&eIzNdzKS`ROr1?pjpXBB1{3hxACh7bp>HK;dO_I*9x7j4=d?o4nOOlHtwyLBe z8m4O~=TJ$PGpK|mG%V?c$y&b@FVuRbXgyQ3o+(<-RP|ETOI0sby;Sw`sh8gi)z7bf zmKW-HS>F1{^43R|w?4AG^^xVRk1TI}WOxKc8H(2wbPuswE4W z|AN#>>fzLZP_ktCI~!@pzv6-g10z>RrMy_EK-iza|E7BM@~Y`gkI6YpI+ZKr&f$#8 z;f$u?4CnOOiZM>Ka!x@6a^yMD$~keIXcg2{_d-gB|9EY42JxXh;vOTDb6*eM4am+i4>CyM~M{oA|<>?NiR~vi`4WYwY&&di*oco z(af!VGv}1YP%wpsq|3=$Twdt+B0(<_@*=5TBp68wCU|L~s2|AtWhM^I1+0Ti8YPH znuSAkWZ#yZp1VhG4# z?Vvq$fR4}!Izt!e3f-VP^njkw3wp!F(1*p!GW4_j{475|%g@iU^Rw&{SiVUD`AIC} zB%CCiB%CCcaS~n(*E&q;B5PP$|SDJdAFs37;L&am5e zgajv^Ks=dPG7CMqB2)rKOJ=O(opU(Wah)3UF2MbXquF-k*0ZQ{8Q{jabxsL~^fatz zUB6z16w_mduqd;_6)wFb>6MjUhV)XT zmn^+<(km~$OzBmSUaIseO0SaiLefi+UUBJ_ke*+90qGTzUPL&#KDSi!$X;?!;FTbP?*VZtoVF?Xug)>sZ8D+y688sJ{ zUU_?ax6cKIGsFdj8zyS#Ua;{1&)F`M-P>Y$;NxtC645O-q?ejm(OV*a^!C*6Jk*kF ziUjX6p_CV?5iA_j*#h&km-()>5fprEwh5FRB)9_ z?s%2lyh?6fB{#3Kn^)P*E2@F36m^xN&Jal@i3`SIFuF+6$yvZ!=a+#P_b~RcsNud94Z+Ol?sPSheKt;p|asnMmSV1 z94a3UWrjl)!l8=cP^ECFayV2a9I6@)RSSozheP$kp{#JIemK-19BLR2H429sheJ)+ zYV`4d^Vn6ktwe8=a-NDxit|)dBBi~o$c9+fOR4Kc>Uoi@$Zp5x=k1Kldn6j-;idN| zEApI&OZ-WJm3@8eD{dG$hC2ty3*Bd-0rn;5p{PUx@^n-pK`#>WA_-n3(TgN`kz_BD z;zd%uNIox;--{IRBHlwEZh__}q%G-uk#oTF=ksy=@^eEbeK`dB^Kqzi1v%#V3pzqU zM=0nB1)aMh{~NOd&V72wiAB@oe#uRfgNJM#Ed$Q+L!)wOrBUzTl&A-%Bn?wEOx3Wo zhGjI&(6F3_bv3M~VSNo7IFov(Qz#$XE5A8NPy1frg|Z(wKOMM%Hz*rC$zGtz&VE3$ z>;@8OAsoY;Vc9`RmOWYm&E;v53~S#_3`7P4vUifpKQE%D25zAN9$Gmbk0^))=gYm} z;$XJZlUim^lHO!yoXZHm-p2>^!Xv2n|3SU~59*ajQ1AbPdjB8v#w+EP6D%#E`xGY- zbZ&?P!Gu~PC)OG{$yvm!F32D7%NZc#m#BAC=HZ<``qa=LeJJQJ>zrREvM+cM_B75% zq`0RdBJR0}NP?H;o|Q;R@=}t$NQxIp^&5_0BHlA{oL z(cbT^Fn=1Gx$G{wJIIEl`wv$TmHAH=m$*)lBgRqLOB7QyI<8tY8p)T(7jByK{3Q~N z7E3z2ZB)uJhCKF&j3bxb(E%=`qXUsCOKDtEM{_uBL0xJze29cR}4 zdT1bYmjw~`*uk!=h8|o<&=k4c;27l{8;NRymmfJCMUGT@Fl52W4FTt1?^lLEf$GOQ zL^jz#y0=*ujT{%`DpHRSx?*Rzn@zGlxJ}jvgvt7#Gg%*W1~YW?(yPs2c^%GlL+{Qi zqzAZ=T)t(?Av1f5)05fCo+2}qJ;gapPLX4G_7qpqXZLcrivC*RkN!mAuN1l3@aqPz z_ip~OZUy{WLC%oQk=Hp#asP7j4B+k_J!$q<$Vt`_q%SwQD^VPW_3e90f9WMd(C z;OHFLzx2}1-$0j#EJe9yDCIn2cVn7V%zY-iplPwxa7NW|MzwH8jc`WIa0YieS>cTO z;fx01j7H&%=HZN1;fxEz85e~!T8A^*gfrTPGunkS+J`ebgflvZGdhJccp}>+oY6I$ z(JfkqhVJrBma`rc{-lb3^!x<=OAvq{gh0{~AsO;PVJHIW;K=NjPEmzmwoByL28CNxF=Y z?ku}>XW6Cm$VgIBoW3lxbiXXLbiXXMbiXXNbiXXObiXXPbiXXQbiXXRbicF0{Ic-U z{Y9OAG3h(2B0bca(cj-dcc{wv&Pb$RhI6ovvg;rr8{da z-C1qv&U#CCR$RKX=F**2mmYAY9&o2#+$mYsW_qBc)0dT+?yS{xXSJp~>oq-);iQ*y z`sJN|rqi$B^ea03N>0DB)32h(=#Y1p9P%C^g}e)&U}5j7q=*;sj_kprUW)gVLD2ij zAn5&M5cGaB2zodCLGNBH=-rD2y?e1>hF4%YFH+u%WO|VbUZkQIspLf}dl7HGf>phg zYF?ze7x8|=2zozZ1ihayg0(%Tju)vLIUoe1zflKcexoiI5u!)<0z7tQpu zm^N8Upcd_~q#gLfq)GehIfPqC&qsVIp}Z?~HEGiBJU?ky5tsK~eB?f*#eA~4boP&AQXZ$kam!T35$TVUmFL~_IEH`25ZTeHq6p)TH3xz zyEke7Chu!Wn=)zlF71y;gV(lM+DuBD^6?;TlBM0Qv|p3w26~i>9kD_5{4iF5<%Mj z)h7Q(=Jgt;BklF)fwUEuHqz3zbrH;h6_8H-hr$r}ig8y{?<7KLYb$MTrTwk6we{NB zO1oTXi!5!ArOmOl1(r6q(iT_R-AY?!uYIz#J(l*u(neU?GfO*VX`?J{lQW?LNPFW- zP#LN~Rj3BiMmV-zu-EQa+A&KTW@&RQ?SrL_ue3XE1dT!3AxryVuRZVu#JzUY(jMAt zx7?a|8)ysdpgnYej?f7@Ll@`@-Jm;o?UkjCvb3eX7^I!C*XB7)T-sDi+iGcZ?X^3W zHpkNTSlS&+d*tyj0VcvE7y?6K7z~FIkPRbY6pV&3Fcz+Wad0)vgZVHQu7PVo+TKdL zUumZ+?T@9+uC)Da2+|g~F-Y58X{-7N+lah#xgF%)h$^i6s&E3nfp6g`>C)y|-b*<~ zd=J~nTDF_TAn$>UVK@WILmemw@*Y7u!nVLqU%pJJ0j;4UOoJI9ZA`Bxly_!cq3*B3 zTks;Bfal>X(I1Z=aU3d@PhsiJn zrouFs4m03NSOC(N_CxpxK8Dlq3498l!RPP=du5F zbcY_$6M8{!xET7tC>Q|EU?>cO;V=TSVI&L$X`4L=qI(2o}Q< zSPIg9UD}09n{a6hE^Wf4jkvTAzaDOY8{sCn8KlkmT97vAx57HO4Q_|^umSFXJ3-p5 zZ-l#H6KsYpuodosdqLW$Z-e_`JM4f5;4hZ(-|!Fo3-Z2$v>|WAvXpm^dq7X<1-+p$ zGy!=BxfwKv3!nwG1b$m{-cy$Mi(5k*XbbJ2J#>JM&bFaf&a0=ds z4?y0bJ5Bfndl9-Q~eP2-38Mbo&xed)UB`%HbM#flCTaU?_!buAg;X2Igc&mJ|Aywo11!hB&=11UAAZF97k+`~neGd) z5B9@Pr2PlK!U2X4!XY>eKa=Jo{EhGk;ZZmS$3fmVlW+3KHzX#(6qpQCVH$i0A3-Y9 zUqd((cEc=4X8aV$2dU5x!q5l$!o|=ZzJ`&Gq{;htkonyfZSNZ~-iYMIi5sdhd!ZW_UN$Anjkq{|{v0^I*lt z0~jAqR(w2G@$pQ>c@J(Jp?rg4AMA$%a1d%Tel3vqzUx3;koUl|pguH!hR_HaLlbBU z%^;0w9-@rHa0EVs&*2OB5}M;&0PUbXbbyY~2|7a;=nCDSJM@5_&_3 zT_@WTtcQnL%#Xl0^2bAArhAI%$a`e+9%X)p3&4$V6Uck2@^0#5xR1jgcmitR)`VJ6 z8|pw^s0Ue4A9!Nsd?&gQVPj|lO<@FN!$=qk!(cev0=I(qKCrykdly^{8{ux)1fNo` z&){>I%kUY(@zhb?gDptB5Xk$WNwAW-CKI-SMa=)L@e-c?W* zKLt|ZKG+8LLwo1|cf%$q2F0NSl!Q`H8nU21G=PTC2pU5ZkawS&!49|=o`MY^?>T?R zw6{@@`(ZoWP5lQ_&jM^41tCAwge9b3ivJ>cEr_>-R&XI)1g+sK$~psILmP(M!UUKI zlVCDTfvGSJro#-l5@y0}lzls_hYfHC+zEHVMz|X`!DiS3Tj3tK4<3L`l(8AMz*Z`t2hYO`un+db0XPVU;4mD4qi_t4!;5eNcEW@35XgJv@_u<2 z=nC>Kd3Wdm@_uM*a!RJ033uva2Sq&pJg?Vb+!l=gM7E)8F&_+gXiG|*axR@W){;@K_9vmtlBPuN0_acuDHjHN0f? zNL|$R_h8bQF^|B2woqXB0MjKvH@?{;5Gd$ToWxY)^yyEIzZFnWrTWokG)mv?N zat$c;lVeM~POcNh+ZazGuMEg?*=BfU$(QnW8J_I7vJXFLc;(cSb7Q=&JegA7{&*63 znIPT~h}Tt!ml=~M$7$I&PsF61D_ZGXiRVbGe2%npB~>9&)`y%2<8@WzWya)Hi;2gJ zR*#n%lUIYdEa#76(#{pFsh*sh<8`&-Wya*yCN9h6OibFjqIF1=`pNk`UT2*Tym9Lh zk?G2LKVFwbrtBZi!90#wU%eE69Eq$3>J>4(hU%3uyhiF(HoV5_)iJy#>NPPuIiJdM zk^9DYT{AMp>uh+spX0-cZA98LyC-yjC&sc+m^vWya)P z6cdjZZB3?Z_hXFtXoDlmd4l1!)$-(iJzm#Ny*Y;09#5t_&+s~^x7_eL>U3{1yiQu) zt%lcGy^V&~MZIl?*HyiT4X>Mea_#m;Md&cW}s3-T|@w%Ss$vt?yu9tdp4<4`U z9WOH`?_%O|9s7k*o?H*h^`zX-$Lso%DW2Tt$Lso$DV{t7h}X$=vv~4+AYRv>O!4H| zLA-7Nnd1Fncyb*s-rt6IiF*GT-XQe?vasWHa$PU`WrE=ij#EZ#)@88+apKl}f;Z|A zB659S(5T-~^@ zgCpmU+J-k)%d2mASE$#>@W!dv)bPgR$#yF3RpNCM;$_CfqH8VZ=rhfJ6F7Jk$PJVZ?SsvTX(!}37K;Ili$4KbxX+(!fLcpLC!JH6WQ?odyDOO4mvNv5oi)rNPM zdeVj|Ubm4QyzWUdWqx}b-d^>j9Y(zFDKcgM7;1P=z-9l+9Jj4o+DGHE59Mf>z*f5yc-Sg1@+b&-ahrV8s2_9IS)Q)cn8#z zc53mugX$eHyhG}}Y z_ojOD4DT)Vq>X&M?rrs?eSEy`9rf-uyi@8)yZCtByXr~1vv}Qm>Pefkc-{NzNqe(+ z-3RJP8=QFEhh)ljf7Q~6{K2@)@;eDoF6~p^n zy)47~LcJD-_oaFr4eu-UE;hU~>J2u$uhkoEc;Bcu)$qPmZ?55er`|Hd`(C}94etl_ z?lim~)!SxxKdHCd@P1bBS;PB9y`zTrt9q{+-f!xCXn4P?cgFDkQ14g6`%^u?T)fBW z{vuEI%lwA-w|XTE?;rIl8s5L^)iJ#P)N5vVaxpIR(a!Mvcye9b)9?a#qVzYspn8`X zUP!%c!%I+aoZ%&^H`VZx)SGR1$?DBBJZZNf%2LBiRd2Q7~%*QdqOIPot;T2Wyl;IUq@3i3+SMQABl~C^| z!z-!YUxrsoy`U_dI9+M=@)@4A8xkem@XD%J#_%%Kt7Lfc{+B4V46nR;4Gk|-y%vU7 zLA`c{S5dughF3|wzJ@35u0*-i@T#ac!tko9H_q^?sW;8=s;f80@M@^H(C})ix5Dsh zsduyC)mCr4;nh)Zv*FcMZ@b~uQ|}SO%TjNz;ni1fpW!u7@0j5=RPUtWHB#@C;Wbw8 zwBa>T?~LI!RqrRmYo^{`hSyxZpgfF=(_NrmKErE)CrY~EwN$UH;mLb)qEstc9q)$3z;?eJukU21sk)f-`W9n>3VcpcT7W_X>{n`3yL z)mvzIUDR7)cwN=I+3>olx8Cr&tGC(kdZ@SE@OrBEh~f28Z?EC?R&Sr-NxNOyUXB@F zAN5WeUSIW28D2m2P8(iWy)%Z_U%j6UZ-9D#8J@ILmgN$Zhx2i|OVrC}c!ShSH@r*L zD`R+r)vIK9m#J6F@Z!v3j;tYCUPGh2q3X3TykY9KGrZyIbu+vX>h(3eZ1pZRypigS zFuYOfjWfK_>P<7eG3w1Rys_#nG`uU+TVZ(P)Vta6#;dp9@Fw8NuD03mCaSl?@FuDE zsNqdk?-|3JqTV6Ho2uT+hBr;Uw+(N)dLJ9!4E4?!-j(Y8Y6iSiID zPB$A*9?7Q~-c@+g6seHm&B5cpudv}=t>qOlyt#Ptdv{U8y9Q6@w}jzct6mwyo2OoR z!<(;OCBs{wUNys8s9r6@Tcln+!&{6e>$jodEy0uhyqV!G#gk31jo~d*ubbg5$IDB1 z9iD6lVWYeic(NS~G`y8~GQWcjZxxg_eWJJj1}cz3FI%<%3~@1)^v#FO=L%JA;Sll|yp!`r0Z8N=JG-p_`&MZJFv zZ>xHV`Ke@_?jH3D8Q#6>l{CEj)T>~4+tjORc=xN<(D1ga*V6EIsMo>p9#F5R;qAne zJ%+bey@w3%DfON-yrc*oTnWOy&Cmu+|_)SGB{FR3@n@LpDLf#JQP-b%xJRlQpb z@1%Mg4evGe?l-*G)!S`&Z>aZ-;k~KeVZ(b%y;lwIZS~$Yym!?5%Av zZg`)oH^%V3P;aW?eW~8nhWC|vOAPOfdN&x}*XrGFc;BeE#qhpWZ>QmXr`{gJ`(C{l z4DSc^jvL;O>b+rjKdJYj;r*=MSBCeCdOsW9uj>74c)#Jv^=WdU_{W3a@#MZcpW*$1 zCr$s-4DV0%iW}ZvcyfJT*6{vTuae>YgD3M_)A0UPua4nSRNguscFOb4ETcR>lGLw( z;mLO+#A|GLLG_v$UP!$bh9}>lkm+7%c!}z@F}x%^dA`=(@RHT*YulQoqTDm#*G)!z-%Z zEW<0N-qnUD-}{jI%`?0b>Mb(7lIkrpJo$czOn0T>l~(Tt!z-iS8pD(Ck;rt{8D55Z z8w{_UdK(Q-zHcJa-C}r|>fL8}71Y~dcoo%q$nYwux7+Y4tGCDSs;Kvr;Z;@dIm4@_ z-hRWYuHIq8lkdpL`Z#WQHPw6B@M@{|n&HWJX=J)@8D1Ur-Zi|s>V0T<_0;>s@UqnV z!tms~IWiw#8(stTzBjyv>iukZ@*N(T?(c@zSiQduuZeojA3>ws^L6rFADM0_?RSY^VZ}r9)-o@&TH@rUTO*Xu~>P!HEaP=NCybI=i0qTV-# zC*O~g@_sbDY3luEc+=JU+wf+n=P%5}<8)W5muPr1@#J}3KEs=(USY$VtzHSkyGp$b z!<(aCCBwTKPqyb8hBsHeI)-KkB8cNw0v7Z_-G%helhc-Q5zek=0mt<0mhDv#dk zJbKsX(Yqm!-i>+mZpx!~a~{1lc=B9%ys_TasyE5-Zo!k^4W=62t$4D3%r?Ar>diO2 z+tgcbc(>!p{N8AI>$SW!hPMGv_TLSLcZYgg4ew6%b{gJY>OF3F8`XQx@a|Uch~aHg z?^VOwtllZZ+kz*@p-&8NE1s;kPYv%LJpTK>FuZ%Uysr%JK0Mh@zcIXRc(NV*VtDtf z_pjk?S1+jug~sW2X#LU*?*a8n8s1LzG7axR^{N}*L+WK2-Y)f;8Q#O{wKlv*)az_` zyVdJ$c#o<#(C{8pZ>ZrtuHG2K+oRrO!+S!#S%&wddh-l#uX@W2?lKY!+Q=-uGbziyyw+>)bL(V?@7bkr{1%Mw_m;ehIc@{BZhZSy%UCaNWGJW zcUZl*4DX0~?-|}v^*%PdW9ofwc*oWI+VEaf?+3#>q28~C_mX;l8Q#n4`O@PY#L0R^ zy#&L1RlQWhJE>kF!+TA=qK5andZi5S4fVi zso}k=UQ5G!PrWvV_r7`^4etZ>x*6Vw>h(6fkJJkr-pA?3_p^FW8{RMK9WcCK)qBzKepByt!}}dC zFWnz`^#07F_g5ahzw_w*lSl7gJXyc*8O!BA^*%K`*@>L{H^cMe$^Q0>;RV$D-SC3y z{bhK0S-0XOP@X(5{`dc=yu40V{vL%azfjTmW2C5;-|$k^D{6T8)GKRv`PHjzcm>p} zZFmLoetz>g6-Mn(7rcyjtp&FudC8Wf)!^^(q-&UA(+>^|ZViMtSo0f@J;H zGraohH8#8k>a{SuhIn#(X=8Ye)az_`jn(UAcumynZ+K1ByUg&Ksh4ed&D9%cc=C6d zoZn{*uZ4QE4X>qo^9-+*dP@!OLiJV~-bL!IHN4j9Z7{qx>TNc>w(8w)c!#k9hSy!a?+veqdcPT7 zPxbyayk6=h6pw$jl)qah>n*?GU5qE!5$T54N4+wJ*H^tthSyKMT80-^uc6`fSFeTP z4ZzDwHxN&*H`*EHU4kb?b~n61NV1%J8J_$dIVo>|;SE-Akl|gX-erb&xq3qlZ-{y$ z3~#7`jH%7f{3~#J@ z^9}C`^%fc4IQ5nq-gxz{GrS4vtunlc>fK;?lhnJ}@FuHwi{VXC?>57ms@?{}o2K4f zhBsZkO@=o^y{(3KrF!=n-c0qj8{RDSb{gJn^>!KFRqE|FygBMUZg}!{FZu6#((vXY z$@7S(4euH$EDznacyeAiY?L=oy;lrxzIyK%-U9Vb8{R_ozBar?>iuGPi`Dzr@Rq2T zR3iRDT&iB0;Vr|5wrwF zP{bS*F$YD=F$YD=K@k)&2Sv<55p&Ez5ftzD%6-1aKKAQ*TzR`4|Ihw?dv>jKHLb4o zXqRPI(e78v?pAi@<6Mqw{?GsZa+`K@Sa!E-H{7zjL%RhmyF1yLpKq>Zcb8t?GM3%l z+O25WRkd5qvb#sSwJp1Q*$wjLz5#br2Hf30;O>C|cMq~N|6Tq1mhW#(yUi@ShqT+) zvU^y&T`jvu*!BPSBg<~8b`vbSN3}cFvU`l(AYUFIa91C2_XIoh@844`kMBwC&av#C z((WS5?rH6=wCtYI?gq>5S?zAK?4Hx^Udyhb-NTmM^V&UW*}b6M3zprB+P!AkP1EjO z%kCw1=GVWEExVW5ng9LhYs>Bxc7uFr4!C=jo%#1i*YbK_V`qLp^owQpIy>`x{?oF1 zL%Z1*`}gn7n|i(TT6S;g^{}&J<+oJ zjGg)UdxmBAxpwDUc3)_BxnFm z-?B5mu03bjeW%?t%kF#aUbXDH+P!7j{lIRJFFy{r`)R=4i~)B)54ihfz}>F{?s^06 zej9N2`+&PY2HeeLXP(dRS$=%~9Ps7+rI+`K<>mdY-Pe|#`CyKDd_P%svuO8+WjCvK zvn~Gb&(_(ro5!*nrrm;;-R#;eVcE^0-Ex-Qob1f6rxSMalU1-4F`~&V57;v}XfV+hT+$}udZjk|Ziw?MR z2iz?-;BN5&cS{Vo8!_N+$pLqRJeU9fY&>4Cc|U%0%g>`_v`boc%WAiWWw)Gm`&)J+ zwL9FhTb|t@Usf1!x8i`i@PNCO*qPs-PPBYKR@Uwe%Wf6z&bRDV)$Vf3ZZ+-7mfh;w z-D=sbq20ZfT|~P_EW0(ed)l&FOS_jWyS24@%d%TXyALh9|7h2-?AF!p2g`0f?S8lH zqU;9wvi^X(4F=q8IN)y7fV^9MEA%Wk}OYg=~vX*bHU+n?PaUk(^> zml<$(;DEb>2HYLY&V1ZrbIbR4f_B?lc86%Uvt@UvcH=C&!?fGavde0Bh-G)Uc1K%w zM`(AVWp|`@XIOSeu`|DqIM1>>nw|OgZ_%g7FS*`27}%a+|q?97kH+m_wQ?99id-nH!V?9Bhp{*h&O z3On=r&aW-IQ?>iWvO7(?S(fC5{>zus_4tNcc4ug}h-G)CUax1_oyE?4%Boc?yMlI6 z%kFILHn;4~(QZe}?p*Emvg{^lH^H(yPrKtRyYsa>)3UojyNfNmqIPA=?n3SEwCpZo zXZ|St!;1&CyFxGT zYs>CR?PgeZSFtm{zWiy~U9HDAY$?Y7^5q)6-r<(rwR(9ATXxs!I3ec z7;yLGfV-#IndjAH%iHg1?e4Jbp3!cKW%sOhQ!Tsaw0qjJYiKvkvU^^;H!Qms*qL9~ zrdxI|YWI<4H;tWnf9rG0?j`NMvFu*f?nle+743SKT~oWiEW1~=8@BYn|7?1Voq0cH zZp-dsoeivok+GVwPP?yUi`TceLBqvU^v%oh`ff zv>RvHP1kNe%kF*c4zcV$U}t`OkGAYS)Glw?we@<>wd_99?qbXCW4+$1EW1zi@@}^5 zKGp6n%kDGn9Wisoh(a-B;|)@7F%C?7r6S3(M{s?YfrT zx9rUG>Nm^oJMD&fjQ{1!_jz-LhLsyFV?v zrL}XGasKs-r`>Fp-7?zEVc9LK-CUO4a@q~I>_%!gpJlhab_-Z`D`>Z{Ww)Ysu4NZy zXa4=Mgk`r9JM-(>3YOiy-fHalSEjRpWw*L^8(DU1 zXt$|l7twAD%Wh5Wwzlln(r!D;Zf)&$wCvW=ZWqh$KichX*{!SHo|fHu+U;Z6McMI> zv%h7xJ|pw{*n=&*4YWJlvfEI*V=cQ;+MQ_G#k4!kvfD_zvn{)gwY$Kwi)(kOWw!}C z{&B9d>^9Y|Y}sw5-A$I=XzgyZ>^9f#Zp&^9?WS0ETWa@^WtY(IG0Sc%?Vhsiw$`p; z*=?iUOP1Y`cCT4>+iLf=Ww)Jn(=EI0wfo4jOKSJIWw(QNUt4xNYS*>wc4BAVPx;xh z8>8J!%Wh}wW?PmQ`Y&I0(Qa<-oLEX(dN z?as68vh4WBx!AHhT)UEGcZ7D=SawHhcY|ej6g%^FzQwXTTDv12%CakJx4mU|p>{i4b{A>4hh=xMc6(cP zmuPo@Wp}A|hgf!(X?LV$ce!@QS#~AuPPXi>(C!S&?n>>>wd}6a?n2A%YV9t!?5@%7 z8q4ll?QXQ}uG8*T%dV{5-Im?;+TCy2-JsngmfeloJz?2R*6umW?k4SCvg~fw?sd!V z7VX}#>?+!QXxZJW-Dj5FZQ6Zp+1;+)50>2>+Wl(T-KpK5mfcb)ow-0?mq1zmfaNX*0=2L*KSkG?g8z#vFskyZj5DD({7w) z_mFn`TXqj?cbH}Oh;}*4ZmM>tSay$UcaCNEn06Oic8_a!wPjb=?k3Cb3GME(?4H!_ zLCfwb?dq1@)7m|6**&A(YnI)!+P!DlJ*VBLmR&=;Z!Np$wfn`gdqKOuExQ-B3oQTd zzYa~)Zhp(|CG8fs>|WMxIm_-9c7uFr4!C=Dz};&D?p_~o_r`#`HwWCkHQ?^;0e3BS z=6`=%b@_jPYrmu2dY0Y0+HGpty~ob{_XpcrcGLCpcK!eC-lv-{4^O=(;{X5t@Bf?Q zoW=j2U(Fx`C7A1|BLzy8nvy+r?CecG~re0@b(7e3p6`Tmd4OC0q-UVln&*ZBYV`jYuz4quMq zh4Y`f{p0ZsH$SL+(O3NQ`>(Gb#pb_#|A+MT=6~zu%Rj#T7|Y8~>Fdq+pO4S~|FUMF%o@YZ-ePef^`Sz35%jyO7iRwA^(drR2FK-4vKIYq-&uhWkV5rLH$ugSH zuNKCVZ>)$ba!>M&1-j_Nj_FP7)}WTV-KbsM>3 z=JU=j!prrLUvGxY=c~n-i~J}5L+10`Vl0IGQNp3&zOexEYv|B0-uI2$jgiM+_w%DBW_&V;Ld#}#o7zTSM^ zZu4@C=H(ovo>e!Rp26Yl$KX6Tggh07627s~$S=u5ao^Y|oSR(~gSZZwx1Z6xJXd`o zb))Gs7x4EzG<&1zEe!E;-cUE1-oypy4RxdGQ_$?I>PFM=K(n8$ZZv%ontegtX!_}B z_7l~Orf1RYC#V}u&!E|-)s3bPAwMNo8;J|?^&|B4M)UQ<)Mw7`f4_~UPe-$VL)~b4 z5zUY1B;Rp){5in$9|P<&G9?po6q+BWsBdglG(WB`njhB?njhEUzOewB{V?B{gXYJz z%ag`Dt`3?XC!={>E!{@$*fgAzT?6@NveE3G)@?Mqsp>V|Rh*q~cL(zFhbq3Y$-a|~ z{40K_tlP*PyBb}-T>(?rWotuyuADl zE{-iUKOS%Rj(ZxHrdN@FhVJl$_Kn4nU;2hd`Nmu{k82p3w~u+{=It__S85(#%Xi#lG(Z2#$aihB(fqiaj^_E0 zMe}^fAivZPjrWbE(YzhT`o>ado)4qZJRe4(c|I7;%ZutZnjhzpIEDr2`QZ4*X7c+W^ZJbD``goPG~e$TXr2#K(fs?b<{PV^d3#=h=IvSZ zjZH%H_AL0uqG;X@5#*Psp;dijVKi@tk-jkx&D$Y>=I3FLA58P>?sWWxyNTxQT1WHp zYG_{G6yI1C&C9#PH&#LO^2*3B4Xa&(Kk;(1XkJbl&C5xlc{yWzV@WhGXUI2}K=X3q z_!ZwifCCQ*=Jid+ne2ve7W3`#FYXyU>G(kEYHj?RyM}+@2sGbs*LU17G>`vjp0uXd zeaGd|{5+kA=I4vi{Cr8Hc^(X*`EeZWfBjJ0H#Q2*_bcifTL;aLqlf0_sf#?s$wu?? z7Se4rKmTU(jm^)~9-7x{G`ktPjb`_adPjE~&CgTw{xC0p$h_ZY+i4V<$7?i? z*F*Dm8jk(vJMvR>$nlMtKexjFcgVb-gfa8yfXv&ejppstLi0F{=H;0`C)xjg_;+k7 znzvI8&FeLq-4xwM^L8?SKHqfn_XwD~jOOihHS+R?O1`m6d?y>t+sXXBA?EcN&D&`b znzvI1&D&|bZ)^;jw^JPXsXR2wHx@;HDh{pV8#C`PnYV}e``FFf!~DJW{L~pTfB!zl z+GyS$(|uzt)7drA{QPa8`T0~u^XtiEG{2rqK=bn{jpo~r^^J|eCFyY-fvaMVeE`kB zpJ(!(Q~&Mn8~X--_YS+{FC+@pO;SJq*pacYI?r`Q^#{xXnQGcIf)X+Gu{=ZJ_!3I-0Ma>Kn_T`Fp0F!*urVp#22xOFJJ|q#{xDmkI!KmpT!hDg9$W`Gm1}h zNAM~1)I<0rcL1Nj-WUG9gLUpUK8{WGIzGl-!$+~AUc#x|MSKMF>REi4JA)5lN~%;u)^)&E!h3ce>`oxnY)EIVMD!!{2nA&#T&7#Uc?)? z3wS-|)H7J-PUCf$RFC7e+)=y+!|ENr<&ckl{qVgGrHCGI+2j#c$C zUdCO*OR=Dy!%Miccrm8clXww#0x!gT%qYJBs5ltnT7i z?hx*Qj(Yb)$Jw2`gS%l1`_F$&ao2HItg4rB7w!`7j0N=^j^WPYPMB6t;*Q)2+ySHN zVN7y+xIKo{9o&w)_W}Q#6?U-y{Kp~gCT@du^(t=7UBRueq+Y-TcOJLIta=)^;7;M@ zm{5=6XzmDZhMsx|H{}lCCfIx5e>@$GbGLD0Y^v9BBkmf;u%ceVQQSq`5cBF;+<-fS z>tjkifl=-_u7?qI57*^(@jn<)?@f1{b-25@Hny?<{KvJp8@MLc)GJ2rGOmF|^*pZ5 zox{~Iqn^T5xs$jG#?>RZGItnPLRUS2VQvRk#O{0k<7wjx+$~%l8|pP2$z8?eu&iFh zWw{Hu4Cd4`=y9iUX-uleaVhR7E{S1v7e{c1a0ztOyYKS;H+KgY!xr|R|LAhpaZ#+Q zmvIs95-yAd^&Bq5oy7$)t)9dMxDz-(M%BX@;`VSp45>R95 zRuSytPuRx(^B;fYZr~4CQ?Fo`yNussQ9X~}ap&+`%&4dE8}1~2jdAq|e#ITeFVR&G zV29hmFR=TT|9IN?Id=;`!-jedKjp6CCsX+t{0MXE8EkW>@k30i$MFO1D87$j zbr+{|hwwdg)Vpu;`*!XQzJo37KmW1CUB|bvs$RyoxJ&pZ7Swb226q-;$FzD9U*k^T zs~A-eW0Tv%S1_dR;LF^-H~9TMcCi2a$7$S6d=cyFReXWFg3n_~y?_nwJU)k6^)x=q zox*1@p&rGjxg+=#dg>v3k~@G;VDEMR@pQ1x-NwhUsb0s&xNG<*R@6&4mAiT$f5JBrs}Slz{|xkGprI_ljfzyIg%;1$?H^LA@s ziMx)MV^zJ3mvNWyQY@(F@DlDUUW{q=BwoawzzZ>|9>yZKhZkT--NEy@d#~{Of9zny z{Qe&&aX0Z?tgBb?9PSF9jV1L07P#|x7G~AccqVrW&%lIw6i?@l;A!ZohwxPHfb6~O zKb{VrLT_Up>$u0PJilZG&EqcN$$WhgPr|%<7Ek2P;6zNRC-4OBxQwWKcs$+3<1nD! zdx`fGxVv~Pw$Z%aCLY7xz@xFIUcsZd%XlOf)$@1+cMcE7jCu;Q+(|qPx<38L` z+#AE{E~dFdxEDI=-4}U3fxCm_u!ZLB*1)mcb=(81>Sf%WyM()8K|O~l?kw(#Y4s%T z!kxgKF{&QMG29;RgdueYcjWH9!21cX0~+hR$*fJ5AQ+y=Ai zY22DSgn7F-+hnjN^vr;Rfi+UW4}wxVy56QSOGUp?N!1a6Nii7S;2(E8b~CO}Zny&-t&nZKStkL%oJ;(5tenUc}Yu1({RN;A-@=OsdCmReDs0 z)m>bL9+HlF_gUT_p?72p`_F4!iC&jg^)iO(C0S6<;fnOEOsgkx1$sh8)x)?v-IF18 z2S?I-&-iw*|GdWK=uKHyui~=wiY%!Ya2a}DX4TW^(Ni*^9>t~U5$UOia4C8~_MY}1 zPY0Kzw`Ehkjw9$bSy3dPb(y6Sx>XE+gt5x^!0t)O%0yeiywf+i2cy zOlQOOz!3F4HoF85F0EW07oDaKC`j4lLLGG4p zsMl~_dR3Oyi#VKKzNC<)#Di8j^dmcR(Ej@?vQlUyHD_b9lax4*nj@x zFnV29)yp^=y(A0jIh>WAm1*@P&O%SfsCpP3x+g>G4*op{&;Pn_2m8-|{EOa{b@eL# zNw45cEU6dp5AHnvj#>3I{>Gic9wyYI_$zk=e?d<@gg|#Z|gx_-)WnMjt-_bKNrJlfV>2VoR_wXCKD+B7i$9O-J-o>x5js538e#zay z4%XBw_yuDo$w};cv!56Xj2=7l~2hFa9&vQ4ifpzsNKF3|bXR(0KU>^Bz zAcARp3RCzbM)3)ZU>!X)FF%Bja|iG->^Lq-LyD0PO zS*+1BGJy|r$EAl4aJ#bi5bsxVcV!c&a5rQH@8d4ZJl@NllNmJMuN2-xPhu70>Jhw~ zJB)Xss~*5RxgER%yEXsiwDETCmTaik@HTo?meq@RE4?6d>KUxi(=w?Z$6M%88CG}k zW_n0E>fHxI7hJcYZAc`T~u@nr5Co`f0o6rRYP z#EBSJkKhU1VLTpP^#C5n?O+bO_xX>fjmL7gWJA4%$Iz>?tX{;U=>=Zx94_c?{3~N=I+WiM$GdXx1~352y5yU+=jc1TVqi@k6Ur)Fo7BM6mH3# z#4Rwc9>LAI!#EmU^#E?h?ck=^y~}?*ZQO*rg>h`C*KlL*DsF^j^&-Z&3pfgM>KWXS zJB=G)Qaz6Ab4M|XVRaYR;|}4v=%{z^S0`k+ryPHr0(EK+`T(^{}elD9#0EbKueJ&Ox-XK*1*sV8tj?l>-h5p@se=XNoK0rlQ(ynn{s#UQq^|NO^! zxf?hfYw8u8hr29`>Uo@-p2N8?qn^S5cM|8sxOxQV;0{YyJ%F>*9ofCre>`m*MsLZ6 zdJSizS7i}rN%XjoyDIpt)9dmxfA#UM%BaE<@WG<45>T#9e3{*-VeeK_Mgwle}fxr z;@4PLui{tS75oxQ>ILM#)eYwH3(Tsg@pJAJeufG4D1OQv!B5ar58=n$0sIJiH~WvL zgKh3Meuz!=I)1=iL;g%`u%ceV>D)!+&)Np_>RIH^=ms;$pXm)IkpGrA7{|BK!?(~y z{!DVPcN6c=U>Er_&%q}0XQYD-!919r5v(Uve zF@$Ge_ga2mj~&^-)41!hjHhy!WDZZ^&dMa_xf3#sCv$t!!IQXq*Z8*ZMDC`n;zaI> zETQ>+6z~Lk9*@VYdK!=8PGJrc>QOwFJ0d;x5FSGh$llfd%kSXP^tNoO*YPNN4Ufc% zdI^uH*x3?#S+y{^M!mczR1V)N8mey(-J@pQi{t1a9E*;6_X^(M;O^k=*h2GmYv69&by-y}V~SqF zU9q5^!(F(uxHG2JlQ@PuA*1SH+==etju=vRa0l*QiT6LSgXZzHaC`2itgBaXJ9@CxE1y;_xBx4aJO+wY^v9B3+@_jjurJ1j^-}n zW|&vc;-=gg+yqnV35;{cabt|Ad$8Xb>L=VW`MgHsU;C%G9Y^v8WNUzC?dI{&H7iC^Oi^J&| znNm;SJoLDXsCzg!-Nm^upx(QX_iwnnvW@-cFV0DC$eMZu=b)EmQ9X~d({nPTp2A`D zq>QUaa5j2ay6OR(mF~!H(SJN`oQ2+!4fPs2^r|eY7xC|5Jg;R=J%fMI(=w?ZM?Tk6 zFe=09F7jvYf+6XscQ4@mEqX_`Fk+t9$mgmG){)O`6|Ab4vBzD)UonTjU>5ltUBM*I zzy$I+z=C1qbA|;yqUC>hxA)f;;7?8d5{KwNlK8IegEt~3f zKb7I#?|)${l!J%?{#Mm>dmZpvU1`COL4xOxQn9GJndbkzgcq&xTucF*-6 zPa9w6ZsAKIHn1o|jqmG)|?bWI{cPkI*C1QxD<8^nmOY{KwP5hv;qD zRIg)=UXvB|5NUKbUX^9_ zBHl(X$eelxZ>6VYQaz6RS><3_7kUM(#S^fMvWM zOIXGNnq3aBm{w2XHQWij8l&oAyo%eyD>0<*;1%4x(|La!JJ^5TEH$Qwrr}`@qBts zR@6&)9=#~@>RFsb&&ZT|0?(z#WklV>bLg%NsP|6g;{x=qY-9gI_7QHNs z>Ulhqo|75%6rMp(%D8$2Pp5~as~*79=#K23;y<1?o=R`YhI$Q8p;u*Dy@+{wLFUvm zcrraLlj?Cii5`_} zqbFokJ&ecFJsDDW@ECgUWZw?A&a#!#OEU6dpaPB;2F{_@&!?;s; zC`R!Rj7Sg7>kHuodH@f`-bsG%;6dDNJP@1ebC(&fvb7 zQcvJM+;Q9+BkCTexn0}~1M0mK`M3giSGKYLyvK3$hODVqa4fwni|TpYgPxNa^%U+- zPs+G@1b3r{rK=vm6y1^CiT>khIK}AJ1?{9Y21RI!p$+E9>vkz5!?(t^$>2# z9l%YncbxxtIvD3}Ums;JBMpyMm>dVaVK$2jH^eC++kb;UG)I2&h6l8*ge*Ny=`2TyM?P@ zL%oJ8b60UCEMgc7xFTk71x(}e7{`$q#pTe&Wif=yVD}h4{(&7_8XLG2)^SO!qIo`) zaRhe>m%xI04j1Rn;$oOqPom46z(p~t9>ztuJzN+=>JBc%-8-6(dte9q&qG{*yNUB- zUA>AS?h4L_CG`RZx$`(LX4TU;oI8c{U=-)Z2+oBe3}67~#NJW<>+j$k+-;m4o9cBO z#$ChNu%ceVS-Fci3+C0c=x}FbNQUautyI|S3Q8g(jD17!hbw%{Dt0<4fPuSOs~qa zdJ$*P3o@sk!Jp`9nN*MCkMyVvtGoCEJtQ6V?%{mgg5HrWG;g;CeowE-eLaZ>EI{ywrr}`@nd>TR@6)Q5xpq$>RD{lGcu)~ zzz^wh8BzD}1G*~%>b*nxcnrNO+ZZv=f1FNl$eMZu-=mjhQ9Y0E(sMGSp2BzNNf}p< zAb+P*Ff3j50KQFkWcLvN@wD+RdP_FcYxpL;D$D9ce1l$)IrR*_PEX6EdK_P)M`c*u z#aHPe>8N)n@Npn|N4C(s-5U4`y)LWjWqg@lk_Gh~zC_Q;w0aV!(GxPN9>y2xo(!ow z_yWCmux|&=<7wgZ^roz%d)7R$A{@Td{dKquvF5&f9P|snRJ1f)bNxY7pkWuw8UQ74z8g%e# z?CsCTVX%c)ViT{xDweQ=i?37#Z$0}d2Hax zSVQxADtHoiSr*mvcp^QA6EUNn!V|cYGOixMiLN|dP_FcYj`ZZ zD$D9cJceG7IrR)4O;5|DdK{0UNAXAutGjpvcL)zhN4>ibA1~nU;9=Op{__(L<*wr) zSXD3M1nv?Zj0N=^9>krMY4s!?NKeS9dKfcwPlnVTJb>QY+qZ+}@w9M%dQ;ZbtGFM% zB1`H898b^7ta=*vrKfNoOsGe3Z|;cn)I*r22XHU!rTxd#!9BU#vZ-FjarBz3sF!do zy(shQS=@u3kty{A?oN-(h`NWn(Onr(@9o9MA?RJ%M)P)S;;!_Dtf^OU7kXJ1)$_PB zJts5jDI7yj%D8$2ccO=-s~*4|>5lB~=|7$}?m%zJhI$Q?^eS$TW%VL%$6b&)^$c!H zPs^lw9Ea#p8CG|38+r)0Mn}Cnj*lyFcQAo1>_7i;OYXX?s+VyKdPx@4bGSJ@E7R&p z98FKisCpPTqkA%>?%<~M-dNub_MiW_3B4)n>Q#)>E3%|sz>Vp7nN?5YM)Z_Ss7EnI zk4R5Fgrn#I+1tZ^JRRJS-j+@EI&MI($%=Xj*QXa{UOkIZdPb(y6Sy8dE+gt5u1j}i zK)ts+A19%AWgGj?e_V&&kTvxRu1zn?qIw?JqUU5rJ%wx1lQOOzG19}*RS)1AbVqh~ z^B+$eSEsjRL%oKp(W|noUc^=D1({RN;41XAOsdCmWqMSG)m>bP9+HlFH^s+s=pEU@ z{_`JKq}OFty^Jf+OR}Jz!{zB&nO0BYNP0p>)x)?P-IF182bZPycJ=LG|M`#0(3`TZ zUPX^yktOv4E=|wNta=)kqNij+J&H@xBhph3;Rt#__IB|fPY0Kvw`Ehkj*HW4vZ7wX z#pp$uSI?qL&&ZT|0vDynWklV>Md+>!sP}f}<688tY-9iVj|S3IX?#Yn4gR|0mJNkC8|NO^U=uKHyucAY*$dY;i|K{(f$;+&I8vmlFWI{cPf6^n; zQxD-xdO-Ge@E=bH|Dd;JQ@xJA(`&M#Uc%q#MVVL6VvnAYDfI;YN{`Ekx`)5eT^UgC zCHeRsy(`;j-fm5tL2uwsSW~aykKAQhRL|oN^qkD7r?5*;;`bO=kKlLQVf+?d^#Fdu z?cmqg*xr9UHT;UZD$D9c{E}XfIrR*7=xLc$kK-5gs0^#S_&Gf!9rf;ZeEf~xku8ky z_G#d!^g4cmRrNA{%w3WN^&Eag&&srV65I5IjH-w6L%JtJ>JEND?``YbLGyT8_&&WU z>*`gUPOr$4dI8^~=VewsjqlP^GNB&Dcjyu6sfVyd56Iq-|9Cq1HoYyI>UDgJUXvB| z623_<%Dj3O-=Jq?N3sJukEBX?&QTk_q)FK17d5 zPd$V+dO-HJ^dCKVL=o|Z}VI8LTVWmw(C8|fkGsCP&6aYcGZ zwy^*F$Lr~JSyeA%nO>3w^&DPD&&srV60fBvWK=zj*U&u~Qg`rbdT%q|4)&k_con@V z>*`g!l3u|pu%uqV5_cXi$Eycj+85MIO`zzearssDI7SmbWw z1=v)tBeKHkaQ z#nZ5j{pUZP%H6*PBTVPqeh?{d4a5U!BGq@Rd8aKtHdK@?5j$$0c>Mm}~9m0*! zQSWZR$Md*5vW4dD*1%Epx~!^~aYK3uH^72=4%g?-%CveCqx6J~s)unsx`*pxNZrBz zaQD{d<8j!*{_`H!=5FFzSXZy&n%ot0V@bV$YjEdrbOYznMdVCy<-j!|aKmTzldPCOKE4U=REQ{)S96`^?jCu-}peJQqJ%WqV!_rj`;9_(~ zcGvYEPa9o&OP1A(xG23KbLtsfgr1g3^*Am}kIJyRiwn_1(oygJhmT{?JF8Rw^$WI;WLA$nG()sr|MJt3p&VGPne8B%v}UV3jG-wyVl=Qy0+ly&tg&O@)r zl6nE>rsri=J&kkGQ!=3*#Q;4bJ@pXINe{^0+WzC|;2iX}Y^v9Bc6v=#)Jr&wUX*$D zEY3#H$dq~lXQjtwMBT$#=&lT?_ttXw20YJY8~e|5{CgIj=dz|=!N2HbSya#CpY)u} zsHboyJt^br5&VN5macjLf2TXLyQcqm+V~s2B^&BB?9r>TtX{-l=>?fn&)_fgv`nhU z@n?EehSgo1K@Uksy~`WvCwfP=(7fFm{GT7`by-y};}7(bEU4#@&z%;`%CveCzo#c; zR6UH}(LEVbcko+!Zw=oLl7cP#hTfEQ^(uZ%ugH>m0l%W>WmY|nU(!=Dp&rE!Jt95z z5Pm@q$lmJyScV9UXlg%9KJx$%CveCpQk5eR6UFhx+g>G4n9Zkt?b*u z{_`K7r8i|=y^7D!E3%|sz^CbXnN?5YQ}mQfs7LWhdPI8aA$)=!kiC`s$J4<&y)B#S zb$py&lNI$6K1MIfym}TNrDtSHJ%Ll{aT!tf@DaKz1M0mnAFrZ!WgGj?e|(7EkTvxR z*63wfRL|ps^qkD7r|Wm&z5 ze2&RrLFUvmcsD&Qlj?E2iyoC>brKE_LlY^PX|w? zw`EhkjwjJ;vZ7wX6X`{nSI^=^dPb(y6LUG)GSNq1y-N&oS*@d$cLHq>i)IK3*% z>P5`b3o@sk!NcfjJQS1aaXf@OD#Pk7PN0XRquw3C#}nxtJP2FZfBxfv+;z-gRlSS{ zaF=j@EU4#jKkh7!$0Y8H3ET&xXkKm@_vZF6jUjah_u}p?!N&)&gZ<|{j^l31x_TAI z(kr+JmedQlJ9l1Y)zi2eJtY(BQB2Vz(o+xNuJnNHE$%;_4(>v4g>CFV-!Z}6z%8++ zUcoK6%eXlf)$=%-J0~;hDcp>nlyUV4Zb}bJS3Q86&>h)z{m0YBIK3qs>NVV$UX^9_ zB5p)4$eelxWAwC4s>g8@Ju1WME^bH_7i;5$*;q zj5YNNF2r5N1+l1}#|5}^I6r38QyAh-;(Qoak6@5HjPs(a9>C$;j_fYzKb|(uLvP83 zdJX5MS8*;Zs~0iAUBEdpj&ooXXGa%@VF+i#?gD(+3p+Rqwy^(vMu)qOfAf&5>Sg?k zyM%vYT0My~xfA#YM%BakJGY0wVMyJ<9(QkkK0bvl`~{o%GuF{Ojw;T;3jTy8^#cCL zotJ6+fjfm=jNK8scLGCspy!l$vIp2MfO zv-l*Y)sy%HcLM7eRS)Ci+#WuLA$12I2(n8N$<|Do($;B+kW|3AiIoFfu)7>5v%XAI^^Wt>8UkQA9=j8jf)kWzL; zNvma*QmR!+luD&drB-KcZKt)HT9xgzI%~6~R`vf}^L@{CfBEn4f4E=UT%Y&n`rh|* z-_POte0MzaJOl9aG;R}j*7&f-Z2USJ9}-v9_@Kr^HS9S1HEtE})A)eK*YS61ykERs z<9!-8;jh)WMZ8Mmy&6mLXKTDiJVoPXjid1gXxt>u*Lb(a&iL6HH;Nl-yh~$M{6p3C z|F6XdG~TIkpT=;#uWP(R<1WVS_?tA|E`Pno^%_^-G)}=Et?^dzFpalp z%*XGnahou;@c%8|3?}RXq>5WpT=ArSU@X)f&fYT!24C;}~%v<1qYujTgwzV{C`tP~-XX z>o8{EAE>DR-y?rN;~tISI(KP2PvcI;t@!ITj*`EY@oM}98qbwKo3Rjon8uOv2QcR0 zx6?R6el}wr{0xo56*JsO8;d|l&EjXUwTY8)cor15NxYw@qvI9Ob& zagfH@_=OtJ5|7q6P~!mnJdFdyoi+B?n2ldY#l&zQ}a z!MIP4L)rd}>lsTK3mNknvl%lO_i5*{{TbIYmNFJH<}+q9W-#v4bxBs)$+(`el(CR8 zpD~+JL)m^=nSBRjW#;B(WwvgYmARwB&I(zX2Pz!Y&(h4LnOT{)WUklG9hp1zb7{q^ zD`sUL&Md8%nR$K1wfecf;s!ZeD{j-z0~HVI=ZZ?JDyg#4)%y8*rQQ0utI{j_d8qQ? z%2}CvtL&?imHAQD{w(RNefqhh>dvZJncJ#v*Uyit?$^(?)o!VlmAR_g_0=*nH&xrB zpS!E=kyBcIX>}c^+F|L#)k|w+Wge`4NX~{Do22*D*sGtf*VtVnGjo59FZA>Jnrmxj zW$vu`oPKVvxua&KiaTpPS8G?TN)^}EzNPm1+B(Z)uRd0{dhGsVD^)yL|4{wI^($4p z<@oi-Z#Z7J)^KS<-P-YorFS>nBmGLl*Y$H-qwS5dGPg9^8h$q3+E};Wc$0pvI^p^g zvNEqeVTFEfKVgS{mNr@1L`OK`@ClijtD0QjBr|h+lO1wCYO-HH_cqzrq*BE_P4_n4 z*HpF5mNv`Ee6HCp{oK)Pr+yx4c33|TG&`uDTbgfeuG?w8sd=S}yPNN6zE^a(d1-9XizTH~=T+wcoelBfywSFFIdswpv+8%71 znYp&ZEgdRkuIR9~L#BSNl0Mjeh4jJphuT-j{G$EA_L=&5K>DNhUr2w{e!ukI_8&>_ zZNE=?cl*84yW8(+uOoLp+*xOw+K|$<*{>?qWWRZr~lZA(qDvU`u-{1Uc? z8p3>77s3|S!@%mT%CpHKb1$8G*A z>cj7o!nU9K2dRI!(DvT~{~YFZjKQ_a%EM>VlpX&?=3kc`=695>d}Y6jD?7iBf~l>t zu06=`d#h<2m zG9C--J)&hCes31GrSL>J{C#0~X!bR-`DY4`pTYHC)!VoZJSWdM z{Jt`5<3c#7KKvdtY-hDL&WF2c4D-X_r*uDu`{Uimt^WFOd*VXoOT+EyF)4pMe;>{- z+<(mfhWb75#i3sFAHYT7{KTKa&*;7l$1DBRZf|HfU(HuI!MH~_UvU+`IBMSB~zY@MZG@arN@U@|76NlfghwYNkG>M;wi}Q{D1fLU{3C({D zpMJ9OXYffajlYDC)AKIWhu`yut%+VYfq#UzgeF^DrHRdlzmpGK6_FETKIQ{#l*(8hu=qp`DS{ahHb+%@0OO!#E-<5D=hPb17<1y>?Ju7hikAM4?D&@KpR%ofApCFE=L_Hitj|;7739Yc`?Jfgqd-Xgf?>BcMJ4&=us`1q4-{vo)co_FE(@f`dg*5^I&KdRgOL3lO! zQA5w$uq`4#I>6J&kI)x|Z4~*DhI^AA;r&Zt>qLI^hZ~b0L*Ob}N5c7?3;)deJQn__ zn#~u%Yl@7+`=-LSnEaRl&mceM!{?J9SHS(qkL7TR{0Q&Q3R}~*cKmg4wWh`!;R>AJ zX8511&kw_ECs_R-;HBipQ*ijZ{BXT5!ehygm*MdDI$?ezran&kN4ne|A9LaUo##`YU zl`B6*H4rC;E8PE=!+pt*>*4VC z`eFV~xC#03FdY8AC(J(qA7p)g72e1C{64&g{P-Sziu}mZeqoz6(T>*)9z%Yd4EHBL z&W5|3Y4u~^=H$m^a1HX~S~%QpIN#0ihpf+!!GC9c-VHxZe*7JtQ)K&p4UZ!~zK72u zKYoV0^|Si$KKQV;BtOFYLe&PM}Vf%#jIlRw4Z11r?4}+hpYW3lL z`C*$!evE_1lOM(K+2qF@INjIwzYIQ+{P-PQm;CrW{F7dX;rw>MpRzu`2>*li`Azu6 zEUSMPUO;|?=W*C3k{=m*-Gyx!`EeY4S|8iLHQbK;NW=BXk2B#6&TlOIMPu8)82+e^ z@nZN-RgA;mV}xzoG~=7$vkHxW4|gL!?uA>D9}mK{$&W|jA6cJYhCk_O$J-CT*~<7! z_$l(^d-!?sBU9^U*v_45^|j$%!zUSUhR+~Bo`l+>!iv1#Z;e_Wu~J zOnzjlj|$s2tk2=^=EC-_*3EE!UE!C=kKypsq^)TvOf2K_mLl?;8)0x68Jgt<9hg>YIeMB@R%awzrg*; zkFVe^Lv8*Tt-E1sPJWyW*C0R6hQHSs&UYsKA^8#h?lWw!ksr6hFOnaR!uOFMufyZW zk5AyU$dCWP-Gex3S0VY+y6xP#6HGn!ga}yv*7T!hw~c(f7;sk0{E}wM?g~pe`&B>1|;2MK%emVR->vQ;f=dgW9e%uJZrq@w8-`n6P zS{XkK-%Wn(g6}`Z=HG?SAV2;Ewi?3HGEfXo4*6@N`BlAw;(?rhij1^FTp>sKEDNjOn!U$6ZjX_=bzxu zS)c3aehXW;U&Hyeho2=s^5F-_k8|L=kF)y8@U`T}V)zX5;}*C*`SB3k;2f?8&gA^| z!e6mI{|kOc&)aZ*RrNd!+Y97JQ}`kBBYe(8*zT!s^QL?f4CR<5k9vfY#qsu zMR22GR=*CeOnz*IzhQlT8GcvmR5<=V_@%bS-@=cOAK^_vVY{!M&DVpkBR@L8eT!^9 z4R-cEiThBvgb`C58j zgl$zL<@LT!D7r@Wzbr8;P68r%9aVflx z{J0)o*3jy2fqzSW+ygfwKeofw$&Xjy?^vJz4u3#?9DrXXKYoE9*E$o_1@^?5tIoBVhl-bsGE32z}k z-hsp4ordFo0IxdE_;YwZ`Ed|#OMd(Zt~bW&GnETr`-Sy63;vw-xgPwM#&CP#_e5cP zmi!2x0~WRi$d44fj{L}luOmPD!k3UAgW&e$$8fm81$KMq!I_-jZ1^kI=jCv?U&8ra z2fsjmtb-pSKeoc*-@!xu4)_N0<5l=F^5avuW0BSW05>|{_-D8>`B6uYW7xi7eQpoG ztJg)iz0=^A$d6(0Bjm>z`1U4Ne<^$u`Ee!uYw}|i+?o8i1#U9h_J0JfN`5>CAM9iE zufhAYu7&e^2Y!Y8_!!Xz_*hhAHmnQvf~|qFCjk;!=>a$RjsRGt3!U&hYydl z{ln)dhHXFjaWcG{{K$iM=39MVcnkRvKA$mcYsruBKBKTLB|m1vv&oOE;ETzRo8c_- zV=Mgag?4*?g5M`U{t3TKe*6SKsxdsDj>|8*`HVZskH+vy@}n8Nko;%~myjRr;F;t{ z54bw{F%150tli#t_yh7|2K*}daXI|B9+z-_H^SlnX9T_zUftgK0eDfi@uTp3@*_MB zVH-<+JfB~N8MP)^{ciXN*5{AlkI9d(;5YhPeWspwVS7@q!*D*w!kfvDw(uJABMmQZ zZuPz4OO7)h1s9MX7r=GMkMZzf*5~=~e%9xO@a{A1c+26PS|`K#{TALre%uPLB|kR7 zOPg8!{qSYv$98x^b(?<@u19`65C6jYya)cA_4yO{E%M_#_*wF!veuojJwSdmfY-IP z+iMRmYigVe|C;>h1s9Va!{G)+RzDujU$H(fg5M!OmccKOAFJSp$d8-h+uGRi zH^SGDACJOUkRLC=Q^=1!aH9#f|0i%|^5Zc44eN8=K6d}St1&#D;rB#gdns*vD*Oof z(I38@{1^*gOMXm+uOvU_!WU)P@s`0&#v9)XhwmK;xBoDFaIo?7@IIY)n12I)h5UF6 z4xeKd=0AlukRLz8tH_TmJq}^Jn*0c#(;T*$Rc!z8d%Un^PBYGdzbY^u2)}c#@dWq< z@?$>yke-L(d`jWl$d6_4HRQ)eIK0my)Nh3+G%|h)o=Sea1pmPLychnM{P-AtgZwxE zKY5lN?=ZYM-?*M$H(^^tel&#_lOG-687-~;RQP=IV*p%8ew+&*m~8dq;JxI>Mer{2 zqZHmoeyoJo_q6>tz$>~M?|{SSn1%amH$1V0@h9+D^5X~iJo2N8*0HdCJIU&ggWo4V z+Q2W9AKl?c$&Z2Xo#e+@cqREU3tmWmEQTj%+wI)|7my$K!2QUNKf>P?Tm4_)56F)X z;aACzgYe_zM`ev++em(d&y^3`YVzY`coF%L4^JaM&VeV8A4PEZd)#n;&x3!MXuKT$ znEbd6euMmY7=BXc8TNkx-b{Y%f!B~92jIozNBErnu!Z+&hW(qt#pFjWJc#@VpZ_1W z!$nqq0lc5}`675X`EfbCQ_qud{NKS_$dC2#TJqx$@Y1$c|0j4h`SEvn3i=h^`rHbBi~Q&YKdaYmIKLtA1LVg9cpdpMA70kR>VE^5kRR*di^z{H z@Hthjeg~Y%`Mm~z#rpgq{0{l?9sEKc+doU|OxPYGKN`Wekss~hYfiNKGvN8;#|U^P z`7s$DnPv5h;L7C38u*)0HoqBum;87feu?~e1%8D5co)8%{P+&OwzVDaSgq?}yM+Ac z0RM{o=mDQs#p;K^pHDR&3%^Bv%!QvNKdyuy&=?-y>)>_d$L;Vk^5b5(g#36GE@)-@ z{{Jk%BksehKFnzP}}GtMiS|fy3{G!~8UO z+R4UOz@x~IHE?h8<8F8$`SA?=_GH`tHTZe*<9+x+^5ZaktDcA9_G{~T8Mfu*M^ktn z`H_Ohcd+{2@Y&=?c;7|X`jHqdndyCS)X&@-Q-74 zc&F~yaDIc~E#$}f@LKX?61=pt)z5-wlOGGQ{SO{O!$?AU#&nG`_h9{68cfl9bvHBTPV(b(cnkSaQR__D)@of3``3n-k{@m0+2lt@cx*?j&xHrHGVTHAk{`X{9>>`H zK=@_yV;KA>`Eee6C;2fBUP*q;hZpAC@s_}o$&c`NX<-|2vdyoAdy*gb!X3zuhvA&s zR{sS24Egaad_Vc|Dtt5f@iu%F`SB4vhy3^&9!Gxs2%klMRMv6A){XoK|Lz^OPUOc4 z@JY4o{Mx|JlOHMgLGt4?_*UIccs%>V%gK-7@I3P4LU=s+F$F%G{3wCb*>=1|aEkm` z4j)f`To3OeKYkByBR@97>-9Vg=l3wYg8X4u8eVbwbzr*40ngV|e z=aL^^!;Q(0AK;hCkBWMph3!%DBfKvnYgPgu}mUh5426w3P8p@F?;l zyw1YboBX&BKDD0JKMH4)A5X(?kRLC@Pm&*hg*THQU%+d~kBVA%!nTv?S&d=;V)y~_V>-N!{J0!mMt=Mj zE+Id{--(B$A0NU`OtbSj2;W_3Tv_*H*shZw&bI;lYtFYV zd=cjxzArdz=W)IR;Xa)21@I}H??vzlobP3DOV0ON_#yJ`HuyI3Z7Y0@9=C9Q&%pD^ zx83jr^6e9NNO!A01fNR2RoC-6Y;9WEeE4^?upLXjb%Gm_Z~5?M@@+W0hJ2d{FV^cK zoZozS2KlxOK0n{)!}mvrtzS3e&2Wl*dmL^`zP$`rYiRX*;qZBN;r70V*OPB2Xk7{0 z3i2%%4&T!o>PNv7$+z%*+F=X-P88;^fKTgcybKPX`yb|4!1c+uHE_-2ZT>bmi+sBq zzLR|03a=#J9)lN>Z_mJ!$+wr`5#-x$xM!~2-n(!I^6eA&_-va$03Xx9_(%BPq_^6htUWAbe?eC%;nza2hA ze!K{8o@n!bgV$&bkH?pA=)(hN>b%1?gM6zGpHIHEf%}nfd2ot+I|~kfcO8y53O=sB zaWVWK@?$Q%rO4)&z-x6shyBC-7`CP4+a2(1^6epbY!9p70S_SGUVwASx7Xop^6elT zK3_E4-U)hMh3#kZ<8=4|@@)dVPOqC#KOJ61zFh{F^tJg_aKWj@cfy0nw=HmY^6e?O zRTHa!9zKD5`zu_5^V-;omvJwvzlfR=E+jh2%#Mcry7h8XiG@Tn_gnKkk6T z`wGMPya*ppetZE}Y-RKH3(IaUrK8;d9B4 zx8Pm_ZT@SxV^8BB;YQ>~eZB6&R+;=r!{20E{S^39*5{S*M>TDJCtON?ya$KZZ8*QI zqO!whgzt3^Todj)z_>2l`3&Qxa1-*QD;&NjChXq}KG@v&T=)yt=UMQZ-w)R~$@n1reKX_Q%7w6f&HCIH{ww*> z1-?pSINl(54*78*JdXUB1D{2HTmyGI&Gx?yZb^PT4u=oa3&(#N{;{d?i}1f#pLfH1 zs@eQrc)6}C?Efh|kNgP#t`xTM; z_X>phpWs8R&(-ug2-|yEHh(<4Qm?yE-wIwxesqH;lOKKI5q+$F7~GTm7zcMCKc>OQ zpJ?@$!xhPo-@yN=WAit{|EOYo7d(&rcn}_6X!Fm(XOkbV!)fv({9Zk5C-%1b{cv6K z;~@MK>vQ<9)3ANo%Ia&veHrN^?5bCucgi32ERgn+ynoG{P+W0M1F+dV})%f`SBXugZ$VFwWn7k+{K_!54a{P+pJP|uTaezo*ChixGF z(G>1VesqLe46yps;acR!+3*jn&lkcUpJeqj;5W#R@VN$Idx`v50zW{0+yxivbso;| zC3rCT@g_LC~U3!TYXo!4*4+_KFs=jCA`0#)!z^ACO_VSUm-ujhYE-7q3Tv& z11{1!9M10qcqsYN1@1w941(L9Y4t^Lc%O0De+^N+=WT8NUidBY;|cgR^5aeT zk!n`|5j?5L_$PQc`Eks2yPh-1k9KhTepcTVZa{tvgflt6^Wd-ASp97H9oFYx!*7xw zzlXP1wfg(uspQA=@VVs28*nf3<6XET`SB^-i2V3BT$%i+FvG6z8`kGq@Vl(f&EUV* zwevXzej>{_AD&KroCA+0KPJF^&$jv!IDC(Mcs#F!n~)zj!r^--!~7=rU~A*Y;C+pa z{{-(LKmHCsRmJANfQRdO8jkl9d`6-1F*EJ@+mjzH;0A+jJ_pVuKl;F5u|AK4-|1-e z#qbNQjOW7-ksr(8$H`tr!ap2-a>vfnr-KIcP*PA4EHI|5BL=FV-p+?78`{YO6U)k-2&lw2&cY+_yHa;DGfczK=uc>MCbKx_|kDK5e^5b5(8Ts)HT%G** zC;T1j^D%Smd_EvQdcm)rWVbg7ew_Tc7Ji8QcnDrw!|LCL2a+HEg1eF*HA?LETAX9` z?ciGEM;|!+-9xy4Cc+=*7*B!UAU|fnPm&)c@FV2M5_lc?u?`+ge%u4+ksnXPt%up| zy#m)EKi+~5vp#PlJ1qA4A}_ zLv6kg4)2o;_t#W7{9RPwIq>J5jW37aB0rYH&ypXj;U|u@`gQQ_s5i>E4*U!2^KtO!y==ZQ{1*Aq9DbJkI1zrJmDQgNuOmNl;X978`P1PX z@}m#jjQltYu70l7kAlPd(!%3c1b>ikJOh5UoACnpaq{B|cq937ExelixDLLF{J0rD ziTqd(A4h)N4ObXxw|77MCF}Da;J3+-r{L$iTK$XggXG5>@U7&>UU&`p@e#a={P+?+ znf&-S+>reE8Ll+KZm-(K_IMv)eLfD}OMYa-;qS)7{d+RJjr_=k*Js=O>2UZyvrvB~ zyomf52A@KHjDf@NsYCrFIBU4^ui$T4pD%;oCqHh6U+!Y{+u=vak7wXJ$&Z)eb;nu# zZg?^Iu@}xEKR$w+ksqJI)ya=<;O|(Ue}F$AKQb5C{rf8UaSZ%8`OyU4NPe6I-&Wtw zuN%CS{OALBB|nD2;ooV({dXZ;i~N`dhxd7h`HSI?$&aP*8|26D;3vtC+u+UQ$G!0F zMepN2D`|GPbtFI5gLw>Y`Um!m^!w)sK z`g7oW$dB{k@I5}^@hN~?lOOZpI)yfW34ECKc^SN){I~|*O@6F}cXqe^*TY-Lj|btk zt!(}u@X|)cU%U?<7A? zg~R8hhWn=vys)A1VE791<6QVy@?#wQGwbtY_%qh$+3?>6+VL)dpCLc4h3_Xn*1M|b!^@}oa| zEBP@NUY>2|GZS7+ek_3}lOJo~hUCXRaHX-f{|@*7>+>7%Uh?BZco+HcBfO3LsC~Iz z-};m6cqhUu$d5F8V5Pa{7j!Y7a)3*oFWcD$AFx2(?(!S9nFe}rE?&FVjZA04awAHCrj+^j01M*`D{Av%YUj;u- ze%uOgBtPzfS2wl#N8xM8kLTdo)olI^xJ8lidvLAujX#IO`=Z0^?cZ?tyRN{$z;B#t zT^cGTj6@-$7Ap>gY9_Fz@PUv{uBHb z`SB+FEcx*^`~dm!1-!1Y?f))?yXkH_Huus-jC|9PR+e**u7{5S;v zk^HE0gV!2ErrAk5O=?VyhnmA7Fi+ z1n(t3u7!7ypa6(9xkb8$7^z>o!|N7M<2L)k^@YFd4$uD@@RQ_6J$N(uaRR*NM5}KLFD5^_z?YC8J>dfKV-Q?t zyzPG;e0Y>`5xk%Lm|a5;0wu* zW^nj-*RX#F_-*o|3;aC!(Hnk{{1^n^ns57`3oj=>3gCI<$5eQHORFz|&n7=Ehewhh z%ixbDTm35db@Jn8cnA4$7rcr5*bZM$e!K#gk{|ED)5(vltL^?8O@8FS!^n?3co6w9 z1^(wGJHPqxU&xOY@E^&KJK%ccB0oNX zPa{8mfWMq*``5X~&i`%lqXYar`H_MjJk#p?!ncwiW8v_*qv3j|!}Ho1FM`LDAHRXm zCqHh2dsesljqrgY<8AO>^5c*2F7o4Lcw0ZK{|H`Be*6fpAU`sHW7oT&t<_hDCz2n> z!ehyg#&GXyR(~S=E$ef4_F}N8$0B$o`LP;a*v9t16%OA! z7LKMAMa!PkAydpALqlX$&ZWSMdZg- z@HFz{CU^q*@dtQ7mK}c&{6nGfzu}L`kE++&`MojN=4-=Gk{`|C&E!Wncn$e66kbez z6vHzb+wm5{#pK6t;6YVveiQuuRO4;%%jCx{_)+p>FMQ`9tN$KeNq!vrTf3fxkq1J>a{@kBRW_23q}M_;T{&Zg?vB z@f3V+2dn=Y?nQo7TxGYPCO>lE+*(#Y2oCR?3$Ldc@DB3h*YGCt<0km}0akw>TuOet z1WzYFcEh9FTm3)bzS+kAhEF3uPWYXjZ_AoCp9BAe{1^lOk^Gng-+PYL-w5AGer$x7 zkRMONv&fH^;4vrJ{_n#5$&W*DPx7PFYCFFZYgm0x_;2LL1@JTE$3*!4VOBpMzM1@3 z1Ybpd+z!vlvHBhQTsYOzjoDa|JLx^MaF&L=gE&T@Pk8bej$7- z`EfP8oc!1T&r4bT4tPBI@lW_{^5ZACUp>y}dON=kyp1#cT-`(F#M zCqFj9E69(h;RT(o{%`O^^5aW*82Qm)jh)YcW39e1+==|if!`-T&V*kkKSsijo^AVI z4Btt9EQQ18(1zF7MtI>V#@pcVJwajqEqDa^@hLp0uFW5NgPm`R{AdJ!P-yc5;8#Z( z4}~8mKjy;WbHKvwEreH-ADiGsoos#^JdOO=3y&f{K81(WvHI#a+WF;@AIHJF$d6oj z8~M=_UVpCbKMr0&eq0VOAU|${Cw8~`9q=&n<8An~RyO}HxE=XXcdeb@DaY7+8~Bgp zM;gAD{1^t`IMV8i;U(n9LU>lb&EEiz>1O;e+@Jh-74AZQ?1!5-wEB#j?EKo0AIHPt zeZ1lEY6ssze&oTw9bxmm;Y-Pnk?oQOt^SX2Q}SaE z{22N11$-CzQT1lKp5G0({hPz#bCSaK+mM><4gGZb8P?0>+F0>$&Z%sbn@d=cyt%59}D*-KQ4hglOL<$cE?%$ zMz}Wl@hA9?2;YCcaWD90@?#Qw75Q-qJg0}%uYkvqAGgD2ksnXO-I`kc zKj2Q}N5*Y-KK03u2JrLbM-TYH(YF8j@U7&>9C$hTu@0Vhs@3m=$CDo)!e^5onZLK& zPdBmp&TxwSxBxz${I~+%MSg6Ax1DGEKMk)ZKmG=<=wtI=!wb^Jnd|NLCz2l>;9=y) zF!;0+tp0L1m;BfWH_o#8-SEqW#y`W4jxug}dq&xIC;8DEUP*q8h8N~p{Zx1|`LP%t zL4Mo-_iSwS_rTrBk0;=!L|^R2!F zPLppd;1f@_`8(jcEsdXmeRb(VpjEBMDa|*)aeJQ+v ze7gsp*w5x)golxDpTeh+Zx!#c+iTa>>RZC~$+tdmP4aCj{I9B3zXZN>g7F>j%F)J8 z!V8BOzY9<9YkUYELB2J-*UqOW`PLQg(8lV|gO4ZQ=EBF2Z#TgI&a(O^;Em&rKY>@1 zZ@<8c$hW3j?DnVivHI@tDDrI-+?#wWfjgaO^=sh90?H$DJ2AU_&zwe!h5+2+rLzhZr!3BSYo zd<*=KT2}vO_*avSD?ez*yO8`y!2`*UiE!6}R$l_QAU}Q&*CIc*!9TRO`d8tPvyJz` z@3KCB4)3XH^FP6JCmC0L$j+~j{5Sy~Jly8n!g&LXbK%zH#~E-P@?#Ku_#~@87v9hM zJOSRv`aB(ep@!8jhA$>Ru7iunk4^Bce*Z zpR+zUg+F9{J_UZMy4ClEFC{-l!IQ|3>G1GjR{v}G4Dw?Q+@Ac{1UJaB`lsMb&hHKQ zE7s?K!k^T$`XAv}su|bWX4i9hk#Q?{D*2Iy&mC&>gW+D}$27Pj`Ee!OC}s6`!j;L7 zr{Hf`pZCI_9&7dA!>?5}Zu*FwUn%*~1D;NPjE6@LvHD-beaVlz;Lha7vv8BnR{tqn zmHf#1gWcXi*5{7!7j>kCH{`XR zlY5Re?%Y_c*U(z#Us2UD+VvH!17W*c#|k`H>r~h-gGa*e=(!o@U)MStw!``_@Mz{| zP`{Jo^`m|pytfkdstenCI77z>+nXB0@vgSh&1k{?b(nvF`RUA`%)k~ z5VprTeiMyhyAQ5I{ZBehxV;S=?=sZ{F5iw*y~DDvo%Xz5=jZte?dbVmNAc>T>PwC~ z{sdi*-#_=L`Op^l`MyW-q@(IfkK)5e-M*IBBaZi`?gxMTAxG_h$5Hd!kK(pR)sHyp zdK3po9Dm7C=QB|^?r;Cfqxi+6>OVPZzT_xA{iyTNa&pA+wVWNn4;^*<^ik)Zebn*K zIja7?qvnN29KYRB_t&*Yo!<*b-QFWd@eM~Ef8J5I|M^kJzvHOe|LsxxzjqX86bv2K zZ^(!dg9}RL&Y4~``;v@;KEux+Hgage$N|Iq_3B$NeOA#$1v85;&M4?LVo0iBXz#Q7 z^%-eKzv078^d4ek`Jo06fP0@+Fl)lJoVg3;Cby%>sWVH8^#`H_vr0;)hk}Bl>BZw` z&YP`?;L0fe)x4?m$4@UV<4`rVWa8Ax`Xkc<-PZJyDN`p&mYvY-d2_=a#YHl7as}fj zPAuo?1qB6@=FKcBDCp$eg5Cp%7ECUlTVnM^bBf2$EoK*a1!ot}nOr=v|MXcC#!nA5 z+&wz&lH$1qbEnLkd6DdrnPC@+>E$AvwplZ$mYqUL#`Jqv_!W|WME}k=Ime3ut z+|h|ooHtvCoja#!hQ=AiGs;GtcX8Rl3d*p2z~&MhdKbII(vv$T)?3s%KQg9^a9L1?}F3_>Y>#0yQ<)VT~f5(p z-?AH@GHIsWH%IwJ|ASw4tN(Qmn;Ac6a{26$&&PQ)!!z>eXX(Xrrs_fbZ!>y$Co)m? zbSs*B$?RfXMR7PtxZCvP%+cef2P-~XydCe_|56j~@nDzL=zg9&cghiWweI~X<4fcv z52JC}nM^1t9zRE)XA_?u6N@Lzo2+NJo}VQ%XV1}#VG>Vr-H4vx1tn82Ek5D~<`mDJ zGqqTs-E_nQTs*yaZm@K5_Uu0T+Hn8dD}BgMnu80a-=rPC@y(hmSr|T%F42%8r*n@{$UdHgVR)Gxacq>>JLPp^=X6eV%4z4O^Ws6AOywoEld0~B z?PRK3Vmq1Yn%GXJaueIhRF}kdGL@6qUh3gVF5c-x=5$VU%4z4OyT^k#naWFSCsW-M z+sRb7#C9^(HL;yc!9WKQQqr<`_fx@$a$lc~JKb~4pH zv7JnHOKc}oT@%~MRBmEBnd*|*PNs4a+eI|dprOvSYK}&g^ z*y;?E5~rP;?j9?gRA(4%C)F87+evkX(RNauVYHo8XBcfK)fqI|dpq&mZBJE_hv+D@u7jJA{N45RI&I>Tr?sm?IkUh3JFT)fkX zRA-o!IPKhY*I41CI>Tr?sm?IkPO3AEwv*}%qwSc; z)fpxwPCGZP59}{*juNTPFxpP4GmN&A>I|dpq&mZBJE_hv+D@u7jJA{N45RI(R*v%X zPI;Z!>I{<-r=6Sb5-XfkXBcfK)fqTw4GFE7;Puj8AjVlHG$FgQtM-K z@lGdFO<+>uv~$xrvBF6;fzftSO<=U0R1+9&C)ET-+etNn(RNZzV6>f7;}>l&l>*7d zJDo^1eo2Yb&P}Icg_COhqV1#_zi2zD#xL4Vs_~1qlWP2;?W7vNXgjIKFWPGSqCP?< zc1pRI+$mA2@ryd;b>gNwNA08f79~f;X)dxn~ zN%euzc2a#{w4GER7;Puj2S(e=RAQ?Sj3rL04@_*Qotw^!6;7(Ninf#LKcelVk~!K= zDzl>Pq*m}~JE?Up+D>W(h_;t%*5U)`bzUJE=Y}+D@tujJA{N z1EcMv`oL&AsXj2;PO1-#wwJoYlZ$sck?I4J5~rP;?iwqcR38{^C)Ec=+e!6-(RNaO zV6>f79~f;X)dxn~N%euz_EJx)!9r24?5#A)ZIb7O^*>I0+gr24>UJE=Y}+D@tu zjJA{N1EcMv`oL&AsXj2;Uh2h@T)fkXR3Dg>IPKhYmssJX`oL&AsXj2;PO1-#wv*}u zqwS>nz-T+EJ}}x&st=5|ms%o{i+4Ja>I0J!r=6S5i4{(&4~({x>I0+gr24>UJE=Y} z+D@tujJA{N1EcMvei;~T^@LG-sYNllBb-j8dcvf{Y3HU>vBF99gwb|VJz=z+R8JUf zC)E>1+e!6=(RNZjVYHo8PZ(|Wgi#+M6I(rDEOAmjVPbooxarPOJE@*9+D@t`jJA{N z38U?#dctTssh%*}PO2x2wv*}!qphAWYA^LqV97JW=|rk0OiG-Vsh+S~c~2-2d%~#G z`ZKF?J1@~rswa#kPO2x2wv*}!qwS=6!e~3Go-o=@swa%Lm#M^7PZ&#_R8N@LPCGZ9 z7b~1pPZ(_{)e}bBN%e%$c2YfIw4GE>7;Puj6Gq!f^@P#(QoT!jq`XdS^@K@@)6PwI zj}=a;Cycg}YQ&=Lq*|0{JE`!Fwv&prXgjF|KiW=e`HQxf>d=ylcRG=J$s{FCJ2%}e zRye8qGTKh+7NhN?dctTssh%*}PO2x2wv*}!qwS=6!f1P`+e|Lr=|rk0OiG+~Zn|r% za8f;Cw4GE>7;Puj6Gq!f^@P!OQaxd`om5X4Z70v&qFfok;bBNr}_WP3Oi6 zC)E>1+e!6=(RNZjVYHo8PZ(_{)e}bBN%e%$c2YfIw7t~xC%Jg16RDmsDRJ7l=`OLt zN%e%$c2YfIw4GE>7;Puj6Gq!f^@P!OQaxd`om5X4Z7=mINiN>$M5-rDN}P6XIww{* zsh%*}PO2x2wv*}!qwS=6!e~3Go-o=@swa%Llj;eht)4JyFSRZtcZAc4R8N?cIPKhY zDpokDo-o=@swa%Llj;eh?WB6bXgjH%FxpP4Cycg}>ItK*o-pboWMZo)j3rL0CroUw z6F1#CYA4kbM%zjCgwb|VJz=z+R8JUfC)E>1+e!6=(RNZjVYJl~M(w5E8I(LDoKB>A z!lcA$nd%9bJN{og_G(DqwS=6!e~3G{w&%~s&k39lgjjHJE^pbwv$@>qwS?y zvE<^NPNde0q{M0Grn|-pC-p>%wv)QMqwSItLmq7;Puj6Gq!f^@P!OQaxd`z0_Tp zT)fkXR8N?cIPKhYmssJXdctTssh%*}PO2x2wv*}!qwS=6!e~3Go-o=@swa%LmwKWk z7w>c;)e|NqPCGZ96DyolPZ(_{)e}bBN%e%$c2YfIw4GE>7;Puj6Gq!f^@Pz@PZ+hA zdTAtggwu&sPneWA?c8)KRye7iFxpP4Cycg}>ItLmq@Vyh>NB~Gd*Ol+?cH?0rzp%HRYJz=z+R8JUfC)E>1+e!6=(RNZjVYHo8PZ(_{ z)e}ZrJz>;d>J8K7*O2l$vDFhMB~Hs!PncWY6H3IMFzR$VO7(1+e!6=(RNZj zVYHo8PZ(_{)e}bBN%e%$_EHHJA3(1YTRmY?;ItLmqIst)r=6Sb7Au@oPZ(_{)e}bBN%e%$c2YfI zw4GE>7;Puj6Gq!f^@P#(Qr$>$@lGdFJz-Mfv~$y4V}+CI38U?#dctTssh%*}PO5E- zwv%dTqV1%jKH5$y_@eEldamT+olc|{%cR6<=caRGg_C*}McYX|*P`vD9))N-sq>4r zlj;eh?WB6bXgjH%Fxp<~D9Ob;ok;bBNr}_WP3sfm%0n=b>ItLmq}o-nbUc5XT+Rye7iFxpP4Cycg}>ItLm zq`3kirxU53Fe!1`x#?7_a8f;Cw4GE>7;Puj z6Gq!f^@P!OQaxd`om5X4Z70ItLmqL@{Djgk?IMP5~pRVC+t$*6H3IM zFzR$VO7(1+e!6=(RNZjVYHo8PZ(_{)e}bBN%e%$_EL*@d;q;pZ1sdmiPO$a zcaIfLswa%Llj;eh?WB6bXgjH%FxpP4Cycg}>ItLmqTRO!q*6cHUaGlDF5c-xDk+i@ zr=6Sb5-Xh45)y4E^+JoblX}`k+etk*(RNa&9c?Go6Gq!f^@P#(Qsv3TJDo`Ngh`3h z&Q0gU3MbVQM%zjCgwb|VJz=z+R8JUfC)E>1+e!6=(RNZjVYJl~M(w5UpyZBlI+5xL zlM<($n@+_FC)E>1+e!6=(RNZjVYHo8PZ(_{)e}bBN%e%$c2YfIwAB+veS}PG^@Op+ zN%e$@?RDa&J4fxLdctTssh%*}PO2x2wv*}!qwS=6!e~3Go-o=@swa%Ldcvr^)L+sk z&j_azsh%(?aayK&!kqG+P$Kq(QK$8>+2wX#qMcMv7)zW~PZ(_{)e}bBN%e%$c2YfI zw4GE>7;P_8iLIV6mN==NFtMF>ZaObkIH{g6+D@t`jJA{N38U?#dctTssh%*}PO2x2 zwv*}!qwS^EvG_=No!IILlM<($o9-SfoK#O3Z701 z+e!6=(e_fSb#n1eCsI9OQsT68)7@f)lj;eh?WB6bXgjH%FxpP4Cycg}>ItLmq1+e!6=(RNZjVYHo8PZ(_{)e}bB zN%e%$_EO24T)fkXR8N?cIPKhYZme)pJz=z+R8JUfC)E>1+e!6=(RNZjVYHo8PZ(_{ z)e}bBOZ6AY#XFry^@K@@)6PwIi4{(&Cycg}>ItLmq8?W7*FXgjH^iMEsK z38Sr^FlsO5CwGL?iBwORlsN6&bShRjsh%*}PO2x2wv*}!qwS=6!e~3Go-o=@swa%L zlj;eht)4LIBV=N$CyXUdswYfruM;=jIcg`>6Gq!f^@P!OQaxd`om5X4Z701 z+e!6=(RNZjVYHo8PZ(_{)e}bBOTB#K1L$>Pt0zoKoOW)yd#rF$Jz=z+R8JUfC)E>1 z+e!6=(RNZjVYHo8PZ(_{)e}bBOD$5##XFry^@K@@)6PwIixp0)Cycg}>ItLmq1+e!6=(RNZjVYHo8PZ(`46*$SoJDo`Ngh`3h&Q0gW3MbVQM%zjCgwb|VJz=z+ zR8JUfC)E>1+e!6=(RNZjVYIzetR@%lbRyLgCM8ZgH{B&xIH{g6+D@t`jJA{N38U?# zdctTssh%*}PO2x2wv*}!qwS@dhved&PNaImq{M0GrgLJ2lj;eh?WB6bXgjH%FxpP4 zCycg}>ItLmqPHG{F zwv&2^M%zg}d86&59@c0(sSA#_E;#BVWwg~3dR>11s3%NpuM;=jIcg`>6Gq!f^@P!O zQaxd`om5X4Z70j^uT_kItLmq8`QDN%e%$c2YfIw4GE>7;Puj6Gq!f^@P!OQaxd`om5X4Z7;RXCKvB?BGnTnB~Cjx zof|8hR8JUfC)E>1+e!6=(RNZjVYHo8PZ(_{)e}bBN%e%$_EKq*T)fkXR8N?cIPKhY zmssJXdctTssh%*}PO2x2wv*}!qwS=6!e~3Go-o=@swa%Lm&(lK;+;;Udcvf{Y3HVM zVuh3H38U?#dctTssh%*}PO2x2wv*}!qwS=6!e~3Go-o?#38VH>ok4O(IGsrKgh`3h z&P}Icg_G(DqwS=6!e~3Go-o=@swa%Llj;eh?WB6bXgjH%Fxu(~qdr0=wpzki;-ng< z#6CjDdobNORye72jkc4@ooG9$6*<~YYORX4lX?|L+etmYqwS;~`Dp8rkJ?Lp)O5Ta zuM=CVOH;zE-TV+-82)n!s^qfPO$G% z>L}GQd>4womZ{S$eUny3#%n)*`EyOa(kpzom%g4WqoKZYDGQxlQIpkQvXz9lPe1qCDfjn;Pw9=)B05snuQSykT$R(6a^8Ku6q zprB~h%#!4Q1qFS3jqH_F{(sqiTKLD!KUK{5-Oie&!!t_P&(S{Dmu6&a%g!hr{?o#zH|?xg@Hctkrhgaa zj`A}mB~J}aXJix~#d;jd9`>@y|MFwj)QQ=}3#OLLEy>Uqmd(_c6J>`lO)A%VlIshl zvS*H;p#%Gk=hy#sY<+EJxGy@k)2RDpaBCY+ucJ|4tyt#kwNX3Vx7s;;Dx2Q z>Z@dBwhp^yEZ2Xvc>n{4*H8Fr%KQM@F4cdY`vum4N;QV9RR0D3O#p4b(tm+(ETfE! zi{Mf?TwZOR&{nv;M*n?};Z)q|WE}ndfcEWN;d`CJcd6<5U&0Hk?7N&~73d4bO7v3W z+w8P*lzj_S`E=NW#mo+6<@Qx@9J2gP(Dt?$`+u?VUp)9fwfvvm|NnJPfB*A8uX9@O z{txTiu5ia>>pyMbamw>|RGFLn*vi~~#&RxS=kySjZU3+9TxWN@@cLV;1C)KG=>NXX z{U6t*^5c}Rn+?lPg!4K2wf%ovmu7Qb`RqSh#|ww-tmhcVI^vN3w{$d2lu8@MVLiN2X zTYac2tdjAA?!avs74m=Br}eSC<_>BKGc})?v29<)diUt7m+P0EBkN}Q?Jurq$IH;U z-md>DR9HVJGo$p)P^-tLe%ROcD}D2)g}pW(9QsVz`kPt5^s#pJ^B)_KQT3w2jEs@{ zDptLxY+bII|3eG?r+w;o>U4_zZ|ba)Q)bOBo~f^6>)54Jw@x{ySkG{ZEv1@N-w<9; zMH%5+-om#z`mLreO#joPd*l}Uu(h@!JhVq_Cu?4dXvafx^_X}3LZiMizT+N^>PtGl zu2DM;e#OSqcWKlvgP*hU^qm^@9O}45V_2s*nE$`nd;jpbs`K7=>xU&_8)J+BL)|hM zCx`?Q8w8k?Nyfi|9VWJ7i{PYCjcf_zAZ#JY!~~y{0o+zkLwm$IPV3XUjc93)pl<6l zN@7~K5eaR58{gI;&Z$r9+m4BIs-8Hl(-qmCjV|vi|c~56`9xm?F8$q@At;Ww9e*xG4Kjmq6>Mr(a-?Odt)jRW5 z_0_{wFK|6vb%g7yRjv_|{CP6Pr(DM?smmPQnXLb;K5LZXkI{QYea|Tkm0d>tQklYRkKw%{lzF@Fl|^<=wER=B z4RfRD_vAt4d*y=t=O*(fZ-w5MD<$c2oG!AB(q5Gsq+4P z`S-#C9#WabmTxO*1d@Ju8~)nvkEATJlHUuhxR)WjoY_I6WL_Jm9NODA^@p@blJqZ> zV=Cq>?qAun3*|9r@te5HwUY{^Ecw&Dmp5L`8S3U}KDe06d%zS8m+Fp! zYvnJ4Rrgopu69i?sf#r?@LhnLM(Sb9`4v@PpJ=ao@y+|Ic~{l&j;`ffqUyOfYHD8k zeoggDXKJcmD%3|WlSl4-O1MM2c&`?&h@N}8A;10^-hueFdyIE3Ux1?xwV9VWU;Smu zW3-_m^Kv)$Dfb<+68~2a&hi&0+LygZxX;DEOM?IMYuxn@^6R^QbiReEHPld*dAWgm zvUlh+QPeV4?cSHWGu2TG`7u<0E)d=c;w1N(nu$A4;D`94zlobe+`l0n?_Kc={>1h9^-sm#^AYJe?A+yFyYGkRZ~rIm&(~Ca z{mi;*@{c_HYV_Rr2LAQYS&1L4)>*VkAc7RbZ@qI`=oXO-qs z-mM_-mcK|CmS_5|OY(gDLl{a^$VcT}$j6Z%o^PSf4CO6vQZqv!HYXM@`U@&7z|_}8RA@RT=`#H}KKPh584{7w2XRXu&v>dF`AMlENk zubaR(sI#QOmFHynvHG&8g-2|tp(gY4_?)OE*vV54U%A4^D>cXWO|NQ;Zfb0ZUJmt4 zdBfA)^5)xlCg^K6ypXx+x~eN5NmaFd^32try>^3tWOs*r4fU-+|MdCBQl3;TEU$Cw zSDwJmSAw03e5Um5&|bAD&8xvN%0Hv>wr6HI^5reQ(wL!Kb)Tw=z5wm=Qv8rtx*wyz zJVqLomO<>|@051)*v-+mmY*lAk4$}U$;W8o({crV^;6$+R^M{S71kB>v0F$p&0(YN z8@Ug0QQka#jnBJ+*;ju4@X5*BobY_z#B+8N&skJ;$-Qce#Gg4M^RoEw1~XN&?)_9% z^jPiu%qO3s&)#qeGXBAS{F|m2@0ppiAzq4i{63kcPyHx*@l)hW{5v7o-*l}@4^_{_ zrx@nN#xaZyDK5SZ;Q5{roxLuKzW0yypS|{ys_5k~M)bOCAFE!pu_zgzyF+6HGX7Wa(PZ~X7^nOEq7s-S%iIqmT8d8s)Ic1o!xBpzjtl z%SnBScvnTbe;5Co?0y-TvHRtq_yhbuz(2!(1^*oXcK&kP&0qfTjJPqh3@H2k{B zC-`sYFZ(LTD*n131~Z__Zf`X-fAN0}eBSPV9ppXh_@4!T)9$aPv5=A5FczcxYv9X{ z?yu!ue(L_mxR;;0U%H~%KPzZq<^do@<~+5HA^h`)?* zgnx$nKLB6kulVTxCH{(!?th2B;-mY0{1qSF|1N*I{XF=4{N+~nzt3N8b-$m#-0J>w z{N+~n|AYU3=l>1KKX3QKQM(s@!S01$w0q%~>|S`l z?u9Sgz3>n1Uie3LFFa`X!aufq;h)&O@XK}|@DC4uE;NNc0e02%gCXb3jq#%_dCK!f z%F9g~e3=}`uR=a*KB`@r%zb3>vv#^7{P`xgNLR>Lo4k!UOcwrLlh1XrtW4j&Y2+b~ zrwad+xxd-_Uy=U#syG;XFIB|<9PY7_o$#1G11?}3X#~6;90tj^tkMCdcY%CMHSYwQ zzyXl28oXHFtu1@?~=#(;Gp`^aY{9Z8KU3oi309-nY%iLD>_^-Z4<| zISeX3hdieDgU$R#42MDD@q$q9_8Kje|9W=bjs0hhFOFNQMu5OR%PLQ^}IR`RMoPEG!x($?jq1?9`Erd?%`B!*C$yb8%KLg7DyFI3tg7Uuw zWauTk*kig0lzXAvr@&jVx4`&9@#lg!!ml;HQ2cYWXF|rAoj*e8^l9)Xuzw1qXtI1C z3DYM*oMsCi(_^5@MQ!Liz`fuiQ0+E#F8i#<^dP8m+vPEx2XDY$C-_cK?*V?bIyKw}FbUQ1M-9{H37EX|c(L zlHY8!(4_}dxix~SM?%?~YqU`I8o(dNUM;BbgtDhh6fKm!i7L-O<1u{_R6Z0y<->80 z>0_Ys;i$*-Zt$Jh+Xc>qpZA#F30?xd!(;kxQ2EsaD!)=7;b#|kOwR|EUyUBqb3x@- z1S-GI&{iqFLdE|SsC*g+RnLXu9|x5$M~p8N|FF?Q==7_g@?{K^ze3qNV6;&7_8Whn z(dt(#U-p2?m)#!IL!k2IS&!*f@SWJpfK;vQ-5%3RL9#sC;xUaIC9zrg1b>dk%Z2La z3v-4W4b@*3f3;!8aH-*9L*=vVr3{t7qLr`0215lddcwzN&S^vCr}zcKV}?fz4;hXb z9x&W*IAS<#xW{nFaL_PsxWlm5u-h*OQ-Ug zUtPv9Whkcj1?&mO42KQ#hB?EGVagD2?&_=W&eT`8EUmBJU9|^A%d=HORn^t|s`hig zw|cl5e)S%%`I=od_0<#A=eR#!Q{et+&9R#5>N7PHT!(6R*Vb3>tKHA_Ty1_vef62z z3GPqLIL-aZ8RJ}s>UN{uIZ}6&>!G^CT%WBUs;{r!RX@mey#5r|Lj6gu2OGv3>Z|uR zjB*`sIK}mNLxJnwONKAO?Ink~o|<`jCiZ8Z6egov{Ba37Wo2ng5?lxL5nnuW0@#;l3k5PbBQi zZQT9067t~$y(MA)eF^&O3Hwp|y4F=|H*CnZ_dn9^)P$z^Yg@g3)v}e$CE0BJpgz=a z0keDB`}+pU9QSV%17Z7?ty{Qj|4>)o!(E;C^laPI(ZlqVSUCM%1MLId%mosgL5SFh zLl~P#=ou%m(LUvXMa=D#c9P+`k&Y=eqoiqvS8OVEqHoJUm&@U#gh@J`CWvKQ@Am%glG@gktEJLt*Jw{!K0n^k zv%RZ~)4Q$LMYW8nxF=)a%H0e4Nu|G2SrJ~5wnR?mzHj^1_HA1?mxr!W^d(*zc8V2N z`FK>w!bdxLhz!%4ignAEy!U8Re^*D}=I(Y^^IR#lFW<0g+4>c$+gE(3wfzHYeU+rd zl6)zli|52}U)&3l`{L{;ubk!?y6E|x?C#?yK2^-`+}z*W-qF8xYW?(l+Jq>@A9D@= zL7v&E%v?XsFj7BTCeUjB^;dsP=I!dI_1z*P|K#QB1yS^x7`0Je5KN{1w|su5zJp|1 z=|szn@lFuy*g|yFj#GY_PCtFj^zcVRI@R%s8DkeYir)q2cbfYgoqCz^c|Lx7=;Yq( zS!G`8y{|r(x6U;&zwy z2uDu$N4^ei<{ny~O-@&-d;ZRj?unYy)yDbKZ~VJkpKt%3SLONe?{(vCJx9g9nKdU= zBX88!#Z4+s=sxKnDW8I#%GqZU_SFVWX2Po^=}&l11UDPQO~9msz)xbrUV<#yP6%i| zCpQUunaOQUSq^25IBpZ(P2pQ5JDI=XdoXG9?dESP;ZTkD+cCjj2xqEzB+GNEbcb|> ze7e|r6WoQkSCr#a0S5<$Azgu;3O5N1=}vl^j7L(Q@aAokQ|0gf*YQZ^$5io1raL4o z$xr6TkXa1rn9BcPFZef=z2HwWoZv3RD=82B>G1zFKa%ZnG9H782uzjEU@xS1I(s4g zQ`rmtB;#YlFU43j74QDfZl;Py(${2sf;?FcQ?(bNT?y$+1rHJ!0g|1myAb3 zTp|-5zuojtm9AvFnkt1)=mP9^3_sNqOK;hspXpReaa2*wEU( zVa+{jm$luuepTei6|2^_ty$^s*R5T(e$|KlJvVFCeqddZxNp^lwm@uXUH;LwRU1m= zy0sh3yY;I!v&|31!ed)WHEnl`_&5Dw6 z#rkaUc*CmoA6c_vRd(Hqh!LZ$9Ru6@x|a1kyp18R?ng_kXmeK|O9Z<+`nyZgE&cu5 zyZY9$HgGlk$dmVWJ>jVSuD&fDJ!`i=x~Z!#>g#%J1s>qv)`xq#)^|O&y{ms<)s6v{ z$!yV@xW~KtbR&C`Y;&FlD$DA`a36Csu&LiXinjF*;JTw{Lr4ME`+M=YtL=&2t|C#q z*)Tvl`-|lACkDERg9hPl+4O|cQzS?Y)*j!sxkDkeZ9!Bb*Si&cX7}N3+dA!5HXi8; zlr5!nIk=|NfrUTNy`}%Y-p-DJu4pTZdhOQdQ7oZ8EuCF`xbE%S*13IiSLZV2h)-fE z9Wgg9bG&?I$3RE4xv%HGz8(Q3B5+CZB^EJk*Fm0_JsPt;m3*wiyp4br^3YC9<$jTc zGL<~EdsE4!&y<-;9@@F7Y2^87FJ~NFxJB@tfH1f`A7}5;Ycam^9eMg@P~kNhU*#o!3RHLtj6dJ_ zn$IYIXB*uBD!f`y^Fkw!>2uUOg*O3;uX+fkPlF2Yl<`%6#Xkuuyn^vn@5MiAw4M{u zhe3sR2&B$s^?ZTpF;L+hG`^lo@kc?0x8L}Bp2Z&l72XTRS34m79;0^~Jp?MeXF+s@ z*+Gx#U7*6t8-J(qcYq3S!1%q!?*SEFxA8lT|A5gOjcx-KUMr}1j#-cC)u6&#Y5a`w z?*|C@l!@GFnT_y@ESq1r*2*+n4S%-@EVL?>oFaH3hx~6J=xd$ zPxjA%3h%V>_1+X;^E+iv?^)5uL4|h=eD$kj zzsKlqqdP%`mjjtjmVLludLyXt+Kk_7{4A*ORvUk%@iU;pyW99njlbCFn~iP)72YC{ zv5aiWV|oFo@a7x8(fD&gg*V&y4aTnp6<%a~^}F#eea2(FWil>e(KT>26Trbs9fs{0BgVx6$}*#%~1` zUe@@ljh`|4Zljli3a$8hJrf&unUX$?`89xOoyamReZ~R73;mtMvY~$A&4aooW zY8sW_q6yD{#Cc8%`~o;1ydRw4A^iw=47?8<14qCEAZeSk2Yd+}0yluY;EP~4xE@>$ zei&>5$%8p_!7qXh;FaKbLlpfsSOAIhoH6k8-~o`eWpnm`{ooL|4(tWjg00|(z@^|Q zxELgF=gb9v24vqF%@3KwI&K%=0{B7bG4OHl0JsL+1G@NwH$eA-tHD{0Bb( zJr^7S8^BfII1jbx0=NG0+58sVo0aSS$1K$ZA03QbT zgYN)`z&`*7!9`#Tvk_E!)qb-MX^z@s(Q1d8^5y2ct3K;tV~*II0?!@K=$tX|YLK#W&%-dN z=OGXNHn;<91bHUi^T4y?o(J+;^N{Au1uq9PJV$t4mokhD3k{w>W;kq^H_RDk3{!@Y zp`I7{tLH^HY?wF98DpS}tgp^>)>rrR)>rS?$sGTxLDmxtRqfWQf~sMzBUSsjj#eGuI#%^6SHIEI zv8v2PA@foMMo|!ShHD9+&t0n4&xbCUj z%k_o25w82|M!6oW8{_I%R2;24#(kmgB-c}Qr@2nlo#Tn2Z!n9-fC3L@8}(4@0R};t zPaD0I`YrPp$RwZ3^CIKE>!9}-{RxxneI@gIMo$>6?@hVS^SsNvV6@)5GItm~WVAMC zk^T9!Pcq*!`jFB8V)hTs^m08%vVVwl$^5a=!|KRjzG-yprJn9p`mrCbc@l4jDC;&kGY>P|Mgy!88P`kSbS>C{a>2<*GQ+_ zA2<4&X8$`z?>73Z(H}Ga!}^JbP5yoJe}mC=m-+DL89m47Uo-bdtUTXo^7H2Y>lVLv zn*Cog`WB;q%ILd|ewWegzv9d-=KqM*hi{vFw#EOfrT1fIU*)XycNx9H+%LBJ^OCv0 z#@v6+;`<4+|MN!gGWu)gUi~fi{ApH|JdjojegqbTaCWc;;%sv znO`^m`YpVB%>D|qf0fbejQ+Nz=VL~X8r^C1&xZ8a^Zuau|CIUvC8IxK_BB4C@;qkt z7npp=>_2Yw&zb$(js8WW&sh9EWAt_A-=IA&e{1qzHUB_duhh%Os z|23{7vyi{+XM)`P*La}JtLDGP@nqiQFZ&u7l=-CjKjO(~yZNtvs?5FoWq+@um{V`| zPa3_??9`7fJ&jkC$T-{P~w%Hto*|J6p<;ZFYd82yI%zt}sEK5F)j zjK;W;{YA!j*6i!MN#U)& zGWjk~Mw`sPF{5{w{G8E$X7p0RkoiUPZ`k}_X!L%Q|AF~8VD!%#eah%gv#)-P%rTQ& z^ATwrLFv(ZLT0Ve<3?W|+izuJLo3^ClniWHey@9X9&sO|J1bnZGew z<9{;Gn}7Sv|J#f{X!1Wb|MEufHCp`?nJ3JC&f;^*SCR z^fwZ;_SuNbTM~3aNyy{wE= zoGn(y-O#GpWieK90$YsdXR*Z?ejZwk;iiwp=+Ydr7*nn^0j-SXbEm)SvGxHiO4S^? zQeKp?Ej!A1u^cJmmolY{9r7i?EM-kXV7XJqEoD#{+w!QKr%83~Wvp1nl<|vsQ^t)| z6&6aCWe^^hvwTKw8MsArw|d&Oj<+}k(N7D6mlT$=x>9EOT`7oVdZnzWA>8 zW!Zbyt#?K0He_D2wr$ltt31P%aj~e(i?R|jUc6w6A-P$orMeQEQ|d!ov0~MR4ecve zZCJ5>O>5hlb!#2l#fdXUSbZK?E?#Tz%VtZlT)w8QeM8%NW}%jN>sGX_s^qR&c6-cX zu?=u7Q!%UJC2hHR&nl+WF3Ya@*s7InYd*Bf1!KJSwabj*B3q=2kAy4#Vm?@XFgjEN z3ue{Y`#wZCZL3se%t~2}h?*6Bees407*=&Re&{Ulq1K+c$i^y2Mzq79hqg zJ+?8XRe~5NRt;j@QbmX{!=qWoDm{~BYSz2^Z zyt}n{x1@MiylJ_!=%9FaYw>PL@veB&!UhNa0GHc}cefVrmK5)bH@Dv&9JCbgZY$p1 zTD)6Qyer+Xfr1aKrFeH+@$S~*-IC%RH|(!)TX1%J@vfzKcU$r9*5cig;vF}Bvj!jT z?QGj%F(}^MR=m5lc(An)1d;X2i(-~tNOJ>|Yb^^`kkW_IRMtA1z?kjPa??4&( zr%%BV#=ml6RPHNr!Si&2KfQ8`8D%^yZtOF&$eL~+2jj=WPG$?d&VfIN4~P{iwr!+heHZ3+$Es!zY*H&ocJn z|EfEiMte|;FMqVR_GES@3tM5zO`dRFJW|nfC)ihCyc~OZ53)x$V?i(HY%lKt&fiJ7 zeap+k*IwOnL&>mre7P*X$F>V^ZszP5(+zYkf!t_M^xVA2o%!>M)bP3JxrNRjfA$V` z8hx0hvv|%wQ}y+?9d+gC}QjHc{1cZ`RBpPitTL0p}mEYuQW6V})C= z@ZPdCkJUw^XLaw=e65R1VTMn0Q%xz&Pw31c1iK7jm1T zPU?)kF~3KP?sF;&>MH&=64tyV&)KI;94_*x^D-!pmg{Cjk3Ge?SC>#9Zi=F_?fjM3 zvO7+l6rX+D&%Qs#Ck!W#=V3U%L;lLo41TVzW{M8(mEIiBJ^N+5J^n*Jy7-tpk4$Yt z>iqdpgP?Ne36IUd#) z4FBl-?US`bv`_OUS-1AwR8@Lp4|rOQp7(0*KwX$RSo<2b4J)E%I6Z! z0b4^Jb`V$bcwf18OlO3=VQs*h#dhYZm%ha_c#`<)*-<=c;)`Y5K)jmRVtOf0orr@pOWJpJ-K`TE)VXvxRj)Vuup8}#hc zK0Jj?<)U^(`E@n z{DSAl6L-8R`!{)ili{7P_Ps!Rd7|d3 zm*U~==DiV~3%yq@J+UzS`!iELamN=3ggeBMRyTKdv6~?aa<_DD8F+#ul*~?UdFS!?mK*V9cJQA}e#S}NgA>uU zt#H2@rVQ^~t(&Nj^Bg!c-$R9*y6VgUu9Nw{he*j-_u6cGp02~w$VW_W0av)+XYxkx zWrcjqjLyKGNb(Ik5|aU zJQwMI>7Q4~{VXZ3ubs^Ot5z^mmJfm(n8K?0Obfw5kU+A#Jf`y?L1%Y*Oz!}%$6hbU z{L$tdDEFq3&8h)J19Td8z(TykAspQ0wve}_1YIZ3-ayOe5l6DM?uMVfr|G4 zsCY}y%`e;SG2IC&-Z_tMeU#$88u|usDJXZE&%iHxv&VE3D0kA+f^MCY+-W{s3Tyyx z1ShKfzS>7YrDF`d0o)HR1bH{=p~}ACF+B{*-@P8)IwJYo4Sh410~dj-!4_~axD;#z zoAm>!$8KHByTK!Pb~|_glw5jlx!(&iPrG>#dfXADfiA8=DM$LKXW7fEXwh^Q^h%xC+CdMVFu=$0@tIL z9lMNKotGWq`s&<6%yd0CcZ}<<%LgxKR_EOO3Uz_zCVs|B&ZX z=1uC0=*#Fp$y~)>wAMe!+$H~@gZtY=<0g!6=zJK>I|%I&w~h|&*Pof(dB){{$3HLJ+^rsUvZCF`&D%W`U|D2$63H$$;kefCx(PNBn zR;<2fLhSXdp4r>C<#BdkX@7*BUfN5#CiPO=yLQ-V?K`BG)n3Tj2FK56C~mVI*U7q# zxgDdZDe<<;6qO}gp-+t0OPt@99PRDG#<<(J1`Xu$uz^oWDH)V_Mg5~wd$MJBr6QC5 zb=+gf#qD7ynf8vjOnc^V+PvEy$1BxbRQ$Hyakk&3Mm_h%Mf*+kZcQvBRjOg1Hem`&?g0;BBD(OOfy@=WM@uv#KtcQJ$;$MlCseZikqf+0KI7ixPS)E&5GIlp?jrk5dM;YR!_^l?>EGP@fTi_eyg8HLY+^NeaN9rTncT&_%Kd&1P zN%W=y?TQ<`bNwFK=mWQ55`8Q+dmWSC9Pef$5 zYT4s-|CUdB+BryV*_zUBa@*a;a;b;5boF#bMTxeYE0a9R9&l{Rm(pOJ-a5M9-rw=C z-;&O(Zt8kyTVGeI8Z6M_a>{6k5hLwsXqF?dY+}*Kds|3MP$~C}_;kL+2xtAKW zg6`@|sS{=$GTo;-w{`WW6xO311Dm_!{?5>578yVy6Xs~x_0z#>62?uDw!G)?QAr65i8oFz$+T z?2LpMeV4}Rd*JE2y8vIttw)2_0njoj*@q76FMbG5w8m#-{)WHkMMnRz(eE=_1N4$_ zG+OI9ME4oJ%jo}P^kYWrtXCPWYmt4OLnPzQgMvP6^i?Jg>o2~K9ohe1CO=~I zGyZbVxz)~S{fg*N9^aCj0uS$P#=zXTfVb`6r8p^?wcN#N|AEo7jq`c@Je7XFr?#?@ zsPFN?Lm|=856eFBXd*eu2kWliZfTOJ{dK*)x5|g7Ywx7K8ww4Rci{iyKbwBx#3OMD9T+g@KsHw~$8XK8$ zvlD3A7S~Uc7ZLJ&$Q_vp;_d^^ata!gxLF&(Vw#M=`UVQNe zT{4auHOJ+mFz3%f3H{>8)4SFD3Qznb|MHO!}CPE}3SbD9I<=3rFk*SDi@zw&cW(`As3 z`^uN-kFO_R(bY#Uk5y0H3BHR*!<}99mFrAaADtazP6A`%FBL9hp4#T#0oiJxj^8r51d;s1j zZjQh!&C;Xi*RQlNs27iY|F1uLZGrg&A)dc+eMp1mB26BK^xNn~<&XKoUAgUnG;_?q_; z@*;$-{8U`r+zQKAZ`aQkJmK7VJIbHJ)p~BGp2HXFLn@J0<{8{6zw*RI;psm28=A-E z^P==jmge#KJSfr0d_80H_f&U68ituCM89WLbdLEaDQKH-;qrW#`66$474hy|9dhd4 z^VL31W6Zrc6J#@^vl**z@~fb^m6V;Yn?7%pPqcxJjm$L*b51n3;==h;iff**2M90! zvzduh6Y&o%>K=1oa#jvu4p~m+2fwX08XZJ7 z7|Mon%Nehm^8L)h=()ePXIN><;U;sHe{RX+vjyxb9M{Hh|NPVK6MAMt-OJQ6uakL) zS64+ZUo`{2xexgeF&}e;@@e|v`7h)W`Jwo${I4Y6nK$&B&jXuxW6xD7zpkWSte}lr zP8(I4BNp8L3+;#QPlFdTcSfC|%_J^vth-S5PM6&H0W0Kun>jO;d%f#rrjn^*QB7eqA zK2`o4nnr$P8u_tlmPOXlJI%pQdT#i>Hx?Z^Z4RsQ6saX%Q`gM5Ef~?k6z;S3{lq(aQvb(Hu5#uxs3QC^z7JRN$)$ZC`4(#44{E;DZtz}k z2e<}&0A%d0c_pZMI@?DYv0G!;9~H-YzuO;#|L@mx_Hb56>bB#96Upc6!Rt2Rx>=Uq=@HO7MfA#_KkMvh+Ui7>+aG5fE1Pu*bCa(MZGJ z1@dd|;i7nJ98UhVfy@nQ&VqcjG;3cDrRQ$&BcSG6-3Q(bD!z-r`@z|u{5eOxl0Roa z`Ev@CKPN%?a~zaEM?v{>7?eM+g7Rk{D1Y{X@@F?Ff1U;9&n{5@>;&b{04RTYK>5=N z${*Z1f9?k5PYWo2ZU*JgB2fM;0Oe03D1T;y@~0M*KY8j6Nvq2lW(-q?kzoM`vZv=y zIBcl;D*-sh0$l}vr^k*zSbB%tVxu0+Jt)V=OzTE7G_xkrN{2VB=)9BD|XtMkX{e+n& z&zSuOEj~>~|E2k__npjB7N4a?Z?X8KjAq!;rEiRIWESyPdc%A5faPE42kbODy!Rh5 zdYEuz^zkV7;l2KgCeK@VwADU5_%h!iToXCElWUy5277T@^(0R3O1Q60*jKw6w@+JH zMjs?U;_|}@|K^ddxcn~@_J1p3|L+s>ze~s;rF`Q4{m+E|f0c;;$^`v~iTK}_kpD$O zepAB#FD2sBpP)}C;-5{#SN))P{5L1u?@Y*R65%KJms*$z@AG&b_x~powDu>9%P&pP ze~}39w-f%$ZQOm-{%F^un|ql<==4V&n>Tm$4xnPPGumRiAa(R@?%wivSNrDe1KS>Y zC??q6*VEqr_-1zW@k}=*F6{o|<_s>Y+@ZzuH>_RKUfNfs#7j9agz%S5qo zCv#Z}Js~a6>fmKrO)JeHwYilgM(_54c4quB?J#OzzijQw_D$~O#4x2(p8KtM++@wl zDV=_nW-B`hZOFFwKcbq|zIA&~k5#0Q?;*~co@n39Ih0I_2{sZrQfXn5e5tflnLA~6 z5_wc6Tetj!?M&9Vm0YNd^b*w;ZBSG3U?e5w(M(Fq;ujMtVjuC(i4UZdlfB#fyQi4I zO7R74wV&bYOOVN^pVY+Bm>=7EZKkI$x#b^RwW7^9E7pIswQXGxS2jbjt$IrBP>h*u zh`gv&Vd8U6-9BnDMyx4{aW`-4eWHEqwym4P>{maXJI)ESeR<-T59_VEMTv2SdkWoD zCQa}z+EYOf>==kmZVk25*-}Bf?TDOntCo{UVg)^kv{caLLMv!C-SUAL?JT)atvDX- z=;3W)lY&cIbm{qV6RrHaC`3H=SdqGlI_fGfmAxd3MSfDZrRXQcig2k#rm0Cyn1&#_bNnJDvFqx7kEqH=B3Kol9@K>-HtLX?E}J zirs=%D`U*L#EV~afQ$K6=H;!(^sS`t5OqMhNZ%_d!ivvpfJO4XUAm#>CpQ;irqX9hulG9Z-to%o=Fo8!(9Kvf7yx_0bla_RZ9lgChn%T+;%5G73 zvo*}PE1HAcQ6$RtG9$iBD}T~hA)kOhlkuoiAZ68D04e9@V<2_Gjid35H4j6}ULNH6 zbK_(9m+gfH-FZ$tL(LCBQ~#SYAoB~FQy_K2A@)=qWS@D5y#u^4 z6_Qiw0)44y5*q5a!q<0hNGG?B2Ap}Ct9Ze@i<>yj7-|{)a)SP5g1#a_Gp1MO{<{hK zGYQ(->He;*os^<|8>l(*6x;FhouKq9zJ zTeiiQ;%L`5$C}iG;*JA7Tehl`P!UMi4kjpXWvcTeGV5tnxKVG4iNAD#nfW`(8{}f= z!`-&{_FLVHBsJ-}k)AD^{*C6tQRigT&daDhl=;`bH%?mX8{QlHdB|>-hZp(Y2>z^) zTa3m{;>Ln0vZj4+Sh|MIh4dU^%_X6F*J8@NobJ7`6n9PLNbijt^bOz;jY|ff;_nUl zAO5s8ldgM#eL<6aZ)hJN?PH_%HANfzIDgG=z!NveDBNrQ15s-fUv}U8(fKcg_E>Wn z!oA)VevgnVc~5AskJ5Y}+%}$HQT_Fa_8H7$sAE1uJ#)btm`()H@aRAC%mOvTey#_5YvmGiJqpahkUXdP8qD8t_ssLib3elS1;1W?{f6kdZ(X6e zTUQt7G3D7`>-GA~%em$3O@>_V3e4FUV-CkF)%l_uy)U)bmXq_&bZ(e`6x>iwExVZm zldG;`k2Bk^jJ=e254ilo-4OrczEd6b_KvM(&Q5H9l#qvdZ;m|kzywub=qA#y|NE;N zzO#(^XR`CdCs&hq_mGDlV85VM%vq~;bJi5UWLU4vEQR$7YkR(}xn|glzk`c&%%aTM z>-kGQj5;n)zI5;xo#$O2-{UDy`aAds9(Ee1^OO2j=BEq8{FyWi^0R~g)M5BJK-!Nc zZs%g=z^DNXyTWMgEsH-jNL4g>?s&cvtwt1yFEdDc$8%93Z?ION4Lew=kUwDZ&MD+$ zCSNp#ynuWz{e~kTJyCZKt@U*Mir>KSLzvfu}%N zS!;LQd8)A7d8(j0PxW%_?T1*1-glqJ2ZurW=FNLR`T%Yni2Tb#%RlK0!1NA~Uv|J_ zx)+px(zmET)C#J9B)umOPxAt!8^8t7C&>@`)vo_Vd+E;kyb?SFU;U^9p!Uz$2P%Fe z9v|EZs{f|`*N=m(U<%BDSAi`cYv|m*6wD`d{WyZG%fT0B3{!@HcB(nWFXRJCe zJsKy5)z<8*+3(H<8?QM9Pv?Q%M&jfBIK@}}w(x#>htXHr`{f4NkI8>rG_od>YaP7$ zbz|^l)bA3V7lD}#Uvw~v6Gzn`H0E#AzWSZJk^%ar4?_TmNtZnUlKqpk6S8EoOT8;{rMg$=8^ zwScTf`ABQ~O1pQRYO}6RcIBumUDndNaTfk>-^9{7`pp9@R48`A6&u&L?d#jt7q{Ne zV#JP~wc8)v)CJ%9?l(5y&Jz51;AIQ+Syi~btIw~~cb3W)?FXfX9}i}v&D~VS+_BrW zzX02TZSH=gUCZ+bH9iO%BHr1xX*)~nl{Ft)>2wKh+1ykM=3S<0*vew+m&^Mo#0Ng( zDfHh2@%TKvy`wLzba#b2uubdShFa4 zYJ*ZfVBP`6IRc(jejTH6msx7?Hta)Ot`FNsn4op8bR z<-wn0_7FDkGF4MM!b|9#@-Jbg8?PFn^Cq*w+UtTk@-bt{FLI{)?$Aq7X3SklFX@!m z$9VaO94T(lYI zy8uV7AAH?4(f4?txBVmgrrz|9L)X5@R5st&jh<_IqI)7@|48ivcwIyEJ>HXT4enbY zdamJ#Tu~PM^822~{JzQj{^tw(eW87RwP&Qhi8LP7!nzo$gj;vAiFGQ3yIX5PzB4Oo z8?)~a<`6tb`d$q7LO)*ierIOXc8KqZZoaGH^52O0_32BZwpXwd+)ZWg-Uh;C|IiSJ zS?pJOHQzUs-_U&4rAQX`iq!tYRrKZMXLXg2_d?dDh}QnX-{PC5*7(EhP5cA)Uk!er zXaCjT`QiDtudv=C9v8XUW#e@`UoA(O5C1e_dO!VlPu|vODD7V(e#}c>FJ4$XqVdU) z&Z+ocATGfl)teN4e7U;ek*^Ua>MPYx>su=K15NHdJk`FS@jXGQ_Cx=@I(qK)pDLA~ z^7l(KqsxB~*mLw)iL+1#-GOqp4F-9{;ayF?eY5ZdLP1i_YCShVTF8j>#J%@&y@Cb zeg!*WJx7Y~{&Um?S|C^dFZ9fP`r4>1q%H3M*RF}$250&GjtkVy)wR*>PtCGtgtGe9 z=KT5NoG@p}U~@Rvh{m$UCFaJ!j_j%RKWlXM4Xwor_o}B)}bzpVWB;GQF&G2p7vM#6Sfbst7o*gRaWkD%Rqih19`1BdNMy|@my5J$|7Iy z^&Z+sd76w&0xee_t^|j^c z8`z8atG?YR<_~$7zp+&QdMCIx7hWj0vNm@LzN-u7kLs)H!*{H`RlP0LEO_aC)LqGb z2oipoA>YePvVUXUprRf1CE~{VFmYDd{dE49S%#R-elk9x-x>UwE`GFuWyZRDMIPP9 zNeyE*&ZG<%8)ghOE+Lb1*V3ieZu5piC6T+EYjnzRv0;FW-LwXVVbWdy_RX8wL*$|D zJrUY}wq<#=ONyB7>=6@f**ehGx3#0k?NAU6^gYqTZZdt^%S1NZUM1VNc5EN$-qy$5 zkIv}fZQHbIira}LY(=7NNYHMu6%7{nPF#VOwr?A|#B@cQm&J&VhaTF}v&HH3RyZXJ z`=D&^?dt3A>cpX<=w$02S_jkJ!Ypoavs!zi^mRSD?eVS;;5(Dg+_o=Udb%F&x_`?+ zcV}P6C$>f%@c{K9mRfI{zN};)ulLT3q&WEqVWL=kZ|WUA+fz-8cf6x#$4${pNzC%L zzSLTF%z1Ar$<1!*AHb8~=LWXE>FG+X+A+|zRX+9?B{7!8!q4hU#iCIz*xQK~6y3=?Jwru5Z%(@Y=N$qzY+t^Jgb)Va4D7ae7%$OL9JhZ%; zEPG89%ipH^*512z-TiBCir(?Ae#JKIiL_=VNf2{&M}K!}Sj35jcBC&kOnr(OpB+I&7)IbNYpfiT;rB9Q@J1V;^-s|AD@QF<}4bp z5Km)|Pv#1__BWR4LBjZFg?t1@A7orq^IEgu5O^=R3tR{8FggdyUMomj(|kAhA@FAK zdYo!K0GMtBSHV|gBtOFoAcb7(3BdGmQ1V0IGH?`J0czb7@yqV>nBHUZT_*1}>;W0i z&31cCYd)~n=d^(tQ0t@Q?_yB?-V8D>oYguhFx_DM)4T}Cnyl7If$5_l6{VSXxl6zF zlFEm@pwj&;I1l@S9@D!(KB=>Lk7>g}1XqFsATRZ-)?b0? zPEg@L0Mdud>dYcAoduV}zZ+Zw-VELYE&%B)H`6b7{;38rG?AsxE=->S<=;t=54bG- z8DU!UWT=|i!yeP4pz>qC$Mil><+T@F3GM+I>(1`>n9hMK;I9Og?-`HjyTK2`Ukt7Q zn?UpoZXa$iy#QMIG~490An(Gg3K>jK5Gl#W!4+Tu zOluvP+>L+?-MD?b!Sr5e^f1{y9@EmtsJxp%Jy#1r)u*|jo-65RL`yFtdwRb0Tpb4W z+#CdFDO`_fjWf%h^e~d=!I@wWD1UMweU5yBdQ5kMc$v+4Ot%?L zTE$OiK#C@Nx5xA%kgUn3Jf?}WbB~|S{t+C#n<6=6IA*APx&i)v!(l_^m-s`5gNAwV zJ@9uJ_8R64HyXAYt~SgVE;U?i*aY5%fAhhmU;}t3I6=Jc0F{rogUUbJdbi)%ZQudu zTfq@<3AhJb3=V>~fIGluup7J?+z8$Tt_GXHrQnSq_ZrW1`<=Z5Y=9;&=L~~Hr7mxn zGt3yK3;}1azPh%dzB;w2zWVM=eRXSFeRZz0zItaKMcBcrF|H@8#<}jQ9;{}&^y>Xw zk5?DC9;i8pN^Gp|)#3)~`MO=)AD>ZRWAy_w4s!Kdt?!w!m;2rId+O_}_t%edJzRf; zYoY!m*K_rGB5q+XSkla_iq`!5wuQdOjGy1=o{I`vM+~_|vTKkGCyssPGX!JiA{as7XM~wb? zliz6Jf7Ix^jaK_B|27%@OXhya=wGn-{f^N;F!|#~f5hZ}Vl>~|K7K|s2Ic72jb3N; zVvFDBjDFMPd802ix%NF*{8kwKtcAbP=w~dvexpAi8aqL6@Sm)_1FiN#{sldN-mjuR zZ}lT>^s7eK8U32ke`WFcTcdy7=zlQ!GP582*LozyXR#h=%%f)ijM>-wP~o37nsEY0 zS6O}fhPls~`#-VtUt;p-Exap@{i6+dT7rCEX>9dEFc+4aGMTdUvT<%5FraGhcS@Z)&ztd&1K?p`e0?W zWO4a75;X6WGP%}c#_exR&`&04Q}Mbzbo#0SD=^-hQD_jA>n8B=hFZ*wW42ez|~dr`tFI@?ClF(*q@ zg_T>p^U}H-xA(lufJp+nrB8vj4{Qocpb}BMWph$q7NuKk(@N*wC06D65D6=VZ(Gny z`UyU&!+M(K#f5q{7Z$C1<#z9klXS&*W@o`lhs{B7YIL2~Yz!-n7{||^2%Bh5aT;@b z>#7g=h-t2`)8_{lI-z;GYIMv04^MBt=rf!Dl_xd-E6-FmZorELcv-TY+AyyRQxg7X_rgh z7jOKzsEtuT^pu*L!1wxS2Yb&ALO0R<%IQACTn6sRyU{`ReO%4`W@o4Bxo+-L=vd^I zuMCF`%t5%W%I`ZWesT_XazDHjYkqRonX}LT$IO2rA-nnZXgOp0vYhQ(ILv;8l69j? z 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%0ASq(j4}`m~#vY(SMYBe$!&3--+Y zY59~bRnl4bUa&ErJp(@vjhJ#~9DCERbIxnOIs4Hwu0sbByzicc)s3He$b!zSM_bybr#+ z7ygUEhx6gbDs&aygRUZ@;f_*EG1+M#9 zEqf>*%lOi-x+xd=vGNh=g2;IN-ayutHv@TFZVhE^>G(?Y!Yd?X9y2o8Ckg;Voc8f!!x2z0hy#7t}u04a^HFP9YJ&kU)mFQKI{X5_<2m2YEN3b$5 ze*PJBE^N8+^=o6;m5v9_Hkpl{!*^DWavoSo8UOs2=)u^E^{yTWRC0chH_F+z1%IAr ze@PwjKErt+PksJ|u|Er4SM<3+-s?5!ajB&Y|1~tHC^axTL%f2XF!rD1t!%^oxlpFz zf#mweerlD|xfZ15rbq^Vq>+(&Kn}BsAd#93kpquk79)p*?zP`sF;foi` zJl>F5kbIEewf{$F4r!m(ReOKUJ{#{WtF{j>mOU2ATiH#ypGN0bFa8F|XOEvaucqwO z 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%0A9}7Hrt?DeYvbKqzvWsJ(|NhJjq10F>AWzV7pC)a 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¨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 ~(7k;jOsOG<45g&3F#`0jTSu4=#j9U<@9B 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 B1tkCg literal 0 HcmV?d00001 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/aes.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/aes.h new file mode 100644 index 0000000..2b6c683 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/aes.h @@ -0,0 +1,109 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_AES_H +#endif + +#include + +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1.h new file mode 100644 index 0000000..655bd20 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1.h @@ -0,0 +1,1125 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/asn1.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1_H +#define OPENSSL_ASN1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1_H +#endif + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#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 */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) +#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) +#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) +#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) +#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) +#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) +#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) +#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_freefunc_type(freefunc)) +#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) +#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) +#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) +#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) + +/* clang-format on */ + +#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; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) +#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) +#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) +#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) +#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) +#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) +#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) +#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) +#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) +#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) + +/* clang-format on */ + +/* size limits: this stuff is taken straight from RFC 5280 */ + +#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 is 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 **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); + +/*- + * 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; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) +#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) +#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) +#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) +#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) +#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) +#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_freefunc_type(freefunc)) +#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) +#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) +#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) +#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) +#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) +#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) +#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) +#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) +#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) +#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) +#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) +#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) +#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) +#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) +#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) +#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) +#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) +#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) +#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) +#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) +#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) +#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) +#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) +#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) +#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) +#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) +#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) +#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) +#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) +#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) +#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) +#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) +#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) +#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) + +/* clang-format on */ + +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); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) +#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) +#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) +#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) +#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) +#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) +#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) +#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) +#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) +#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) +#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +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); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); + +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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1err.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1err.h new file mode 100644 index 0000000..9175614 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1err.h @@ -0,0 +1,140 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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 +#include +#include + +/* + * 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_GENERALIZEDTIME_IS_TOO_SHORT 232 +#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_UTCTIME_IS_TOO_SHORT 233 +#define ASN1_R_WRONG_INTEGER_TYPE 225 +#define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +#define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1t.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1t.h new file mode 100644 index 0000000..94fb772 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asn1t.h @@ -0,0 +1,935 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/asn1t.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1T_H +#define OPENSSL_ASN1T_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1T_H +#endif + +#include +#include +#include + +#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 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) +#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) +#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) +#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) +#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) +#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) +#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_freefunc_type(freefunc)) +#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) +#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) +#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) +#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +/* 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/async.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/async.h new file mode 100644 index 0000000..9044385 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/async.h @@ -0,0 +1,102 @@ +/* + * Copyright 2015-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 + */ + +#include + +#ifndef OPENSSL_ASYNC_H +#define OPENSSL_ASYNC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASYNC_H +#endif + +#if defined(_WIN32) +#if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include 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 + +#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); + +typedef void *(*ASYNC_stack_alloc_fn)(size_t *num); +typedef void (*ASYNC_stack_free_fn)(void *addr); + +int ASYNC_set_mem_functions(ASYNC_stack_alloc_fn alloc_fn, + ASYNC_stack_free_fn free_fn); +void ASYNC_get_mem_functions(ASYNC_stack_alloc_fn *alloc_fn, + ASYNC_stack_free_fn *free_fn); + +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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asyncerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asyncerr.h new file mode 100644 index 0000000..41bd4a0 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/asyncerr.h @@ -0,0 +1,27 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bio.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bio.h new file mode 100644 index 0000000..8c325a4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bio.h @@ -0,0 +1,1028 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/bio.h.in + * + * Copyright 1995-2025 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 + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_BIO_H +#define OPENSSL_BIO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BIO_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include + +#include +#include +#include + +#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_DGRAM_PAIR (26 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_DGRAM_MEM (27 | BIO_TYPE_SOURCE_SINK) + +/* Custom type starting index returned by BIO_get_new_index() */ +#define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF + +/* + * 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 + +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +#define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +#define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +#define BIO_CTRL_DGRAM_GET_CAPS 86 +#define BIO_CTRL_DGRAM_SET_CAPS 87 +#define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +#define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +#define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +#define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +#define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +#define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +#define BIO_DGRAM_CAP_NONE 0U +#define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +#define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +#define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +#define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + +#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 0x8000 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 +#define BIO_CB_RECVMMSG 0x07 +#define BIO_CB_SENDMMSG 0x08 + +/* + * 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 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) +#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) +#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) +#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) +#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) +#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) +#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) +#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) +#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk), ossl_check_BIO_freefunc_type(freefunc)) +#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) +#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) +#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) +#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) +#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) +#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) + +/* clang-format on */ + +/* 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 + +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + +/* + * #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_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +#define BIO_C_SET_SOCK_TYPE 157 +#define BIO_C_GET_SOCK_TYPE 158 +#define BIO_C_GET_DGRAM_BIO 159 + +#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) +#define BIO_set_tfo(b, n) BIO_ctrl(b, BIO_C_SET_TFO, (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_get_conn_mode(b) BIO_ctrl(b, BIO_C_GET_CONNECT, 4, NULL) +#define BIO_set_conn_mode(b, n) BIO_ctrl(b, BIO_C_SET_CONNECT_MODE, (n), NULL) +#define BIO_set_sock_type(b, t) BIO_ctrl(b, BIO_C_SET_SOCK_TYPE, (t), NULL) +#define BIO_get_sock_type(b) BIO_ctrl(b, BIO_C_GET_SOCK_TYPE, 0, NULL) +#define BIO_get0_dgram_bio(b, p) BIO_ctrl(b, BIO_C_GET_DGRAM_BIO, 0, (void *)(BIO **)(p)) + +/* 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) +#define BIO_set_tfo_accept(b, n) BIO_ctrl(b, BIO_C_SET_ACCEPT, 5, (n) ? (void *)"a" : 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_detect_peer_addr(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) +#define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +#define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +#define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +#define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +#define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +#define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +#define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +#define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +#define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +#define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +#define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +#define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) + +/* 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); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +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); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +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); +#ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +#endif +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_dgram_pair(void); +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_err_is_non_fatal(unsigned int errcode); +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_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); +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 +#define BIO_SOCK_TFO 0x20 + +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); +#ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +#endif + +/* + * 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_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_set_sendmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_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_set_recvmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts)(BIO *, const char *)); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*ossl_gets)(BIO *, char *, int)); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl)(BIO *, int, long, void *)); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create)(BIO *)); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *)); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl)(BIO *, int, + BIO_info_cb *)); +#ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom))(BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom))(BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom))(BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom))(BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom))(BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion))(BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom))(BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))(BIO *, int, + BIO_info_cb *); +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bioerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bioerr.h new file mode 100644 index 0000000..b4ee5c6 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bioerr.h @@ -0,0 +1,70 @@ +/* + * 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_BIOERR_H +#define OPENSSL_BIOERR_H +#pragma once + +#include +#include +#include + +/* + * 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_LOCAL_ADDR_NOT_AVAILABLE 111 +#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_NON_FATAL 112 +#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_TFO_DISABLED 106 +#define BIO_R_TFO_NO_KERNEL_SUPPORT 108 +#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_UNABLE_TO_TFO 109 +#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 +#define BIO_R_PORT_MISMATCH 150 +#define BIO_R_PEER_ADDR_NOT_AVAILABLE 151 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/blowfish.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/blowfish.h new file mode 100644 index 0000000..49c74e9 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/blowfish.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BLOWFISH_H +#endif + +#include + +#ifndef OPENSSL_NO_BF +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bn.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bn.h new file mode 100644 index 0000000..d210b8b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bn.h @@ -0,0 +1,588 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BN_H +#endif + +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include + +#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); +BIGNUM *BN_signed_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); +int BN_signed_bn2bin(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2lebin(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_native2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2native(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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bnerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bnerr.h new file mode 100644 index 0000000..dbbcd69 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/bnerr.h @@ -0,0 +1,45 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/buffer.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/buffer.h new file mode 100644 index 0000000..09b35e8 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/buffer.h @@ -0,0 +1,60 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BUFFER_H +#endif + +#include +#ifndef OPENSSL_CRYPTO_H +#include +#endif +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/buffererr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/buffererr.h new file mode 100644 index 0000000..4fa0da4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/buffererr.h @@ -0,0 +1,23 @@ +/* + * 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 +#include +#include + +/* + * BUF reason codes. + */ + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/byteorder.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/byteorder.h new file mode 100644 index 0000000..393f34b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/byteorder.h @@ -0,0 +1,339 @@ +/* + * Copyright 2025 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_BYTEORDER_H +#define OPENSSL_BYTEORDER_H +#pragma once + +#include +#include + +/* + * "Modern" compilers do a decent job of optimising these functions to just a + * couple of instruction ([swap +] store, or load [+ swap]) when either no + * swapping is required, or a suitable swap instruction is available. + */ + +#if defined(_MSC_VER) && _MSC_VER >= 1300 +#include +#pragma intrinsic(_byteswap_ushort) +#pragma intrinsic(_byteswap_ulong) +#pragma intrinsic(_byteswap_uint64) +#define OSSL_HTOBE16(x) _byteswap_ushort(x) +#define OSSL_HTOBE32(x) _byteswap_ulong(x) +#define OSSL_HTOBE64(x) _byteswap_uint64(x) +#define OSSL_BE16TOH(x) _byteswap_ushort(x) +#define OSSL_BE32TOH(x) _byteswap_ulong(x) +#define OSSL_BE64TOH(x) _byteswap_uint64(x) +#define OSSL_HTOLE16(x) (x) +#define OSSL_HTOLE32(x) (x) +#define OSSL_HTOLE64(x) (x) +#define OSSL_LE16TOH(x) (x) +#define OSSL_LE32TOH(x) (x) +#define OSSL_LE64TOH(x) (x) + +#elif defined(__GLIBC__) && defined(__GLIBC_PREREQ) +#if (__GLIBC_PREREQ(2, 19)) && defined(_DEFAULT_SOURCE) +#include +#define OSSL_HTOBE16(x) htobe16(x) +#define OSSL_HTOBE32(x) htobe32(x) +#define OSSL_HTOBE64(x) htobe64(x) +#define OSSL_BE16TOH(x) be16toh(x) +#define OSSL_BE32TOH(x) be32toh(x) +#define OSSL_BE64TOH(x) be64toh(x) +#define OSSL_HTOLE16(x) htole16(x) +#define OSSL_HTOLE32(x) htole32(x) +#define OSSL_HTOLE64(x) htole64(x) +#define OSSL_LE16TOH(x) le16toh(x) +#define OSSL_LE32TOH(x) le32toh(x) +#define OSSL_LE64TOH(x) le64toh(x) +#endif + +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__OpenBSD__) +#include +#else +#include +#endif +#define OSSL_HTOBE16(x) htobe16(x) +#define OSSL_HTOBE32(x) htobe32(x) +#define OSSL_HTOBE64(x) htobe64(x) +#define OSSL_BE16TOH(x) be16toh(x) +#define OSSL_BE32TOH(x) be32toh(x) +#define OSSL_BE64TOH(x) be64toh(x) +#define OSSL_HTOLE16(x) htole16(x) +#define OSSL_HTOLE32(x) htole32(x) +#define OSSL_HTOLE64(x) htole64(x) +#define OSSL_LE16TOH(x) le16toh(x) +#define OSSL_LE32TOH(x) le32toh(x) +#define OSSL_LE64TOH(x) le64toh(x) + +#elif defined(__APPLE__) +#include +#define OSSL_HTOBE16(x) OSSwapHostToBigInt16(x) +#define OSSL_HTOBE32(x) OSSwapHostToBigInt32(x) +#define OSSL_HTOBE64(x) OSSwapHostToBigInt64(x) +#define OSSL_BE16TOH(x) OSSwapBigToHostInt16(x) +#define OSSL_BE32TOH(x) OSSwapBigToHostInt32(x) +#define OSSL_BE64TOH(x) OSSwapBigToHostInt64(x) +#define OSSL_HTOLE16(x) OSSwapHostToLittleInt16(x) +#define OSSL_HTOLE32(x) OSSwapHostToLittleInt32(x) +#define OSSL_HTOLE64(x) OSSwapHostToLittleInt64(x) +#define OSSL_LE16TOH(x) OSSwapLittleToHostInt16(x) +#define OSSL_LE32TOH(x) OSSwapLittleToHostInt32(x) +#define OSSL_LE64TOH(x) OSSwapLittleToHostInt64(x) + +#endif + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u16_le(unsigned char *out, uint16_t val) +{ +#ifdef OSSL_HTOLE16 + uint16_t t = OSSL_HTOLE16(val); + + memcpy(out, (unsigned char *)&t, 2); + return out + 2; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u16_be(unsigned char *out, uint16_t val) +{ +#ifdef OSSL_HTOBE16 + uint16_t t = OSSL_HTOBE16(val); + + memcpy(out, (unsigned char *)&t, 2); + return out + 2; +#else + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u32_le(unsigned char *out, uint32_t val) +{ +#ifdef OSSL_HTOLE32 + uint32_t t = OSSL_HTOLE32(val); + + memcpy(out, (unsigned char *)&t, 4); + return out + 4; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 24) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u32_be(unsigned char *out, uint32_t val) +{ +#ifdef OSSL_HTOBE32 + uint32_t t = OSSL_HTOBE32(val); + + memcpy(out, (unsigned char *)&t, 4); + return out + 4; +#else + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u64_le(unsigned char *out, uint64_t val) +{ +#ifdef OSSL_HTOLE64 + uint64_t t = OSSL_HTOLE64(val); + + memcpy(out, (unsigned char *)&t, 8); + return out + 8; +#else + *out++ = (val & 0xff); + *out++ = (val >> 8) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 32) & 0xff; + *out++ = (val >> 40) & 0xff; + *out++ = (val >> 48) & 0xff; + *out++ = (val >> 56) & 0xff; + return out; +#endif +} + +static ossl_inline ossl_unused unsigned char * +OPENSSL_store_u64_be(unsigned char *out, uint64_t val) +{ +#ifdef OSSL_HTOLE64 + uint64_t t = OSSL_HTOBE64(val); + + memcpy(out, (unsigned char *)&t, 8); + return out + 8; +#else + *out++ = (val >> 56) & 0xff; + *out++ = (val >> 48) & 0xff; + *out++ = (val >> 40) & 0xff; + *out++ = (val >> 32) & 0xff; + *out++ = (val >> 24) & 0xff; + *out++ = (val >> 16) & 0xff; + *out++ = (val >> 8) & 0xff; + *out++ = (val & 0xff); + return out; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u16_le(uint16_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE16TOH + uint16_t t; + + memcpy((unsigned char *)&t, in, 2); + *val = OSSL_LE16TOH(t); + return in + 2; +#else + uint16_t b0 = *in++; + uint16_t b1 = *in++; + + *val = b0 | (b1 << 8); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u16_be(uint16_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE16TOH + uint16_t t; + + memcpy((unsigned char *)&t, in, 2); + *val = OSSL_BE16TOH(t); + return in + 2; +#else + uint16_t b1 = *in++; + uint16_t b0 = *in++; + + *val = b0 | (b1 << 8); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u32_le(uint32_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE32TOH + uint32_t t; + + memcpy((unsigned char *)&t, in, 4); + *val = OSSL_LE32TOH(t); + return in + 4; +#else + uint32_t b0 = *in++; + uint32_t b1 = *in++; + uint32_t b2 = *in++; + uint32_t b3 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u32_be(uint32_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE32TOH + uint32_t t; + + memcpy((unsigned char *)&t, in, 4); + *val = OSSL_BE32TOH(t); + return in + 4; +#else + uint32_t b3 = *in++; + uint32_t b2 = *in++; + uint32_t b1 = *in++; + uint32_t b0 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u64_le(uint64_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE64TOH + uint64_t t; + + memcpy((unsigned char *)&t, in, 8); + *val = OSSL_LE64TOH(t); + return in + 8; +#else + uint64_t b0 = *in++; + uint64_t b1 = *in++; + uint64_t b2 = *in++; + uint64_t b3 = *in++; + uint64_t b4 = *in++; + uint64_t b5 = *in++; + uint64_t b6 = *in++; + uint64_t b7 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) + | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); + return in; +#endif +} + +static ossl_inline ossl_unused const unsigned char * +OPENSSL_load_u64_be(uint64_t *val, const unsigned char *in) +{ +#ifdef OSSL_LE64TOH + uint64_t t; + + memcpy((unsigned char *)&t, in, 8); + *val = OSSL_BE64TOH(t); + return in + 8; +#else + uint64_t b7 = *in++; + uint64_t b6 = *in++; + uint64_t b5 = *in++; + uint64_t b4 = *in++; + uint64_t b3 = *in++; + uint64_t b2 = *in++; + uint64_t b1 = *in++; + uint64_t b0 = *in++; + + *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) + | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); + return in; +#endif +} + +#undef OSSL_HTOBE16 +#undef OSSL_HTOBE32 +#undef OSSL_HTOBE64 +#undef OSSL_BE16TOH +#undef OSSL_BE32TOH +#undef OSSL_BE64TOH +#undef OSSL_HTOLE16 +#undef OSSL_HTOLE32 +#undef OSSL_HTOLE64 +#undef OSSL_LE16TOH +#undef OSSL_LE32TOH +#undef OSSL_LE64TOH + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/camellia.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/camellia.h new file mode 100644 index 0000000..aec94e4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/camellia.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CAMELLIA_H +#endif + +#include + +#ifndef OPENSSL_NO_CAMELLIA +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cast.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cast.h new file mode 100644 index 0000000..af94312 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cast.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CAST_H +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmac.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmac.h new file mode 100644 index 0000000..c72da7e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmac.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMAC_H +#endif + +#ifndef OPENSSL_NO_CMAC + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmp.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmp.h new file mode 100644 index 0000000..301755b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmp.h @@ -0,0 +1,741 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/cmp.h.in + * + * Copyright 2007-2026 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMP_H +#define OPENSSL_CMP_H + +#include +#ifndef OPENSSL_NO_CMP + +#include +#include +#include +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_CMP_PVNO_2 2 +#define OSSL_CMP_PVNO_3 3 +#define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ + +/*- + * 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_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 +#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; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) +#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) +#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) +#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) +#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) +#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) +#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) +#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) +#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) +#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) +#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + +/* clang-format on */ + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +#define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +#define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +#define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +#define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +#define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +#define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + +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) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) +#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) +#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) +#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) +#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) +#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) +#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) +#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) +#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) +#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) +#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) + +/* clang-format on */ +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; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) +#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) + +/* clang-format on */ +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) **sk_p, + OSSL_CMP_ITAV *itav); +void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + +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); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const 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 +#define OSSL_CMP_OPT_USE_TLS 13 +/* 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 +#define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 +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); +#ifndef OPENSSL_NO_HTTP +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); +#endif +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); +#define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore +X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +#define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore +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); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_CTX_get0_geninfo_ITAVs(const 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_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); +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_validatedSrvCert(const OSSL_CMP_CTX *ctx); +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); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_HDR_get0_geninfo_ITAVs(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); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(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 */ +#ifndef OPENSSL_NO_HTTP +OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); +#endif + +/* 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); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); +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_GENM 21 +#define OSSL_CMP_ERROR 23 +#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); + +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CMP) */ +#endif /* !defined(OPENSSL_CMP_H) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmp_util.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmp_util.h new file mode 100644 index 0000000..a0ee20f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmp_util.h @@ -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 +#ifndef OPENSSL_NO_CMP + +#include +#include + +#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) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmperr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmperr.h new file mode 100644 index 0000000..b07ac6d --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmperr.h @@ -0,0 +1,132 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#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_EXPECTED_POLLREQ 104 +#define CMP_R_FAILED_BUILDING_OWN_CHAIN 164 +#define CMP_R_FAILED_EXTRACTING_CENTRAL_GEN_KEY 203 +#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_GENERATE_CERTREQTEMPLATE 197 +#define CMP_R_GENERATE_CRLSTATUS 198 +#define CMP_R_GETTING_GENP 192 +#define CMP_R_GET_ITAV 199 +#define CMP_R_INVALID_ARGS 100 +#define CMP_R_INVALID_GENP 193 +#define CMP_R_INVALID_KEYSPEC 202 +#define CMP_R_INVALID_OPTION 174 +#define CMP_R_INVALID_ROOTCAKEYUPDATE 195 +#define CMP_R_MISSING_CENTRAL_GEN_KEY 204 +#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_UNCLEAN_CTX 191 +#define CMP_R_UNEXPECTED_CENTRAL_GEN_KEY 205 +#define CMP_R_UNEXPECTED_CERTPROFILE 196 +#define CMP_R_UNEXPECTED_CRLSTATUSLIST 201 +#define CMP_R_UNEXPECTED_PKIBODY 133 +#define CMP_R_UNEXPECTED_PKISTATUS 185 +#define CMP_R_UNEXPECTED_POLLREQ 105 +#define CMP_R_UNEXPECTED_PVNO 153 +#define CMP_R_UNEXPECTED_SENDER 106 +#define CMP_R_UNKNOWN_ALGORITHM_ID 134 +#define CMP_R_UNKNOWN_CERT_TYPE 135 +#define CMP_R_UNKNOWN_CRL_ISSUER 200 +#define CMP_R_UNKNOWN_PKISTATUS 186 +#define CMP_R_UNSUPPORTED_ALGORITHM 136 +#define CMP_R_UNSUPPORTED_KEY_TYPE 137 +#define CMP_R_UNSUPPORTED_PKIBODY 101 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cms.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cms.h new file mode 100644 index 0000000..0dcc45f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cms.h @@ -0,0 +1,524 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/cms.h.in + * + * Copyright 2008-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMS_H +#define OPENSSL_CMS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMS_H +#endif + +#include + +#ifndef OPENSSL_NO_CMS +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; +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; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) +#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) +#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) +#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) +#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) +#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) +#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) +#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) +#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) +#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) +#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) +#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) +#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) +#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) +#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) +#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) +#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) +#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) +#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) +#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) +#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) +#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) +#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) +#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) +#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) +#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) +#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) +#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) +#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) +#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) +#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) +#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) +#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) +#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) +#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) +#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + +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 +#define CMS_RECIPINFO_KEM 5 + +/* 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 +#define CMS_NO_SIGNING_TIME 0x400000 + +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); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, 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 *libctx, + 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 *libctx, 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 *libctx, + 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 *libctx, + 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 *libctx, 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 *libctx, + 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 *libctx, + const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, 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); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +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 *libctx); + +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); + +int CMS_RecipientInfo_kemri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_kemri_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +EVP_CIPHER_CTX *CMS_RecipientInfo_kemri_get0_ctx(CMS_RecipientInfo *ri); +X509_ALGOR *CMS_RecipientInfo_kemri_get0_kdf_alg(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kemri_set_ukm(CMS_RecipientInfo *ri, + const unsigned char *ukm, + int ukmLength); + +/* 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmserr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmserr.h new file mode 100644 index 0000000..49c22c2 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cmserr.h @@ -0,0 +1,128 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#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_IN_ENVELOPED_DATA 200 +#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_ERROR_UNSUPPORTED_STATIC_KEY_AGREEMENT 196 +#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_KEM 197 +#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_OPERATION_UNSUPPORTED 182 +#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_UNKNOWN_KDF_ALGORITHM 198 +#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_KDF_ALGORITHM 199 +#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_SIGNATURE_ALGORITHM 195 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/comp.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/comp.h new file mode 100644 index 0000000..0363a33 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/comp.h @@ -0,0 +1,101 @@ +/* + * Copyright 2015-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_COMP_H +#define OPENSSL_COMP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_COMP_H +#endif + +#include + +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_COMP + +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); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define COMP_zlib_cleanup() \ + while (0) \ + continue +#endif + +#ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +#endif + +#endif + +typedef struct ssl_comp_st SSL_COMP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/comperr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/comperr.h new file mode 100644 index 0000000..90ec7c1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/comperr.h @@ -0,0 +1,36 @@ +/* + * 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 +#include +#include + +#ifndef OPENSSL_NO_COMP + +/* + * COMP reason codes. + */ +#define COMP_R_BROTLI_DECODE_ERROR 102 +#define COMP_R_BROTLI_ENCODE_ERROR 103 +#define COMP_R_BROTLI_NOT_SUPPORTED 104 +#define COMP_R_ZLIB_DEFLATE_ERROR 99 +#define COMP_R_ZLIB_INFLATE_ERROR 100 +#define COMP_R_ZLIB_NOT_SUPPORTED 101 +#define COMP_R_ZSTD_COMPRESS_ERROR 105 +#define COMP_R_ZSTD_DECODE_ERROR 106 +#define COMP_R_ZSTD_DECOMPRESS_ERROR 107 +#define COMP_R_ZSTD_NOT_SUPPORTED 108 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conf.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conf.h new file mode 100644 index 0000000..7719c51 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conf.h @@ -0,0 +1,219 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/conf.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CONF_H +#define OPENSSL_CONF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) +#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) +#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) +#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) +#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) +#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) +#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) +#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_freefunc_type(freefunc)) +#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) +#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) +#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) +#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) +DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) +#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) +#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conf_api.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conf_api.h new file mode 100644 index 0000000..f3f3c64 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conf_api.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_API_H +#endif + +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conferr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conferr.h new file mode 100644 index 0000000..0b984dd --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conferr.h @@ -0,0 +1,50 @@ +/* + * 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_CONFERR_H +#define OPENSSL_CONFERR_H +#pragma once + +#include +#include +#include + +/* + * 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_RECURSIVE_SECTION_REFERENCE 126 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/configuration.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/configuration.h new file mode 100644 index 0000000..4af6e1d --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/configuration.h @@ -0,0 +1,241 @@ +/* + * WARNING: do not edit! + * Generated by configdata.pm from ../../../ios/openssl-3.6.2/Configurations/common0.tmpl, ../../../ios/openssl-3.6.2/Configurations/unix-Makefile.tmpl + * via Makefile.in + * + * 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: + */ + +/* clang-format off */ +# ifndef OPENSSL_SYS_watchOS +# define OPENSSL_SYS_watchOS 1 +# endif +# define OPENSSL_CONFIGURED_API 30600 +# ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +# endif +# ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +# endif +# ifndef OPENSSL_NO_ACVP_TESTS +# define OPENSSL_NO_ACVP_TESTS +# endif +# ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +# endif +# ifndef OPENSSL_NO_ALLOCFAIL_TESTS +# define OPENSSL_NO_ALLOCFAIL_TESTS +# endif +# ifndef OPENSSL_NO_APPS +# define OPENSSL_NO_APPS +# endif +# ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +# endif +# ifndef OPENSSL_NO_ASM +# define OPENSSL_NO_ASM +# endif +# ifndef OPENSSL_NO_ASYNC +# define OPENSSL_NO_ASYNC +# endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif +# ifndef OPENSSL_NO_CAPIENG +# define OPENSSL_NO_CAPIENG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif +# ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +# endif +# ifndef OPENSSL_NO_DOCS +# define OPENSSL_NO_DOCS +# endif +# ifndef OPENSSL_NO_DSO +# define OPENSSL_NO_DSO +# endif +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +# endif +# ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +# endif +# ifndef OPENSSL_NO_ENGINE +# define OPENSSL_NO_ENGINE +# endif +# ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +# endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif +# ifndef OPENSSL_NO_FIPS_POST +# define OPENSSL_NO_FIPS_POST +# endif +# ifndef OPENSSL_NO_FIPS_SECURITYCHECKS +# define OPENSSL_NO_FIPS_SECURITYCHECKS +# endif +# ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +# endif +# ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +# endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif +# ifndef OPENSSL_NO_KTLS +# define OPENSSL_NO_KTLS +# endif +# ifndef OPENSSL_NO_LMS +# define OPENSSL_NO_LMS +# endif +# ifndef OPENSSL_NO_LOADERENG +# define OPENSSL_NO_LOADERENG +# endif +# ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +# endif +# ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +# endif +# ifndef OPENSSL_NO_PADLOCKENG +# define OPENSSL_NO_PADLOCKENG +# endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif +# ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +# endif +# ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +# endif +# ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +# endif +# ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +# endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TESTS +# define OPENSSL_NO_TESTS +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif +# ifndef OPENSSL_NO_TRACE +# define OPENSSL_NO_TRACE +# endif +# ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +# endif +# ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +# endif +# ifndef OPENSSL_NO_UPLINK +# define OPENSSL_NO_UPLINK +# endif +# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +# endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif +# ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +# endif + +/* clang-format on */ + +/* Generate 80386 code? */ +/* clang-format off */ +# undef I386_ONLY +/* clang-format on */ + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) + /* clang-format off */ +# undef BN_LLONG + /* clang-format on */ + /* Only one for the following should be defined */ + /* clang-format off */ +# define SIXTY_FOUR_BIT_LONG + /* clang-format on */ + /* clang-format off */ +# undef SIXTY_FOUR_BIT + /* clang-format on */ + /* clang-format off */ +# undef THIRTY_TWO_BIT +/* clang-format on */ +#endif + +/* clang-format off */ +# define RC4_INT unsigned int +/* clang-format on */ + +#if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +#define OPENSSL_NO_COMP_ALG +#else +#undef OPENSSL_NO_COMP_ALG +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_CONFIGURATION_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conftypes.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conftypes.h new file mode 100644 index 0000000..f2d2be1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/conftypes.h @@ -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 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core.h new file mode 100644 index 0000000..a883173 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core.h @@ -0,0 +1,235 @@ +/* + * 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_H +#define OPENSSL_CORE_H +#pragma once + +#include +#include + +#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); +}; + +#define OSSL_DISPATCH_END \ + { 0, NULL } + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_dispatch.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_dispatch.h new file mode 100644 index 0000000..d645916 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_dispatch.h @@ -0,0 +1,1061 @@ +/* + * Copyright 2019-2026 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 +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Generic function pointer for provider method arrays, or other contexts where + * functions of various signatures must occupy a common slot in an array of + * structures. + */ +typedef void (*OSSL_FUNC)(void); + +/*- + * 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)) + +/* New seeding functions prototypes with the 101-104 series */ +#define OSSL_FUNC_CLEANUP_USER_ENTROPY 96 +#define OSSL_FUNC_CLEANUP_USER_NONCE 97 +#define OSSL_FUNC_GET_USER_ENTROPY 98 +#define OSSL_FUNC_GET_USER_NONCE 99 + +#define OSSL_FUNC_INDICATOR_CB 95 +OSSL_CORE_MAKE_FUNC(void, indicator_cb, (OPENSSL_CORE_CTX *ctx, OSSL_INDICATOR_CALLBACK **cb)) +#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(size_t, get_user_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(void, cleanup_user_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(size_t, get_user_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)) +OSSL_CORE_MAKE_FUNC(void, cleanup_user_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)) + +/* Additional error functions provided by the core */ +#define OSSL_FUNC_CORE_COUNT_TO_MARK 120 +OSSL_CORE_MAKE_FUNC(int, core_count_to_mark, (const OSSL_CORE_HANDLE *prov)) + +/* 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)) +#define OSSL_FUNC_PROVIDER_RANDOM_BYTES 1032 +OSSL_CORE_MAKE_FUNC(int, provider_random_bytes, (void *provctx, int which, void *buf, size_t n, unsigned int strength)) + +/* Libssl related functions */ +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_SEND 2001 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_send, + (SSL *s, const unsigned char *buf, size_t buf_len, + size_t *consumed, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RECV_RCD 2002 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_recv_rcd, + (SSL *s, const unsigned char **buf, size_t *bytes_read, + void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_CRYPTO_RELEASE_RCD 2003 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_crypto_release_rcd, + (SSL *s, size_t bytes_read, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_YIELD_SECRET 2004 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_yield_secret, + (SSL *s, uint32_t prot_level, int direction, + const unsigned char *secret, size_t secret_len, void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_GOT_TRANSPORT_PARAMS 2005 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_got_transport_params, + (SSL *s, const unsigned char *params, size_t params_len, + void *arg)) +#define OSSL_FUNC_SSL_QUIC_TLS_ALERT 2006 +OSSL_CORE_MAKE_FUNC(int, SSL_QUIC_TLS_alert, + (SSL *s, unsigned char alert_code, void *arg)) + +/* 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 +#define OSSL_OP_SKEYMGMT 15 +/* 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 +#define OSSL_FUNC_DIGEST_SQUEEZE 14 +#define OSSL_FUNC_DIGEST_COPYCTX 15 + +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_squeeze, + (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(void, digest_copyctx, (void *outctx, void *inctx)) + +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 +#define OSSL_FUNC_CIPHER_PIPELINE_ENCRYPT_INIT 15 +#define OSSL_FUNC_CIPHER_PIPELINE_DECRYPT_INIT 16 +#define OSSL_FUNC_CIPHER_PIPELINE_UPDATE 17 +#define OSSL_FUNC_CIPHER_PIPELINE_FINAL 18 +#define OSSL_FUNC_CIPHER_ENCRYPT_SKEY_INIT 19 +#define OSSL_FUNC_CIPHER_DECRYPT_SKEY_INIT 20 + +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(int, cipher_pipeline_encrypt_init, + (void *cctx, + const unsigned char *key, size_t keylen, + size_t numpipes, const unsigned char **iv, size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_decrypt_init, + (void *cctx, + const unsigned char *key, size_t keylen, + size_t numpipes, const unsigned char **iv, size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_update, + (void *cctx, size_t numpipes, + unsigned char **out, size_t *outl, const size_t *outsize, + const unsigned char **in, const size_t *inl)) +OSSL_CORE_MAKE_FUNC(int, cipher_pipeline_final, + (void *cctx, size_t numpipes, + unsigned char **out, size_t *outl, const size_t *outsize)) +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)) +OSSL_CORE_MAKE_FUNC(int, cipher_encrypt_skey_init, (void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_decrypt_skey_init, (void *cctx, void *skeydata, const unsigned char *iv, size_t ivlen, const OSSL_PARAM params[])) + +/* 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 +#define OSSL_FUNC_MAC_INIT_SKEY 13 + +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[])) +OSSL_CORE_MAKE_FUNC(int, mac_init_skey, (void *mctx, void *key, const OSSL_PARAM params[])) + +/*- + * Symmetric key management + * + * The Key Management takes care of provider side of symmetric key objects, and + * includes 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, and the secret key. + * + * Key objects are created with OSSL_FUNC_skeymgmt_import() (there is no + * dedicated memory allocation function), exported with + * OSSL_FUNC_skeymgmt_export() and destroyed with OSSL_FUNC_keymgmt_free(). + * + */ + +/* Key data subset selection - individual bits */ +#define OSSL_SKEYMGMT_SELECT_PARAMETERS 0x01 +#define OSSL_SKEYMGMT_SELECT_SECRET_KEY 0x02 + +/* Key data subset selection - combinations */ +#define OSSL_SKEYMGMT_SELECT_ALL \ + (OSSL_SKEYMGMT_SELECT_PARAMETERS | OSSL_SKEYMGMT_SELECT_SECRET_KEY) + +#define OSSL_FUNC_SKEYMGMT_FREE 1 +#define OSSL_FUNC_SKEYMGMT_IMPORT 2 +#define OSSL_FUNC_SKEYMGMT_EXPORT 3 +#define OSSL_FUNC_SKEYMGMT_GENERATE 4 +#define OSSL_FUNC_SKEYMGMT_GET_KEY_ID 5 +#define OSSL_FUNC_SKEYMGMT_IMP_SETTABLE_PARAMS 6 +#define OSSL_FUNC_SKEYMGMT_GEN_SETTABLE_PARAMS 7 + +OSSL_CORE_MAKE_FUNC(void, skeymgmt_free, (void *keydata)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + skeymgmt_imp_settable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, skeymgmt_import, (void *provctx, int selection, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, skeymgmt_export, + (void *keydata, int selection, + OSSL_CALLBACK *param_cb, void *cbarg)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + skeymgmt_gen_settable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, skeymgmt_generate, (void *provctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const char *, skeymgmt_get_key_id, (void *keydata)) + +/* 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 +#define OSSL_FUNC_KDF_SET_SKEY 12 +#define OSSL_FUNC_KDF_DERIVE_SKEY 13 + +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[])) +OSSL_CORE_MAKE_FUNC(int, kdf_set_skey, + (void *kctx, void *skeydata, const char *paramname)) +OSSL_CORE_MAKE_FUNC(void *, kdf_derive_skey, (void *ctx, const char *key_type, void *provctx, OSSL_FUNC_skeymgmt_import_fn *import, size_t keylen, 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 +#define OSSL_FUNC_KEYMGMT_GEN_GET_PARAMS 15 +#define OSSL_FUNC_KEYMGMT_GEN_GETTABLE_PARAMS 16 + +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(int, keymgmt_gen_get_params, + (void *genctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_gen_gettable_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)) + +/* Extended import and export functions */ +#define OSSL_FUNC_KEYMGMT_IMPORT_TYPES_EX 45 +#define OSSL_FUNC_KEYMGMT_EXPORT_TYPES_EX 46 +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types_ex, + (void *provctx, int selection)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types_ex, + (void *provctx, 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 +#define OSSL_FUNC_KEYEXCH_DERIVE_SKEY 11 + +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)) +OSSL_CORE_MAKE_FUNC(void *, keyexch_derive_skey, (void *ctx, const char *key_type, void *provctx, OSSL_FUNC_skeymgmt_import_fn *import, size_t keylen, const OSSL_PARAM params[])) + +/* 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 +#define OSSL_FUNC_SIGNATURE_QUERY_KEY_TYPES 26 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_INIT 27 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_UPDATE 28 +#define OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_FINAL 29 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_INIT 30 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_UPDATE 31 +#define OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_FINAL 32 + +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_sign_message_init, + (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_sign_message_update, + (void *ctx, const unsigned char *in, size_t inlen)) +OSSL_CORE_MAKE_FUNC(int, signature_sign_message_final, + (void *ctx, unsigned char *sig, + size_t *siglen, size_t sigsize)) +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_message_init, + (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_verify_message_update, + (void *ctx, const unsigned char *in, size_t inlen)) +/* + * signature_verify_final requires that the signature to be verified against + * is specified via an OSSL_PARAM. + */ +OSSL_CORE_MAKE_FUNC(int, signature_verify_message_final, (void *ctx)) +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)) +OSSL_CORE_MAKE_FUNC(const char **, signature_query_key_types, (void)) + +/* 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 +#define OSSL_FUNC_KEM_AUTH_ENCAPSULATE_INIT 12 +#define OSSL_FUNC_KEM_AUTH_DECAPSULATE_INIT 13 + +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_auth_encapsulate_init, (void *ctx, void *provkey, void *authprivkey, 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_auth_decapsulate_init, (void *ctx, void *provkey, void *authpubkey, 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 +#define OSSL_FUNC_STORE_DELETE 9 +#define OSSL_FUNC_STORE_OPEN_EX 10 +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)) +OSSL_CORE_MAKE_FUNC(int, store_delete, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) +OSSL_CORE_MAKE_FUNC(void *, store_open_ex, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_names.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_names.h new file mode 100644 index 0000000..489c56f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_names.h @@ -0,0 +1,588 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/core_names.h.in + * + * Copyright 2019-2025 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 + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CORE_NAMES_H +#define OPENSSL_CORE_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* 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" + +/* Known CIPHER names (not a complete list) */ +#define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* 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_256_192 "SHA2-256/192" +#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" + +/* 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" + +/* Known KDF names */ +#define OSSL_KDF_NAME_HKDF "HKDF" +#define OSSL_KDF_NAME_HKDF_SHA256 "HKDF-SHA256" +#define OSSL_KDF_NAME_HKDF_SHA384 "HKDF-SHA384" +#define OSSL_KDF_NAME_HKDF_SHA512 "HKDF-SHA512" +#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" +#define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* 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" + +/* 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" + +/* PROV_SKEY well known key types */ +#define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +#define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ALG_PARAM_SECURITY_CATEGORY "security-category" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# 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" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# 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_MIN_TLS "tls-min-tls" +# 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_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_HMAC_PARAM_MAC OSSL_CIPHER_PARAM_AEAD_TAG +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_ENCRYPT_THEN_MAC "encrypt-then-mac" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# 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_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_CMS_KEMRI_KDF_ALGORITHM "kemri-kdf-alg" +# define OSSL_PKEY_PARAM_CMS_RI_TYPE "ri-type" +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# 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_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# 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_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# 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_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# 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_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# 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_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SECURITY_CATEGORY OSSL_ALG_PARAM_SECURITY_CATEGORY +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# 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_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_object.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_object.h new file mode 100644 index 0000000..df0c794 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/core_object.h @@ -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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crmf.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crmf.h new file mode 100644 index 0000000..57649d4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crmf.h @@ -0,0 +1,279 @@ +/*- + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/crmf.h.in + * + * Copyright 2007-2025 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. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRMF_H +#define OPENSSL_CRMF_H + +#include + +#ifndef OPENSSL_NO_CRMF +#include +#include +#include +#include /* for GENERAL_NAME etc. */ +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include + +#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_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + +typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) +#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) +#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) +#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) +#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) +#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) +#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + +/* clang-format on */ + +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) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) +#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) +#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) +#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) +#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) +#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) +#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) + +/* clang-format on */ + +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) +DECLARE_ASN1_DUP_FUNCTION(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); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(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); +const ASN1_INTEGER *OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(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); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char *OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +#ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CRMF) */ +#endif /* !defined(OPENSSL_CRMF_H) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crmferr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crmferr.h new file mode 100644 index 0000000..2215394 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crmferr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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 +#include +#include + +#ifndef OPENSSL_NO_CRMF + +/* + * CRMF reason codes. + */ +#define CRMF_R_BAD_PBM_ITERATIONCOUNT 100 +#define CRMF_R_CMS_NOT_SUPPORTED 122 +#define CRMF_R_CRMFERROR 102 +#define CRMF_R_ERROR 103 +#define CRMF_R_ERROR_DECODING_CERTIFICATE 104 +#define CRMF_R_ERROR_DECODING_ENCRYPTEDKEY 123 +#define CRMF_R_ERROR_DECRYPTING_CERTIFICATE 105 +#define CRMF_R_ERROR_DECRYPTING_ENCRYPTEDKEY 124 +#define CRMF_R_ERROR_DECRYPTING_ENCRYPTEDVALUE 125 +#define CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY 106 +#define CRMF_R_ERROR_SETTING_PURPOSE 126 +#define CRMF_R_ERROR_VERIFYING_ENCRYPTEDKEY 127 +#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_CENTRAL_KEYGEN 128 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crypto.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crypto.h new file mode 100644 index 0000000..1c89f88 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/crypto.h @@ -0,0 +1,619 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/crypto.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRYPTO_H +#define OPENSSL_CRYPTO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CRYPTO_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef CHARSET_EBCDIC +#include +#endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#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_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *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); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, 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_malloc_array(num, size) \ + CRYPTO_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_calloc(num, size) \ + CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc_array(num, size, alignment, freeptr) \ + CRYPTO_aligned_alloc_array(num, size, alignment, freeptr, \ + 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_realloc_array(addr, num, size) \ + CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_clear_realloc_array(addr, old_num, num, size) \ + CRYPTO_clear_realloc_array(addr, old_num, num, size, \ + 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_malloc_array(num, size) \ + CRYPTO_secure_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_calloc(num, size) \ + CRYPTO_secure_calloc(num, size, 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_strtoul(const char *str, char **endptr, int base, unsigned long *num); +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 +#define OPENSSL_WINCTX 10 + +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 +#define OPENSSL_INFO_WINDOWS_CONTEXT 1009 + +int OPENSSL_issetugid(void); + +struct crypto_ex_data_st { + OSSL_LIB_CTX *ctx; + STACK_OF(void) *sk; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) +#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) +#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) +#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) +#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) +#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) +#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) +#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) +#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) +#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) +#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) +#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) +#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) +#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk), ossl_check_void_freefunc_type(freefunc)) +#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) +#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) +#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) +#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) +#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) +#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) +#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) +#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * 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_malloc_array(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_calloc(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc_array(size_t num, size_t size, + size_t align, void **freeptr, + const char *file, int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +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); +void *CRYPTO_realloc_array(void *addr, size_t num, size_t size, + const char *file, int line); +void *CRYPTO_clear_realloc_array(void *addr, size_t old_num, size_t num, + size_t size, 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); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc_array(size_t num, size_t size, + const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_calloc(size_t num, size_t size, + 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 */ + +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +#define CRYPTO_MEM_CHECK_MAX_FS 256 + +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 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 +#else +#include +#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); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cryptoerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cryptoerr.h new file mode 100644 index 0000000..626e3e9 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cryptoerr.h @@ -0,0 +1,54 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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 +#include +#include + +/* + * 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_NAMES 132 +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cryptoerr_legacy.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cryptoerr_legacy.h new file mode 100644 index 0000000..b1388a5 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cryptoerr_legacy.h @@ -0,0 +1,1466 @@ +/* + * 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 + */ + +/* + * This header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public {lib}err.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_CRYPTOERR_LEGACY_H +#define OPENSSL_CRYPTOERR_LEGACY_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASN1_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASYNC_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BIO_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BN_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BUF_strings(void); +#ifndef OPENSSL_NO_CMS +OSSL_DEPRECATEDIN_3_0 int ERR_load_CMS_strings(void); +#endif +#ifndef OPENSSL_NO_COMP +OSSL_DEPRECATEDIN_3_0 int ERR_load_COMP_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_CONF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_CRYPTO_strings(void); +#ifndef OPENSSL_NO_CT +OSSL_DEPRECATEDIN_3_0 int ERR_load_CT_strings(void); +#endif +#ifndef OPENSSL_NO_DH +OSSL_DEPRECATEDIN_3_0 int ERR_load_DH_strings(void); +#endif +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 int ERR_load_DSA_strings(void); +#endif +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 int ERR_load_EC_strings(void); +#endif +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int ERR_load_ENGINE_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_ERR_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_EVP_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_KDF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OBJ_strings(void); +#ifndef OPENSSL_NO_OCSP +OSSL_DEPRECATEDIN_3_0 int ERR_load_OCSP_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_PEM_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS12_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS7_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RAND_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RSA_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OSSL_STORE_strings(void); +#ifndef OPENSSL_NO_TS +OSSL_DEPRECATEDIN_3_0 int ERR_load_TS_strings(void); +#endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_UI_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509V3_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * ASN1 function codes. + */ +#define ASN1_F_A2D_ASN1_OBJECT 0 +#define ASN1_F_A2I_ASN1_INTEGER 0 +#define ASN1_F_A2I_ASN1_STRING 0 +#define ASN1_F_APPEND_EXP 0 +#define ASN1_F_ASN1_BIO_INIT 0 +#define ASN1_F_ASN1_BIT_STRING_SET_BIT 0 +#define ASN1_F_ASN1_CB 0 +#define ASN1_F_ASN1_CHECK_TLEN 0 +#define ASN1_F_ASN1_COLLECT 0 +#define ASN1_F_ASN1_D2I_EX_PRIMITIVE 0 +#define ASN1_F_ASN1_D2I_FP 0 +#define ASN1_F_ASN1_D2I_READ_BIO 0 +#define ASN1_F_ASN1_DIGEST 0 +#define ASN1_F_ASN1_DO_ADB 0 +#define ASN1_F_ASN1_DO_LOCK 0 +#define ASN1_F_ASN1_DUP 0 +#define ASN1_F_ASN1_ENC_SAVE 0 +#define ASN1_F_ASN1_EX_C2I 0 +#define ASN1_F_ASN1_FIND_END 0 +#define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 0 +#define ASN1_F_ASN1_GENERATE_V3 0 +#define ASN1_F_ASN1_GET_INT64 0 +#define ASN1_F_ASN1_GET_OBJECT 0 +#define ASN1_F_ASN1_GET_UINT64 0 +#define ASN1_F_ASN1_I2D_BIO 0 +#define ASN1_F_ASN1_I2D_FP 0 +#define ASN1_F_ASN1_ITEM_D2I_FP 0 +#define ASN1_F_ASN1_ITEM_DUP 0 +#define ASN1_F_ASN1_ITEM_EMBED_D2I 0 +#define ASN1_F_ASN1_ITEM_EMBED_NEW 0 +#define ASN1_F_ASN1_ITEM_FLAGS_I2D 0 +#define ASN1_F_ASN1_ITEM_I2D_BIO 0 +#define ASN1_F_ASN1_ITEM_I2D_FP 0 +#define ASN1_F_ASN1_ITEM_PACK 0 +#define ASN1_F_ASN1_ITEM_SIGN 0 +#define ASN1_F_ASN1_ITEM_SIGN_CTX 0 +#define ASN1_F_ASN1_ITEM_UNPACK 0 +#define ASN1_F_ASN1_ITEM_VERIFY 0 +#define ASN1_F_ASN1_MBSTRING_NCOPY 0 +#define ASN1_F_ASN1_OBJECT_NEW 0 +#define ASN1_F_ASN1_OUTPUT_DATA 0 +#define ASN1_F_ASN1_PCTX_NEW 0 +#define ASN1_F_ASN1_PRIMITIVE_NEW 0 +#define ASN1_F_ASN1_SCTX_NEW 0 +#define ASN1_F_ASN1_SIGN 0 +#define ASN1_F_ASN1_STR2TYPE 0 +#define ASN1_F_ASN1_STRING_GET_INT64 0 +#define ASN1_F_ASN1_STRING_GET_UINT64 0 +#define ASN1_F_ASN1_STRING_SET 0 +#define ASN1_F_ASN1_STRING_TABLE_ADD 0 +#define ASN1_F_ASN1_STRING_TO_BN 0 +#define ASN1_F_ASN1_STRING_TYPE_NEW 0 +#define ASN1_F_ASN1_TEMPLATE_EX_D2I 0 +#define ASN1_F_ASN1_TEMPLATE_NEW 0 +#define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 0 +#define ASN1_F_ASN1_TIME_ADJ 0 +#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 0 +#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 0 +#define ASN1_F_ASN1_UTCTIME_ADJ 0 +#define ASN1_F_ASN1_VERIFY 0 +#define ASN1_F_B64_READ_ASN1 0 +#define ASN1_F_B64_WRITE_ASN1 0 +#define ASN1_F_BIO_NEW_NDEF 0 +#define ASN1_F_BITSTR_CB 0 +#define ASN1_F_BN_TO_ASN1_STRING 0 +#define ASN1_F_C2I_ASN1_BIT_STRING 0 +#define ASN1_F_C2I_ASN1_INTEGER 0 +#define ASN1_F_C2I_ASN1_OBJECT 0 +#define ASN1_F_C2I_IBUF 0 +#define ASN1_F_C2I_UINT64_INT 0 +#define ASN1_F_COLLECT_DATA 0 +#define ASN1_F_D2I_ASN1_OBJECT 0 +#define ASN1_F_D2I_ASN1_UINTEGER 0 +#define ASN1_F_D2I_AUTOPRIVATEKEY 0 +#define ASN1_F_D2I_PRIVATEKEY 0 +#define ASN1_F_D2I_PUBLICKEY 0 +#define ASN1_F_DO_BUF 0 +#define ASN1_F_DO_CREATE 0 +#define ASN1_F_DO_DUMP 0 +#define ASN1_F_DO_TCREATE 0 +#define ASN1_F_I2A_ASN1_OBJECT 0 +#define ASN1_F_I2D_ASN1_BIO_STREAM 0 +#define ASN1_F_I2D_ASN1_OBJECT 0 +#define ASN1_F_I2D_DSA_PUBKEY 0 +#define ASN1_F_I2D_EC_PUBKEY 0 +#define ASN1_F_I2D_PRIVATEKEY 0 +#define ASN1_F_I2D_PUBLICKEY 0 +#define ASN1_F_I2D_RSA_PUBKEY 0 +#define ASN1_F_LONG_C2I 0 +#define ASN1_F_NDEF_PREFIX 0 +#define ASN1_F_NDEF_SUFFIX 0 +#define ASN1_F_OID_MODULE_INIT 0 +#define ASN1_F_PARSE_TAGGING 0 +#define ASN1_F_PKCS5_PBE2_SET_IV 0 +#define ASN1_F_PKCS5_PBE2_SET_SCRYPT 0 +#define ASN1_F_PKCS5_PBE_SET 0 +#define ASN1_F_PKCS5_PBE_SET0_ALGOR 0 +#define ASN1_F_PKCS5_PBKDF2_SET 0 +#define ASN1_F_PKCS5_SCRYPT_SET 0 +#define ASN1_F_SMIME_READ_ASN1 0 +#define ASN1_F_SMIME_TEXT 0 +#define ASN1_F_STABLE_GET 0 +#define ASN1_F_STBL_MODULE_INIT 0 +#define ASN1_F_UINT32_C2I 0 +#define ASN1_F_UINT32_NEW 0 +#define ASN1_F_UINT64_C2I 0 +#define ASN1_F_UINT64_NEW 0 +#define ASN1_F_X509_CRL_ADD0_REVOKED 0 +#define ASN1_F_X509_INFO_NEW 0 +#define ASN1_F_X509_NAME_ENCODE 0 +#define ASN1_F_X509_NAME_EX_D2I 0 +#define ASN1_F_X509_NAME_EX_NEW 0 +#define ASN1_F_X509_PKEY_NEW 0 + +/* + * ASYNC function codes. + */ +#define ASYNC_F_ASYNC_CTX_NEW 0 +#define ASYNC_F_ASYNC_INIT_THREAD 0 +#define ASYNC_F_ASYNC_JOB_NEW 0 +#define ASYNC_F_ASYNC_PAUSE_JOB 0 +#define ASYNC_F_ASYNC_START_FUNC 0 +#define ASYNC_F_ASYNC_START_JOB 0 +#define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 0 + +/* + * BIO function codes. + */ +#define BIO_F_ACPT_STATE 0 +#define BIO_F_ADDRINFO_WRAP 0 +#define BIO_F_ADDR_STRINGS 0 +#define BIO_F_BIO_ACCEPT 0 +#define BIO_F_BIO_ACCEPT_EX 0 +#define BIO_F_BIO_ACCEPT_NEW 0 +#define BIO_F_BIO_ADDR_NEW 0 +#define BIO_F_BIO_BIND 0 +#define BIO_F_BIO_CALLBACK_CTRL 0 +#define BIO_F_BIO_CONNECT 0 +#define BIO_F_BIO_CONNECT_NEW 0 +#define BIO_F_BIO_CTRL 0 +#define BIO_F_BIO_GETS 0 +#define BIO_F_BIO_GET_HOST_IP 0 +#define BIO_F_BIO_GET_NEW_INDEX 0 +#define BIO_F_BIO_GET_PORT 0 +#define BIO_F_BIO_LISTEN 0 +#define BIO_F_BIO_LOOKUP 0 +#define BIO_F_BIO_LOOKUP_EX 0 +#define BIO_F_BIO_MAKE_PAIR 0 +#define BIO_F_BIO_METH_NEW 0 +#define BIO_F_BIO_NEW 0 +#define BIO_F_BIO_NEW_DGRAM_SCTP 0 +#define BIO_F_BIO_NEW_FILE 0 +#define BIO_F_BIO_NEW_MEM_BUF 0 +#define BIO_F_BIO_NREAD 0 +#define BIO_F_BIO_NREAD0 0 +#define BIO_F_BIO_NWRITE 0 +#define BIO_F_BIO_NWRITE0 0 +#define BIO_F_BIO_PARSE_HOSTSERV 0 +#define BIO_F_BIO_PUTS 0 +#define BIO_F_BIO_READ 0 +#define BIO_F_BIO_READ_EX 0 +#define BIO_F_BIO_READ_INTERN 0 +#define BIO_F_BIO_SOCKET 0 +#define BIO_F_BIO_SOCKET_NBIO 0 +#define BIO_F_BIO_SOCK_INFO 0 +#define BIO_F_BIO_SOCK_INIT 0 +#define BIO_F_BIO_WRITE 0 +#define BIO_F_BIO_WRITE_EX 0 +#define BIO_F_BIO_WRITE_INTERN 0 +#define BIO_F_BUFFER_CTRL 0 +#define BIO_F_CONN_CTRL 0 +#define BIO_F_CONN_STATE 0 +#define BIO_F_DGRAM_SCTP_NEW 0 +#define BIO_F_DGRAM_SCTP_READ 0 +#define BIO_F_DGRAM_SCTP_WRITE 0 +#define BIO_F_DOAPR_OUTCH 0 +#define BIO_F_FILE_CTRL 0 +#define BIO_F_FILE_READ 0 +#define BIO_F_LINEBUFFER_CTRL 0 +#define BIO_F_LINEBUFFER_NEW 0 +#define BIO_F_MEM_WRITE 0 +#define BIO_F_NBIOF_NEW 0 +#define BIO_F_SLG_WRITE 0 +#define BIO_F_SSL_NEW 0 + +/* + * BN function codes. + */ +#define BN_F_BNRAND 0 +#define BN_F_BNRAND_RANGE 0 +#define BN_F_BN_BLINDING_CONVERT_EX 0 +#define BN_F_BN_BLINDING_CREATE_PARAM 0 +#define BN_F_BN_BLINDING_INVERT_EX 0 +#define BN_F_BN_BLINDING_NEW 0 +#define BN_F_BN_BLINDING_UPDATE 0 +#define BN_F_BN_BN2DEC 0 +#define BN_F_BN_BN2HEX 0 +#define BN_F_BN_COMPUTE_WNAF 0 +#define BN_F_BN_CTX_GET 0 +#define BN_F_BN_CTX_NEW 0 +#define BN_F_BN_CTX_START 0 +#define BN_F_BN_DIV 0 +#define BN_F_BN_DIV_RECP 0 +#define BN_F_BN_EXP 0 +#define BN_F_BN_EXPAND_INTERNAL 0 +#define BN_F_BN_GENCB_NEW 0 +#define BN_F_BN_GENERATE_DSA_NONCE 0 +#define BN_F_BN_GENERATE_PRIME_EX 0 +#define BN_F_BN_GF2M_MOD 0 +#define BN_F_BN_GF2M_MOD_EXP 0 +#define BN_F_BN_GF2M_MOD_MUL 0 +#define BN_F_BN_GF2M_MOD_SOLVE_QUAD 0 +#define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 0 +#define BN_F_BN_GF2M_MOD_SQR 0 +#define BN_F_BN_GF2M_MOD_SQRT 0 +#define BN_F_BN_LSHIFT 0 +#define BN_F_BN_MOD_EXP2_MONT 0 +#define BN_F_BN_MOD_EXP_MONT 0 +#define BN_F_BN_MOD_EXP_MONT_CONSTTIME 0 +#define BN_F_BN_MOD_EXP_MONT_WORD 0 +#define BN_F_BN_MOD_EXP_RECP 0 +#define BN_F_BN_MOD_EXP_SIMPLE 0 +#define BN_F_BN_MOD_INVERSE 0 +#define BN_F_BN_MOD_INVERSE_NO_BRANCH 0 +#define BN_F_BN_MOD_LSHIFT_QUICK 0 +#define BN_F_BN_MOD_SQRT 0 +#define BN_F_BN_MONT_CTX_NEW 0 +#define BN_F_BN_MPI2BN 0 +#define BN_F_BN_NEW 0 +#define BN_F_BN_POOL_GET 0 +#define BN_F_BN_RAND 0 +#define BN_F_BN_RAND_RANGE 0 +#define BN_F_BN_RECP_CTX_NEW 0 +#define BN_F_BN_RSHIFT 0 +#define BN_F_BN_SET_WORDS 0 +#define BN_F_BN_STACK_PUSH 0 +#define BN_F_BN_USUB 0 + +/* + * BUF function codes. + */ +#define BUF_F_BUF_MEM_GROW 0 +#define BUF_F_BUF_MEM_GROW_CLEAN 0 +#define BUF_F_BUF_MEM_NEW 0 + +#ifndef OPENSSL_NO_CMS +/* + * CMS function codes. + */ +#define CMS_F_CHECK_CONTENT 0 +#define CMS_F_CMS_ADD0_CERT 0 +#define CMS_F_CMS_ADD0_RECIPIENT_KEY 0 +#define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 0 +#define CMS_F_CMS_ADD1_RECEIPTREQUEST 0 +#define CMS_F_CMS_ADD1_RECIPIENT_CERT 0 +#define CMS_F_CMS_ADD1_SIGNER 0 +#define CMS_F_CMS_ADD1_SIGNINGTIME 0 +#define CMS_F_CMS_COMPRESS 0 +#define CMS_F_CMS_COMPRESSEDDATA_CREATE 0 +#define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 0 +#define CMS_F_CMS_COPY_CONTENT 0 +#define CMS_F_CMS_COPY_MESSAGEDIGEST 0 +#define CMS_F_CMS_DATA 0 +#define CMS_F_CMS_DATAFINAL 0 +#define CMS_F_CMS_DATAINIT 0 +#define CMS_F_CMS_DECRYPT 0 +#define CMS_F_CMS_DECRYPT_SET1_KEY 0 +#define CMS_F_CMS_DECRYPT_SET1_PASSWORD 0 +#define CMS_F_CMS_DECRYPT_SET1_PKEY 0 +#define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 0 +#define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 0 +#define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 0 +#define CMS_F_CMS_DIGEST_VERIFY 0 +#define CMS_F_CMS_ENCODE_RECEIPT 0 +#define CMS_F_CMS_ENCRYPT 0 +#define CMS_F_CMS_ENCRYPTEDCONTENT_INIT 0 +#define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 0 +#define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 0 +#define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 0 +#define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 0 +#define CMS_F_CMS_ENVELOPEDDATA_CREATE 0 +#define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 0 +#define CMS_F_CMS_ENVELOPED_DATA_INIT 0 +#define CMS_F_CMS_ENV_ASN1_CTRL 0 +#define CMS_F_CMS_FINAL 0 +#define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 0 +#define CMS_F_CMS_GET0_CONTENT 0 +#define CMS_F_CMS_GET0_ECONTENT_TYPE 0 +#define CMS_F_CMS_GET0_ENVELOPED 0 +#define CMS_F_CMS_GET0_REVOCATION_CHOICES 0 +#define CMS_F_CMS_GET0_SIGNED 0 +#define CMS_F_CMS_MSGSIGDIGEST_ADD1 0 +#define CMS_F_CMS_RECEIPTREQUEST_CREATE0 0 +#define CMS_F_CMS_RECEIPT_VERIFY 0 +#define CMS_F_CMS_RECIPIENTINFO_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 0 +#define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 0 +#define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 0 +#define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 0 +#define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 0 +#define CMS_F_CMS_SD_ASN1_CTRL 0 +#define CMS_F_CMS_SET1_IAS 0 +#define CMS_F_CMS_SET1_KEYID 0 +#define CMS_F_CMS_SET1_SIGNERIDENTIFIER 0 +#define CMS_F_CMS_SET_DETACHED 0 +#define CMS_F_CMS_SIGN 0 +#define CMS_F_CMS_SIGNED_DATA_INIT 0 +#define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 0 +#define CMS_F_CMS_SIGNERINFO_SIGN 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 0 +#define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 0 +#define CMS_F_CMS_SIGN_RECEIPT 0 +#define CMS_F_CMS_SI_CHECK_ATTRIBUTES 0 +#define CMS_F_CMS_STREAM 0 +#define CMS_F_CMS_UNCOMPRESS 0 +#define CMS_F_CMS_VERIFY 0 +#define CMS_F_KEK_UNWRAP_KEY 0 +#endif + +#ifndef OPENSSL_NO_COMP +/* + * COMP function codes. + */ +#define COMP_F_BIO_ZLIB_FLUSH 0 +#define COMP_F_BIO_ZLIB_NEW 0 +#define COMP_F_BIO_ZLIB_READ 0 +#define COMP_F_BIO_ZLIB_WRITE 0 +#define COMP_F_COMP_CTX_NEW 0 +#endif + +/* + * CONF function codes. + */ +#define CONF_F_CONF_DUMP_FP 0 +#define CONF_F_CONF_LOAD 0 +#define CONF_F_CONF_LOAD_FP 0 +#define CONF_F_CONF_PARSE_LIST 0 +#define CONF_F_DEF_LOAD 0 +#define CONF_F_DEF_LOAD_BIO 0 +#define CONF_F_GET_NEXT_FILE 0 +#define CONF_F_MODULE_ADD 0 +#define CONF_F_MODULE_INIT 0 +#define CONF_F_MODULE_LOAD_DSO 0 +#define CONF_F_MODULE_RUN 0 +#define CONF_F_NCONF_DUMP_BIO 0 +#define CONF_F_NCONF_DUMP_FP 0 +#define CONF_F_NCONF_GET_NUMBER_E 0 +#define CONF_F_NCONF_GET_SECTION 0 +#define CONF_F_NCONF_GET_STRING 0 +#define CONF_F_NCONF_LOAD 0 +#define CONF_F_NCONF_LOAD_BIO 0 +#define CONF_F_NCONF_LOAD_FP 0 +#define CONF_F_NCONF_NEW 0 +#define CONF_F_PROCESS_INCLUDE 0 +#define CONF_F_SSL_MODULE_INIT 0 +#define CONF_F_STR_COPY 0 + +/* + * CRYPTO function codes. + */ +#define CRYPTO_F_CMAC_CTX_NEW 0 +#define CRYPTO_F_CRYPTO_DUP_EX_DATA 0 +#define CRYPTO_F_CRYPTO_FREE_EX_DATA 0 +#define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 0 +#define CRYPTO_F_CRYPTO_MEMDUP 0 +#define CRYPTO_F_CRYPTO_NEW_EX_DATA 0 +#define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 0 +#define CRYPTO_F_CRYPTO_OCB128_INIT 0 +#define CRYPTO_F_CRYPTO_SET_EX_DATA 0 +#define CRYPTO_F_GET_AND_LOCK 0 +#define CRYPTO_F_OPENSSL_ATEXIT 0 +#define CRYPTO_F_OPENSSL_BUF2HEXSTR 0 +#define CRYPTO_F_OPENSSL_FOPEN 0 +#define CRYPTO_F_OPENSSL_HEXSTR2BUF 0 +#define CRYPTO_F_OPENSSL_INIT_CRYPTO 0 +#define CRYPTO_F_OPENSSL_LH_NEW 0 +#define CRYPTO_F_OPENSSL_SK_DEEP_COPY 0 +#define CRYPTO_F_OPENSSL_SK_DUP 0 +#define CRYPTO_F_PKEY_HMAC_INIT 0 +#define CRYPTO_F_PKEY_POLY1305_INIT 0 +#define CRYPTO_F_PKEY_SIPHASH_INIT 0 +#define CRYPTO_F_SK_RESERVE 0 + +#ifndef OPENSSL_NO_CT +/* + * CT function codes. + */ +#define CT_F_CTLOG_NEW 0 +#define CT_F_CTLOG_NEW_FROM_BASE64 0 +#define CT_F_CTLOG_NEW_FROM_CONF 0 +#define CT_F_CTLOG_STORE_LOAD_CTX_NEW 0 +#define CT_F_CTLOG_STORE_LOAD_FILE 0 +#define CT_F_CTLOG_STORE_LOAD_LOG 0 +#define CT_F_CTLOG_STORE_NEW 0 +#define CT_F_CT_BASE64_DECODE 0 +#define CT_F_CT_POLICY_EVAL_CTX_NEW 0 +#define CT_F_CT_V1_LOG_ID_FROM_PKEY 0 +#define CT_F_I2O_SCT 0 +#define CT_F_I2O_SCT_LIST 0 +#define CT_F_I2O_SCT_SIGNATURE 0 +#define CT_F_O2I_SCT 0 +#define CT_F_O2I_SCT_LIST 0 +#define CT_F_O2I_SCT_SIGNATURE 0 +#define CT_F_SCT_CTX_NEW 0 +#define CT_F_SCT_CTX_VERIFY 0 +#define CT_F_SCT_NEW 0 +#define CT_F_SCT_NEW_FROM_BASE64 0 +#define CT_F_SCT_SET0_LOG_ID 0 +#define CT_F_SCT_SET1_EXTENSIONS 0 +#define CT_F_SCT_SET1_LOG_ID 0 +#define CT_F_SCT_SET1_SIGNATURE 0 +#define CT_F_SCT_SET_LOG_ENTRY_TYPE 0 +#define CT_F_SCT_SET_SIGNATURE_NID 0 +#define CT_F_SCT_SET_VERSION 0 +#endif + +#ifndef OPENSSL_NO_DH +/* + * DH function codes. + */ +#define DH_F_COMPUTE_KEY 0 +#define DH_F_DHPARAMS_PRINT_FP 0 +#define DH_F_DH_BUILTIN_GENPARAMS 0 +#define DH_F_DH_CHECK_EX 0 +#define DH_F_DH_CHECK_PARAMS_EX 0 +#define DH_F_DH_CHECK_PUB_KEY_EX 0 +#define DH_F_DH_CMS_DECRYPT 0 +#define DH_F_DH_CMS_SET_PEERKEY 0 +#define DH_F_DH_CMS_SET_SHARED_INFO 0 +#define DH_F_DH_METH_DUP 0 +#define DH_F_DH_METH_NEW 0 +#define DH_F_DH_METH_SET1_NAME 0 +#define DH_F_DH_NEW_BY_NID 0 +#define DH_F_DH_NEW_METHOD 0 +#define DH_F_DH_PARAM_DECODE 0 +#define DH_F_DH_PKEY_PUBLIC_CHECK 0 +#define DH_F_DH_PRIV_DECODE 0 +#define DH_F_DH_PRIV_ENCODE 0 +#define DH_F_DH_PUB_DECODE 0 +#define DH_F_DH_PUB_ENCODE 0 +#define DH_F_DO_DH_PRINT 0 +#define DH_F_GENERATE_KEY 0 +#define DH_F_PKEY_DH_CTRL_STR 0 +#define DH_F_PKEY_DH_DERIVE 0 +#define DH_F_PKEY_DH_INIT 0 +#define DH_F_PKEY_DH_KEYGEN 0 +#endif + +#ifndef OPENSSL_NO_DSA +/* + * DSA function codes. + */ +#define DSA_F_DSAPARAMS_PRINT 0 +#define DSA_F_DSAPARAMS_PRINT_FP 0 +#define DSA_F_DSA_BUILTIN_PARAMGEN 0 +#define DSA_F_DSA_BUILTIN_PARAMGEN2 0 +#define DSA_F_DSA_DO_SIGN 0 +#define DSA_F_DSA_DO_VERIFY 0 +#define DSA_F_DSA_METH_DUP 0 +#define DSA_F_DSA_METH_NEW 0 +#define DSA_F_DSA_METH_SET1_NAME 0 +#define DSA_F_DSA_NEW_METHOD 0 +#define DSA_F_DSA_PARAM_DECODE 0 +#define DSA_F_DSA_PRINT_FP 0 +#define DSA_F_DSA_PRIV_DECODE 0 +#define DSA_F_DSA_PRIV_ENCODE 0 +#define DSA_F_DSA_PUB_DECODE 0 +#define DSA_F_DSA_PUB_ENCODE 0 +#define DSA_F_DSA_SIGN 0 +#define DSA_F_DSA_SIGN_SETUP 0 +#define DSA_F_DSA_SIG_NEW 0 +#define DSA_F_OLD_DSA_PRIV_DECODE 0 +#define DSA_F_PKEY_DSA_CTRL 0 +#define DSA_F_PKEY_DSA_CTRL_STR 0 +#define DSA_F_PKEY_DSA_KEYGEN 0 +#endif + +#ifndef OPENSSL_NO_EC +/* + * EC function codes. + */ +#define EC_F_BN_TO_FELEM 0 +#define EC_F_D2I_ECPARAMETERS 0 +#define EC_F_D2I_ECPKPARAMETERS 0 +#define EC_F_D2I_ECPRIVATEKEY 0 +#define EC_F_DO_EC_KEY_PRINT 0 +#define EC_F_ECDH_CMS_DECRYPT 0 +#define EC_F_ECDH_CMS_SET_SHARED_INFO 0 +#define EC_F_ECDH_COMPUTE_KEY 0 +#define EC_F_ECDH_SIMPLE_COMPUTE_KEY 0 +#define EC_F_ECDSA_DO_SIGN_EX 0 +#define EC_F_ECDSA_DO_VERIFY 0 +#define EC_F_ECDSA_SIGN_EX 0 +#define EC_F_ECDSA_SIGN_SETUP 0 +#define EC_F_ECDSA_SIG_NEW 0 +#define EC_F_ECDSA_VERIFY 0 +#define EC_F_ECD_ITEM_VERIFY 0 +#define EC_F_ECKEY_PARAM2TYPE 0 +#define EC_F_ECKEY_PARAM_DECODE 0 +#define EC_F_ECKEY_PRIV_DECODE 0 +#define EC_F_ECKEY_PRIV_ENCODE 0 +#define EC_F_ECKEY_PUB_DECODE 0 +#define EC_F_ECKEY_PUB_ENCODE 0 +#define EC_F_ECKEY_TYPE2PARAM 0 +#define EC_F_ECPARAMETERS_PRINT 0 +#define EC_F_ECPARAMETERS_PRINT_FP 0 +#define EC_F_ECPKPARAMETERS_PRINT 0 +#define EC_F_ECPKPARAMETERS_PRINT_FP 0 +#define EC_F_ECP_NISTZ256_GET_AFFINE 0 +#define EC_F_ECP_NISTZ256_INV_MOD_ORD 0 +#define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 0 +#define EC_F_ECP_NISTZ256_POINTS_MUL 0 +#define EC_F_ECP_NISTZ256_PRE_COMP_NEW 0 +#define EC_F_ECP_NISTZ256_WINDOWED_MUL 0 +#define EC_F_ECX_KEY_OP 0 +#define EC_F_ECX_PRIV_ENCODE 0 +#define EC_F_ECX_PUB_ENCODE 0 +#define EC_F_EC_ASN1_GROUP2CURVE 0 +#define EC_F_EC_ASN1_GROUP2FIELDID 0 +#define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 0 +#define EC_F_EC_GF2M_SIMPLE_FIELD_INV 0 +#define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 0 +#define EC_F_EC_GF2M_SIMPLE_LADDER_POST 0 +#define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 0 +#define EC_F_EC_GF2M_SIMPLE_OCT2POINT 0 +#define EC_F_EC_GF2M_SIMPLE_POINT2OCT 0 +#define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 0 +#define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_GFP_MONT_FIELD_DECODE 0 +#define EC_F_EC_GFP_MONT_FIELD_ENCODE 0 +#define EC_F_EC_GFP_MONT_FIELD_INV 0 +#define EC_F_EC_GFP_MONT_FIELD_MUL 0 +#define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 0 +#define EC_F_EC_GFP_MONT_FIELD_SQR 0 +#define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP224_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP256_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_NISTP521_POINTS_MUL 0 +#define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_NIST_FIELD_MUL 0 +#define EC_F_EC_GFP_NIST_FIELD_SQR 0 +#define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_FIELD_INV 0 +#define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 0 +#define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 0 +#define EC_F_EC_GFP_SIMPLE_OCT2POINT 0 +#define EC_F_EC_GFP_SIMPLE_POINT2OCT 0 +#define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 0 +#define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_GROUP_CHECK 0 +#define EC_F_EC_GROUP_CHECK_DISCRIMINANT 0 +#define EC_F_EC_GROUP_COPY 0 +#define EC_F_EC_GROUP_GET_CURVE 0 +#define EC_F_EC_GROUP_GET_CURVE_GF2M 0 +#define EC_F_EC_GROUP_GET_CURVE_GFP 0 +#define EC_F_EC_GROUP_GET_DEGREE 0 +#define EC_F_EC_GROUP_GET_ECPARAMETERS 0 +#define EC_F_EC_GROUP_GET_ECPKPARAMETERS 0 +#define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 0 +#define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 0 +#define EC_F_EC_GROUP_NEW 0 +#define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 0 +#define EC_F_EC_GROUP_NEW_FROM_DATA 0 +#define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 0 +#define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 0 +#define EC_F_EC_GROUP_SET_CURVE 0 +#define EC_F_EC_GROUP_SET_CURVE_GF2M 0 +#define EC_F_EC_GROUP_SET_CURVE_GFP 0 +#define EC_F_EC_GROUP_SET_GENERATOR 0 +#define EC_F_EC_GROUP_SET_SEED 0 +#define EC_F_EC_KEY_CHECK_KEY 0 +#define EC_F_EC_KEY_COPY 0 +#define EC_F_EC_KEY_GENERATE_KEY 0 +#define EC_F_EC_KEY_NEW 0 +#define EC_F_EC_KEY_NEW_METHOD 0 +#define EC_F_EC_KEY_OCT2PRIV 0 +#define EC_F_EC_KEY_PRINT 0 +#define EC_F_EC_KEY_PRINT_FP 0 +#define EC_F_EC_KEY_PRIV2BUF 0 +#define EC_F_EC_KEY_PRIV2OCT 0 +#define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 0 +#define EC_F_EC_KEY_SIMPLE_CHECK_KEY 0 +#define EC_F_EC_KEY_SIMPLE_OCT2PRIV 0 +#define EC_F_EC_KEY_SIMPLE_PRIV2OCT 0 +#define EC_F_EC_PKEY_CHECK 0 +#define EC_F_EC_PKEY_PARAM_CHECK 0 +#define EC_F_EC_POINTS_MAKE_AFFINE 0 +#define EC_F_EC_POINTS_MUL 0 +#define EC_F_EC_POINT_ADD 0 +#define EC_F_EC_POINT_BN2POINT 0 +#define EC_F_EC_POINT_CMP 0 +#define EC_F_EC_POINT_COPY 0 +#define EC_F_EC_POINT_DBL 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_INVERT 0 +#define EC_F_EC_POINT_IS_AT_INFINITY 0 +#define EC_F_EC_POINT_IS_ON_CURVE 0 +#define EC_F_EC_POINT_MAKE_AFFINE 0 +#define EC_F_EC_POINT_NEW 0 +#define EC_F_EC_POINT_OCT2POINT 0 +#define EC_F_EC_POINT_POINT2BUF 0 +#define EC_F_EC_POINT_POINT2OCT 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 0 +#define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 0 +#define EC_F_EC_POINT_SET_TO_INFINITY 0 +#define EC_F_EC_PRE_COMP_NEW 0 +#define EC_F_EC_SCALAR_MUL_LADDER 0 +#define EC_F_EC_WNAF_MUL 0 +#define EC_F_EC_WNAF_PRECOMPUTE_MULT 0 +#define EC_F_I2D_ECPARAMETERS 0 +#define EC_F_I2D_ECPKPARAMETERS 0 +#define EC_F_I2D_ECPRIVATEKEY 0 +#define EC_F_I2O_ECPUBLICKEY 0 +#define EC_F_NISTP224_PRE_COMP_NEW 0 +#define EC_F_NISTP256_PRE_COMP_NEW 0 +#define EC_F_NISTP521_PRE_COMP_NEW 0 +#define EC_F_O2I_ECPUBLICKEY 0 +#define EC_F_OLD_EC_PRIV_DECODE 0 +#define EC_F_OSSL_ECDH_COMPUTE_KEY 0 +#define EC_F_OSSL_ECDSA_SIGN_SIG 0 +#define EC_F_OSSL_ECDSA_VERIFY_SIG 0 +#define EC_F_PKEY_ECD_CTRL 0 +#define EC_F_PKEY_ECD_DIGESTSIGN 0 +#define EC_F_PKEY_ECD_DIGESTSIGN25519 0 +#define EC_F_PKEY_ECD_DIGESTSIGN448 0 +#define EC_F_PKEY_ECX_DERIVE 0 +#define EC_F_PKEY_EC_CTRL 0 +#define EC_F_PKEY_EC_CTRL_STR 0 +#define EC_F_PKEY_EC_DERIVE 0 +#define EC_F_PKEY_EC_INIT 0 +#define EC_F_PKEY_EC_KDF_DERIVE 0 +#define EC_F_PKEY_EC_KEYGEN 0 +#define EC_F_PKEY_EC_PARAMGEN 0 +#define EC_F_PKEY_EC_SIGN 0 +#define EC_F_VALIDATE_ECX_DERIVE 0 +#endif + +#ifndef OPENSSL_NO_ENGINE +/* + * ENGINE function codes. + */ +#define ENGINE_F_DIGEST_UPDATE 0 +#define ENGINE_F_DYNAMIC_CTRL 0 +#define ENGINE_F_DYNAMIC_GET_DATA_CTX 0 +#define ENGINE_F_DYNAMIC_LOAD 0 +#define ENGINE_F_DYNAMIC_SET_DATA_CTX 0 +#define ENGINE_F_ENGINE_ADD 0 +#define ENGINE_F_ENGINE_BY_ID 0 +#define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 0 +#define ENGINE_F_ENGINE_CTRL 0 +#define ENGINE_F_ENGINE_CTRL_CMD 0 +#define ENGINE_F_ENGINE_CTRL_CMD_STRING 0 +#define ENGINE_F_ENGINE_FINISH 0 +#define ENGINE_F_ENGINE_GET_CIPHER 0 +#define ENGINE_F_ENGINE_GET_DIGEST 0 +#define ENGINE_F_ENGINE_GET_FIRST 0 +#define ENGINE_F_ENGINE_GET_LAST 0 +#define ENGINE_F_ENGINE_GET_NEXT 0 +#define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 0 +#define ENGINE_F_ENGINE_GET_PKEY_METH 0 +#define ENGINE_F_ENGINE_GET_PREV 0 +#define ENGINE_F_ENGINE_INIT 0 +#define ENGINE_F_ENGINE_LIST_ADD 0 +#define ENGINE_F_ENGINE_LIST_REMOVE 0 +#define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 0 +#define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 0 +#define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 0 +#define ENGINE_F_ENGINE_NEW 0 +#define ENGINE_F_ENGINE_PKEY_ASN1_FIND_STR 0 +#define ENGINE_F_ENGINE_REMOVE 0 +#define ENGINE_F_ENGINE_SET_DEFAULT_STRING 0 +#define ENGINE_F_ENGINE_SET_ID 0 +#define ENGINE_F_ENGINE_SET_NAME 0 +#define ENGINE_F_ENGINE_TABLE_REGISTER 0 +#define ENGINE_F_ENGINE_UNLOCKED_FINISH 0 +#define ENGINE_F_ENGINE_UP_REF 0 +#define ENGINE_F_INT_CLEANUP_ITEM 0 +#define ENGINE_F_INT_CTRL_HELPER 0 +#define ENGINE_F_INT_ENGINE_CONFIGURE 0 +#define ENGINE_F_INT_ENGINE_MODULE_INIT 0 +#define ENGINE_F_OSSL_HMAC_INIT 0 +#endif + +/* + * EVP function codes. + */ +#define EVP_F_AESNI_INIT_KEY 0 +#define EVP_F_AESNI_XTS_INIT_KEY 0 +#define EVP_F_AES_GCM_CTRL 0 +#define EVP_F_AES_INIT_KEY 0 +#define EVP_F_AES_OCB_CIPHER 0 +#define EVP_F_AES_T4_INIT_KEY 0 +#define EVP_F_AES_T4_XTS_INIT_KEY 0 +#define EVP_F_AES_WRAP_CIPHER 0 +#define EVP_F_AES_XTS_INIT_KEY 0 +#define EVP_F_ALG_MODULE_INIT 0 +#define EVP_F_ARIA_CCM_INIT_KEY 0 +#define EVP_F_ARIA_GCM_CTRL 0 +#define EVP_F_ARIA_GCM_INIT_KEY 0 +#define EVP_F_ARIA_INIT_KEY 0 +#define EVP_F_B64_NEW 0 +#define EVP_F_CAMELLIA_INIT_KEY 0 +#define EVP_F_CHACHA20_POLY1305_CTRL 0 +#define EVP_F_CMLL_T4_INIT_KEY 0 +#define EVP_F_DES_EDE3_WRAP_CIPHER 0 +#define EVP_F_DO_SIGVER_INIT 0 +#define EVP_F_ENC_NEW 0 +#define EVP_F_EVP_CIPHERINIT_EX 0 +#define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 0 +#define EVP_F_EVP_CIPHER_CTX_COPY 0 +#define EVP_F_EVP_CIPHER_CTX_CTRL 0 +#define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 0 +#define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 0 +#define EVP_F_EVP_DECRYPTFINAL_EX 0 +#define EVP_F_EVP_DECRYPTUPDATE 0 +#define EVP_F_EVP_DIGESTFINALXOF 0 +#define EVP_F_EVP_DIGESTINIT_EX 0 +#define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 0 +#define EVP_F_EVP_ENCRYPTFINAL_EX 0 +#define EVP_F_EVP_ENCRYPTUPDATE 0 +#define EVP_F_EVP_MD_CTX_COPY_EX 0 +#define EVP_F_EVP_MD_SIZE 0 +#define EVP_F_EVP_OPENINIT 0 +#define EVP_F_EVP_PBE_ALG_ADD 0 +#define EVP_F_EVP_PBE_ALG_ADD_TYPE 0 +#define EVP_F_EVP_PBE_CIPHERINIT 0 +#define EVP_F_EVP_PBE_SCRYPT 0 +#define EVP_F_EVP_PKCS82PKEY 0 +#define EVP_F_EVP_PKEY2PKCS8 0 +#define EVP_F_EVP_PKEY_ASN1_ADD0 0 +#define EVP_F_EVP_PKEY_CHECK 0 +#define EVP_F_EVP_PKEY_COPY_PARAMETERS 0 +#define EVP_F_EVP_PKEY_CTX_CTRL 0 +#define EVP_F_EVP_PKEY_CTX_CTRL_STR 0 +#define EVP_F_EVP_PKEY_CTX_DUP 0 +#define EVP_F_EVP_PKEY_CTX_MD 0 +#define EVP_F_EVP_PKEY_DECRYPT 0 +#define EVP_F_EVP_PKEY_DECRYPT_INIT 0 +#define EVP_F_EVP_PKEY_DECRYPT_OLD 0 +#define EVP_F_EVP_PKEY_DERIVE 0 +#define EVP_F_EVP_PKEY_DERIVE_INIT 0 +#define EVP_F_EVP_PKEY_DERIVE_SET_PEER 0 +#define EVP_F_EVP_PKEY_ENCRYPT 0 +#define EVP_F_EVP_PKEY_ENCRYPT_INIT 0 +#define EVP_F_EVP_PKEY_ENCRYPT_OLD 0 +#define EVP_F_EVP_PKEY_GET0_DH 0 +#define EVP_F_EVP_PKEY_GET0_DSA 0 +#define EVP_F_EVP_PKEY_GET0_EC_KEY 0 +#define EVP_F_EVP_PKEY_GET0_HMAC 0 +#define EVP_F_EVP_PKEY_GET0_POLY1305 0 +#define EVP_F_EVP_PKEY_GET0_RSA 0 +#define EVP_F_EVP_PKEY_GET0_SIPHASH 0 +#define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 0 +#define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 0 +#define EVP_F_EVP_PKEY_KEYGEN 0 +#define EVP_F_EVP_PKEY_KEYGEN_INIT 0 +#define EVP_F_EVP_PKEY_METH_ADD0 0 +#define EVP_F_EVP_PKEY_METH_NEW 0 +#define EVP_F_EVP_PKEY_NEW 0 +#define EVP_F_EVP_PKEY_NEW_CMAC_KEY 0 +#define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 0 +#define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 0 +#define EVP_F_EVP_PKEY_PARAMGEN 0 +#define EVP_F_EVP_PKEY_PARAMGEN_INIT 0 +#define EVP_F_EVP_PKEY_PARAM_CHECK 0 +#define EVP_F_EVP_PKEY_PUBLIC_CHECK 0 +#define EVP_F_EVP_PKEY_SET1_ENGINE 0 +#define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 0 +#define EVP_F_EVP_PKEY_SIGN 0 +#define EVP_F_EVP_PKEY_SIGN_INIT 0 +#define EVP_F_EVP_PKEY_VERIFY 0 +#define EVP_F_EVP_PKEY_VERIFY_INIT 0 +#define EVP_F_EVP_PKEY_VERIFY_RECOVER 0 +#define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 0 +#define EVP_F_EVP_SIGNFINAL 0 +#define EVP_F_EVP_VERIFYFINAL 0 +#define EVP_F_INT_CTX_NEW 0 +#define EVP_F_OK_NEW 0 +#define EVP_F_PKCS5_PBE_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_PBE_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 0 +#define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 0 +#define EVP_F_PKEY_SET_TYPE 0 +#define EVP_F_RC2_MAGIC_TO_METH 0 +#define EVP_F_RC5_CTRL 0 +#define EVP_F_R_32_12_16_INIT_KEY 0 +#define EVP_F_S390X_AES_GCM_CTRL 0 +#define EVP_F_UPDATE 0 + +/* + * KDF function codes. + */ +#define KDF_F_PKEY_HKDF_CTRL_STR 0 +#define KDF_F_PKEY_HKDF_DERIVE 0 +#define KDF_F_PKEY_HKDF_INIT 0 +#define KDF_F_PKEY_SCRYPT_CTRL_STR 0 +#define KDF_F_PKEY_SCRYPT_CTRL_UINT64 0 +#define KDF_F_PKEY_SCRYPT_DERIVE 0 +#define KDF_F_PKEY_SCRYPT_INIT 0 +#define KDF_F_PKEY_SCRYPT_SET_MEMBUF 0 +#define KDF_F_PKEY_TLS1_PRF_CTRL_STR 0 +#define KDF_F_PKEY_TLS1_PRF_DERIVE 0 +#define KDF_F_PKEY_TLS1_PRF_INIT 0 +#define KDF_F_TLS1_PRF_ALG 0 + +/* + * KDF reason codes. + */ +#define KDF_R_INVALID_DIGEST 0 +#define KDF_R_MISSING_ITERATION_COUNT 0 +#define KDF_R_MISSING_KEY 0 +#define KDF_R_MISSING_MESSAGE_DIGEST 0 +#define KDF_R_MISSING_PARAMETER 0 +#define KDF_R_MISSING_PASS 0 +#define KDF_R_MISSING_SALT 0 +#define KDF_R_MISSING_SECRET 0 +#define KDF_R_MISSING_SEED 0 +#define KDF_R_UNKNOWN_PARAMETER_TYPE 0 +#define KDF_R_VALUE_ERROR 0 +#define KDF_R_VALUE_MISSING 0 + +/* + * OBJ function codes. + */ +#define OBJ_F_OBJ_ADD_OBJECT 0 +#define OBJ_F_OBJ_ADD_SIGID 0 +#define OBJ_F_OBJ_CREATE 0 +#define OBJ_F_OBJ_DUP 0 +#define OBJ_F_OBJ_NAME_NEW_INDEX 0 +#define OBJ_F_OBJ_NID2LN 0 +#define OBJ_F_OBJ_NID2OBJ 0 +#define OBJ_F_OBJ_NID2SN 0 +#define OBJ_F_OBJ_TXT2OBJ 0 + +#ifndef OPENSSL_NO_OCSP +/* + * OCSP function codes. + */ +#define OCSP_F_D2I_OCSP_NONCE 0 +#define OCSP_F_OCSP_BASIC_ADD1_STATUS 0 +#define OCSP_F_OCSP_BASIC_SIGN 0 +#define OCSP_F_OCSP_BASIC_SIGN_CTX 0 +#define OCSP_F_OCSP_BASIC_VERIFY 0 +#define OCSP_F_OCSP_CERT_ID_NEW 0 +#define OCSP_F_OCSP_CHECK_DELEGATED 0 +#define OCSP_F_OCSP_CHECK_IDS 0 +#define OCSP_F_OCSP_CHECK_ISSUER 0 +#define OCSP_F_OCSP_CHECK_VALIDITY 0 +#define OCSP_F_OCSP_MATCH_ISSUERID 0 +#define OCSP_F_OCSP_PARSE_URL 0 +#define OCSP_F_OCSP_REQUEST_SIGN 0 +#define OCSP_F_OCSP_REQUEST_VERIFY 0 +#define OCSP_F_OCSP_RESPONSE_GET1_BASIC 0 +#define OCSP_F_PARSE_HTTP_LINE1 0 +#endif + +/* + * PEM function codes. + */ +#define PEM_F_B2I_DSS 0 +#define PEM_F_B2I_PVK_BIO 0 +#define PEM_F_B2I_RSA 0 +#define PEM_F_CHECK_BITLEN_DSA 0 +#define PEM_F_CHECK_BITLEN_RSA 0 +#define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 0 +#define PEM_F_D2I_PKCS8PRIVATEKEY_FP 0 +#define PEM_F_DO_B2I 0 +#define PEM_F_DO_B2I_BIO 0 +#define PEM_F_DO_BLOB_HEADER 0 +#define PEM_F_DO_I2B 0 +#define PEM_F_DO_PK8PKEY 0 +#define PEM_F_DO_PK8PKEY_FP 0 +#define PEM_F_DO_PVK_BODY 0 +#define PEM_F_DO_PVK_HEADER 0 +#define PEM_F_GET_HEADER_AND_DATA 0 +#define PEM_F_GET_NAME 0 +#define PEM_F_I2B_PVK 0 +#define PEM_F_I2B_PVK_BIO 0 +#define PEM_F_LOAD_IV 0 +#define PEM_F_PEM_ASN1_READ 0 +#define PEM_F_PEM_ASN1_READ_BIO 0 +#define PEM_F_PEM_ASN1_WRITE 0 +#define PEM_F_PEM_ASN1_WRITE_BIO 0 +#define PEM_F_PEM_DEF_CALLBACK 0 +#define PEM_F_PEM_DO_HEADER 0 +#define PEM_F_PEM_GET_EVP_CIPHER_INFO 0 +#define PEM_F_PEM_READ 0 +#define PEM_F_PEM_READ_BIO 0 +#define PEM_F_PEM_READ_BIO_DHPARAMS 0 +#define PEM_F_PEM_READ_BIO_EX 0 +#define PEM_F_PEM_READ_BIO_PARAMETERS 0 +#define PEM_F_PEM_READ_BIO_PRIVATEKEY 0 +#define PEM_F_PEM_READ_DHPARAMS 0 +#define PEM_F_PEM_READ_PRIVATEKEY 0 +#define PEM_F_PEM_SIGNFINAL 0 +#define PEM_F_PEM_WRITE 0 +#define PEM_F_PEM_WRITE_BIO 0 +#define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 0 +#define PEM_F_PEM_WRITE_PRIVATEKEY 0 +#define PEM_F_PEM_X509_INFO_READ 0 +#define PEM_F_PEM_X509_INFO_READ_BIO 0 +#define PEM_F_PEM_X509_INFO_WRITE_BIO 0 + +/* + * PKCS12 function codes. + */ +#define PKCS12_F_OPENSSL_ASC2UNI 0 +#define PKCS12_F_OPENSSL_UNI2ASC 0 +#define PKCS12_F_OPENSSL_UNI2UTF8 0 +#define PKCS12_F_OPENSSL_UTF82UNI 0 +#define PKCS12_F_PKCS12_CREATE 0 +#define PKCS12_F_PKCS12_GEN_MAC 0 +#define PKCS12_F_PKCS12_INIT 0 +#define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 0 +#define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 0 +#define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 0 +#define PKCS12_F_PKCS12_KEY_GEN_ASC 0 +#define PKCS12_F_PKCS12_KEY_GEN_UNI 0 +#define PKCS12_F_PKCS12_KEY_GEN_UTF8 0 +#define PKCS12_F_PKCS12_NEWPASS 0 +#define PKCS12_F_PKCS12_PACK_P7DATA 0 +#define PKCS12_F_PKCS12_PACK_P7ENCDATA 0 +#define PKCS12_F_PKCS12_PARSE 0 +#define PKCS12_F_PKCS12_PBE_CRYPT 0 +#define PKCS12_F_PKCS12_PBE_KEYIVGEN 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 0 +#define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 0 +#define PKCS12_F_PKCS12_SETUP_MAC 0 +#define PKCS12_F_PKCS12_SET_MAC 0 +#define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 0 +#define PKCS12_F_PKCS12_UNPACK_P7DATA 0 +#define PKCS12_F_PKCS12_VERIFY_MAC 0 +#define PKCS12_F_PKCS8_ENCRYPT 0 +#define PKCS12_F_PKCS8_SET0_PBE 0 + +/* + * PKCS7 function codes. + */ +#define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 0 +#define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 0 +#define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 0 +#define PKCS7_F_PKCS7_ADD_CERTIFICATE 0 +#define PKCS7_F_PKCS7_ADD_CRL 0 +#define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 0 +#define PKCS7_F_PKCS7_ADD_SIGNATURE 0 +#define PKCS7_F_PKCS7_ADD_SIGNER 0 +#define PKCS7_F_PKCS7_BIO_ADD_DIGEST 0 +#define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 0 +#define PKCS7_F_PKCS7_CTRL 0 +#define PKCS7_F_PKCS7_DATADECODE 0 +#define PKCS7_F_PKCS7_DATAFINAL 0 +#define PKCS7_F_PKCS7_DATAINIT 0 +#define PKCS7_F_PKCS7_DATAVERIFY 0 +#define PKCS7_F_PKCS7_DECRYPT 0 +#define PKCS7_F_PKCS7_DECRYPT_RINFO 0 +#define PKCS7_F_PKCS7_ENCODE_RINFO 0 +#define PKCS7_F_PKCS7_ENCRYPT 0 +#define PKCS7_F_PKCS7_FINAL 0 +#define PKCS7_F_PKCS7_FIND_DIGEST 0 +#define PKCS7_F_PKCS7_GET0_SIGNERS 0 +#define PKCS7_F_PKCS7_RECIP_INFO_SET 0 +#define PKCS7_F_PKCS7_SET_CIPHER 0 +#define PKCS7_F_PKCS7_SET_CONTENT 0 +#define PKCS7_F_PKCS7_SET_DIGEST 0 +#define PKCS7_F_PKCS7_SET_TYPE 0 +#define PKCS7_F_PKCS7_SIGN 0 +#define PKCS7_F_PKCS7_SIGNATUREVERIFY 0 +#define PKCS7_F_PKCS7_SIGNER_INFO_SET 0 +#define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 0 +#define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 0 +#define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 0 +#define PKCS7_F_PKCS7_VERIFY 0 + +/* + * RAND function codes. + */ +#define RAND_F_DATA_COLLECT_METHOD 0 +#define RAND_F_DRBG_BYTES 0 +#define RAND_F_DRBG_GET_ENTROPY 0 +#define RAND_F_DRBG_SETUP 0 +#define RAND_F_GET_ENTROPY 0 +#define RAND_F_RAND_BYTES 0 +#define RAND_F_RAND_DRBG_ENABLE_LOCKING 0 +#define RAND_F_RAND_DRBG_GENERATE 0 +#define RAND_F_RAND_DRBG_GET_ENTROPY 0 +#define RAND_F_RAND_DRBG_GET_NONCE 0 +#define RAND_F_RAND_DRBG_INSTANTIATE 0 +#define RAND_F_RAND_DRBG_NEW 0 +#define RAND_F_RAND_DRBG_RESEED 0 +#define RAND_F_RAND_DRBG_RESTART 0 +#define RAND_F_RAND_DRBG_SET 0 +#define RAND_F_RAND_DRBG_SET_DEFAULTS 0 +#define RAND_F_RAND_DRBG_UNINSTANTIATE 0 +#define RAND_F_RAND_LOAD_FILE 0 +#define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 0 +#define RAND_F_RAND_POOL_ADD 0 +#define RAND_F_RAND_POOL_ADD_BEGIN 0 +#define RAND_F_RAND_POOL_ADD_END 0 +#define RAND_F_RAND_POOL_ATTACH 0 +#define RAND_F_RAND_POOL_BYTES_NEEDED 0 +#define RAND_F_RAND_POOL_GROW 0 +#define RAND_F_RAND_POOL_NEW 0 +#define RAND_F_RAND_PSEUDO_BYTES 0 +#define RAND_F_RAND_WRITE_FILE 0 + +/* + * RSA function codes. + */ +#define RSA_F_CHECK_PADDING_MD 0 +#define RSA_F_ENCODE_PKCS1 0 +#define RSA_F_INT_RSA_VERIFY 0 +#define RSA_F_OLD_RSA_PRIV_DECODE 0 +#define RSA_F_PKEY_PSS_INIT 0 +#define RSA_F_PKEY_RSA_CTRL 0 +#define RSA_F_PKEY_RSA_CTRL_STR 0 +#define RSA_F_PKEY_RSA_SIGN 0 +#define RSA_F_PKEY_RSA_VERIFY 0 +#define RSA_F_PKEY_RSA_VERIFYRECOVER 0 +#define RSA_F_RSA_ALGOR_TO_MD 0 +#define RSA_F_RSA_BUILTIN_KEYGEN 0 +#define RSA_F_RSA_CHECK_KEY 0 +#define RSA_F_RSA_CHECK_KEY_EX 0 +#define RSA_F_RSA_CMS_DECRYPT 0 +#define RSA_F_RSA_CMS_VERIFY 0 +#define RSA_F_RSA_ITEM_VERIFY 0 +#define RSA_F_RSA_METH_DUP 0 +#define RSA_F_RSA_METH_NEW 0 +#define RSA_F_RSA_METH_SET1_NAME 0 +#define RSA_F_RSA_MGF1_TO_MD 0 +#define RSA_F_RSA_MULTIP_INFO_NEW 0 +#define RSA_F_RSA_NEW_METHOD 0 +#define RSA_F_RSA_NULL 0 +#define RSA_F_RSA_NULL_PRIVATE_DECRYPT 0 +#define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 0 +#define RSA_F_RSA_NULL_PUBLIC_DECRYPT 0 +#define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 0 +#define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 0 +#define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 0 +#define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 0 +#define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 0 +#define RSA_F_RSA_PADDING_ADD_NONE 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 0 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 0 +#define RSA_F_RSA_PADDING_ADD_SSLV23 0 +#define RSA_F_RSA_PADDING_ADD_X931 0 +#define RSA_F_RSA_PADDING_CHECK_NONE 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 0 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 0 +#define RSA_F_RSA_PADDING_CHECK_SSLV23 0 +#define RSA_F_RSA_PADDING_CHECK_X931 0 +#define RSA_F_RSA_PARAM_DECODE 0 +#define RSA_F_RSA_PRINT 0 +#define RSA_F_RSA_PRINT_FP 0 +#define RSA_F_RSA_PRIV_DECODE 0 +#define RSA_F_RSA_PRIV_ENCODE 0 +#define RSA_F_RSA_PSS_GET_PARAM 0 +#define RSA_F_RSA_PSS_TO_CTX 0 +#define RSA_F_RSA_PUB_DECODE 0 +#define RSA_F_RSA_SETUP_BLINDING 0 +#define RSA_F_RSA_SIGN 0 +#define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 0 +#define RSA_F_RSA_VERIFY 0 +#define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 0 +#define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 0 +#define RSA_F_SETUP_TBUF 0 + +/* + * OSSL_STORE function codes. + */ +#define OSSL_STORE_F_FILE_CTRL 0 +#define OSSL_STORE_F_FILE_FIND 0 +#define OSSL_STORE_F_FILE_GET_PASS 0 +#define OSSL_STORE_F_FILE_LOAD 0 +#define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 0 +#define OSSL_STORE_F_FILE_NAME_TO_URI 0 +#define OSSL_STORE_F_FILE_OPEN 0 +#define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 0 +#define OSSL_STORE_F_OSSL_STORE_EXPECT 0 +#define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 0 +#define OSSL_STORE_F_OSSL_STORE_FIND 0 +#define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 0 +#define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 0 +#define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 0 +#define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 0 +#define OSSL_STORE_F_OSSL_STORE_OPEN 0 +#define OSSL_STORE_F_OSSL_STORE_OPEN_INT 0 +#define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 0 +#define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 0 +#define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 0 +#define OSSL_STORE_F_TRY_DECODE_PARAMS 0 +#define OSSL_STORE_F_TRY_DECODE_PKCS12 0 +#define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 0 + +#ifndef OPENSSL_NO_TS +/* + * TS function codes. + */ +#define TS_F_DEF_SERIAL_CB 0 +#define TS_F_DEF_TIME_CB 0 +#define TS_F_ESS_ADD_SIGNING_CERT 0 +#define TS_F_ESS_ADD_SIGNING_CERT_V2 0 +#define TS_F_ESS_CERT_ID_NEW_INIT 0 +#define TS_F_ESS_CERT_ID_V2_NEW_INIT 0 +#define TS_F_ESS_SIGNING_CERT_NEW_INIT 0 +#define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 0 +#define TS_F_INT_TS_RESP_VERIFY_TOKEN 0 +#define TS_F_PKCS7_TO_TS_TST_INFO 0 +#define TS_F_TS_ACCURACY_SET_MICROS 0 +#define TS_F_TS_ACCURACY_SET_MILLIS 0 +#define TS_F_TS_ACCURACY_SET_SECONDS 0 +#define TS_F_TS_CHECK_IMPRINTS 0 +#define TS_F_TS_CHECK_NONCES 0 +#define TS_F_TS_CHECK_POLICY 0 +#define TS_F_TS_CHECK_SIGNING_CERTS 0 +#define TS_F_TS_CHECK_STATUS_INFO 0 +#define TS_F_TS_COMPUTE_IMPRINT 0 +#define TS_F_TS_CONF_INVALID 0 +#define TS_F_TS_CONF_LOAD_CERT 0 +#define TS_F_TS_CONF_LOAD_CERTS 0 +#define TS_F_TS_CONF_LOAD_KEY 0 +#define TS_F_TS_CONF_LOOKUP_FAIL 0 +#define TS_F_TS_CONF_SET_DEFAULT_ENGINE 0 +#define TS_F_TS_GET_STATUS_TEXT 0 +#define TS_F_TS_MSG_IMPRINT_SET_ALGO 0 +#define TS_F_TS_REQ_SET_MSG_IMPRINT 0 +#define TS_F_TS_REQ_SET_NONCE 0 +#define TS_F_TS_REQ_SET_POLICY_ID 0 +#define TS_F_TS_RESP_CREATE_RESPONSE 0 +#define TS_F_TS_RESP_CREATE_TST_INFO 0 +#define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 0 +#define TS_F_TS_RESP_CTX_ADD_MD 0 +#define TS_F_TS_RESP_CTX_ADD_POLICY 0 +#define TS_F_TS_RESP_CTX_NEW 0 +#define TS_F_TS_RESP_CTX_SET_ACCURACY 0 +#define TS_F_TS_RESP_CTX_SET_CERTS 0 +#define TS_F_TS_RESP_CTX_SET_DEF_POLICY 0 +#define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 0 +#define TS_F_TS_RESP_CTX_SET_STATUS_INFO 0 +#define TS_F_TS_RESP_GET_POLICY 0 +#define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 0 +#define TS_F_TS_RESP_SET_STATUS_INFO 0 +#define TS_F_TS_RESP_SET_TST_INFO 0 +#define TS_F_TS_RESP_SIGN 0 +#define TS_F_TS_RESP_VERIFY_SIGNATURE 0 +#define TS_F_TS_TST_INFO_SET_ACCURACY 0 +#define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 0 +#define TS_F_TS_TST_INFO_SET_NONCE 0 +#define TS_F_TS_TST_INFO_SET_POLICY_ID 0 +#define TS_F_TS_TST_INFO_SET_SERIAL 0 +#define TS_F_TS_TST_INFO_SET_TIME 0 +#define TS_F_TS_TST_INFO_SET_TSA 0 +#define TS_F_TS_VERIFY 0 +#define TS_F_TS_VERIFY_CERT 0 +#define TS_F_TS_VERIFY_CTX_NEW 0 +#endif + +/* + * UI function codes. + */ +#define UI_F_CLOSE_CONSOLE 0 +#define UI_F_ECHO_CONSOLE 0 +#define UI_F_GENERAL_ALLOCATE_BOOLEAN 0 +#define UI_F_GENERAL_ALLOCATE_PROMPT 0 +#define UI_F_NOECHO_CONSOLE 0 +#define UI_F_OPEN_CONSOLE 0 +#define UI_F_UI_CONSTRUCT_PROMPT 0 +#define UI_F_UI_CREATE_METHOD 0 +#define UI_F_UI_CTRL 0 +#define UI_F_UI_DUP_ERROR_STRING 0 +#define UI_F_UI_DUP_INFO_STRING 0 +#define UI_F_UI_DUP_INPUT_BOOLEAN 0 +#define UI_F_UI_DUP_INPUT_STRING 0 +#define UI_F_UI_DUP_USER_DATA 0 +#define UI_F_UI_DUP_VERIFY_STRING 0 +#define UI_F_UI_GET0_RESULT 0 +#define UI_F_UI_GET_RESULT_LENGTH 0 +#define UI_F_UI_NEW_METHOD 0 +#define UI_F_UI_PROCESS 0 +#define UI_F_UI_SET_RESULT 0 +#define UI_F_UI_SET_RESULT_EX 0 + +/* + * X509 function codes. + */ +#define X509_F_ADD_CERT_DIR 0 +#define X509_F_BUILD_CHAIN 0 +#define X509_F_BY_FILE_CTRL 0 +#define X509_F_CHECK_NAME_CONSTRAINTS 0 +#define X509_F_CHECK_POLICY 0 +#define X509_F_DANE_I2D 0 +#define X509_F_DIR_CTRL 0 +#define X509_F_GET_CERT_BY_SUBJECT 0 +#define X509_F_I2D_X509_AUX 0 +#define X509_F_LOOKUP_CERTS_SK 0 +#define X509_F_NETSCAPE_SPKI_B64_DECODE 0 +#define X509_F_NETSCAPE_SPKI_B64_ENCODE 0 +#define X509_F_NEW_DIR 0 +#define X509_F_X509AT_ADD1_ATTR 0 +#define X509_F_X509V3_ADD_EXT 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 0 +#define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 0 +#define X509_F_X509_ATTRIBUTE_GET0_DATA 0 +#define X509_F_X509_ATTRIBUTE_SET1_DATA 0 +#define X509_F_X509_CHECK_PRIVATE_KEY 0 +#define X509_F_X509_CRL_DIFF 0 +#define X509_F_X509_CRL_METHOD_NEW 0 +#define X509_F_X509_CRL_PRINT_FP 0 +#define X509_F_X509_EXTENSION_CREATE_BY_NID 0 +#define X509_F_X509_EXTENSION_CREATE_BY_OBJ 0 +#define X509_F_X509_GET_PUBKEY_PARAMETERS 0 +#define X509_F_X509_LOAD_CERT_CRL_FILE 0 +#define X509_F_X509_LOAD_CERT_FILE 0 +#define X509_F_X509_LOAD_CRL_FILE 0 +#define X509_F_X509_LOOKUP_METH_NEW 0 +#define X509_F_X509_LOOKUP_NEW 0 +#define X509_F_X509_NAME_ADD_ENTRY 0 +#define X509_F_X509_NAME_CANON 0 +#define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 0 +#define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 0 +#define X509_F_X509_NAME_ENTRY_SET_OBJECT 0 +#define X509_F_X509_NAME_ONELINE 0 +#define X509_F_X509_NAME_PRINT 0 +#define X509_F_X509_OBJECT_NEW 0 +#define X509_F_X509_PRINT_EX_FP 0 +#define X509_F_X509_PUBKEY_DECODE 0 +#define X509_F_X509_PUBKEY_GET 0 +#define X509_F_X509_PUBKEY_GET0 0 +#define X509_F_X509_PUBKEY_SET 0 +#define X509_F_X509_REQ_CHECK_PRIVATE_KEY 0 +#define X509_F_X509_REQ_PRINT_EX 0 +#define X509_F_X509_REQ_PRINT_FP 0 +#define X509_F_X509_REQ_TO_X509 0 +#define X509_F_X509_STORE_ADD_CERT 0 +#define X509_F_X509_STORE_ADD_CRL 0 +#define X509_F_X509_STORE_ADD_LOOKUP 0 +#define X509_F_X509_STORE_CTX_GET1_ISSUER 0 +#define X509_F_X509_STORE_CTX_INIT 0 +#define X509_F_X509_STORE_CTX_NEW 0 +#define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 0 +#define X509_F_X509_STORE_NEW 0 +#define X509_F_X509_TO_X509_REQ 0 +#define X509_F_X509_TRUST_ADD 0 +#define X509_F_X509_TRUST_SET 0 +#define X509_F_X509_VERIFY_CERT 0 +#define X509_F_X509_VERIFY_PARAM_NEW 0 + +/* + * X509V3 function codes. + */ +#define X509V3_F_A2I_GENERAL_NAME 0 +#define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 0 +#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 0 +#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 0 +#define X509V3_F_BIGNUM_TO_STRING 0 +#define X509V3_F_COPY_EMAIL 0 +#define X509V3_F_COPY_ISSUER 0 +#define X509V3_F_DO_DIRNAME 0 +#define X509V3_F_DO_EXT_I2D 0 +#define X509V3_F_DO_EXT_NCONF 0 +#define X509V3_F_GNAMES_FROM_SECTNAME 0 +#define X509V3_F_I2S_ASN1_ENUMERATED 0 +#define X509V3_F_I2S_ASN1_IA5STRING 0 +#define X509V3_F_I2S_ASN1_INTEGER 0 +#define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 0 +#define X509V3_F_LEVEL_ADD_NODE 0 +#define X509V3_F_NOTICE_SECTION 0 +#define X509V3_F_NREF_NOS 0 +#define X509V3_F_POLICY_CACHE_CREATE 0 +#define X509V3_F_POLICY_CACHE_NEW 0 +#define X509V3_F_POLICY_DATA_NEW 0 +#define X509V3_F_POLICY_SECTION 0 +#define X509V3_F_PROCESS_PCI_VALUE 0 +#define X509V3_F_R2I_CERTPOL 0 +#define X509V3_F_R2I_PCI 0 +#define X509V3_F_S2I_ASN1_IA5STRING 0 +#define X509V3_F_S2I_ASN1_INTEGER 0 +#define X509V3_F_S2I_ASN1_OCTET_STRING 0 +#define X509V3_F_S2I_SKEY_ID 0 +#define X509V3_F_SET_DIST_POINT_NAME 0 +#define X509V3_F_SXNET_ADD_ID_ASC 0 +#define X509V3_F_SXNET_ADD_ID_INTEGER 0 +#define X509V3_F_SXNET_ADD_ID_ULONG 0 +#define X509V3_F_SXNET_GET_ID_ASC 0 +#define X509V3_F_SXNET_GET_ID_ULONG 0 +#define X509V3_F_TREE_INIT 0 +#define X509V3_F_V2I_ASIDENTIFIERS 0 +#define X509V3_F_V2I_ASN1_BIT_STRING 0 +#define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 0 +#define X509V3_F_V2I_AUTHORITY_KEYID 0 +#define X509V3_F_V2I_BASIC_CONSTRAINTS 0 +#define X509V3_F_V2I_CRLD 0 +#define X509V3_F_V2I_EXTENDED_KEY_USAGE 0 +#define X509V3_F_V2I_GENERAL_NAMES 0 +#define X509V3_F_V2I_GENERAL_NAME_EX 0 +#define X509V3_F_V2I_IDP 0 +#define X509V3_F_V2I_IPADDRBLOCKS 0 +#define X509V3_F_V2I_ISSUER_ALT 0 +#define X509V3_F_V2I_NAME_CONSTRAINTS 0 +#define X509V3_F_V2I_POLICY_CONSTRAINTS 0 +#define X509V3_F_V2I_POLICY_MAPPINGS 0 +#define X509V3_F_V2I_SUBJECT_ALT 0 +#define X509V3_F_V2I_TLS_FEATURE 0 +#define X509V3_F_V3_GENERIC_EXTENSION 0 +#define X509V3_F_X509V3_ADD1_I2D 0 +#define X509V3_F_X509V3_ADD_VALUE 0 +#define X509V3_F_X509V3_EXT_ADD 0 +#define X509V3_F_X509V3_EXT_ADD_ALIAS 0 +#define X509V3_F_X509V3_EXT_I2D 0 +#define X509V3_F_X509V3_EXT_NCONF 0 +#define X509V3_F_X509V3_GET_SECTION 0 +#define X509V3_F_X509V3_GET_STRING 0 +#define X509V3_F_X509V3_GET_VALUE_BOOL 0 +#define X509V3_F_X509V3_PARSE_LIST 0 +#define X509V3_F_X509_PURPOSE_ADD 0 +#define X509V3_F_X509_PURPOSE_SET 0 + +/* + * Compatibility defines. + */ +#define EVP_R_OPERATON_NOT_INITIALIZED EVP_R_OPERATION_NOT_INITIALIZED + +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ct.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ct.h new file mode 100644 index 0000000..56f1983 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ct.h @@ -0,0 +1,574 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ct.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CT_H +#define OPENSSL_CT_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CT_H +#endif + +#include + +#ifndef OPENSSL_NO_CT +#include +#include +#include +#include +#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 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) +#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) +#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) +#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) +#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) +#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) +#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) +#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) +#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk), ossl_check_SCT_freefunc_type(freefunc)) +#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) +#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) +#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) +#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) +#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) +#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) +#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) +#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) +#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) +#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) +#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) +#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) +#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_freefunc_type(freefunc)) +#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) +#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) +#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) +#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) +#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) + +/* clang-format on */ + +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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cterr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cterr.h new file mode 100644 index 0000000..950b7b3 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/cterr.h @@ -0,0 +1,43 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/decoder.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/decoder.h new file mode 100644 index 0000000..8194c24 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/decoder.h @@ -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 + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/decodererr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/decodererr.h new file mode 100644 index 0000000..5fdeace --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/decodererr.h @@ -0,0 +1,26 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/des.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/des.h new file mode 100644 index 0000000..daaef4e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/des.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DES_H +#endif + +#include + +#ifndef OPENSSL_NO_DES +#ifdef __cplusplus +extern "C" { +#endif +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dh.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dh.h new file mode 100644 index 0000000..6d0abe2 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dh.h @@ -0,0 +1,333 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DH_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * DH parameter generation types used by EVP_PKEY_CTX_set_dh_paramgen_type() + * Note that additions/changes to this set of values requires corresponding + * adjustments to range checks in dh_gen() + */ +#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 +#endif +#ifndef OPENSSL_NO_DH +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include + +#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, some of them shared with DH_check_pub_key */ +/* + * 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 /* +DH_check_pub_key */ +#define DH_CHECK_INVALID_J_VALUE 0x40 +#define DH_MODULUS_TOO_SMALL 0x80 +#define DH_MODULUS_TOO_LARGE 0x100 /* +DH_check_pub_key */ + +/* 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((void *(*)(void))DH_new, \ + (d2i_of_void *)d2i_DHparams, \ + (fp), \ + (void **)(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((void *(*)(void))DH_new, \ + (d2i_of_void *)d2i_DHxparams, \ + (fp), \ + (void **)(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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dherr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dherr.h new file mode 100644 index 0000000..753659b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dherr.h @@ -0,0 +1,57 @@ +/* + * 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_DHERR_H +#define OPENSSL_DHERR_H +#pragma once + +#include +#include +#include + +#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_INVALID_SIZE 129 +#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_Q_TOO_LARGE 130 +#define DH_R_SHARED_INFO_ERROR 113 +#define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dsa.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dsa.h new file mode 100644 index 0000000..61baa64 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dsa.h @@ -0,0 +1,273 @@ +/* + * 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_DSA_H +#define OPENSSL_DSA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DSA_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_DSA +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#ifndef OPENSSL_NO_STDIO +#include +#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((void *(*)(void))DSA_new, \ + (d2i_of_void *)d2i_DSAparams, (fp), \ + (void **)(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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dsaerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dsaerr.h new file mode 100644 index 0000000..cc5f4bf --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dsaerr.h @@ -0,0 +1,42 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dtls1.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dtls1.h new file mode 100644 index 0000000..0b42948 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/dtls1.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_DTLS1_H +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/e_os2.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/e_os2.h new file mode 100644 index 0000000..86a572b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/e_os2.h @@ -0,0 +1,306 @@ +/* + * Copyright 1995-2024 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_E_OS2_H +#endif + +#include + +#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 implementer 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 +#endif +#define OPENSSL_USE_BUILD_DATE +#if defined(OPENSSL_THREADS) && defined(_SPT_MODEL_) +#define SPT_THREAD_SIGNAL 1 +#define SPT_THREAD_AWARE 1 +#include +#elif defined(OPENSSL_THREADS) && defined(_PUT_MODEL_) +#include +#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 +#include +#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; +typedef UINTN uintptr_t; +#elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__osf__) || defined(__sgi) || defined(__hpux) || defined(OPENSSL_SYS_VMS) || defined(__OpenBSD__) +#include +#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 +#include +#else +#include +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/e_ostime.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/e_ostime.h new file mode 100644 index 0000000..c0f1c54 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/e_ostime.h @@ -0,0 +1,38 @@ +/* + * Copyright 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_E_OSTIME_H +#define OPENSSL_E_OSTIME_H +#pragma once + +#include +#include +#include + +/* + * This header guarantees that 'struct timeval' will be available. It includes + * the minimum headers needed to facilitate this. This may still be a + * substantial set of headers on some platforms (e.g. on Win32). + */ + +#if defined(OPENSSL_SYS_WINDOWS) +#if !defined(_WINSOCKAPI_) +/* + * winsock2.h defines _WINSOCK2API_ and both winsock2.h and winsock.h define + * _WINSOCKAPI_. Both of these provide struct timeval. Don't include + * winsock2.h if either header has been included to avoid breakage with + * applications that prefer to use over . + */ +#include +#endif +#else +#include +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ebcdic.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ebcdic.h new file mode 100644 index 0000000..f2171bb --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ebcdic.h @@ -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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_EBCDIC_H +#endif + +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ec.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ec.h new file mode 100644 index 0000000..cdde09c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ec.h @@ -0,0 +1,1569 @@ +/* + * Copyright 2002-2023 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_EC_H +#define OPENSSL_EC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_EC_H +#endif + +#include +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Values for EVP_PKEY_CTX_set_ec_param_enc() */ +#define OPENSSL_EC_EXPLICIT_CURVE 0x000 +#define OPENSSL_EC_NAMED_CURVE 0x001 + +int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid); +int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx, int param_enc); +int EVP_PKEY_CTX_set_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx, int cofactor_mode); +int EVP_PKEY_CTX_get_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_type(EVP_PKEY_CTX *ctx, int kdf); +int EVP_PKEY_CTX_get_ecdh_kdf_type(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_get_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); + +int EVP_PKEY_CTX_set_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int len); +int EVP_PKEY_CTX_get_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len); + +int EVP_PKEY_CTX_set0_ecdh_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_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm); +#endif + +#define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +#define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +#define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +#define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) + +/* KDF types */ +#define EVP_PKEY_ECDH_KDF_NONE 1 +#define EVP_PKEY_ECDH_KDF_X9_63 2 +/* + * The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +#define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x04 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +const char *OSSL_EC_curve_nid2name(int nid); + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#ifndef OPENSSL_NO_EC +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include + +#ifndef OPENSSL_ECC_MAX_FIELD_BITS +#define OPENSSL_ECC_MAX_FIELD_BITS 661 +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_method_st EC_METHOD; +#endif +typedef struct ec_group_st EC_GROUP; +typedef struct ec_point_st EC_POINT; +typedef struct ecpk_parameters_st ECPKPARAMETERS; +typedef struct ec_parameters_st ECPARAMETERS; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nist_method(void); + +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp521_method(void); +#endif /* OPENSSL_NO_EC_NISTP_64_GCC_128 */ + +#ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GF2m_simple_method(void); + +#endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** + * Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +OSSL_DEPRECATEDIN_3_0 EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +OSSL_DEPRECATEDIN_3_0 void EC_GROUP_clear_free(EC_GROUP *group); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +OSSL_DEPRECATEDIN_3_0 int EC_METHOD_get_field_type(const EC_METHOD *meth); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Sets the generator and its order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used montgomery data (possibly NULL). + */ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +/** Gets the field of an EC_GROUP + * \param group EC_GROUP object + * \return the group field + */ +const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group); + +/** Returns the field type of the EC_GROUP. + * \param group EC_GROUP object + * \return NID of the underlying field type OID. + */ +int EC_GROUP_get_field_type(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameters of an ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GFp(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GFp(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_EC2M +/** Sets the parameter of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GF2m(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); +#endif /* OPENSSL_NO_EC2M */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if the groups are equal, 1 if not, or -1 on error + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +#ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +#endif + +/** + * Creates a EC_GROUP object with a curve specified by parameters. + * The parameters may be explicit or a named curve, + * \param params A list of parameters describing the group. + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \return newly created EC_GROUP object with specified parameters or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[], + OSSL_LIB_CTX *libctx, const char *propq); + +/** + * Creates an OSSL_PARAM array with the parameters describing the given + * EC_GROUP. + * The resulting parameters may contain an explicit or a named curve depending + * on the EC_GROUP. + * \param group pointer to the EC_GROUP object + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param bnctx BN_CTX object (optional) + * \return newly created OSSL_PARAM array with the parameters + * describing the given EC_GROUP or NULL if an error occurred + */ +OSSL_PARAM *EC_GROUP_to_params(const EC_GROUP *group, OSSL_LIB_CTX *libctx, + const char *propq, BN_CTX *bnctx); + +/** + * Creates a EC_GROUP object with a curve specified by a NID + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name_ex(OSSL_LIB_CTX *libctx, const char *propq, + int nid); + +/** + * Creates a EC_GROUP object with a curve specified by a NID. Same as + * EC_GROUP_new_by_curve_name_ex but the libctx and propq are always + * NULL. + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r is not zero, + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); +int EC_GROUP_check_named_curve(const EC_GROUP *group, int nist_only, + BN_CTX *ctx); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the affine coordinates of an EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the x9.62 compressed coordinates of a EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +#ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Encodes an EC_POINT object to an allocated octet string + * \param group underlying EC_GROUP object + * \param point EC_POINT object + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 BIGNUM *EC_POINT_point2bn(const EC_GROUP *, + const EC_POINT *, + point_conversion_form_t form, + BIGNUM *, BN_CTX *); +OSSL_DEPRECATEDIN_3_0 EC_POINT *EC_POINT_bn2point(const EC_GROUP *, + const BIGNUM *, + EC_POINT *, BN_CTX *); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if the point is on the curve, 0 if not, or -1 on error + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 if the points are not equal, 0 if they are, or -1 on error + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_POINT_make_affine(const EC_GROUP *group, + EC_POINT *point, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n + sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number further summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, + const BIGNUM *n, size_t num, + const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_have_precompute_mult(const EC_GROUP *group); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +DECLARE_ASN1_ITEM(ECPKPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPKPARAMETERS) +DECLARE_ASN1_ITEM(ECPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +#ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +#endif + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +#define d2i_ECPKParameters_bio(bp, x) \ + ASN1_d2i_bio_of(EC_GROUP, NULL, d2i_ECPKParameters, bp, x) +#define i2d_ECPKParameters_bio(bp, x) \ + ASN1_i2d_bio_of(EC_GROUP, i2d_ECPKParameters, bp, x) +#define d2i_ECPKParameters_fp(fp, x) \ + (EC_GROUP *)ASN1_d2i_fp(NULL, (d2i_of_void *)d2i_ECPKParameters, (fp), \ + (void **)(x)) +#define i2d_ECPKParameters_fp(fp, x) \ + ASN1_i2d_fp((i2d_of_void *)i2d_ECPKParameters, (fp), (void *)(x)) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print(BIO *bp, const EC_GROUP *x, + int off); +#ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, + int off); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +/* some values for the encoding_flag */ +#define EC_PKEY_NO_PARAMETERS 0x001 +#define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +#define EC_FLAG_SM2_RANGE 0x0004 +#define EC_FLAG_COFACTOR_ECDH 0x1000 +#define EC_FLAG_CHECK_NAMED_GROUP 0x2000 +#define EC_FLAG_CHECK_NAMED_GROUP_NIST 0x4000 +#define EC_FLAG_CHECK_NAMED_GROUP_MASK \ + (EC_FLAG_CHECK_NAMED_GROUP | EC_FLAG_CHECK_NAMED_GROUP_NIST) + +/* Deprecated flags - it was using 0x01..0x02 */ +#define EC_FLAG_NON_FIPS_ALLOW 0x0000 +#define EC_FLAG_FIPS_CHECKED 0x0000 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** + * Creates a new EC_KEY object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_ex(OSSL_LIB_CTX *ctx, const char *propq); + +/** + * Creates a new EC_KEY object. Same as calling EC_KEY_new_ex with a + * NULL library context + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new(void); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_get_flags(const EC_KEY *key); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_clear_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \param propq Any property query string + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name_ex(OSSL_LIB_CTX *ctx, + const char *propq, + int nid); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. Same as calling EC_KEY_new_by_curve_name_ex with a NULL + * library context and property query string. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +OSSL_DEPRECATEDIN_3_0 void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +OSSL_DEPRECATEDIN_3_0 const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +OSSL_DEPRECATEDIN_3_0 unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +OSSL_DEPRECATEDIN_3_0 point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_conv_form(EC_KEY *eckey, + point_conversion_form_t cform); +#endif /*OPENSSL_NO_DEPRECATED_3_0 */ + +#define EC_KEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EC_KEY, l, p, newf, dupf, freef) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_check_key(const EC_KEY *key); + +/** Indicates if an EC_KEY can be used for signing. + * \param eckey the EC_KEY object + * \return 1 if can sign and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_can_sign(const EC_KEY *eckey); + +/** Sets a public key from affine coordinates performing + * necessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, + BIGNUM *x, + BIGNUM *y); + +/** Encodes an EC_KEY public key to an allocated octet string + * \param key key to encode + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_key2buf(const EC_KEY *key, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/** Decodes a EC_KEY public key from a octet string + * \param key key to decode + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, + size_t len, BN_CTX *ctx); + +/** Decodes an EC_KEY private key from an octet string + * \param key key to decode + * \param buf memory buffer with the encoded private key + * \param len length of the encoded key + * \return 1 on success and 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, + size_t len); + +/** Encodes a EC_KEY private key to an octet string + * \param key key to encode + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ + +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_priv2oct(const EC_KEY *key, + unsigned char *buf, size_t len); + +/** Encodes an EC_KEY private key to an allocated octet string + * \param eckey key to encode + * \param pbuf returns pointer to allocated buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 size_t EC_KEY_priv2buf(const EC_KEY *eckey, + unsigned char **pbuf); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey(EC_KEY **key, + const unsigned char **in, + long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey(const EC_KEY *key, + unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECParameters(EC_KEY **key, + const unsigned char **in, + long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec parameters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECParameters(const EC_KEY *key, + unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes an ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *o2i_ECPublicKey(EC_KEY **key, + const unsigned char **in, long len); + +/** Encodes an ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out); + +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +#ifndef OPENSSL_NO_STDIO +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); +#endif /* OPENSSL_NO_STDIO */ + +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +OSSL_DEPRECATEDIN_3_0 int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + const unsigned char *sinfo, + size_t sinfolen, const EVP_MD *md); + +OSSL_DEPRECATEDIN_3_0 int ECDH_compute_key(void *out, size_t outlen, + const EC_POINT *pub_key, + const EC_KEY *ecdh, + void *(*KDF)(const void *in, + size_t inlen, void *out, + size_t *outlen)); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +typedef struct ECDSA_SIG_st ECDSA_SIG; + +/** Allocates and initialize a ECDSA_SIG structure + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_SIG_new(void); + +/** frees a ECDSA_SIG structure + * \param sig pointer to the ECDSA_SIG structure + */ +void ECDSA_SIG_free(ECDSA_SIG *sig); + +/** i2d_ECDSA_SIG encodes content of ECDSA_SIG (note: this function modifies *pp + * (*pp += length of the DER encoded signature)). + * \param sig pointer to the ECDSA_SIG object + * \param pp pointer to a unsigned char pointer for the output or NULL + * \return the length of the DER encoded ECDSA_SIG object or a negative value + * on error + */ +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ECDSA_SIG, ECDSA_SIG) + +/** d2i_ECDSA_SIG decodes an ECDSA signature (note: this function modifies *pp + * (*pp += len)). + * \param sig pointer to ECDSA_SIG pointer (may be NULL) + * \param pp memory buffer with the DER encoded signature + * \param len length of the buffer + * \return pointer to the decoded ECDSA_SIG structure (or NULL) + */ + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r + * \param s pointer to BIGNUM for s + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Computes the ECDSA signature of the given hash value using + * the supplied private key and returns the created signature. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, + int dgst_len, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, + int dgstlen, const BIGNUM *kinv, + const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the supplied signature is a valid ECDSA + * signature of the supplied hash value using the supplied public key. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param sig ECDSA_SIG structure + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, + const ECDSA_SIG *sig, EC_KEY *eckey); + +/** Precompute parts of the signing operation + * \param eckey EC_KEY object containing a private EC key + * \param ctx BN_CTX object (optional) + * \param kinv BIGNUM pointer for the inverse of k + * \param rp BIGNUM pointer for x coordinate of k * generator + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, + BIGNUM **kinv, BIGNUM **rp); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig memory for the DER encoded created signature + * \param siglen pointer to the length of the returned signature + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign(int type, const unsigned char *dgst, + int dgstlen, unsigned char *sig, + unsigned int *siglen, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig buffer to hold the DER encoded signature + * \param siglen pointer to the length of the returned signature + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_sign_ex(int type, const unsigned char *dgst, + int dgstlen, unsigned char *sig, + unsigned int *siglen, const BIGNUM *kinv, + const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the given signature is valid ECDSA signature + * of the supplied hash value using the specified public key. + * \param type this parameter is ignored + * \param dgst pointer to the hash value + * \param dgstlen length of the hash value + * \param sig pointer to the DER encoded signature + * \param siglen length of the DER encoded signature + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_verify(int type, const unsigned char *dgst, + int dgstlen, const unsigned char *sig, + int siglen, EC_KEY *eckey); + +/** Returns the maximum length of the DER encoded signature + * \param eckey EC_KEY object + * \return numbers of bytes required for the DER encoded signature + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +OSSL_DEPRECATEDIN_3_0 EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, + int (*init)(EC_KEY *key), + void (*finish)(EC_KEY *key), + int (*copy)(EC_KEY *dest, const EC_KEY *src), + int (*set_group)(EC_KEY *key, const EC_GROUP *grp), + int (*set_private)(EC_KEY *key, const BIGNUM *priv_key), + int (*set_public)(EC_KEY *key, const EC_POINT *pub_key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, + int (*ckey)(unsigned char **psec, size_t *pseclen, + const EC_POINT *pub_key, const EC_KEY *ecdh)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, + int (*sign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, + int (*verify)(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (*verify_sig)(const unsigned char *dgst, + int dgst_len, const ECDSA_SIG *sig, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, const EC_POINT *pub_key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, int (**pkeygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +#define EVP_EC_gen(curve) \ + EVP_PKEY_Q_keygen(NULL, NULL, "EC", (char *)(strstr(curve, ""))) +/* strstr is used to enable type checking for the variadic string arg */ +#define ECParameters_dup(x) ASN1_dup_of(EC_KEY, i2d_ECParameters, \ + d2i_ECParameters, x) + +#ifndef __cplusplus +#if defined(__SUNPRO_C) +#if __SUNPRO_C >= 0x520 +#pragma error_messages(default, E_ARRAY_OF_INCOMPLETE_NONAME, E_ARRAY_OF_INCOMPLETE) +#endif +#endif +#endif + +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecdh.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecdh.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecdh.h @@ -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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecdsa.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecdsa.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecdsa.h @@ -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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecerr.h new file mode 100644 index 0000000..e4d26aa --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ecerr.h @@ -0,0 +1,102 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/encoder.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/encoder.h new file mode 100644 index 0000000..9138c07 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/encoder.h @@ -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 + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/encodererr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/encodererr.h new file mode 100644 index 0000000..e07174c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/encodererr.h @@ -0,0 +1,26 @@ +/* + * 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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/engine.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/engine.h new file mode 100644 index 0000000..73f6d86 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/engine.h @@ -0,0 +1,841 @@ +/* + * 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 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ENGINE_H +#endif + +#include + +#ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include +#include +#include +#include +#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 is 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 */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/engineerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/engineerr.h new file mode 100644 index 0000000..7cdfb8a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/engineerr.h @@ -0,0 +1,61 @@ +/* + * 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 +#include +#include + +#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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/err.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/err.h new file mode 100644 index 0000000..a15ac6a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/err.h @@ -0,0 +1,517 @@ +/* + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ERR_H +#define OPENSSL_ERR_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ERR_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#include +#endif + +#include +#include +#include +#include + +#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 +#include + +#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; + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) +#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) +#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +/* 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); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ess.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ess.h new file mode 100644 index 0000000..6afc5f5 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ess.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ess.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ESS_H +#define OPENSSL_ESS_H +#pragma once + +#include + +#include +#include +#include + +#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; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) +#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) +#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) +#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) +#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) +#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) +#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) + +/* clang-format on */ + +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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/esserr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/esserr.h new file mode 100644 index 0000000..4688129 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/esserr.h @@ -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 +#include +#include + +/* + * 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 diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/evp.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/evp.h new file mode 100644 index 0000000..de6f503 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/evp.h @@ -0,0 +1,2290 @@ +/* + * Copyright 1995-2025 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_EVP_H +#define OPENSSL_EVP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ENVELOPE_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#define EVP_MAX_MD_SIZE 64 /* longest known is SHA512 */ +#define EVP_MAX_KEY_LENGTH 64 +#define EVP_MAX_IV_LENGTH 16 +#define EVP_MAX_BLOCK_LENGTH 32 +#define EVP_MAX_AEAD_TAG_LENGTH 16 + +/* Maximum pipes in cipher pipelining */ +#define EVP_MAX_PIPES 32 + +#define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +#define PKCS5_DEFAULT_ITER 2048 + +#include + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PK_RSA 0x0001 +#define EVP_PK_DSA 0x0002 +#define EVP_PK_DH 0x0004 +#define EVP_PK_EC 0x0008 +#define EVP_PKT_SIGN 0x0010 +#define EVP_PKT_ENC 0x0020 +#define EVP_PKT_EXCH 0x0040 +#define EVP_PKS_RSA 0x0100 +#define EVP_PKS_DSA 0x0200 +#define EVP_PKS_EC 0x0400 +#endif + +#define EVP_PKEY_NONE NID_undef +#define EVP_PKEY_RSA NID_rsaEncryption +#define EVP_PKEY_RSA2 NID_rsa +#define EVP_PKEY_RSA_PSS NID_rsassaPss +#define EVP_PKEY_DSA NID_dsa +#define EVP_PKEY_DSA1 NID_dsa_2 +#define EVP_PKEY_DSA2 NID_dsaWithSHA +#define EVP_PKEY_DSA3 NID_dsaWithSHA1 +#define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +#define EVP_PKEY_DH NID_dhKeyAgreement +#define EVP_PKEY_DHX NID_dhpublicnumber +#define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +#define EVP_PKEY_SM2 NID_sm2 +#define EVP_PKEY_HMAC NID_hmac +#define EVP_PKEY_CMAC NID_cmac +#define EVP_PKEY_SCRYPT NID_id_scrypt +#define EVP_PKEY_TLS1_PRF NID_tls1_prf +#define EVP_PKEY_HKDF NID_hkdf +#define EVP_PKEY_POLY1305 NID_poly1305 +#define EVP_PKEY_SIPHASH NID_siphash +#define EVP_PKEY_X25519 NID_X25519 +#define EVP_PKEY_ED25519 NID_ED25519 +#define EVP_PKEY_X448 NID_X448 +#define EVP_PKEY_ED448 NID_ED448 +#define EVP_PKEY_ML_DSA_44 NID_ML_DSA_44 +#define EVP_PKEY_ML_DSA_65 NID_ML_DSA_65 +#define EVP_PKEY_ML_DSA_87 NID_ML_DSA_87 +#define EVP_PKEY_SLH_DSA_SHA2_128S NID_SLH_DSA_SHA2_128s +#define EVP_PKEY_SLH_DSA_SHA2_128F NID_SLH_DSA_SHA2_128f +#define EVP_PKEY_SLH_DSA_SHA2_192S NID_SLH_DSA_SHA2_192s +#define EVP_PKEY_SLH_DSA_SHA2_192F NID_SLH_DSA_SHA2_192f +#define EVP_PKEY_SLH_DSA_SHA2_256S NID_SLH_DSA_SHA2_256s +#define EVP_PKEY_SLH_DSA_SHA2_256F NID_SLH_DSA_SHA2_256f +#define EVP_PKEY_SLH_DSA_SHAKE_128S NID_SLH_DSA_SHAKE_128s +#define EVP_PKEY_SLH_DSA_SHAKE_128F NID_SLH_DSA_SHAKE_128f +#define EVP_PKEY_SLH_DSA_SHAKE_192S NID_SLH_DSA_SHAKE_192s +#define EVP_PKEY_SLH_DSA_SHAKE_192F NID_SLH_DSA_SHAKE_192f +#define EVP_PKEY_SLH_DSA_SHAKE_256S NID_SLH_DSA_SHAKE_256s +#define EVP_PKEY_SLH_DSA_SHAKE_256F NID_SLH_DSA_SHAKE_256f + +/* Special indicator that the object is uniquely provider side */ +#define EVP_PKEY_KEYMGMT -1 + +/* Easy to use macros for EVP_PKEY related selections */ +#define EVP_PKEY_KEY_PARAMETERS \ + (OSSL_KEYMGMT_SELECT_ALL_PARAMETERS) +#define EVP_PKEY_PRIVATE_KEY \ + (EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PRIVATE_KEY) +#define EVP_PKEY_PUBLIC_KEY \ + (EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PUBLIC_KEY) +#define EVP_PKEY_KEYPAIR \ + (EVP_PKEY_PUBLIC_KEY | OSSL_KEYMGMT_SELECT_PRIVATE_KEY) + +#ifdef __cplusplus +extern "C" { +#endif + +int EVP_set_default_properties(OSSL_LIB_CTX *libctx, const char *propq); +char *EVP_get1_default_properties(OSSL_LIB_CTX *libctx); +int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx); +int EVP_default_properties_enable_fips(OSSL_LIB_CTX *libctx, int enable); + +#define EVP_PKEY_MO_SIGN 0x0001 +#define EVP_PKEY_MO_VERIFY 0x0002 +#define EVP_PKEY_MO_ENCRYPT 0x0004 +#define EVP_PKEY_MO_DECRYPT 0x0008 + +#ifndef EVP_MD +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 void EVP_MD_meth_free(EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, const void *data, size_t count)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, unsigned char *md)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, const EVP_MD_CTX *from)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, int p1, void *p2)); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_result_size(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); +#endif +/* digest can only handle a single block */ +#define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +#define EVP_MD_FLAG_XOF 0x0002 + +/* DigestAlgorithmIdentifier flags... */ + +#define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +#define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +#define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +#define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +#define EVP_MD_CTRL_DIGALGID 0x1 +#define EVP_MD_CTRL_MICALG 0x2 +#define EVP_MD_CTRL_XOF_LEN 0x3 +#define EVP_MD_CTRL_TLSTREE 0x4 + +/* Minimum Algorithm specific ctrl value */ + +#define EVP_MD_CTRL_ALG_CTRL 0x1000 + +#endif /* !EVP_MD */ + +/* values for EVP_MD_CTX flags */ + +#define EVP_MD_CTX_FLAG_ONESHOT 0x0001 /* digest update will be \ + * called once only */ +#define EVP_MD_CTX_FLAG_CLEANED 0x0002 /* context has already been \ + * cleaned */ +#define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data \ + * in EVP_MD_CTX_reset */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +/* This flag has no effect from openssl-3.0 onwards */ +#define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +#define EVP_MD_CTX_FLAG_PAD_MASK 0xF0 /* RSA mode to use */ +#define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00 /* PKCS#1 v1.5 mode */ +#define EVP_MD_CTX_FLAG_PAD_X931 0x10 /* X9.31 mode */ +#define EVP_MD_CTX_FLAG_PAD_PSS 0x20 /* PSS mode */ + +#define EVP_MD_CTX_FLAG_NO_INIT 0x0100 /* Don't initialize md_data */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +#define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 and 0x0800 are reserved for internal usage */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, + int (*init)(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, + int (*do_cipher)(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup)(EVP_CIPHER_CTX *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters)(EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters)(EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl)(EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, int type, + int arg, void *ptr); +#endif + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +#define EVP_CIPH_STREAM_CIPHER 0x0 +#define EVP_CIPH_ECB_MODE 0x1 +#define EVP_CIPH_CBC_MODE 0x2 +#define EVP_CIPH_CFB_MODE 0x3 +#define EVP_CIPH_OFB_MODE 0x4 +#define EVP_CIPH_CTR_MODE 0x5 +#define EVP_CIPH_GCM_MODE 0x6 +#define EVP_CIPH_CCM_MODE 0x7 +#define EVP_CIPH_XTS_MODE 0x10001 +#define EVP_CIPH_WRAP_MODE 0x10002 +#define EVP_CIPH_OCB_MODE 0x10003 +#define EVP_CIPH_SIV_MODE 0x10004 +#define EVP_CIPH_GCM_SIV_MODE 0x10005 +#define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +#define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +#define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +#define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +#define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +#define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +#define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +#define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +#define EVP_CIPH_CUSTOM_COPY 0x400 +/* Don't use standard iv length function */ +#define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* Legacy and no longer relevant: Allow use default ASN1 get/set iv */ +#define EVP_CIPH_FLAG_DEFAULT_ASN1 0 +/* Free: 0x1000 */ +/* Buffer length in bits not bytes: CFB1 mode only */ +#define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Deprecated FIPS flag: was 0x4000 */ +#define EVP_CIPH_FLAG_FIPS 0 +/* Deprecated FIPS flag: was 0x8000 */ +#define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0 + +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +#define EVP_CIPH_FLAG_CTS 0x4000 +#define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +#define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +#define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 +/* Cipher can handle pipeline operations */ +#define EVP_CIPH_FLAG_PIPELINE 0X800000 +/* For provider implementations that handle ASN1 get/set param themselves */ +#define EVP_CIPH_FLAG_CUSTOM_ASN1 0x1000000 +/* For ciphers generating unprotected CMS attributes */ +#define EVP_CIPH_FLAG_CIPHER_WITH_MAC 0x2000000 +/* For supplementary wrap cipher support */ +#define EVP_CIPH_FLAG_GET_WRAP_CIPHER 0x4000000 +#define EVP_CIPH_FLAG_INVERSE_CIPHER 0x8000000 +#define EVP_CIPH_FLAG_ENC_THEN_MAC 0x10000000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +#define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +#define EVP_CTRL_INIT 0x0 +#define EVP_CTRL_SET_KEY_LENGTH 0x1 +#define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +#define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +#define EVP_CTRL_GET_RC5_ROUNDS 0x4 +#define EVP_CTRL_SET_RC5_ROUNDS 0x5 +#define EVP_CTRL_RAND_KEY 0x6 +#define EVP_CTRL_PBE_PRF_NID 0x7 +#define EVP_CTRL_COPY 0x8 +#define EVP_CTRL_AEAD_SET_IVLEN 0x9 +#define EVP_CTRL_AEAD_GET_TAG 0x10 +#define EVP_CTRL_AEAD_SET_TAG 0x11 +#define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +#define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +#define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +#define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +#define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +#define EVP_CTRL_GCM_IV_GEN 0x13 +#define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +#define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +#define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +#define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +#define EVP_CTRL_CCM_SET_L 0x14 +#define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +#define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +#define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +#define EVP_CTRL_GCM_SET_IV_INV 0x18 + +#define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +#define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +#define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +#define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +#define EVP_CTRL_SSL3_MASTER_SECRET 0x1d + +/* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ +#define EVP_CTRL_SET_SBOX 0x1e +/* + * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a + * pre-allocated buffer with specified size + */ +#define EVP_CTRL_SBOX_USED 0x1f +/* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, + * 0 switches meshing off + */ +#define EVP_CTRL_KEY_MESH 0x20 +/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ +#define EVP_CTRL_BLOCK_PADDING_MODE 0x21 + +/* Set the output buffers to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 +/* Set the input buffers to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 +/* Set the input buffer lengths to use for a pipelined operation */ +#define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 +/* Get the IV length used by the cipher */ +#define EVP_CTRL_GET_IVLEN 0x25 +/* 0x26 is unused */ +/* Tell the cipher it's doing a speed test (SIV disallows multiple ops) */ +#define EVP_CTRL_SET_SPEED 0x27 +/* Get the unprotectedAttrs from cipher ctx */ +#define EVP_CTRL_PROCESS_UNPROTECTED 0x28 +/* Get the supplementary wrap cipher */ +#define EVP_CTRL_GET_WRAP_CIPHER 0x29 +/* TLSTREE key diversification */ +#define EVP_CTRL_TLSTREE 0x2A + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +#define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +#define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +#define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +#define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +#define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +#define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +#define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +#define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +#define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +#define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + +/* Password based encryption function */ +typedef int(EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +typedef int(EVP_PBE_KEYGEN_EX)(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de, OSSL_LIB_CTX *libctx, const char *propq); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PKEY_assign_RSA(pkey, rsa) EVP_PKEY_assign((pkey), EVP_PKEY_RSA, \ + (rsa)) +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_6 +#ifndef OPENSSL_NO_DSA +#define EVP_PKEY_assign_DSA(pkey, dsa) EVP_PKEY_assign((pkey), EVP_PKEY_DSA, \ + (dsa)) +#endif +#endif + +#if !defined(OPENSSL_NO_DH) && !defined(OPENSSL_NO_DEPRECATED_3_0) +#define EVP_PKEY_assign_DH(pkey, dh) EVP_PKEY_assign((pkey), EVP_PKEY_DH, (dh)) +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +#define EVP_PKEY_assign_EC_KEY(pkey, eckey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_EC, \ + (eckey)) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_6 +#ifndef OPENSSL_NO_SIPHASH +#define EVP_PKEY_assign_SIPHASH(pkey, shkey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_SIPHASH, \ + (shkey)) +#endif + +#ifndef OPENSSL_NO_POLY1305 +#define EVP_PKEY_assign_POLY1305(pkey, polykey) EVP_PKEY_assign((pkey), \ + EVP_PKEY_POLY1305, \ + (polykey)) +#endif +#endif + +/* Add some extra combinations */ +#define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +#define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +#define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +#define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_get_type(const EVP_MD *md); +#define EVP_MD_type EVP_MD_get_type +#define EVP_MD_nid EVP_MD_get_type +const char *EVP_MD_get0_name(const EVP_MD *md); +#define EVP_MD_name EVP_MD_get0_name +const char *EVP_MD_get0_description(const EVP_MD *md); +int EVP_MD_is_a(const EVP_MD *md, const char *name); +int EVP_MD_names_do_all(const EVP_MD *md, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_MD_get0_provider(const EVP_MD *md); +int EVP_MD_get_pkey_type(const EVP_MD *md); +#define EVP_MD_pkey_type EVP_MD_get_pkey_type +int EVP_MD_get_size(const EVP_MD *md); +#define EVP_MD_size EVP_MD_get_size +int EVP_MD_get_block_size(const EVP_MD *md); +#define EVP_MD_block_size EVP_MD_get_block_size +unsigned long EVP_MD_get_flags(const EVP_MD *md); +#define EVP_MD_flags EVP_MD_get_flags +int EVP_MD_xof(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_get0_md(const EVP_MD_CTX *ctx); +EVP_MD *EVP_MD_CTX_get1_md(EVP_MD_CTX *ctx); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update)(EVP_MD_CTX *ctx, + const void *data, size_t count)); +#endif +int EVP_MD_CTX_get_size_ex(const EVP_MD_CTX *ctx); + +#define EVP_MD_CTX_get0_name(e) EVP_MD_get0_name(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_get_size(e) EVP_MD_CTX_get_size_ex(e) +#define EVP_MD_CTX_size EVP_MD_CTX_get_size_ex +#define EVP_MD_CTX_get_block_size(e) EVP_MD_get_block_size(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_block_size EVP_MD_CTX_get_block_size +#define EVP_MD_CTX_get_type(e) EVP_MD_get_type(EVP_MD_CTX_get0_md(e)) +#define EVP_MD_CTX_type EVP_MD_CTX_get_type +EVP_PKEY_CTX *EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX *ctx); +#define EVP_MD_CTX_pkey_ctx EVP_MD_CTX_get_pkey_ctx +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_get0_md_data(const EVP_MD_CTX *ctx); +#define EVP_MD_CTX_md_data EVP_MD_CTX_get0_md_data + +int EVP_CIPHER_get_nid(const EVP_CIPHER *cipher); +#define EVP_CIPHER_nid EVP_CIPHER_get_nid +const char *EVP_CIPHER_get0_name(const EVP_CIPHER *cipher); +#define EVP_CIPHER_name EVP_CIPHER_get0_name +const char *EVP_CIPHER_get0_description(const EVP_CIPHER *cipher); +int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name); +int EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_CIPHER_get0_provider(const EVP_CIPHER *cipher); +int EVP_CIPHER_get_block_size(const EVP_CIPHER *cipher); +#define EVP_CIPHER_block_size EVP_CIPHER_get_block_size +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +#endif +int EVP_CIPHER_get_key_length(const EVP_CIPHER *cipher); +#define EVP_CIPHER_key_length EVP_CIPHER_get_key_length +int EVP_CIPHER_get_iv_length(const EVP_CIPHER *cipher); +#define EVP_CIPHER_iv_length EVP_CIPHER_get_iv_length +unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER *cipher); +#define EVP_CIPHER_flags EVP_CIPHER_get_flags +int EVP_CIPHER_get_mode(const EVP_CIPHER *cipher); +#define EVP_CIPHER_mode EVP_CIPHER_get_mode +int EVP_CIPHER_get_type(const EVP_CIPHER *cipher); +#define EVP_CIPHER_type EVP_CIPHER_get_type +EVP_CIPHER *EVP_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_CIPHER_can_pipeline(const EVP_CIPHER *cipher, int enc); +int EVP_CIPHER_up_ref(EVP_CIPHER *cipher); +void EVP_CIPHER_free(EVP_CIPHER *cipher); + +const EVP_CIPHER *EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX *ctx); +EVP_CIPHER *EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_encrypting EVP_CIPHER_CTX_is_encrypting +int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_nid EVP_CIPHER_CTX_get_nid +int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_block_size EVP_CIPHER_CTX_get_block_size +int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_key_length EVP_CIPHER_CTX_get_key_length +int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_iv_length EVP_CIPHER_CTX_get_iv_length +int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_tag_length EVP_CIPHER_CTX_get_tag_length +#ifndef OPENSSL_NO_DEPRECATED_3_0 +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +#endif +int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +#endif +int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX *ctx); +#define EVP_CIPHER_CTX_num EVP_CIPHER_CTX_get_num +int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +EVP_CIPHER_CTX *EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX *in); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); +void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); +#define EVP_CIPHER_CTX_get0_name(c) EVP_CIPHER_get0_name(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_get_type(c) EVP_CIPHER_get_type(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_type EVP_CIPHER_CTX_get_type +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(c)) +#endif +#define EVP_CIPHER_CTX_get_mode(c) EVP_CIPHER_get_mode(EVP_CIPHER_CTX_get0_cipher(c)) +#define EVP_CIPHER_CTX_mode EVP_CIPHER_CTX_get_mode + +#define EVP_ENCODE_LENGTH(l) ((((l) + 2) / 3 * 4) + ((l) / 48 + 1) * 2 + 80) +#define EVP_DECODE_LENGTH(l) (((l) + 3) / 4 * 3 + 80) + +#define EVP_SignInit_ex(a, b, c) EVP_DigestInit_ex(a, b, c) +#define EVP_SignInit(a, b) EVP_DigestInit(a, b) +#define EVP_SignUpdate(a, b, c) EVP_DigestUpdate(a, b, c) +#define EVP_VerifyInit_ex(a, b, c) EVP_DigestInit_ex(a, b, c) +#define EVP_VerifyInit(a, b) EVP_DigestInit(a, b) +#define EVP_VerifyUpdate(a, b, c) EVP_DigestUpdate(a, b, c) +#define EVP_OpenUpdate(a, b, c, d, e) EVP_DecryptUpdate(a, b, c, d, e) +#define EVP_SealUpdate(a, b, c, d, e) EVP_EncryptUpdate(a, b, c, d, e) + +#ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +#else +#define BIO_set_md(b, md) BIO_ctrl(b, BIO_C_SET_MD, 0, (void *)(md)) +#endif +#define BIO_get_md(b, mdp) BIO_ctrl(b, BIO_C_GET_MD, 0, (mdp)) +#define BIO_get_md_ctx(b, mdcp) BIO_ctrl(b, BIO_C_GET_MD_CTX, 0, (mdcp)) +#define BIO_set_md_ctx(b, mdcp) BIO_ctrl(b, BIO_C_SET_MD_CTX, 0, (mdcp)) +#define BIO_get_cipher_status(b) BIO_ctrl(b, BIO_C_GET_CIPHER_STATUS, 0, NULL) +#define BIO_get_cipher_ctx(b, c_pp) BIO_ctrl(b, BIO_C_GET_CIPHER_CTX, 0, (c_pp)) + +__owur int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, + const unsigned char *in, unsigned int inl); + +#define EVP_add_cipher_alias(n, alias) \ + OBJ_NAME_add((alias), OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS, (n)) +#define EVP_add_digest_alias(n, alias) \ + OBJ_NAME_add((alias), OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, (n)) +#define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias, OBJ_NAME_TYPE_CIPHER_METH | OBJ_NAME_ALIAS); +#define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias, OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS); + +int EVP_MD_get_params(const EVP_MD *digest, OSSL_PARAM params[]); +int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[]); +int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest); +const OSSL_PARAM *EVP_MD_settable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_gettable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_CTX_settable_params(EVP_MD_CTX *ctx); +const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx); +int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +EVP_MD_CTX *EVP_MD_CTX_new(void); +int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); +#define EVP_MD_CTX_create() EVP_MD_CTX_new() +#define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) +#define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) +__owur EVP_MD_CTX *EVP_MD_CTX_dup(const EVP_MD_CTX *in); +__owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +__owur int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type, + const OSSL_PARAM params[]); +__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, + ENGINE *impl); +__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, + size_t cnt); +__owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, + const EVP_MD *type, ENGINE *impl); +__owur int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name, + const char *propq, const void *data, size_t datalen, + unsigned char *md, size_t *mdlen); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *out, + size_t outlen); +__owur int EVP_DigestSqueeze(EVP_MD_CTX *ctx, unsigned char *out, + size_t outlen); + +__owur EVP_MD *EVP_MD_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); + +int EVP_MD_up_ref(EVP_MD *md); +void EVP_MD_free(EVP_MD *md); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +__owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, + const unsigned char *data, int datal, int count, + unsigned char *key, unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +__owur int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +__owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +__owur int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); +__owur int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); + +__owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +__owur int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +__owur int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +__owur int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +__owur int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv, int enc); +__owur int EVP_CipherInit_SKEY(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + EVP_SKEY *skey, const unsigned char *iv, size_t iv_len, + int enc, const OSSL_PARAM params[]); +__owur int EVP_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc, const OSSL_PARAM params[]); +__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_CipherPipelineEncryptInit(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, + const unsigned char *key, size_t keylen, + size_t numpipes, + const unsigned char **iv, size_t ivlen); +__owur int EVP_CipherPipelineDecryptInit(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, + const unsigned char *key, size_t keylen, + size_t numpipes, + const unsigned char **iv, size_t ivlen); +__owur int EVP_CipherPipelineUpdate(EVP_CIPHER_CTX *ctx, + unsigned char **out, size_t *outl, + const size_t *outsize, + const unsigned char **in, const size_t *inl); +__owur int EVP_CipherPipelineFinal(EVP_CIPHER_CTX *ctx, + unsigned char **outm, size_t *outl, + const size_t *outsize); +__owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); +__owur int EVP_SignFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *propq); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); +__owur int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey, + OSSL_LIB_CTX *libctx, const char *propq); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +__owur int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +__owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, + const unsigned char *iv, EVP_PKEY *priv); +__owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +__owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +__owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, const EVP_ENCODE_CTX *sctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) +#define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) +#endif +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); +int EVP_CIPHER_get_params(EVP_CIPHER *cipher, OSSL_PARAM params[]); +int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX *ctx, const OSSL_PARAM params[]); +int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_CIPHER_gettable_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_settable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX *ctx); +const OSSL_PARAM *EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX *ctx); + +int EVP_CIPHER_CTX_set_algor_params(EVP_CIPHER_CTX *ctx, const X509_ALGOR *alg); +int EVP_CIPHER_CTX_get_algor_params(EVP_CIPHER_CTX *ctx, X509_ALGOR *alg); +int EVP_CIPHER_CTX_get_algor(EVP_CIPHER_CTX *ctx, X509_ALGOR **alg); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +const EVP_MD *EVP_md_null(void); +#ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +#endif +#ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +#endif +#ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +const EVP_MD *EVP_md5_sha1(void); +#endif +#ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +#endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); + +#ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +#endif +#ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +#endif +#ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +#endif +#ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(void); +#endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +#ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +#define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +#define EVP_des_ede_cfb EVP_des_ede_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +#define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +#endif +#ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +#ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +#endif +#endif +#ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +#define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +#endif +#ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +#define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +#endif +#ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +#define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +#endif +#ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +#define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +#endif +#ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +#define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +#endif +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +#define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_128_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +#define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_192_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +#define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +#ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +#endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +#ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +#define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +#define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +#define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +#endif +#ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +#define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_128_ctr(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +#define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ctr(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +#define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +#endif +#ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +#ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +#endif +#endif + +#ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +#define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +#endif + +#ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +#define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, \ + NULL) +#define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, \ + NULL) + +#ifdef OPENSSL_LOAD_CONF +#define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() +#else +#define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() +#endif + +#define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +#define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +#define EVP_cleanup() \ + while (0) \ + continue +#endif + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); + +void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_CIPHER *cipher, void *arg), + void *arg); + +void EVP_MD_do_all(void (*fn)(const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *ciph, const char *from, + const char *to, void *x), + void *arg); +void EVP_MD_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MD *md, void *arg), + void *arg); + +/* MAC stuff */ + +EVP_MAC *EVP_MAC_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_MAC_up_ref(EVP_MAC *mac); +void EVP_MAC_free(EVP_MAC *mac); +const char *EVP_MAC_get0_name(const EVP_MAC *mac); +const char *EVP_MAC_get0_description(const EVP_MAC *mac); +int EVP_MAC_is_a(const EVP_MAC *mac, const char *name); +const OSSL_PROVIDER *EVP_MAC_get0_provider(const EVP_MAC *mac); +int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]); + +EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac); +void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx); +EVP_MAC_CTX *EVP_MAC_CTX_dup(const EVP_MAC_CTX *src); +EVP_MAC *EVP_MAC_CTX_get0_mac(EVP_MAC_CTX *ctx); +int EVP_MAC_CTX_get_params(EVP_MAC_CTX *ctx, OSSL_PARAM params[]); +int EVP_MAC_CTX_set_params(EVP_MAC_CTX *ctx, const OSSL_PARAM params[]); + +size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX *ctx); +size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX *ctx); +unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *propq, + const char *subalg, const OSSL_PARAM *params, + const void *key, size_t keylen, + const unsigned char *data, size_t datalen, + unsigned char *out, size_t outsize, size_t *outlen); +int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_MAC_init_SKEY(EVP_MAC_CTX *ctx, EVP_SKEY *skey, const OSSL_PARAM params[]); +int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen); +int EVP_MAC_final(EVP_MAC_CTX *ctx, + unsigned char *out, size_t *outl, size_t outsize); +int EVP_MAC_finalXOF(EVP_MAC_CTX *ctx, unsigned char *out, size_t outsize); +const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_gettable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_settable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_CTX_gettable_params(EVP_MAC_CTX *ctx); +const OSSL_PARAM *EVP_MAC_CTX_settable_params(EVP_MAC_CTX *ctx); + +void EVP_MAC_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MAC *mac, void *arg), + void *arg); +int EVP_MAC_names_do_all(const EVP_MAC *mac, + void (*fn)(const char *name, void *data), + void *data); + +/* RAND stuff */ +EVP_RAND *EVP_RAND_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_RAND_up_ref(EVP_RAND *rand); +void EVP_RAND_free(EVP_RAND *rand); +const char *EVP_RAND_get0_name(const EVP_RAND *rand); +const char *EVP_RAND_get0_description(const EVP_RAND *md); +int EVP_RAND_is_a(const EVP_RAND *rand, const char *name); +const OSSL_PROVIDER *EVP_RAND_get0_provider(const EVP_RAND *rand); +int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[]); + +EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent); +int EVP_RAND_CTX_up_ref(EVP_RAND_CTX *ctx); +void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx); +EVP_RAND *EVP_RAND_CTX_get0_rand(EVP_RAND_CTX *ctx); +int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[]); +int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx); +const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx); + +void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_RAND *rand, void *arg), + void *arg); +int EVP_RAND_names_do_all(const EVP_RAND *rand, + void (*fn)(const char *name, void *data), + void *data); + +__owur int EVP_RAND_instantiate(EVP_RAND_CTX *ctx, unsigned int strength, + int prediction_resistance, + const unsigned char *pstr, size_t pstr_len, + const OSSL_PARAM params[]); +int EVP_RAND_uninstantiate(EVP_RAND_CTX *ctx); +__owur int EVP_RAND_generate(EVP_RAND_CTX *ctx, unsigned char *out, + size_t outlen, unsigned int strength, + int prediction_resistance, + const unsigned char *addin, size_t addin_len); +int EVP_RAND_reseed(EVP_RAND_CTX *ctx, int prediction_resistance, + const unsigned char *ent, size_t ent_len, + const unsigned char *addin, size_t addin_len); +__owur int EVP_RAND_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen); +__owur int EVP_RAND_enable_locking(EVP_RAND_CTX *ctx); + +int EVP_RAND_verify_zeroization(EVP_RAND_CTX *ctx); +unsigned int EVP_RAND_get_strength(EVP_RAND_CTX *ctx); +int EVP_RAND_get_state(EVP_RAND_CTX *ctx); + +#define EVP_RAND_STATE_UNINITIALISED 0 +#define EVP_RAND_STATE_READY 1 +#define EVP_RAND_STATE_ERROR 2 + +/* PKEY stuff */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, + int enc_key_len, + EVP_PKEY *private_key); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, + int key_len, EVP_PKEY *pub_key); +#endif +int EVP_PKEY_is_a(const EVP_PKEY *pkey, const char *name); +int EVP_PKEY_type_names_do_all(const EVP_PKEY *pkey, + void (*fn)(const char *name, void *data), + void *data); +int EVP_PKEY_type(int type); +int EVP_PKEY_get_id(const EVP_PKEY *pkey); +#define EVP_PKEY_id EVP_PKEY_get_id +int EVP_PKEY_get_base_id(const EVP_PKEY *pkey); +#define EVP_PKEY_base_id EVP_PKEY_get_base_id +int EVP_PKEY_get_bits(const EVP_PKEY *pkey); +#define EVP_PKEY_bits EVP_PKEY_get_bits +int EVP_PKEY_get_security_bits(const EVP_PKEY *pkey); +#define EVP_PKEY_security_bits EVP_PKEY_get_security_bits +int EVP_PKEY_get_security_category(const EVP_PKEY *pkey); +int EVP_PKEY_get_size(const EVP_PKEY *pkey); +#define EVP_PKEY_size EVP_PKEY_get_size +int EVP_PKEY_can_sign(const EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY *pkey, EVP_KEYMGMT *keymgmt); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +#endif +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +OSSL_DEPRECATEDIN_3_0 +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +#ifndef OPENSSL_NO_POLY1305 +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +#endif +#ifndef OPENSSL_NO_SIPHASH +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +#endif + +struct rsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); + +#ifndef OPENSSL_NO_DSA +struct dsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct dsa_st *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +#endif + +#ifndef OPENSSL_NO_DH +struct dh_st; +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +OSSL_DEPRECATEDIN_3_0 const struct dh_st *EVP_PKEY_get0_DH(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +#endif + +#ifndef OPENSSL_NO_EC +struct ec_key_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct ec_key_st *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +#endif +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); +const char *EVP_PKEY_get0_description(const EVP_PKEY *pkey); +const OSSL_PROVIDER *EVP_PKEY_get0_provider(const EVP_PKEY *key); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey_ex(int type, EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey_ex(EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(const EVP_PKEY *a, unsigned char **pp); +int i2d_PKCS8PrivateKey(const EVP_PKEY *a, unsigned char **pp); + +int i2d_KeyParams(const EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_KeyParams(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_KeyParams_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_KeyParams_bio(int type, EVP_PKEY **a, BIO *in); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b); +int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); +#endif + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +#ifndef OPENSSL_NO_STDIO +int EVP_PKEY_print_public_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +#endif + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); +int EVP_PKEY_get_default_digest_name(EVP_PKEY *pkey, + char *mdname, size_t mdname_sz); +int EVP_PKEY_digestsign_supports_digest(EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *name, const char *propq); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_set1_encoded_public_key in + * preference + */ +#define EVP_PKEY_set1_tls_encodedpoint(pkey, pt, ptlen) \ + EVP_PKEY_set1_encoded_public_key((pkey), (pt), (ptlen)) +#endif + +int EVP_PKEY_set1_encoded_public_key(EVP_PKEY *pkey, + const unsigned char *pub, size_t publen); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_get1_encoded_public_key in + * preference + */ +#define EVP_PKEY_get1_tls_encodedpoint(pkey, ppt) \ + EVP_PKEY_get1_encoded_public_key((pkey), (ppt)) +#endif + +size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY *pkey, unsigned char **ppub); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +#ifndef OPENSSL_NO_SCRYPT +int EVP_PBE_scrypt(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); +int EVP_PBE_scrypt_ex(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de); +int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +#endif + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +int EVP_PBE_CipherInit_ex(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +#define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +#define EVP_PBE_TYPE_PRF 0x1 +/* Is a PKCS#5 v2.0 KDF */ +#define EVP_PBE_TYPE_KDF 0x2 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +int EVP_PBE_find_ex(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen, EVP_PBE_KEYGEN_EX **pkeygen_ex); +void EVP_PBE_cleanup(void); +int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); + +#define ASN1_PKEY_ALIAS 0x1 +#define ASN1_PKEY_DYNAMIC 0x2 +#define ASN1_PKEY_SIGPARAM_NULL 0x4 + +#define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +#define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +#define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +#define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +#define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +#define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +#define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 +#define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa +#define ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED 0xb + +#ifndef OPENSSL_NO_DEPRECATED_3_6 +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_get_count(void); +OSSL_DEPRECATEDIN_3_6 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +OSSL_DEPRECATEDIN_3_6 +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +OSSL_DEPRECATEDIN_3_6 +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +OSSL_DEPRECATEDIN_3_6 int EVP_PKEY_asn1_add_alias(int to, int from); +OSSL_DEPRECATEDIN_3_6 +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +OSSL_DEPRECATEDIN_3_6 const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_6 EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +OSSL_DEPRECATEDIN_3_6 void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +OSSL_DEPRECATEDIN_3_6 void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode)(EVP_PKEY *pk, + const X509_PUBKEY *pub), + int (*pub_encode)(X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp)(const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size)(const EVP_PKEY *pk), + int (*pkey_bits)(const EVP_PKEY *pk)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode)(EVP_PKEY *pk, + const PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode)(PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode)(EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode)(const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing)(const EVP_PKEY *pk), + int (*param_copy)(EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp)(const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print)(BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl)(EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify)(EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + const void *data, + const X509_ALGOR *a, + const ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign)(EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + const void *data, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set)(X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check)(const EVP_PKEY *pk)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key)(EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key)(EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key)(const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key)(const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +OSSL_DEPRECATEDIN_3_6 +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits)(const EVP_PKEY + *pk)); +#endif /* OPENSSL_NO_DEPRECATED_3_6 */ + +int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, const void *id, int len); +int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id); +int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len); + +int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX *ctx, const char *op); + +const char *EVP_PKEY_get0_type_name(const EVP_PKEY *key); + +#define EVP_PKEY_OP_UNDEFINED 0 +#define EVP_PKEY_OP_PARAMGEN (1 << 1) +#define EVP_PKEY_OP_KEYGEN (1 << 2) +#define EVP_PKEY_OP_FROMDATA (1 << 3) +#define EVP_PKEY_OP_SIGN (1 << 4) +#define EVP_PKEY_OP_VERIFY (1 << 5) +#define EVP_PKEY_OP_VERIFYRECOVER (1 << 6) +#define EVP_PKEY_OP_SIGNCTX (1 << 7) +#define EVP_PKEY_OP_VERIFYCTX (1 << 8) +#define EVP_PKEY_OP_ENCRYPT (1 << 9) +#define EVP_PKEY_OP_DECRYPT (1 << 10) +#define EVP_PKEY_OP_DERIVE (1 << 11) +#define EVP_PKEY_OP_ENCAPSULATE (1 << 12) +#define EVP_PKEY_OP_DECAPSULATE (1 << 13) +#define EVP_PKEY_OP_SIGNMSG (1 << 14) +#define EVP_PKEY_OP_VERIFYMSG (1 << 15) +/* Update the following when adding new EVP_PKEY_OPs */ +#define EVP_PKEY_OP_ALL ((1 << 16) - 1) + +#define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG \ + | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \ + | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +#define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +#define EVP_PKEY_OP_TYPE_DERIVE \ + (EVP_PKEY_OP_DERIVE) + +#define EVP_PKEY_OP_TYPE_DATA \ + (EVP_PKEY_OP_FROMDATA) + +#define EVP_PKEY_OP_TYPE_KEM \ + (EVP_PKEY_OP_ENCAPSULATE | EVP_PKEY_OP_DECAPSULATE) + +#define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +#define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_ALL & ~EVP_PKEY_OP_TYPE_GEN) + +int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key, + int keylen); + +#define EVP_PKEY_CTRL_MD 1 +#define EVP_PKEY_CTRL_PEER_KEY 2 +#define EVP_PKEY_CTRL_SET_MAC_KEY 6 +#define EVP_PKEY_CTRL_DIGESTINIT 7 +/* Used by GOST key encryption in TLS */ +#define EVP_PKEY_CTRL_SET_IV 8 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +#define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 +#define EVP_PKEY_CTRL_PKCS7_SIGN 5 +#define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +#define EVP_PKEY_CTRL_CMS_DECRYPT 10 +#define EVP_PKEY_CTRL_CMS_SIGN 11 +#endif +#define EVP_PKEY_CTRL_CIPHER 12 +#define EVP_PKEY_CTRL_GET_MD 13 +#define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 +#define EVP_PKEY_CTRL_SET1_ID 15 +#define EVP_PKEY_CTRL_GET1_ID 16 +#define EVP_PKEY_CTRL_GET1_ID_LEN 17 + +#define EVP_PKEY_ALG_CTRL 0x1000 + +#define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +#define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +OSSL_DEPRECATEDIN_3_0 EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, + const EVP_PKEY_METHOD *src); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 size_t EVP_PKEY_meth_get_count(void); +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); +#endif + +EVP_KEYMGMT *EVP_KEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEYMGMT_up_ref(EVP_KEYMGMT *keymgmt); +void EVP_KEYMGMT_free(EVP_KEYMGMT *keymgmt); +const OSSL_PROVIDER *EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_name(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_description(const EVP_KEYMGMT *keymgmt); +int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name); +void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYMGMT *keymgmt, void *arg), + void *arg); +int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_gen_gettable_params(const EVP_KEYMGMT *keymgmt); + +EVP_SKEYMGMT *EVP_SKEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_SKEYMGMT_up_ref(EVP_SKEYMGMT *keymgmt); +void EVP_SKEYMGMT_free(EVP_SKEYMGMT *keymgmt); +const OSSL_PROVIDER *EVP_SKEYMGMT_get0_provider(const EVP_SKEYMGMT *keymgmt); +const char *EVP_SKEYMGMT_get0_name(const EVP_SKEYMGMT *keymgmt); +const char *EVP_SKEYMGMT_get0_description(const EVP_SKEYMGMT *keymgmt); +int EVP_SKEYMGMT_is_a(const EVP_SKEYMGMT *keymgmt, const char *name); +void EVP_SKEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_SKEYMGMT *keymgmt, void *arg), + void *arg); +int EVP_SKEYMGMT_names_do_all(const EVP_SKEYMGMT *keymgmt, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_SKEYMGMT_get0_gen_settable_params(const EVP_SKEYMGMT *skeymgmt); +const OSSL_PARAM *EVP_SKEYMGMT_get0_imp_settable_params(const EVP_SKEYMGMT *skeymgmt); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_name(OSSL_LIB_CTX *libctx, + const char *name, + const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX *libctx, + EVP_PKEY *pkey, const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(const EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX *ctx, const char *keytype); + +int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX *ctx, OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_algor_params(EVP_PKEY_CTX *ctx, const X509_ALGOR *alg); +int EVP_PKEY_CTX_get_algor_params(EVP_PKEY_CTX *ctx, X509_ALGOR *alg); +int EVP_PKEY_CTX_get_algor(EVP_PKEY_CTX *ctx, X509_ALGOR **alg); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); +EVP_PKEY *EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, + const char *propq, + const unsigned char *priv, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, const char *propq, + const unsigned char *pub, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); +#endif + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_signature(EVP_PKEY_CTX *pctx, + const unsigned char *sig, size_t siglen); + +void EVP_SIGNATURE_free(EVP_SIGNATURE *signature); +int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature); +OSSL_PROVIDER *EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE *signature); +EVP_SIGNATURE *EVP_SIGNATURE_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_SIGNATURE_is_a(const EVP_SIGNATURE *signature, const char *name); +const char *EVP_SIGNATURE_get0_name(const EVP_SIGNATURE *signature); +const char *EVP_SIGNATURE_get0_description(const EVP_SIGNATURE *signature); +void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_SIGNATURE *signature, + void *data), + void *data); +int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig); +const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig); + +void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher); +int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher); +OSSL_PROVIDER *EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER *cipher); +EVP_ASYM_CIPHER *EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER *cipher, const char *name); +const char *EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER *cipher); +const char *EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER *cipher); +void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_ASYM_CIPHER *cipher, + void *arg), + void *arg); +int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *ciph); +const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *ciph); + +void EVP_KEM_free(EVP_KEM *wrap); +int EVP_KEM_up_ref(EVP_KEM *wrap); +OSSL_PROVIDER *EVP_KEM_get0_provider(const EVP_KEM *wrap); +EVP_KEM *EVP_KEM_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEM_is_a(const EVP_KEM *wrap, const char *name); +const char *EVP_KEM_get0_name(const EVP_KEM *wrap); +const char *EVP_KEM_get0_description(const EVP_KEM *wrap); +void EVP_KEM_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEM *wrap, void *arg), void *arg); +int EVP_KEM_names_do_all(const EVP_KEM *wrap, + void (*fn)(const char *name, void *data), void *data); +const OSSL_PARAM *EVP_KEM_gettable_ctx_params(const EVP_KEM *kem); +const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_sign_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_sign_message_init(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_sign_message_update(EVP_PKEY_CTX *ctx, + const unsigned char *in, size_t inlen); +int EVP_PKEY_sign_message_final(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_verify_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_message_init(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, const OSSL_PARAM params[]); +int EVP_PKEY_verify_message_update(EVP_PKEY_CTX *ctx, + const unsigned char *in, size_t inlen); +int EVP_PKEY_verify_message_final(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX *ctx, + const OSSL_PARAM params[]); +int EVP_PKEY_verify_recover_init_ex2(EVP_PKEY_CTX *ctx, + EVP_SIGNATURE *algo, + const OSSL_PARAM params[]); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer, + int validate_peer); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); +EVP_SKEY *EVP_PKEY_derive_SKEY(EVP_PKEY_CTX *ctx, EVP_SKEYMGMT *mgmt, + const char *key_type, const char *propquery, + size_t keylen, const OSSL_PARAM params[]); + +int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpriv, + const OSSL_PARAM params[]); +int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, + unsigned char *wrappedkey, size_t *wrappedkeylen, + unsigned char *genkey, size_t *genkeylen); +int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpub, + const OSSL_PARAM params[]); +int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, + unsigned char *unwrapped, size_t *unwrappedlen, + const unsigned char *wrapped, size_t wrappedlen); +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_fromdata(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, + OSSL_PARAM param[]); +const OSSL_PARAM *EVP_PKEY_fromdata_settable(EVP_PKEY_CTX *ctx, int selection); + +int EVP_PKEY_todata(const EVP_PKEY *pkey, int selection, OSSL_PARAM **params); +int EVP_PKEY_export(const EVP_PKEY *pkey, int selection, + OSSL_CALLBACK *export_cb, void *export_cbarg); + +const OSSL_PARAM *EVP_PKEY_gettable_params(const EVP_PKEY *pkey); +int EVP_PKEY_get_params(const EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_get_int_param(const EVP_PKEY *pkey, const char *key_name, + int *out); +int EVP_PKEY_get_size_t_param(const EVP_PKEY *pkey, const char *key_name, + size_t *out); +int EVP_PKEY_get_bn_param(const EVP_PKEY *pkey, const char *key_name, + BIGNUM **bn); +int EVP_PKEY_get_utf8_string_param(const EVP_PKEY *pkey, const char *key_name, + char *str, size_t max_buf_sz, size_t *out_sz); +int EVP_PKEY_get_octet_string_param(const EVP_PKEY *pkey, const char *key_name, + unsigned char *buf, size_t max_buf_sz, + size_t *out_sz); + +const OSSL_PARAM *EVP_PKEY_settable_params(const EVP_PKEY *pkey); +int EVP_PKEY_set_params(EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_set_int_param(EVP_PKEY *pkey, const char *key_name, int in); +int EVP_PKEY_set_size_t_param(EVP_PKEY *pkey, const char *key_name, size_t in); +int EVP_PKEY_set_bn_param(EVP_PKEY *pkey, const char *key_name, + const BIGNUM *bn); +int EVP_PKEY_set_utf8_string_param(EVP_PKEY *pkey, const char *key_name, + const char *str); +int EVP_PKEY_set_octet_string_param(EVP_PKEY *pkey, const char *key_name, + const unsigned char *buf, size_t bsize); + +int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY *pkey); +int EVP_PKEY_get_field_type(const EVP_PKEY *pkey); + +EVP_PKEY *EVP_PKEY_Q_keygen(OSSL_LIB_CTX *libctx, const char *propq, + const char *type, ...); +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_generate(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx); + +#define EVP_PKEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EVP_PKEY, l, p, newf, dupf, freef) +int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg); +void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, int (*copy)(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, void (*cleanup)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, int (*paramgen_init)(EVP_PKEY_CTX *ctx), + int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, int (*keygen_init)(EVP_PKEY_CTX *ctx), + int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, int (*sign_init)(EVP_PKEY_CTX *ctx), + int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, int (*verify_init)(EVP_PKEY_CTX *ctx), + int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, int (*verify_recover_init)(EVP_PKEY_CTX *ctx), + int (*verify_recover)(EVP_PKEY_CTX *ctx, unsigned char *sig, + size_t *siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, int (*encrypt_init)(EVP_PKEY_CTX *ctx), + int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, int (*decrypt_init)(EVP_PKEY_CTX *ctx), + int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, int (*derive_init)(EVP_PKEY_CTX *ctx), + int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), + int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign)(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify)(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, int (*digest_custom)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, int (**pinit)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, int (**pcopy)(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, void (**pcleanup)(EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD *pmeth, int (**pparamgen_init)(EVP_PKEY_CTX *ctx), + int (**pparamgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD *pmeth, int (**pkeygen_init)(EVP_PKEY_CTX *ctx), + int (**pkeygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD *pmeth, int (**psign_init)(EVP_PKEY_CTX *ctx), + int (**psign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD *pmeth, int (**pverify_init)(EVP_PKEY_CTX *ctx), + int (**pverify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init)(EVP_PKEY_CTX *ctx), + int (**pverify_recover)(EVP_PKEY_CTX *ctx, unsigned char *sig, + size_t *siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**psignctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**pverifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, + int siglen, EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD *pmeth, int (**pencrypt_init)(EVP_PKEY_CTX *ctx), + int (**pencryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD *pmeth, int (**pdecrypt_init)(EVP_PKEY_CTX *ctx), + int (**pdecrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD *pmeth, int (**pderive_init)(EVP_PKEY_CTX *ctx), + int (**pderive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, + int (**pctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), + int (**pctrl_str)(EVP_PKEY_CTX *ctx, const char *type, + const char *value)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestsign(const EVP_PKEY_METHOD *pmeth, + int (**digestsign)(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestverify(const EVP_PKEY_METHOD *pmeth, + int (**digestverify)(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck)(EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digest_custom(const EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); +#endif + +void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange); +EVP_KEYEXCH *EVP_KEYEXCH_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +OSSL_PROVIDER *EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_is_a(const EVP_KEYEXCH *keyexch, const char *name); +const char *EVP_KEYEXCH_get0_name(const EVP_KEYEXCH *keyexch); +const char *EVP_KEYEXCH_get0_description(const EVP_KEYEXCH *keyexch); +void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYEXCH *keyexch, void *data), + void *data); +int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch); +const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch); + +void EVP_add_alg_module(void); + +int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX *ctx, const char *name); +int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX *ctx, char *name, size_t namelen); +int EVP_PKEY_get_group_name(const EVP_PKEY *pkey, char *name, size_t name_sz, + size_t *gname_len); + +OSSL_LIB_CTX *EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX *ctx); +const char *EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX *ctx); +const OSSL_PROVIDER *EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX *ctx); + +int EVP_SKEY_is_a(const EVP_SKEY *skey, const char *name); +EVP_SKEY *EVP_SKEY_import(OSSL_LIB_CTX *libctx, const char *skeymgmtname, const char *propquery, + int selection, const OSSL_PARAM *params); +EVP_SKEY *EVP_SKEY_generate(OSSL_LIB_CTX *libctx, const char *skeymgmtname, + const char *propquery, const OSSL_PARAM *params); +EVP_SKEY *EVP_SKEY_import_raw_key(OSSL_LIB_CTX *libctx, const char *skeymgmtname, + unsigned char *key, size_t keylen, + const char *propquery); +EVP_SKEY *EVP_SKEY_import_SKEYMGMT(OSSL_LIB_CTX *libctx, EVP_SKEYMGMT *skeymgmt, + int selection, const OSSL_PARAM *params); +int EVP_SKEY_get0_raw_key(const EVP_SKEY *skey, const unsigned char **key, + size_t *len); +const char *EVP_SKEY_get0_key_id(const EVP_SKEY *skey); +int EVP_SKEY_export(const EVP_SKEY *skey, int selection, + OSSL_CALLBACK *export_cb, void *export_cbarg); +int EVP_SKEY_up_ref(EVP_SKEY *skey); +void EVP_SKEY_free(EVP_SKEY *skey); +const char *EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY *skey); +const char *EVP_SKEY_get0_provider_name(const EVP_SKEY *skey); +EVP_SKEY *EVP_SKEY_to_provider(EVP_SKEY *skey, OSSL_LIB_CTX *libctx, + OSSL_PROVIDER *prov, const char *propquery); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/evperr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/evperr.h new file mode 100644 index 0000000..06dd95f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/evperr.h @@ -0,0 +1,146 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_EVPERR_H +#define OPENSSL_EVPERR_H +#pragma once + +#include +#include +#include + +/* + * EVP reason codes. + */ +#define EVP_R_AES_KEY_SETUP_FAILED 143 +#define EVP_R_ARIA_KEY_SETUP_FAILED 176 +#define EVP_R_BAD_ALGORITHM_NAME 200 +#define EVP_R_BAD_DECRYPT 100 +#define EVP_R_BAD_KEY_LENGTH 195 +#define EVP_R_BUFFER_TOO_SMALL 155 +#define EVP_R_CACHE_CONSTANTS_FAILED 225 +#define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +#define EVP_R_CANNOT_GET_PARAMETERS 197 +#define EVP_R_CANNOT_SET_PARAMETERS 198 +#define EVP_R_CIPHER_NOT_GCM_MODE 184 +#define EVP_R_CIPHER_PARAMETER_ERROR 122 +#define EVP_R_COMMAND_NOT_SUPPORTED 147 +#define EVP_R_CONFLICTING_ALGORITHM_NAME 201 +#define EVP_R_COPY_ERROR 173 +#define EVP_R_CTRL_NOT_IMPLEMENTED 132 +#define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +#define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +#define EVP_R_DECODE_ERROR 114 +#define EVP_R_DEFAULT_QUERY_PARSE_ERROR 210 +#define EVP_R_DIFFERENT_KEY_TYPES 101 +#define EVP_R_DIFFERENT_PARAMETERS 153 +#define EVP_R_ERROR_LOADING_SECTION 165 +#define EVP_R_EXPECTING_AN_HMAC_KEY 174 +#define EVP_R_EXPECTING_AN_RSA_KEY 127 +#define EVP_R_EXPECTING_A_DH_KEY 128 +#define EVP_R_EXPECTING_A_DSA_KEY 129 +#define EVP_R_EXPECTING_A_ECX_KEY 219 +#define EVP_R_EXPECTING_A_EC_KEY 142 +#define EVP_R_EXPECTING_A_POLY1305_KEY 164 +#define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +#define EVP_R_FINAL_ERROR 188 +#define EVP_R_GENERATE_ERROR 214 +#define EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED 229 +#define EVP_R_GET_RAW_KEY_FAILED 182 +#define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +#define EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS 204 +#define EVP_R_INACCESSIBLE_KEY 203 +#define EVP_R_INITIALIZATION_ERROR 134 +#define EVP_R_INPUT_NOT_INITIALIZED 111 +#define EVP_R_INVALID_CUSTOM_LENGTH 185 +#define EVP_R_INVALID_DIGEST 152 +#define EVP_R_INVALID_IV_LENGTH 194 +#define EVP_R_INVALID_KEY 163 +#define EVP_R_INVALID_KEY_LENGTH 130 +#define EVP_R_INVALID_LENGTH 221 +#define EVP_R_INVALID_NULL_ALGORITHM 218 +#define EVP_R_INVALID_OPERATION 148 +#define EVP_R_INVALID_PROVIDER_FUNCTIONS 193 +#define EVP_R_INVALID_SALT_LENGTH 186 +#define EVP_R_INVALID_SECRET_LENGTH 223 +#define EVP_R_INVALID_SEED_LENGTH 220 +#define EVP_R_INVALID_VALUE 222 +#define EVP_R_KEYMGMT_EXPORT_FAILURE 205 +#define EVP_R_KEY_SETUP_FAILED 180 +#define EVP_R_LOCKING_NOT_SUPPORTED 213 +#define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +#define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +#define EVP_R_METHOD_NOT_SUPPORTED 144 +#define EVP_R_MISSING_PARAMETERS 103 +#define EVP_R_NOT_ABLE_TO_COPY_CTX 190 +#define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +#define EVP_R_NO_CIPHER_SET 131 +#define EVP_R_NO_DEFAULT_DIGEST 158 +#define EVP_R_NO_DIGEST_SET 139 +#define EVP_R_NO_IMPORT_FUNCTION 206 +#define EVP_R_NO_KEYMGMT_AVAILABLE 199 +#define EVP_R_NO_KEYMGMT_PRESENT 196 +#define EVP_R_NO_KEY_SET 154 +#define EVP_R_NO_OPERATION_SET 149 +#define EVP_R_NULL_MAC_PKEY_CTX 208 +#define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +#define EVP_R_OPERATION_NOT_INITIALIZED 151 +#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE 226 +#define EVP_R_OUTPUT_WOULD_OVERFLOW 202 +#define EVP_R_PARAMETER_TOO_LARGE 187 +#define EVP_R_PARTIALLY_OVERLAPPING 162 +#define EVP_R_PBKDF2_ERROR 181 +#define EVP_R_PIPELINE_NOT_SUPPORTED 230 +#define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +#define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +#define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +#define EVP_R_PROVIDER_ASYM_CIPHER_FAILURE 232 +#define EVP_R_PROVIDER_ASYM_CIPHER_NOT_SUPPORTED 235 +#define EVP_R_PROVIDER_KEYMGMT_FAILURE 233 +#define EVP_R_PROVIDER_KEYMGMT_NOT_SUPPORTED 236 +#define EVP_R_PROVIDER_SIGNATURE_FAILURE 234 +#define EVP_R_PROVIDER_SIGNATURE_NOT_SUPPORTED 237 +#define EVP_R_PUBLIC_KEY_NOT_RSA 106 +#define EVP_R_SETTING_XOF_FAILED 227 +#define EVP_R_SET_DEFAULT_PROPERTY_FAILURE 209 +#define EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE 228 +#define EVP_R_TOO_MANY_PIPES 231 +#define EVP_R_TOO_MANY_RECORDS 183 +#define EVP_R_UNABLE_TO_ENABLE_LOCKING 212 +#define EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE 215 +#define EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH 216 +#define EVP_R_UNABLE_TO_LOCK_CONTEXT 211 +#define EVP_R_UNABLE_TO_SET_CALLBACKS 217 +#define EVP_R_UNKNOWN_BITS 166 +#define EVP_R_UNKNOWN_CIPHER 160 +#define EVP_R_UNKNOWN_DIGEST 161 +#define EVP_R_UNKNOWN_KEY_TYPE 207 +#define EVP_R_UNKNOWN_MAX_SIZE 167 +#define EVP_R_UNKNOWN_OPTION 169 +#define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +#define EVP_R_UNKNOWN_SECURITY_BITS 168 +#define EVP_R_UNSUPPORTED_ALGORITHM 156 +#define EVP_R_UNSUPPORTED_CIPHER 107 +#define EVP_R_UNSUPPORTED_KEYLENGTH 123 +#define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +#define EVP_R_UNSUPPORTED_KEY_SIZE 108 +#define EVP_R_UNSUPPORTED_KEY_TYPE 224 +#define EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS 135 +#define EVP_R_UNSUPPORTED_PRF 125 +#define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +#define EVP_R_UNSUPPORTED_SALT_TYPE 126 +#define EVP_R_UPDATE_ERROR 189 +#define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +#define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +#define EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE 191 +#define EVP_R_XTS_DUPLICATED_KEYS 192 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/fips_names.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/fips_names.h new file mode 100644 index 0000000..3e310bb --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/fips_names.h @@ -0,0 +1,50 @@ +/* + * Copyright 2019-2024 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_FIPS_NAMES_H +#define OPENSSL_FIPS_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Parameter names that the FIPS Provider defines + * All parameters are of type: OSSL_PARAM_UTF8_STRING + */ + +/* The following 4 Parameters are used for FIPS Self Testing */ + +/* The calculated MAC of the module file */ +#define OSSL_PROV_FIPS_PARAM_MODULE_MAC "module-mac" +/* The Version number for the fips install process */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_VERSION "install-version" +/* The calculated MAC of the install status indicator */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_MAC "install-mac" +/* The install status indicator */ +#define OSSL_PROV_FIPS_PARAM_INSTALL_STATUS "install-status" + +/* + * A boolean that determines if the FIPS conditional test errors result in + * the module entering an error state. + * Type: OSSL_PARAM_UTF8_STRING + */ +#define OSSL_PROV_FIPS_PARAM_CONDITIONAL_ERRORS "conditional-errors" + +/* The following are provided for backwards compatibility */ +#define OSSL_PROV_FIPS_PARAM_SECURITY_CHECKS OSSL_PROV_PARAM_SECURITY_CHECKS +#define OSSL_PROV_FIPS_PARAM_TLS1_PRF_EMS_CHECK OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK +#define OSSL_PROV_FIPS_PARAM_DRBG_TRUNC_DIGEST OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_FIPS_NAMES_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/fipskey.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/fipskey.h new file mode 100644 index 0000000..d605d11 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/fipskey.h @@ -0,0 +1,47 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/fipskey.h.in + * + * Copyright 2020-2024 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_FIPSKEY_H +#define OPENSSL_FIPSKEY_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The FIPS validation HMAC key, usable as an array initializer. + */ +/* clang-format off */ +#define FIPS_KEY_ELEMENTS \ + 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 +/* clang-format on */ + +/* + * The FIPS validation key, as a string. + */ +/* clang-format off */ +#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* clang-format on */ + +/* + * The FIPS provider vendor name, as a string. + */ +/* clang-format off */ +#define FIPS_VENDOR "OpenSSL non-compliant FIPS Provider" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/hmac.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/hmac.h new file mode 100644 index 0000000..cb866b2 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/hmac.h @@ -0,0 +1,62 @@ +/* + * 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_HMAC_H +#define OPENSSL_HMAC_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_HMAC_H +#endif + +#include + +#include + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HMAC_MAX_MD_CBLOCK 200 /* Deprecated */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 size_t HMAC_size(const HMAC_CTX *e); +OSSL_DEPRECATEDIN_3_0 HMAC_CTX *HMAC_CTX_new(void); +OSSL_DEPRECATEDIN_3_0 int HMAC_CTX_reset(HMAC_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_free(HMAC_CTX *ctx); +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur int HMAC_Init(HMAC_CTX *ctx, + const void *key, int len, + const EVP_MD *md); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +OSSL_DEPRECATEDIN_3_0 int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +OSSL_DEPRECATEDIN_3_0 __owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); +#endif + +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *data, size_t data_len, + unsigned char *md, unsigned int *md_len); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/hpke.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/hpke.h new file mode 100644 index 0000000..12496ff --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/hpke.h @@ -0,0 +1,169 @@ +/* + * Copyright 2022-2024 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 + */ + +/* APIs and data structures for HPKE (RFC9180) */ +#ifndef OSSL_HPKE_H +#define OSSL_HPKE_H +#pragma once + +#include + +/* HPKE modes */ +#define OSSL_HPKE_MODE_BASE 0 /* Base mode */ +#define OSSL_HPKE_MODE_PSK 1 /* Pre-shared key mode */ +#define OSSL_HPKE_MODE_AUTH 2 /* Authenticated mode */ +#define OSSL_HPKE_MODE_PSKAUTH 3 /* PSK+authenticated mode */ + +/* + * Max for ikm, psk, pskid, info and exporter contexts. + * RFC9180, section 7.2.1 RECOMMENDS 64 octets but we have test vectors from + * Appendix A.6.1 with a 66 octet IKM so we'll allow that. + */ +#define OSSL_HPKE_MAX_PARMLEN 66 +#define OSSL_HPKE_MIN_PSKLEN 32 +#define OSSL_HPKE_MAX_INFOLEN 1024 + +/* + * The (16bit) HPKE algorithm ID IANA codepoints + * If/when new IANA codepoints are added there are tables in + * crypto/hpke/hpke_util.c that must also be updated. + */ +#define OSSL_HPKE_KEM_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_KEM_ID_P256 0x0010 /* NIST P-256 */ +#define OSSL_HPKE_KEM_ID_P384 0x0011 /* NIST P-384 */ +#define OSSL_HPKE_KEM_ID_P521 0x0012 /* NIST P-521 */ +#define OSSL_HPKE_KEM_ID_X25519 0x0020 /* Curve25519 */ +#define OSSL_HPKE_KEM_ID_X448 0x0021 /* Curve448 */ + +#define OSSL_HPKE_KDF_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA256 0x0001 /* HKDF-SHA256 */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA384 0x0002 /* HKDF-SHA384 */ +#define OSSL_HPKE_KDF_ID_HKDF_SHA512 0x0003 /* HKDF-SHA512 */ + +#define OSSL_HPKE_AEAD_ID_RESERVED 0x0000 /* not used */ +#define OSSL_HPKE_AEAD_ID_AES_GCM_128 0x0001 /* AES-GCM-128 */ +#define OSSL_HPKE_AEAD_ID_AES_GCM_256 0x0002 /* AES-GCM-256 */ +#define OSSL_HPKE_AEAD_ID_CHACHA_POLY1305 0x0003 /* Chacha20-Poly1305 */ +#define OSSL_HPKE_AEAD_ID_EXPORTONLY 0xFFFF /* export-only fake ID */ + +/* strings for suite components */ +#define OSSL_HPKE_KEMSTR_P256 "P-256" /* KEM id 0x10 */ +#define OSSL_HPKE_KEMSTR_P384 "P-384" /* KEM id 0x11 */ +#define OSSL_HPKE_KEMSTR_P521 "P-521" /* KEM id 0x12 */ +#define OSSL_HPKE_KEMSTR_X25519 "X25519" /* KEM id 0x20 */ +#define OSSL_HPKE_KEMSTR_X448 "X448" /* KEM id 0x21 */ +#define OSSL_HPKE_KDFSTR_256 "hkdf-sha256" /* KDF id 1 */ +#define OSSL_HPKE_KDFSTR_384 "hkdf-sha384" /* KDF id 2 */ +#define OSSL_HPKE_KDFSTR_512 "hkdf-sha512" /* KDF id 3 */ +#define OSSL_HPKE_AEADSTR_AES128GCM "aes-128-gcm" /* AEAD id 1 */ +#define OSSL_HPKE_AEADSTR_AES256GCM "aes-256-gcm" /* AEAD id 2 */ +#define OSSL_HPKE_AEADSTR_CP "chacha20-poly1305" /* AEAD id 3 */ +#define OSSL_HPKE_AEADSTR_EXP "exporter" /* AEAD id 0xff */ + +/* + * Roles for use in creating an OSSL_HPKE_CTX, most + * important use of this is to control nonce reuse. + */ +#define OSSL_HPKE_ROLE_SENDER 0 +#define OSSL_HPKE_ROLE_RECEIVER 1 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + uint16_t kem_id; /* Key Encapsulation Method id */ + uint16_t kdf_id; /* Key Derivation Function id */ + uint16_t aead_id; /* AEAD alg id */ +} OSSL_HPKE_SUITE; + +/** + * Suite constants, use this like: + * OSSL_HPKE_SUITE myvar = OSSL_HPKE_SUITE_DEFAULT; + */ +#ifndef OPENSSL_NO_ECX +#define OSSL_HPKE_SUITE_DEFAULT \ + { \ + OSSL_HPKE_KEM_ID_X25519, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#else +#define OSSL_HPKE_SUITE_DEFAULT \ + { \ + OSSL_HPKE_KEM_ID_P256, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#endif + +typedef struct ossl_hpke_ctx_st OSSL_HPKE_CTX; + +OSSL_HPKE_CTX *OSSL_HPKE_CTX_new(int mode, OSSL_HPKE_SUITE suite, int role, + OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_HPKE_CTX_free(OSSL_HPKE_CTX *ctx); + +int OSSL_HPKE_encap(OSSL_HPKE_CTX *ctx, + unsigned char *enc, size_t *enclen, + const unsigned char *pub, size_t publen, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_seal(OSSL_HPKE_CTX *ctx, + unsigned char *ct, size_t *ctlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *pt, size_t ptlen); + +int OSSL_HPKE_keygen(OSSL_HPKE_SUITE suite, + unsigned char *pub, size_t *publen, EVP_PKEY **priv, + const unsigned char *ikm, size_t ikmlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_decap(OSSL_HPKE_CTX *ctx, + const unsigned char *enc, size_t enclen, + EVP_PKEY *recippriv, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_open(OSSL_HPKE_CTX *ctx, + unsigned char *pt, size_t *ptlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *ct, size_t ctlen); + +int OSSL_HPKE_export(OSSL_HPKE_CTX *ctx, + unsigned char *secret, + size_t secretlen, + const unsigned char *label, + size_t labellen); + +int OSSL_HPKE_CTX_set1_authpriv(OSSL_HPKE_CTX *ctx, EVP_PKEY *priv); +int OSSL_HPKE_CTX_set1_authpub(OSSL_HPKE_CTX *ctx, + const unsigned char *pub, + size_t publen); +int OSSL_HPKE_CTX_set1_psk(OSSL_HPKE_CTX *ctx, + const char *pskid, + const unsigned char *psk, size_t psklen); + +int OSSL_HPKE_CTX_set1_ikme(OSSL_HPKE_CTX *ctx, + const unsigned char *ikme, size_t ikmelen); + +int OSSL_HPKE_CTX_set_seq(OSSL_HPKE_CTX *ctx, uint64_t seq); +int OSSL_HPKE_CTX_get_seq(OSSL_HPKE_CTX *ctx, uint64_t *seq); + +int OSSL_HPKE_suite_check(OSSL_HPKE_SUITE suite); +int OSSL_HPKE_get_grease_value(const OSSL_HPKE_SUITE *suite_in, + OSSL_HPKE_SUITE *suite, + unsigned char *enc, size_t *enclen, + unsigned char *ct, size_t ctlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_str2suite(const char *str, OSSL_HPKE_SUITE *suite); +size_t OSSL_HPKE_get_ciphertext_size(OSSL_HPKE_SUITE suite, size_t clearlen); +size_t OSSL_HPKE_get_public_encap_size(OSSL_HPKE_SUITE suite); +size_t OSSL_HPKE_get_recommended_ikmelen(OSSL_HPKE_SUITE suite); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/http.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/http.h new file mode 100644 index 0000000..91aa923 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/http.h @@ -0,0 +1,117 @@ +/* + * Copyright 2000-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Siemens AG 2018-2020 + * + * 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_HTTP_H +#define OPENSSL_HTTP_H +#pragma once + +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_HTTP_NAME "http" +#define OSSL_HTTPS_NAME "https" +#define OSSL_HTTP_PREFIX OSSL_HTTP_NAME "://" +#define OSSL_HTTPS_PREFIX OSSL_HTTPS_NAME "://" +#define OSSL_HTTP_PORT "80" +#define OSSL_HTTPS_PORT "443" +#define OPENSSL_NO_PROXY "NO_PROXY" +#define OPENSSL_HTTP_PROXY "HTTP_PROXY" +#define OPENSSL_HTTPS_PROXY "HTTPS_PROXY" + +/* We want to have this even in case of OPENSSL_NO_HTTP */ +int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); + +#ifndef OPENSSL_NO_HTTP + +#define OSSL_HTTP_DEFAULT_MAX_LINE_LEN (4 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_RESP_LEN (100 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_CRL_LEN (32 * 1024 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_RESP_HDR_LINES 256 + +/* Low-level HTTP API */ +OSSL_HTTP_REQ_CTX *OSSL_HTTP_REQ_CTX_new(BIO *wbio, BIO *rbio, int buf_size); +void OSSL_HTTP_REQ_CTX_free(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_set_request_line(OSSL_HTTP_REQ_CTX *rctx, int method_POST, + const char *server, const char *port, + const char *path); +int OSSL_HTTP_REQ_CTX_add1_header(OSSL_HTTP_REQ_CTX *rctx, + const char *name, const char *value); +int OSSL_HTTP_REQ_CTX_set_expected(OSSL_HTTP_REQ_CTX *rctx, + const char *content_type, int asn1, + int timeout, int keep_alive); +int OSSL_HTTP_REQ_CTX_set1_req(OSSL_HTTP_REQ_CTX *rctx, const char *content_type, + const ASN1_ITEM *it, const ASN1_VALUE *req); +int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_nbio_d2i(OSSL_HTTP_REQ_CTX *rctx, + ASN1_VALUE **pval, const ASN1_ITEM *it); +BIO *OSSL_HTTP_REQ_CTX_exchange(OSSL_HTTP_REQ_CTX *rctx); +BIO *OSSL_HTTP_REQ_CTX_get0_mem_bio(const OSSL_HTTP_REQ_CTX *rctx); +size_t OSSL_HTTP_REQ_CTX_get_resp_len(const OSSL_HTTP_REQ_CTX *rctx); +void OSSL_HTTP_REQ_CTX_set_max_response_length(OSSL_HTTP_REQ_CTX *rctx, + unsigned long len); +void OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines(OSSL_HTTP_REQ_CTX *rctx, + size_t count); +int OSSL_HTTP_is_alive(const OSSL_HTTP_REQ_CTX *rctx); + +/* High-level HTTP API */ +typedef BIO *(*OSSL_HTTP_bio_cb_t)(BIO *bio, void *arg, int connect, int detail); +OSSL_HTTP_REQ_CTX *OSSL_HTTP_open(const char *server, const char *port, + const char *proxy, const char *no_proxy, + int use_ssl, BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, int overall_timeout); +int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port, + const char *proxyuser, const char *proxypass, + int timeout, BIO *bio_err, const char *prog); +int OSSL_HTTP_set1_request(OSSL_HTTP_REQ_CTX *rctx, const char *path, + const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +BIO *OSSL_HTTP_exchange(OSSL_HTTP_REQ_CTX *rctx, char **redirection_url); +BIO *OSSL_HTTP_get(const char *url, const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout); +BIO *OSSL_HTTP_transfer(OSSL_HTTP_REQ_CTX **prctx, + const char *server, const char *port, + const char *path, int use_ssl, + const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +int OSSL_HTTP_close(OSSL_HTTP_REQ_CTX *rctx, int ok); + +/* Auxiliary functions */ +int OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); +const char *OSSL_HTTP_adapt_proxy(const char *proxy, const char *no_proxy, + const char *server, int use_ssl); + +#endif /* !defined(OPENSSL_NO_HTTP) */ +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_HTTP_H) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/httperr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/httperr.h new file mode 100644 index 0000000..4c1cc6a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/httperr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2026 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_HTTPERR_H +#define OPENSSL_HTTPERR_H +#pragma once + +#include +#include +#include + +/* + * HTTP reason codes. + */ +#define HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN 108 +#define HTTP_R_CONNECT_FAILURE 100 +#define HTTP_R_CONTENT_TYPE_MISMATCH 131 +#define HTTP_R_ERROR_PARSING_ASN1_LENGTH 109 +#define HTTP_R_ERROR_PARSING_CONTENT_LENGTH 119 +#define HTTP_R_ERROR_PARSING_URL 101 +#define HTTP_R_ERROR_RECEIVING 103 +#define HTTP_R_ERROR_SENDING 102 +#define HTTP_R_FAILED_READING_DATA 128 +#define HTTP_R_HEADER_PARSE_ERROR 126 +#define HTTP_R_INCONSISTENT_CONTENT_LENGTH 120 +#define HTTP_R_INVALID_PORT_NUMBER 123 +#define HTTP_R_INVALID_URL_PATH 125 +#define HTTP_R_INVALID_URL_SCHEME 124 +#define HTTP_R_MAX_RESP_LEN_EXCEEDED 117 +#define HTTP_R_MISSING_ASN1_ENCODING 110 +#define HTTP_R_MISSING_CONTENT_TYPE 121 +#define HTTP_R_MISSING_REDIRECT_LOCATION 111 +#define HTTP_R_RECEIVED_ERROR 105 +#define HTTP_R_RECEIVED_WRONG_HTTP_VERSION 106 +#define HTTP_R_REDIRECTION_FROM_HTTPS_TO_HTTP 112 +#define HTTP_R_REDIRECTION_NOT_ENABLED 116 +#define HTTP_R_RESPONSE_LINE_TOO_LONG 113 +#define HTTP_R_RESPONSE_PARSE_ERROR 104 +#define HTTP_R_RESPONSE_TOO_MANY_HDRLINES 130 +#define HTTP_R_RETRY_TIMEOUT 129 +#define HTTP_R_SERVER_CANCELED_CONNECTION 127 +#define HTTP_R_SOCK_NOT_SUPPORTED 122 +#define HTTP_R_STATUS_CODE_UNSUPPORTED 114 +#define HTTP_R_TLS_NOT_ENABLED 107 +#define HTTP_R_TOO_MANY_REDIRECTIONS 115 +#define HTTP_R_UNEXPECTED_CONTENT_TYPE 118 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/idea.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/idea.h new file mode 100644 index 0000000..674a941 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/idea.h @@ -0,0 +1,82 @@ +/* + * 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_IDEA_H +#define OPENSSL_IDEA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_IDEA_H +#endif + +#include + +#ifndef OPENSSL_NO_IDEA +#ifdef __cplusplus +extern "C" { +#endif + +#define IDEA_BLOCK 8 +#define IDEA_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef unsigned int IDEA_INT; + +#define IDEA_ENCRYPT 1 +#define IDEA_DECRYPT 0 + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *IDEA_options(void); +OSSL_DEPRECATEDIN_3_0 void IDEA_ecb_encrypt(const unsigned char *in, + unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_encrypt_key(const unsigned char *key, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, + IDEA_KEY_SCHEDULE *dk); +OSSL_DEPRECATEDIN_3_0 void IDEA_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num); +OSSL_DEPRECATEDIN_3_0 void IDEA_encrypt(unsigned long *in, + IDEA_KEY_SCHEDULE *ks); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define idea_options IDEA_options +#define idea_ecb_encrypt IDEA_ecb_encrypt +#define idea_set_encrypt_key IDEA_set_encrypt_key +#define idea_set_decrypt_key IDEA_set_decrypt_key +#define idea_cbc_encrypt IDEA_cbc_encrypt +#define idea_cfb64_encrypt IDEA_cfb64_encrypt +#define idea_ofb64_encrypt IDEA_ofb64_encrypt +#define idea_encrypt IDEA_encrypt +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/indicator.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/indicator.h new file mode 100644 index 0000000..66d6f42 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/indicator.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024 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_INDICATOR_H +#define OPENSSL_INDICATOR_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef int(OSSL_INDICATOR_CALLBACK)(const char *type, const char *desc, + const OSSL_PARAM params[]); + +void OSSL_INDICATOR_set_callback(OSSL_LIB_CTX *libctx, + OSSL_INDICATOR_CALLBACK *cb); +void OSSL_INDICATOR_get_callback(OSSL_LIB_CTX *libctx, + OSSL_INDICATOR_CALLBACK **cb); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_INDICATOR_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/kdf.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/kdf.h new file mode 100644 index 0000000..f3267ea --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/kdf.h @@ -0,0 +1,141 @@ +/* + * Copyright 2016-2025 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_KDF_H +#define OPENSSL_KDF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_KDF_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int EVP_KDF_up_ref(EVP_KDF *kdf); +void EVP_KDF_free(EVP_KDF *kdf); +EVP_KDF *EVP_KDF_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); + +EVP_KDF_CTX *EVP_KDF_CTX_new(EVP_KDF *kdf); +void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx); +EVP_KDF_CTX *EVP_KDF_CTX_dup(const EVP_KDF_CTX *src); +const char *EVP_KDF_get0_description(const EVP_KDF *kdf); +int EVP_KDF_is_a(const EVP_KDF *kdf, const char *name); +const char *EVP_KDF_get0_name(const EVP_KDF *kdf); +const OSSL_PROVIDER *EVP_KDF_get0_provider(const EVP_KDF *kdf); +const EVP_KDF *EVP_KDF_CTX_kdf(EVP_KDF_CTX *ctx); + +void EVP_KDF_CTX_reset(EVP_KDF_CTX *ctx); +size_t EVP_KDF_CTX_get_kdf_size(EVP_KDF_CTX *ctx); +int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_KDF_CTX_set_SKEY(EVP_KDF_CTX *ctx, EVP_SKEY *key, const char *paramname); +EVP_SKEY *EVP_KDF_derive_SKEY(EVP_KDF_CTX *ctx, EVP_SKEYMGMT *mgmt, + const char *key_type, const char *propquery, + size_t keylen, const OSSL_PARAM params[]); +int EVP_KDF_get_params(EVP_KDF *kdf, OSSL_PARAM params[]); +int EVP_KDF_CTX_get_params(EVP_KDF_CTX *ctx, OSSL_PARAM params[]); +int EVP_KDF_CTX_set_params(EVP_KDF_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_KDF_gettable_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_gettable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_settable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_CTX_gettable_params(EVP_KDF_CTX *ctx); +const OSSL_PARAM *EVP_KDF_CTX_settable_params(EVP_KDF_CTX *ctx); + +void EVP_KDF_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KDF *kdf, void *arg), + void *arg); +int EVP_KDF_names_do_all(const EVP_KDF *kdf, + void (*fn)(const char *name, void *data), + void *data); + +#define EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND 0 +#define EVP_KDF_HKDF_MODE_EXTRACT_ONLY 1 +#define EVP_KDF_HKDF_MODE_EXPAND_ONLY 2 + +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV 65 +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_SRV_TO_CLI 66 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_CLI_TO_SRV 67 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_SRV_TO_CLI 68 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_CLI_TO_SRV 69 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_SRV_TO_CLI 70 + +/**** The legacy PKEY-based KDF API follows. ****/ + +#define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) +#define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_TLS_SEED (EVP_PKEY_ALG_CTRL + 2) +#define EVP_PKEY_CTRL_HKDF_MD (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_HKDF_SALT (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_HKDF_KEY (EVP_PKEY_ALG_CTRL + 5) +#define EVP_PKEY_CTRL_HKDF_INFO (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_HKDF_MODE (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_PASS (EVP_PKEY_ALG_CTRL + 8) +#define EVP_PKEY_CTRL_SCRYPT_SALT (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_SCRYPT_N (EVP_PKEY_ALG_CTRL + 10) +#define EVP_PKEY_CTRL_SCRYPT_R (EVP_PKEY_ALG_CTRL + 11) +#define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) +#define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) + +#define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND \ + EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND +#define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY \ + EVP_KDF_HKDF_MODE_EXTRACT_ONLY +#define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY \ + EVP_KDF_HKDF_MODE_EXPAND_ONLY + +int EVP_PKEY_CTX_set_tls1_prf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_tls1_prf_secret(EVP_PKEY_CTX *pctx, + const unsigned char *sec, int seclen); + +int EVP_PKEY_CTX_add1_tls1_prf_seed(EVP_PKEY_CTX *pctx, + const unsigned char *seed, int seedlen); + +int EVP_PKEY_CTX_set_hkdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_hkdf_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set1_hkdf_key(EVP_PKEY_CTX *ctx, + const unsigned char *key, int keylen); + +int EVP_PKEY_CTX_add1_hkdf_info(EVP_PKEY_CTX *ctx, + const unsigned char *info, int infolen); + +int EVP_PKEY_CTX_set_hkdf_mode(EVP_PKEY_CTX *ctx, int mode); +#define EVP_PKEY_CTX_hkdf_mode EVP_PKEY_CTX_set_hkdf_mode + +int EVP_PKEY_CTX_set1_pbe_pass(EVP_PKEY_CTX *ctx, const char *pass, + int passlen); + +int EVP_PKEY_CTX_set1_scrypt_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set_scrypt_N(EVP_PKEY_CTX *ctx, uint64_t n); + +int EVP_PKEY_CTX_set_scrypt_r(EVP_PKEY_CTX *ctx, uint64_t r); + +int EVP_PKEY_CTX_set_scrypt_p(EVP_PKEY_CTX *ctx, uint64_t p); + +int EVP_PKEY_CTX_set_scrypt_maxmem_bytes(EVP_PKEY_CTX *ctx, + uint64_t maxmem_bytes); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/kdferr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/kdferr.h new file mode 100644 index 0000000..a2c1f24 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/kdferr.h @@ -0,0 +1,16 @@ +/* + * 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_KDFERR_H +#define OPENSSL_KDFERR_H +#pragma once + +#include + +#endif /* !defined(OPENSSL_KDFERR_H) */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/lhash.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/lhash.h new file mode 100644 index 0000000..dab9372 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/lhash.h @@ -0,0 +1,417 @@ +/* + * Copyright 1995-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef OPENSSL_LHASH_H +#define OPENSSL_LHASH_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_LHASH_H +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC)(const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK)(const void *, const void *, OPENSSL_LH_COMPFUNC cfn); +typedef unsigned long (*OPENSSL_LH_HASHFUNC)(const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK)(const void *, OPENSSL_LH_HASHFUNC hfn); +typedef void (*OPENSSL_LH_DOALL_FUNC)(void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK)(void *, OPENSSL_LH_DOALL_FUNC doall); +typedef void (*OPENSSL_LH_DOALL_FUNCARG)(void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK)(void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +#define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +#define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) \ + { \ + const o_type *a = arg; \ + return name##_hash(a); \ + } +#define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +#define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +#define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) \ + { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a, b); \ + } +#define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +#define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +#define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) \ + { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); \ + } +#define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + +#define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void OPENSSL_LH_flush(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +#ifndef OPENSSL_NO_STDIO +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _LHASH OPENSSL_LHASH +#define LHASH_NODE OPENSSL_LH_NODE +#define lh_error OPENSSL_LH_error +#define lh_new OPENSSL_LH_new +#define lh_free OPENSSL_LH_free +#define lh_insert OPENSSL_LH_insert +#define lh_delete OPENSSL_LH_delete +#define lh_retrieve OPENSSL_LH_retrieve +#define lh_doall OPENSSL_LH_doall +#define lh_doall_arg OPENSSL_LH_doall_arg +#define lh_strhash OPENSSL_LH_strhash +#define lh_num_items OPENSSL_LH_num_items +#ifndef OPENSSL_NO_STDIO +#define lh_stats OPENSSL_LH_stats +#define lh_node_stats OPENSSL_LH_node_stats +#define lh_node_usage_stats OPENSSL_LH_node_usage_stats +#endif +#define lh_stats_bio OPENSSL_LH_stats_bio +#define lh_node_stats_bio OPENSSL_LH_node_stats_bio +#define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +#endif + +/* Type checking... */ + +#define LHASH_OF(type) struct lhash_st_##type + +/* Helper macro for internal use */ +#define DEFINE_LHASH_OF_INTERNAL(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ + typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ + typedef void (*lh_##type##_doallfunc)(type * a); \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type * \ + ossl_check_##type##_lh_plain_type(type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + { \ + return (const OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + { \ + return (OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + { \ + return (OPENSSL_LH_COMPFUNC)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + { \ + return (OPENSSL_LH_HASHFUNC)hfn; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + { \ + return (OPENSSL_LH_DOALL_FUNC)dfn; \ + } \ + LHASH_OF(type) + +#ifndef OPENSSL_NO_DEPRECATED_3_1 +#define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +#else +#define DEFINE_LHASH_OF_DEPRECATED(type) +#endif + +#define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ + (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ + } \ + LHASH_OF(type) + +#define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ + } \ + LHASH_OF(type) + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) +#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) +#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) +DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) +#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) +#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/macros.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/macros.h new file mode 100644 index 0000000..598d3fc --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/macros.h @@ -0,0 +1,361 @@ +/* + * Copyright 2019-2026 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_MACROS_H +#define OPENSSL_MACROS_H +#pragma once + +#include +#include + +/* Helper macros for CPP string composition */ +#define OPENSSL_MSTR_HELPER(x) #x +#define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x) + +/* + * Sometimes OPENSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Generic deprecation macro + * + * If OPENSSL_SUPPRESS_DEPRECATED is defined, then OSSL_DEPRECATED and + * OSSL_DEPRECATED_FOR become no-ops + */ +#ifndef OSSL_DEPRECATED +#undef OSSL_DEPRECATED_FOR +#ifndef OPENSSL_SUPPRESS_DEPRECATED +#if defined(_MSC_VER) +/* + * MSVC supports __declspec(deprecated) since MSVC 2003 (13.10), + * and __declspec(deprecated(message)) since MSVC 2005 (14.00) + */ +#if _MSC_VER >= 1400 +#define OSSL_DEPRECATED(since) \ + __declspec(deprecated("Since OpenSSL " #since)) +#define OSSL_DEPRECATED_FOR(since, message) \ + __declspec(deprecated("Since OpenSSL " #since ";" message)) +#elif _MSC_VER >= 1310 +#define OSSL_DEPRECATED(since) __declspec(deprecated) +#define OSSL_DEPRECATED_FOR(since, message) __declspec(deprecated) +#endif +#elif defined(__GNUC__) +/* + * According to GCC documentation, deprecations with message appeared in + * GCC 4.5.0 + */ +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +#define OSSL_DEPRECATED(since) \ + __attribute__((deprecated("Since OpenSSL " #since))) +#define OSSL_DEPRECATED_FOR(since, message) \ + __attribute__((deprecated("Since OpenSSL " #since ";" message))) +#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +#define OSSL_DEPRECATED(since) __attribute__((deprecated)) +#define OSSL_DEPRECATED_FOR(since, message) __attribute__((deprecated)) +#endif +#elif defined(__SUNPRO_C) +#if (__SUNPRO_C >= 0x5130) +#define OSSL_DEPRECATED(since) __attribute__((deprecated)) +#define OSSL_DEPRECATED_FOR(since, message) __attribute__((deprecated)) +#endif +#endif +#endif +#endif + +/* + * Still not defined? Then define no-op macros. This means these macros + * are unsuitable for use in a typedef. + */ +#ifndef OSSL_DEPRECATED +#define OSSL_DEPRECATED(since) extern +#define OSSL_DEPRECATED_FOR(since, message) extern +#endif + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . If this is + * undefined, the value of the macro OPENSSL_CONFIGURED_API (defined in + * ) is the default. + * + * For any version number up until version 1.1.x, is expected to be + * the calculated version number 0xMNNFFPPSL. + * For version numbers 3.0 and on, is expected to be a computation + * of the major and minor numbers in decimal using this formula: + * + * MAJOR * 10000 + MINOR * 100 + * + * So version 3.0 becomes 30000, version 3.2 becomes 30200, etc. + */ + +/* + * We use the OPENSSL_API_COMPAT value to define API level macros. These + * macros are used to enable or disable features at that API version boundary. + */ + +#ifdef OPENSSL_API_LEVEL +#error "OPENSSL_API_LEVEL must not be defined by application" +#endif + +/* + * We figure out what API level was intended by simple numeric comparison. + * The lowest old style number we recognise is 0x00908000L, so we take some + * safety margin and assume that anything below 0x00900000L is a new style + * number. This allows new versions up to and including v943.71.83. + */ +#ifdef OPENSSL_API_COMPAT +#if OPENSSL_API_COMPAT < 0x900000L +#define OPENSSL_API_LEVEL (OPENSSL_API_COMPAT) +#else +#define OPENSSL_API_LEVEL \ + (((OPENSSL_API_COMPAT >> 28) & 0xF) * 10000 \ + + ((OPENSSL_API_COMPAT >> 20) & 0xFF) * 100 \ + + ((OPENSSL_API_COMPAT >> 12) & 0xFF)) +#endif +#endif + +/* + * If OPENSSL_API_COMPAT wasn't given, we use default numbers to set + * the API compatibility level. + */ +#ifndef OPENSSL_API_LEVEL +#if OPENSSL_CONFIGURED_API > 0 +#define OPENSSL_API_LEVEL (OPENSSL_CONFIGURED_API) +#else +#define OPENSSL_API_LEVEL \ + (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +#endif +#endif + +#if OPENSSL_API_LEVEL > OPENSSL_CONFIGURED_API +#error "The requested API level higher than the configured API compatibility level" +#endif + +/* + * Check of sane values. + */ +/* Can't go higher than the current version. */ +#if OPENSSL_API_LEVEL > (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif +/* OpenSSL will have no version 2.y.z */ +#if OPENSSL_API_LEVEL < 30000 && OPENSSL_API_LEVEL >= 20000 +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif +/* Below 0.9.8 is unacceptably low */ +#if OPENSSL_API_LEVEL < 908 +#error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +#endif + +/* + * Define macros for deprecation and simulated removal purposes. + * + * The macros OSSL_DEPRECATEDIN_{major}_{minor} are always defined for + * all OpenSSL versions we care for. They can be used as attributes + * in function declarations where appropriate. + * + * The macros OPENSSL_NO_DEPRECATED_{major}_{minor} are defined for + * all OpenSSL versions up to or equal to the version given with + * OPENSSL_API_COMPAT. They are used as guards around anything that's + * deprecated up to that version, as an effect of the developer option + * 'no-deprecated'. + */ + +#undef OPENSSL_NO_DEPRECATED_3_6 +#undef OPENSSL_NO_DEPRECATED_3_5 +#undef OPENSSL_NO_DEPRECATED_3_4 +#undef OPENSSL_NO_DEPRECATED_3_1 +#undef OPENSSL_NO_DEPRECATED_3_0 +#undef OPENSSL_NO_DEPRECATED_1_1_1 +#undef OPENSSL_NO_DEPRECATED_1_1_0 +#undef OPENSSL_NO_DEPRECATED_1_0_2 +#undef OPENSSL_NO_DEPRECATED_1_0_1 +#undef OPENSSL_NO_DEPRECATED_1_0_0 +#undef OPENSSL_NO_DEPRECATED_0_9_8 + +#if OPENSSL_API_LEVEL >= 30600 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_6 OSSL_DEPRECATED(3.6) +#define OSSL_DEPRECATEDIN_3_6_FOR(msg) OSSL_DEPRECATED_FOR(3.6, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_6 +#endif +#else +#define OSSL_DEPRECATEDIN_3_6 +#define OSSL_DEPRECATEDIN_3_6_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30500 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_5 OSSL_DEPRECATED(3.5) +#define OSSL_DEPRECATEDIN_3_5_FOR(msg) OSSL_DEPRECATED_FOR(3.5, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_5 +#endif +#else +#define OSSL_DEPRECATEDIN_3_5 +#define OSSL_DEPRECATEDIN_3_5_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30400 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_4 OSSL_DEPRECATED(3.4) +#define OSSL_DEPRECATEDIN_3_4_FOR(msg) OSSL_DEPRECATED_FOR(3.4, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_4 +#endif +#else +#define OSSL_DEPRECATEDIN_3_4 +#define OSSL_DEPRECATEDIN_3_4_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30100 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_1 OSSL_DEPRECATED(3.1) +#define OSSL_DEPRECATEDIN_3_1_FOR(msg) OSSL_DEPRECATED_FOR(3.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_1 +#endif +#else +#define OSSL_DEPRECATEDIN_3_1 +#define OSSL_DEPRECATEDIN_3_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 30000 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_3_0 OSSL_DEPRECATED(3.0) +#define OSSL_DEPRECATEDIN_3_0_FOR(msg) OSSL_DEPRECATED_FOR(3.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_3_0 +#endif +#else +#define OSSL_DEPRECATEDIN_3_0 +#define OSSL_DEPRECATEDIN_3_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10101 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_1_1 OSSL_DEPRECATED(1.1.1) +#define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) OSSL_DEPRECATED_FOR(1.1.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_1_1 +#endif +#else +#define OSSL_DEPRECATEDIN_1_1_1 +#define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10100 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_1_0 OSSL_DEPRECATED(1.1.0) +#define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) OSSL_DEPRECATED_FOR(1.1.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_1_0 +#endif +#else +#define OSSL_DEPRECATEDIN_1_1_0 +#define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10002 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_2 OSSL_DEPRECATED(1.0.2) +#define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) OSSL_DEPRECATED_FOR(1.0.2, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_2 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_2 +#define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10001 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_1 OSSL_DEPRECATED(1.0.1) +#define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) OSSL_DEPRECATED_FOR(1.0.1, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_1 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_1 +#define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 10000 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_1_0_0 OSSL_DEPRECATED(1.0.0) +#define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) OSSL_DEPRECATED_FOR(1.0.0, msg) +#else +#define OPENSSL_NO_DEPRECATED_1_0_0 +#endif +#else +#define OSSL_DEPRECATEDIN_1_0_0 +#define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) +#endif +#if OPENSSL_API_LEVEL >= 908 +#ifndef OPENSSL_NO_DEPRECATED +#define OSSL_DEPRECATEDIN_0_9_8 OSSL_DEPRECATED(0.9.8) +#define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) OSSL_DEPRECATED_FOR(0.9.8, msg) +#else +#define OPENSSL_NO_DEPRECATED_0_9_8 +#endif +#else +#define OSSL_DEPRECATEDIN_0_9_8 +#define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) +#endif + +/* + * Make our own variants of __FILE__ and __LINE__, depending on configuration + */ + +#ifndef OPENSSL_FILE +#ifdef OPENSSL_NO_FILENAMES +#define OPENSSL_FILE "" +#define OPENSSL_LINE 0 +#else +#define OPENSSL_FILE __FILE__ +#define OPENSSL_LINE __LINE__ +#endif +#endif + +/* + * __func__ was standardized in C99, so for any compiler that claims + * to implement that language level or newer, we assume we can safely + * use that symbol. + * + * GNU C also provides __FUNCTION__ since version 2, which predates + * C99. We can, however, only use this if __STDC_VERSION__ exists, + * as it's otherwise not allowed according to ISO C standards (C90). + * (compiling with GNU C's -pedantic tells us so) + * + * If none of the above applies, we check if the compiler is MSVC, + * and use __FUNCTION__ if that's the case. + */ +#ifndef OPENSSL_FUNC +#if defined(__STDC_VERSION__) +#if __STDC_VERSION__ >= 199901L +#define OPENSSL_FUNC __func__ +#elif defined(__GNUC__) && __GNUC__ >= 2 +#define OPENSSL_FUNC __FUNCTION__ +#endif +#elif defined(_MSC_VER) +#define OPENSSL_FUNC __FUNCTION__ +#endif +/* + * If all these possibilities are exhausted, we give up and use a + * static string. + */ +#ifndef OPENSSL_FUNC +#define OPENSSL_FUNC "(unknown function)" +#endif +#endif + +#ifndef OSSL_CRYPTO_ALLOC +#if defined(__GNUC__) +#define OSSL_CRYPTO_ALLOC __attribute__((__malloc__)) +#elif defined(_MSC_VER) +#define OSSL_CRYPTO_ALLOC __declspec(restrict) +#else +#define OSSL_CRYPTO_ALLOC +#endif +#endif + +#endif /* OPENSSL_MACROS_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md2.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md2.h new file mode 100644 index 0000000..10d9a0f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md2.h @@ -0,0 +1,56 @@ +/* + * 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_MD2_H +#define OPENSSL_MD2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD2_H +#endif + +#include + +#ifndef OPENSSL_NO_MD2 +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD2_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +typedef unsigned char MD2_INT; + +#define MD2_BLOCK 16 + +typedef struct MD2state_st { + unsigned int num; + unsigned char data[MD2_BLOCK]; + MD2_INT cksm[MD2_BLOCK]; + MD2_INT state[MD2_BLOCK]; +} MD2_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *MD2_options(void); +OSSL_DEPRECATEDIN_3_0 int MD2_Init(MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD2_Update(MD2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MD2_Final(unsigned char *md, MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD2(const unsigned char *d, size_t n, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md4.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md4.h new file mode 100644 index 0000000..d60fe4a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md4.h @@ -0,0 +1,63 @@ +/* + * 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_MD4_H +#define OPENSSL_MD4_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD4_H +#endif + +#include + +#ifndef OPENSSL_NO_MD4 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD4_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD4_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define MD4_LONG unsigned int + +#define MD4_CBLOCK 64 +#define MD4_LBLOCK (MD4_CBLOCK / 4) + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD4_Init(MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD4_Update(MD4_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD4_Final(unsigned char *md, MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD4(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD4_Transform(MD4_CTX *c, const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md5.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md5.h new file mode 100644 index 0000000..0ec3d1c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/md5.h @@ -0,0 +1,62 @@ +/* + * 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_MD5_H +#define OPENSSL_MD5_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MD5_H +#endif + +#include + +#ifndef OPENSSL_NO_MD5 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MD5_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD5_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define MD5_LONG unsigned int + +#define MD5_CBLOCK 64 +#define MD5_LBLOCK (MD5_CBLOCK / 4) + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD5_Init(MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD5_Update(MD5_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD5_Final(unsigned char *md, MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD5(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD5_Transform(MD5_CTX *c, const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/mdc2.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/mdc2.h new file mode 100644 index 0000000..46c9652 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/mdc2.h @@ -0,0 +1,55 @@ +/* + * 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_MDC2_H +#define OPENSSL_MDC2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MDC2_H +#endif + +#include + +#ifndef OPENSSL_NO_MDC2 +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define MDC2_DIGEST_LENGTH 16 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define MDC2_BLOCK 8 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + unsigned int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MDC2_Init(MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MDC2_Update(MDC2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MDC2_Final(unsigned char *md, MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MDC2(const unsigned char *d, size_t n, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ml_kem.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ml_kem.h new file mode 100644 index 0000000..fe5b0e2 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ml_kem.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024-2025 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_ML_KEM_H +#define OPENSSL_ML_KEM_H +#pragma once + +#define OSSL_ML_KEM_SHARED_SECRET_BYTES 32 + +#define OSSL_ML_KEM_512_BITS 512 +#define OSSL_ML_KEM_512_SECURITY_BITS 128 +#define OSSL_ML_KEM_512_CIPHERTEXT_BYTES 768 +#define OSSL_ML_KEM_512_PUBLIC_KEY_BYTES 800 + +#define OSSL_ML_KEM_768_BITS 768 +#define OSSL_ML_KEM_768_SECURITY_BITS 192 +#define OSSL_ML_KEM_768_CIPHERTEXT_BYTES 1088 +#define OSSL_ML_KEM_768_PUBLIC_KEY_BYTES 1184 + +#define OSSL_ML_KEM_1024_BITS 1024 +#define OSSL_ML_KEM_1024_SECURITY_BITS 256 +#define OSSL_ML_KEM_1024_CIPHERTEXT_BYTES 1568 +#define OSSL_ML_KEM_1024_PUBLIC_KEY_BYTES 1568 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/modes.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/modes.h new file mode 100644 index 0000000..df11114 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/modes.h @@ -0,0 +1,219 @@ +/* + * Copyright 2008-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_MODES_H +#define OPENSSL_MODES_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_MODES_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +typedef void (*block128_f)(const unsigned char in[16], + unsigned char out[16], const void *key); + +typedef void (*cbc128_f)(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int enc); + +typedef void (*ecb128_f)(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + int enc); + +typedef void (*ctr128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16]); + +typedef void (*ccm128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16], + unsigned char cmac[16]); + +void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); +void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); + +void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], unsigned int *num, + block128_f block); + +void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], + unsigned int *num, ctr128_f ctr); + +void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + block128_f block); + +void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, + size_t bits, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); + +size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +typedef struct gcm128_context GCM128_CONTEXT; + +GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); +void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); +void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, + size_t len); +int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); + +typedef struct ccm128_context CCM128_CONTEXT; + +void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, + unsigned int M, unsigned int L, void *key, + block128_f block); +int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, + size_t nlen, size_t mlen); +void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, + size_t alen); +int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); + +typedef struct xts128_context XTS128_CONTEXT; + +int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + +size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); +size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); +size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); + +#ifndef OPENSSL_NO_OCB +typedef struct ocb128_context OCB128_CONTEXT; + +typedef void (*ocb128_f)(const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + size_t start_block_num, + unsigned char offset_i[16], + const unsigned char L_[][16], + unsigned char checksum[16]); + +OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src, + void *keyenc, void *keydec); +int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv, + size_t len, size_t taglen); +int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx); +#endif /* OPENSSL_NO_OCB */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/obj_mac.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/obj_mac.h new file mode 100644 index 0000000..236e88f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/obj_mac.h @@ -0,0 +1,6695 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2025 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_OBJ_MAC_H +# define OPENSSL_OBJ_MAC_H +# pragma once + +#define SN_undef "UNDEF" +#define LN_undef "undefined" +#define NID_undef 0 +#define OBJ_undef 0L + +#define SN_itu_t "ITU-T" +#define LN_itu_t "itu-t" +#define NID_itu_t 645 +#define OBJ_itu_t 0L + +#define NID_ccitt 404 +#define OBJ_ccitt OBJ_itu_t + +#define SN_iso "ISO" +#define LN_iso "iso" +#define NID_iso 181 +#define OBJ_iso 1L + +#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" +#define LN_joint_iso_itu_t "joint-iso-itu-t" +#define NID_joint_iso_itu_t 646 +#define OBJ_joint_iso_itu_t 2L + +#define NID_joint_iso_ccitt 393 +#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t + +#define SN_member_body "member-body" +#define LN_member_body "ISO Member Body" +#define NID_member_body 182 +#define OBJ_member_body OBJ_iso,2L + +#define SN_identified_organization "identified-organization" +#define NID_identified_organization 676 +#define OBJ_identified_organization OBJ_iso,3L + +#define SN_gmac "GMAC" +#define LN_gmac "gmac" +#define NID_gmac 1195 +#define OBJ_gmac OBJ_iso,0L,9797L,3L,4L + +#define SN_hmac_md5 "HMAC-MD5" +#define LN_hmac_md5 "hmac-md5" +#define NID_hmac_md5 780 +#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L + +#define SN_hmac_sha1 "HMAC-SHA1" +#define LN_hmac_sha1 "hmac-sha1" +#define NID_hmac_sha1 781 +#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L + +#define SN_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#define SN_international_organizations "international-organizations" +#define LN_international_organizations "International Organizations" +#define NID_international_organizations 647 +#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L + +#define SN_wap "wap" +#define NID_wap 678 +#define OBJ_wap OBJ_international_organizations,43L + +#define SN_wap_wsg "wap-wsg" +#define NID_wap_wsg 679 +#define OBJ_wap_wsg OBJ_wap,1L + +#define SN_selected_attribute_types "selected-attribute-types" +#define LN_selected_attribute_types "Selected Attribute Types" +#define NID_selected_attribute_types 394 +#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L + +#define SN_clearance "clearance" +#define NID_clearance 395 +#define OBJ_clearance OBJ_selected_attribute_types,55L + +#define SN_ISO_US "ISO-US" +#define LN_ISO_US "ISO US Member Body" +#define NID_ISO_US 183 +#define OBJ_ISO_US OBJ_member_body,840L + +#define SN_X9_57 "X9-57" +#define LN_X9_57 "X9.57" +#define NID_X9_57 184 +#define OBJ_X9_57 OBJ_ISO_US,10040L + +#define SN_X9cm "X9cm" +#define LN_X9cm "X9.57 CM ?" +#define NID_X9cm 185 +#define OBJ_X9cm OBJ_X9_57,4L + +#define SN_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#define SN_dsa "DSA" +#define LN_dsa "dsaEncryption" +#define NID_dsa 116 +#define OBJ_dsa OBJ_X9cm,1L + +#define SN_dsaWithSHA1 "DSA-SHA1" +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define NID_dsaWithSHA1 113 +#define OBJ_dsaWithSHA1 OBJ_X9cm,3L + +#define SN_ansi_X9_62 "ansi-X9-62" +#define LN_ansi_X9_62 "ANSI X9.62" +#define NID_ansi_X9_62 405 +#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L + +#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L + +#define SN_X9_62_prime_field "prime-field" +#define NID_X9_62_prime_field 406 +#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L + +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_characteristic_two_field 407 +#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L + +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L + +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_onBasis 681 +#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L + +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_tpBasis 682 +#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L + +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_ppBasis 683 +#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L + +#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L + +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_id_ecPublicKey 408 +#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L + +#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L + +#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L + +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_c2pnb163v1 684 +#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L + +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v2 685 +#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L + +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v3 686 +#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L + +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb176v1 687 +#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L + +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2tnb191v1 688 +#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L + +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v2 689 +#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L + +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v3 690 +#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L + +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2onb191v4 691 +#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L + +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v5 692 +#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L + +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2pnb208w1 693 +#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L + +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2tnb239v1 694 +#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L + +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v2 695 +#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L + +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v3 696 +#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L + +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2onb239v4 697 +#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L + +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v5 698 +#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L + +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2pnb272w1 699 +#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L + +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb304w1 700 +#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L + +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2tnb359v1 701 +#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L + +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2pnb368w1 702 +#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L + +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2tnb431r1 703 +#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L + +#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L + +#define SN_X9_62_prime192v1 "prime192v1" +#define NID_X9_62_prime192v1 409 +#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L + +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v2 410 +#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L + +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v3 411 +#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L + +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime239v1 412 +#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L + +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v2 413 +#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L + +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v3 414 +#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L + +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_X9_62_prime256v1 415 +#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L + +#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L + +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_ecdsa_with_SHA1 416 +#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L + +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_Recommended 791 +#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L + +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Specified 792 +#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L + +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_SHA224 793 +#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L + +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA256 794 +#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L + +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA384 795 +#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L + +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA512 796 +#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L + +#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L + +#define SN_secp112r1 "secp112r1" +#define NID_secp112r1 704 +#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L + +#define SN_secp112r2 "secp112r2" +#define NID_secp112r2 705 +#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L + +#define SN_secp128r1 "secp128r1" +#define NID_secp128r1 706 +#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L + +#define SN_secp128r2 "secp128r2" +#define NID_secp128r2 707 +#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L + +#define SN_secp160k1 "secp160k1" +#define NID_secp160k1 708 +#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L + +#define SN_secp160r1 "secp160r1" +#define NID_secp160r1 709 +#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L + +#define SN_secp160r2 "secp160r2" +#define NID_secp160r2 710 +#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L + +#define SN_secp192k1 "secp192k1" +#define NID_secp192k1 711 +#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L + +#define SN_secp224k1 "secp224k1" +#define NID_secp224k1 712 +#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L + +#define SN_secp224r1 "secp224r1" +#define NID_secp224r1 713 +#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L + +#define SN_secp256k1 "secp256k1" +#define NID_secp256k1 714 +#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L + +#define SN_secp384r1 "secp384r1" +#define NID_secp384r1 715 +#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L + +#define SN_secp521r1 "secp521r1" +#define NID_secp521r1 716 +#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L + +#define SN_sect113r1 "sect113r1" +#define NID_sect113r1 717 +#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L + +#define SN_sect113r2 "sect113r2" +#define NID_sect113r2 718 +#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L + +#define SN_sect131r1 "sect131r1" +#define NID_sect131r1 719 +#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L + +#define SN_sect131r2 "sect131r2" +#define NID_sect131r2 720 +#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L + +#define SN_sect163k1 "sect163k1" +#define NID_sect163k1 721 +#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L + +#define SN_sect163r1 "sect163r1" +#define NID_sect163r1 722 +#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L + +#define SN_sect163r2 "sect163r2" +#define NID_sect163r2 723 +#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L + +#define SN_sect193r1 "sect193r1" +#define NID_sect193r1 724 +#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L + +#define SN_sect193r2 "sect193r2" +#define NID_sect193r2 725 +#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L + +#define SN_sect233k1 "sect233k1" +#define NID_sect233k1 726 +#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L + +#define SN_sect233r1 "sect233r1" +#define NID_sect233r1 727 +#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L + +#define SN_sect239k1 "sect239k1" +#define NID_sect239k1 728 +#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L + +#define SN_sect283k1 "sect283k1" +#define NID_sect283k1 729 +#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L + +#define SN_sect283r1 "sect283r1" +#define NID_sect283r1 730 +#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L + +#define SN_sect409k1 "sect409k1" +#define NID_sect409k1 731 +#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L + +#define SN_sect409r1 "sect409r1" +#define NID_sect409r1 732 +#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L + +#define SN_sect571k1 "sect571k1" +#define NID_sect571k1 733 +#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L + +#define SN_sect571r1 "sect571r1" +#define NID_sect571r1 734 +#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L + +#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L + +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L + +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L + +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L + +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L + +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L + +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L + +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L + +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L + +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L + +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L + +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L + +#define SN_cast5_cbc "CAST5-CBC" +#define LN_cast5_cbc "cast5-cbc" +#define NID_cast5_cbc 108 +#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L + +#define SN_cast5_ecb "CAST5-ECB" +#define LN_cast5_ecb "cast5-ecb" +#define NID_cast5_ecb 109 + +#define SN_cast5_cfb64 "CAST5-CFB" +#define LN_cast5_cfb64 "cast5-cfb" +#define NID_cast5_cfb64 110 + +#define SN_cast5_ofb64 "CAST5-OFB" +#define LN_cast5_ofb64 "cast5-ofb" +#define NID_cast5_ofb64 111 + +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L + +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define LN_id_PasswordBasedMAC "password based MAC" +#define NID_id_PasswordBasedMAC 782 +#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L + +#define SN_id_DHBasedMac "id-DHBasedMac" +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define NID_id_DHBasedMac 783 +#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L + +#define SN_rsadsi "rsadsi" +#define LN_rsadsi "RSA Data Security, Inc." +#define NID_rsadsi 1 +#define OBJ_rsadsi OBJ_ISO_US,113549L + +#define SN_pkcs "pkcs" +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define NID_pkcs 2 +#define OBJ_pkcs OBJ_rsadsi,1L + +#define SN_pkcs1 "pkcs1" +#define NID_pkcs1 186 +#define OBJ_pkcs1 OBJ_pkcs,1L + +#define LN_rsaEncryption "rsaEncryption" +#define NID_rsaEncryption 6 +#define OBJ_rsaEncryption OBJ_pkcs1,1L + +#define SN_md2WithRSAEncryption "RSA-MD2" +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define NID_md2WithRSAEncryption 7 +#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L + +#define SN_md4WithRSAEncryption "RSA-MD4" +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define NID_md4WithRSAEncryption 396 +#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L + +#define SN_md5WithRSAEncryption "RSA-MD5" +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define NID_md5WithRSAEncryption 8 +#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L + +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define NID_sha1WithRSAEncryption 65 +#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L + +#define SN_rsaesOaep "RSAES-OAEP" +#define LN_rsaesOaep "rsaesOaep" +#define NID_rsaesOaep 919 +#define OBJ_rsaesOaep OBJ_pkcs1,7L + +#define SN_mgf1 "MGF1" +#define LN_mgf1 "mgf1" +#define NID_mgf1 911 +#define OBJ_mgf1 OBJ_pkcs1,8L + +#define SN_pSpecified "PSPECIFIED" +#define LN_pSpecified "pSpecified" +#define NID_pSpecified 935 +#define OBJ_pSpecified OBJ_pkcs1,9L + +#define SN_rsassaPss "RSASSA-PSS" +#define LN_rsassaPss "rsassaPss" +#define NID_rsassaPss 912 +#define OBJ_rsassaPss OBJ_pkcs1,10L + +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define NID_sha256WithRSAEncryption 668 +#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L + +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define NID_sha384WithRSAEncryption 669 +#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L + +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define NID_sha512WithRSAEncryption 670 +#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L + +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define NID_sha224WithRSAEncryption 671 +#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L + +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#define SN_pkcs3 "pkcs3" +#define NID_pkcs3 27 +#define OBJ_pkcs3 OBJ_pkcs,3L + +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_dhKeyAgreement 28 +#define OBJ_dhKeyAgreement OBJ_pkcs3,1L + +#define SN_pkcs5 "pkcs5" +#define NID_pkcs5 187 +#define OBJ_pkcs5 OBJ_pkcs,5L + +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define NID_pbeWithMD2AndDES_CBC 9 +#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L + +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define NID_pbeWithMD5AndDES_CBC 10 +#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L + +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L + +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L + +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L + +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L + +#define LN_id_pbkdf2 "PBKDF2" +#define NID_id_pbkdf2 69 +#define OBJ_id_pbkdf2 OBJ_pkcs5,12L + +#define LN_pbes2 "PBES2" +#define NID_pbes2 161 +#define OBJ_pbes2 OBJ_pkcs5,13L + +#define LN_pbmac1 "PBMAC1" +#define NID_pbmac1 162 +#define OBJ_pbmac1 OBJ_pkcs5,14L + +#define SN_pkcs7 "pkcs7" +#define NID_pkcs7 20 +#define OBJ_pkcs7 OBJ_pkcs,7L + +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7_data 21 +#define OBJ_pkcs7_data OBJ_pkcs7,1L + +#define LN_pkcs7_signed "pkcs7-signedData" +#define NID_pkcs7_signed 22 +#define OBJ_pkcs7_signed OBJ_pkcs7,2L + +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define NID_pkcs7_enveloped 23 +#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L + +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_signedAndEnveloped 24 +#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L + +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_digest 25 +#define OBJ_pkcs7_digest OBJ_pkcs7,5L + +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_encrypted 26 +#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L + +#define SN_pkcs9 "pkcs9" +#define NID_pkcs9 47 +#define OBJ_pkcs9 OBJ_pkcs,9L + +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9_emailAddress 48 +#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L + +#define LN_pkcs9_unstructuredName "unstructuredName" +#define NID_pkcs9_unstructuredName 49 +#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L + +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_contentType 50 +#define OBJ_pkcs9_contentType OBJ_pkcs9,3L + +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_messageDigest 51 +#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L + +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_signingTime 52 +#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L + +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_countersignature 53 +#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L + +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_challengePassword 54 +#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L + +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_unstructuredAddress 55 +#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L + +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_extCertAttributes 56 +#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L + +#define SN_ext_req "extReq" +#define LN_ext_req "Extension Request" +#define NID_ext_req 172 +#define OBJ_ext_req OBJ_pkcs9,14L + +#define SN_SMIMECapabilities "SMIME-CAPS" +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define NID_SMIMECapabilities 167 +#define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +#define SN_SMIME "SMIME" +#define LN_SMIME "S/MIME" +#define NID_SMIME 188 +#define OBJ_SMIME OBJ_pkcs9,16L + +#define SN_id_smime_mod "id-smime-mod" +#define NID_id_smime_mod 189 +#define OBJ_id_smime_mod OBJ_SMIME,0L + +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_ct 190 +#define OBJ_id_smime_ct OBJ_SMIME,1L + +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_aa 191 +#define OBJ_id_smime_aa OBJ_SMIME,2L + +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_alg 192 +#define OBJ_id_smime_alg OBJ_SMIME,3L + +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_cd 193 +#define OBJ_id_smime_cd OBJ_SMIME,4L + +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_spq 194 +#define OBJ_id_smime_spq OBJ_SMIME,5L + +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_cti 195 +#define OBJ_id_smime_cti OBJ_SMIME,6L + +#define SN_id_smime_ori "id-smime-ori" +#define NID_id_smime_ori 1499 +#define OBJ_id_smime_ori OBJ_SMIME,13L + +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_mod_cms 196 +#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L + +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_ess 197 +#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L + +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_oid 198 +#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L + +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_msg_v3 199 +#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L + +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L + +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L + +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L + +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L + +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_ct_receipt 204 +#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L + +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_authData 205 +#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L + +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_publishCert 206 +#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L + +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L + +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L + +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_contentInfo 209 +#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L + +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L + +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L + +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_compressedData 786 +#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L + +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#define SN_id_ct_routeOriginAuthz "id-ct-routeOriginAuthz" +#define NID_id_ct_routeOriginAuthz 1234 +#define OBJ_id_ct_routeOriginAuthz OBJ_id_smime_ct,24L + +#define SN_id_ct_rpkiManifest "id-ct-rpkiManifest" +#define NID_id_ct_rpkiManifest 1235 +#define OBJ_id_ct_rpkiManifest OBJ_id_smime_ct,26L + +#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" +#define NID_id_ct_asciiTextWithCRLF 787 +#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L + +#define SN_id_ct_xml "id-ct-xml" +#define NID_id_ct_xml 1060 +#define OBJ_id_ct_xml OBJ_id_smime_ct,28L + +#define SN_id_ct_rpkiGhostbusters "id-ct-rpkiGhostbusters" +#define NID_id_ct_rpkiGhostbusters 1236 +#define OBJ_id_ct_rpkiGhostbusters OBJ_id_smime_ct,35L + +#define SN_id_ct_resourceTaggedAttest "id-ct-resourceTaggedAttest" +#define NID_id_ct_resourceTaggedAttest 1237 +#define OBJ_id_ct_resourceTaggedAttest OBJ_id_smime_ct,36L + +#define SN_id_ct_geofeedCSVwithCRLF "id-ct-geofeedCSVwithCRLF" +#define NID_id_ct_geofeedCSVwithCRLF 1246 +#define OBJ_id_ct_geofeedCSVwithCRLF OBJ_id_smime_ct,47L + +#define SN_id_ct_signedChecklist "id-ct-signedChecklist" +#define NID_id_ct_signedChecklist 1247 +#define OBJ_id_ct_signedChecklist OBJ_id_smime_ct,48L + +#define SN_id_ct_ASPA "id-ct-ASPA" +#define NID_id_ct_ASPA 1250 +#define OBJ_id_ct_ASPA OBJ_id_smime_ct,49L + +#define SN_id_ct_signedTAL "id-ct-signedTAL" +#define NID_id_ct_signedTAL 1284 +#define OBJ_id_ct_signedTAL OBJ_id_smime_ct,50L + +#define SN_id_ct_rpkiSignedPrefixList "id-ct-rpkiSignedPrefixList" +#define NID_id_ct_rpkiSignedPrefixList 1320 +#define OBJ_id_ct_rpkiSignedPrefixList OBJ_id_smime_ct,51L + +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_smime_aa_receiptRequest 212 +#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L + +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_securityLabel 213 +#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L + +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_mlExpandHistory 214 +#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L + +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_contentHint 215 +#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L + +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_msgSigDigest 216 +#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L + +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_encapContentType 217 +#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L + +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_contentIdentifier 218 +#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L + +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_macValue 219 +#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L + +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_equivalentLabels 220 +#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L + +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_contentReference 221 +#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L + +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_encrypKeyPref 222 +#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L + +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_signingCertificate 223 +#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L + +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L + +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_timeStampToken 225 +#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L + +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L + +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_commitmentType 227 +#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L + +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_signerLocation 228 +#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L + +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerAttr 229 +#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L + +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L + +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L + +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L + +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L + +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_certValues 234 +#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L + +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_revocationValues 235 +#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L + +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L + +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L + +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L + +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_signatureType 239 +#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L + +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_dvcs_dvc 240 +#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L + +#define SN_id_aa_ets_attrCertificateRefs "id-aa-ets-attrCertificateRefs" +#define NID_id_aa_ets_attrCertificateRefs 1261 +#define OBJ_id_aa_ets_attrCertificateRefs OBJ_id_smime_aa,44L + +#define SN_id_aa_ets_attrRevocationRefs "id-aa-ets-attrRevocationRefs" +#define NID_id_aa_ets_attrRevocationRefs 1262 +#define OBJ_id_aa_ets_attrRevocationRefs OBJ_id_smime_aa,45L + +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#define SN_id_aa_ets_archiveTimestampV2 "id-aa-ets-archiveTimestampV2" +#define NID_id_aa_ets_archiveTimestampV2 1280 +#define OBJ_id_aa_ets_archiveTimestampV2 OBJ_id_smime_aa,48L + +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L + +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L + +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_3DESwrap 243 +#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L + +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_RC2wrap 244 +#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L + +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_ESDH 245 +#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L + +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L + +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L + +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_alg_PWRI_KEK 893 +#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L + +#define SN_HKDF_SHA256 "id-alg-hkdf-with-sha256" +#define LN_HKDF_SHA256 "HKDF-SHA256" +#define NID_HKDF_SHA256 1496 +#define OBJ_HKDF_SHA256 OBJ_id_smime_alg,28L + +#define SN_HKDF_SHA384 "id-alg-hkdf-with-sha384" +#define LN_HKDF_SHA384 "HKDF-SHA384" +#define NID_HKDF_SHA384 1497 +#define OBJ_HKDF_SHA384 OBJ_id_smime_alg,29L + +#define SN_HKDF_SHA512 "id-alg-hkdf-with-sha512" +#define LN_HKDF_SHA512 "HKDF-SHA512" +#define NID_HKDF_SHA512 1498 +#define OBJ_HKDF_SHA512 OBJ_id_smime_alg,30L + +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_smime_cd_ldap 248 +#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L + +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L + +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L + +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L + +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L + +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L + +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L + +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L + +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L + +#define SN_id_smime_ori_kem "id-smime-ori-kem" +#define NID_id_smime_ori_kem 1500 +#define OBJ_id_smime_ori_kem OBJ_id_smime_ori,3L + +#define LN_friendlyName "friendlyName" +#define NID_friendlyName 156 +#define OBJ_friendlyName OBJ_pkcs9,20L + +#define LN_localKeyID "localKeyID" +#define NID_localKeyID 157 +#define OBJ_localKeyID OBJ_pkcs9,21L + +#define OBJ_ms_corp 1L,3L,6L,1L,4L,1L,311L + +#define SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name OBJ_ms_corp,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet OBJ_ms_corp,17L,2L + +#define OBJ_certTypes OBJ_pkcs9,22L + +#define LN_x509Certificate "x509Certificate" +#define NID_x509Certificate 158 +#define OBJ_x509Certificate OBJ_certTypes,1L + +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_sdsiCertificate 159 +#define OBJ_sdsiCertificate OBJ_certTypes,2L + +#define OBJ_crlTypes OBJ_pkcs9,23L + +#define LN_x509Crl "x509Crl" +#define NID_x509Crl 160 +#define OBJ_x509Crl OBJ_crlTypes,1L + +#define SN_id_aa_CMSAlgorithmProtection "id-aa-CMSAlgorithmProtection" +#define NID_id_aa_CMSAlgorithmProtection 1263 +#define OBJ_id_aa_CMSAlgorithmProtection OBJ_pkcs9,52L + +#define OBJ_pkcs12 OBJ_pkcs,12L + +#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L + +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L + +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L + +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L + +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L + +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L + +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L + +#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L + +#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L + +#define LN_keyBag "keyBag" +#define NID_keyBag 150 +#define OBJ_keyBag OBJ_pkcs12_BagIds,1L + +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L + +#define LN_certBag "certBag" +#define NID_certBag 152 +#define OBJ_certBag OBJ_pkcs12_BagIds,3L + +#define LN_crlBag "crlBag" +#define NID_crlBag 153 +#define OBJ_crlBag OBJ_pkcs12_BagIds,4L + +#define LN_secretBag "secretBag" +#define NID_secretBag 154 +#define OBJ_secretBag OBJ_pkcs12_BagIds,5L + +#define LN_safeContentsBag "safeContentsBag" +#define NID_safeContentsBag 155 +#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L + +#define SN_md2 "MD2" +#define LN_md2 "md2" +#define NID_md2 3 +#define OBJ_md2 OBJ_rsadsi,2L,2L + +#define SN_md4 "MD4" +#define LN_md4 "md4" +#define NID_md4 257 +#define OBJ_md4 OBJ_rsadsi,2L,4L + +#define SN_md5 "MD5" +#define LN_md5 "md5" +#define NID_md5 4 +#define OBJ_md5 OBJ_rsadsi,2L,5L + +#define SN_md5_sha1 "MD5-SHA1" +#define LN_md5_sha1 "md5-sha1" +#define NID_md5_sha1 114 + +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_hmacWithMD5 797 +#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L + +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithSHA1 163 +#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +#define SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#define SN_SM2_with_SM3 "SM2-SM3" +#define LN_SM2_with_SM3 "SM2-with-SM3" +#define NID_SM2_with_SM3 1204 +#define OBJ_SM2_with_SM3 OBJ_sm_scheme,501L + +#define LN_hmacWithSM3 "hmacWithSM3" +#define NID_hmacWithSM3 1281 +#define OBJ_hmacWithSM3 OBJ_sm3,3L,1L + +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSHA224 798 +#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L + +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA256 799 +#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L + +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA384 800 +#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L + +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA512 801 +#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L + +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#define SN_rc2_cbc "RC2-CBC" +#define LN_rc2_cbc "rc2-cbc" +#define NID_rc2_cbc 37 +#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L + +#define SN_rc2_ecb "RC2-ECB" +#define LN_rc2_ecb "rc2-ecb" +#define NID_rc2_ecb 38 + +#define SN_rc2_cfb64 "RC2-CFB" +#define LN_rc2_cfb64 "rc2-cfb" +#define NID_rc2_cfb64 39 + +#define SN_rc2_ofb64 "RC2-OFB" +#define LN_rc2_ofb64 "rc2-ofb" +#define NID_rc2_ofb64 40 + +#define SN_rc2_40_cbc "RC2-40-CBC" +#define LN_rc2_40_cbc "rc2-40-cbc" +#define NID_rc2_40_cbc 98 + +#define SN_rc2_64_cbc "RC2-64-CBC" +#define LN_rc2_64_cbc "rc2-64-cbc" +#define NID_rc2_64_cbc 166 + +#define SN_rc4 "RC4" +#define LN_rc4 "rc4" +#define NID_rc4 5 +#define OBJ_rc4 OBJ_rsadsi,3L,4L + +#define SN_rc4_40 "RC4-40" +#define LN_rc4_40 "rc4-40" +#define NID_rc4_40 97 + +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define LN_des_ede3_cbc "des-ede3-cbc" +#define NID_des_ede3_cbc 44 +#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L + +#define SN_rc5_cbc "RC5-CBC" +#define LN_rc5_cbc "rc5-cbc" +#define NID_rc5_cbc 120 +#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L + +#define SN_rc5_ecb "RC5-ECB" +#define LN_rc5_ecb "rc5-ecb" +#define NID_rc5_ecb 121 + +#define SN_rc5_cfb64 "RC5-CFB" +#define LN_rc5_cfb64 "rc5-cfb" +#define NID_rc5_cfb64 122 + +#define SN_rc5_ofb64 "RC5-OFB" +#define LN_rc5_ofb64 "rc5-ofb" +#define NID_rc5_ofb64 123 + +#define SN_ms_ext_req "msExtReq" +#define LN_ms_ext_req "Microsoft Extension Request" +#define NID_ms_ext_req 171 +#define OBJ_ms_ext_req OBJ_ms_corp,2L,1L,14L + +#define SN_ms_code_ind "msCodeInd" +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define NID_ms_code_ind 134 +#define OBJ_ms_code_ind OBJ_ms_corp,2L,1L,21L + +#define SN_ms_code_com "msCodeCom" +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define NID_ms_code_com 135 +#define OBJ_ms_code_com OBJ_ms_corp,2L,1L,22L + +#define SN_ms_ctl_sign "msCTLSign" +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define NID_ms_ctl_sign 136 +#define OBJ_ms_ctl_sign OBJ_ms_corp,10L,3L,1L + +#define SN_ms_sgc "msSGC" +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define NID_ms_sgc 137 +#define OBJ_ms_sgc OBJ_ms_corp,10L,3L,3L + +#define SN_ms_efs "msEFS" +#define LN_ms_efs "Microsoft Encrypted File System" +#define NID_ms_efs 138 +#define OBJ_ms_efs OBJ_ms_corp,10L,3L,4L + +#define SN_ms_smartcard_login "msSmartcardLogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define NID_ms_smartcard_login 648 +#define OBJ_ms_smartcard_login OBJ_ms_corp,20L,2L,2L + +#define SN_ms_upn "msUPN" +#define LN_ms_upn "Microsoft User Principal Name" +#define NID_ms_upn 649 +#define OBJ_ms_upn OBJ_ms_corp,20L,2L,3L + +#define SN_ms_ntds_sec_ext "ms-ntds-sec-ext" +#define LN_ms_ntds_sec_ext "Microsoft NTDS CA Extension" +#define NID_ms_ntds_sec_ext 1292 +#define OBJ_ms_ntds_sec_ext OBJ_ms_corp,25L,2L + +#define SN_ms_ntds_obj_sid "ms-ntds-obj-sid" +#define LN_ms_ntds_obj_sid "Microsoft NTDS AD objectSid" +#define NID_ms_ntds_obj_sid 1291 +#define OBJ_ms_ntds_obj_sid OBJ_ms_corp,25L,2L,1L + +#define SN_ms_cert_templ "ms-cert-templ" +#define LN_ms_cert_templ "Microsoft certificate template" +#define NID_ms_cert_templ 1293 +#define OBJ_ms_cert_templ OBJ_ms_corp,21L,7L + +#define SN_ms_app_policies "ms-app-policies" +#define LN_ms_app_policies "Microsoft Application Policies Extension" +#define NID_ms_app_policies 1294 +#define OBJ_ms_app_policies OBJ_ms_corp,21L,10L + +#define SN_idea_cbc "IDEA-CBC" +#define LN_idea_cbc "idea-cbc" +#define NID_idea_cbc 34 +#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L + +#define SN_idea_ecb "IDEA-ECB" +#define LN_idea_ecb "idea-ecb" +#define NID_idea_ecb 36 + +#define SN_idea_cfb64 "IDEA-CFB" +#define LN_idea_cfb64 "idea-cfb" +#define NID_idea_cfb64 35 + +#define SN_idea_ofb64 "IDEA-OFB" +#define LN_idea_ofb64 "idea-ofb" +#define NID_idea_ofb64 46 + +#define SN_bf_cbc "BF-CBC" +#define LN_bf_cbc "bf-cbc" +#define NID_bf_cbc 91 +#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L + +#define SN_bf_ecb "BF-ECB" +#define LN_bf_ecb "bf-ecb" +#define NID_bf_ecb 92 + +#define SN_bf_cfb64 "BF-CFB" +#define LN_bf_cfb64 "bf-cfb" +#define NID_bf_cfb64 93 + +#define SN_bf_ofb64 "BF-OFB" +#define LN_bf_ofb64 "bf-ofb" +#define NID_bf_ofb64 94 + +#define SN_id_pkix "PKIX" +#define NID_id_pkix 127 +#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix_mod 258 +#define OBJ_id_pkix_mod OBJ_id_pkix,0L + +#define SN_id_pe "id-pe" +#define NID_id_pe 175 +#define OBJ_id_pe OBJ_id_pkix,1L + +#define SN_id_qt "id-qt" +#define NID_id_qt 259 +#define OBJ_id_qt OBJ_id_pkix,2L + +#define SN_id_kp "id-kp" +#define NID_id_kp 128 +#define OBJ_id_kp OBJ_id_pkix,3L + +#define SN_id_it "id-it" +#define NID_id_it 260 +#define OBJ_id_it OBJ_id_pkix,4L + +#define SN_id_pkip "id-pkip" +#define NID_id_pkip 261 +#define OBJ_id_pkip OBJ_id_pkix,5L + +#define SN_id_alg "id-alg" +#define NID_id_alg 262 +#define OBJ_id_alg OBJ_id_pkix,6L + +#define SN_id_cmc "id-cmc" +#define NID_id_cmc 263 +#define OBJ_id_cmc OBJ_id_pkix,7L + +#define SN_id_on "id-on" +#define NID_id_on 264 +#define OBJ_id_on OBJ_id_pkix,8L + +#define SN_id_pda "id-pda" +#define NID_id_pda 265 +#define OBJ_id_pda OBJ_id_pkix,9L + +#define SN_id_aca "id-aca" +#define NID_id_aca 266 +#define OBJ_id_aca OBJ_id_pkix,10L + +#define SN_id_qcs "id-qcs" +#define NID_id_qcs 267 +#define OBJ_id_qcs OBJ_id_pkix,11L + +#define SN_id_cp "id-cp" +#define NID_id_cp 1238 +#define OBJ_id_cp OBJ_id_pkix,14L + +#define SN_id_cct "id-cct" +#define NID_id_cct 268 +#define OBJ_id_cct OBJ_id_pkix,12L + +#define SN_id_ppl "id-ppl" +#define NID_id_ppl 662 +#define OBJ_id_ppl OBJ_id_pkix,21L + +#define SN_id_ad "id-ad" +#define NID_id_ad 176 +#define OBJ_id_ad OBJ_id_pkix,48L + +#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" +#define NID_id_pkix1_explicit_88 269 +#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L + +#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" +#define NID_id_pkix1_implicit_88 270 +#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L + +#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" +#define NID_id_pkix1_explicit_93 271 +#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L + +#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" +#define NID_id_pkix1_implicit_93 272 +#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L + +#define SN_id_mod_crmf "id-mod-crmf" +#define NID_id_mod_crmf 273 +#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L + +#define SN_id_mod_cmc "id-mod-cmc" +#define NID_id_mod_cmc 274 +#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L + +#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" +#define NID_id_mod_kea_profile_88 275 +#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L + +#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" +#define NID_id_mod_kea_profile_93 276 +#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L + +#define SN_id_mod_cmp "id-mod-cmp" +#define NID_id_mod_cmp 277 +#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L + +#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" +#define NID_id_mod_qualified_cert_88 278 +#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L + +#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" +#define NID_id_mod_qualified_cert_93 279 +#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L + +#define SN_id_mod_attribute_cert "id-mod-attribute-cert" +#define NID_id_mod_attribute_cert 280 +#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L + +#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" +#define NID_id_mod_timestamp_protocol 281 +#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L + +#define SN_id_mod_ocsp "id-mod-ocsp" +#define NID_id_mod_ocsp 282 +#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L + +#define SN_id_mod_dvcs "id-mod-dvcs" +#define NID_id_mod_dvcs 283 +#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L + +#define SN_id_mod_cmp2000 "id-mod-cmp2000" +#define NID_id_mod_cmp2000 284 +#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L + +#define SN_id_mod_cmp2000_02 "id-mod-cmp2000-02" +#define NID_id_mod_cmp2000_02 1251 +#define OBJ_id_mod_cmp2000_02 OBJ_id_pkix_mod,50L + +#define SN_id_mod_cmp2021_88 "id-mod-cmp2021-88" +#define NID_id_mod_cmp2021_88 1252 +#define OBJ_id_mod_cmp2021_88 OBJ_id_pkix_mod,99L + +#define SN_id_mod_cmp2021_02 "id-mod-cmp2021-02" +#define NID_id_mod_cmp2021_02 1253 +#define OBJ_id_mod_cmp2021_02 OBJ_id_pkix_mod,100L + +#define SN_info_access "authorityInfoAccess" +#define LN_info_access "Authority Information Access" +#define NID_info_access 177 +#define OBJ_info_access OBJ_id_pe,1L + +#define SN_biometricInfo "biometricInfo" +#define LN_biometricInfo "Biometric Info" +#define NID_biometricInfo 285 +#define OBJ_biometricInfo OBJ_id_pe,2L + +#define SN_qcStatements "qcStatements" +#define NID_qcStatements 286 +#define OBJ_qcStatements OBJ_id_pe,3L + +#define SN_ac_auditIdentity "ac-auditIdentity" +#define LN_ac_auditIdentity "X509v3 Audit Identity" +#define NID_ac_auditIdentity 287 +#define OBJ_ac_auditIdentity OBJ_id_pe,4L + +#define NID_ac_auditEntity 1323 +#define OBJ_ac_auditEntity OBJ_ac_auditIdentity + +#define SN_ac_targeting "ac-targeting" +#define NID_ac_targeting 288 +#define OBJ_ac_targeting OBJ_id_pe,5L + +#define SN_aaControls "aaControls" +#define NID_aaControls 289 +#define OBJ_aaControls OBJ_id_pe,6L + +#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" +#define NID_sbgp_ipAddrBlock 290 +#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L + +#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" +#define NID_sbgp_autonomousSysNum 291 +#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L + +#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" +#define NID_sbgp_routerIdentifier 292 +#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L + +#define SN_ac_proxying "ac-proxying" +#define NID_ac_proxying 397 +#define OBJ_ac_proxying OBJ_id_pe,10L + +#define SN_sinfo_access "subjectInfoAccess" +#define LN_sinfo_access "Subject Information Access" +#define NID_sinfo_access 398 +#define OBJ_sinfo_access OBJ_id_pe,11L + +#define SN_proxyCertInfo "proxyCertInfo" +#define LN_proxyCertInfo "Proxy Certificate Information" +#define NID_proxyCertInfo 663 +#define OBJ_proxyCertInfo OBJ_id_pe,14L + +#define SN_tlsfeature "tlsfeature" +#define LN_tlsfeature "TLS Feature" +#define NID_tlsfeature 1020 +#define OBJ_tlsfeature OBJ_id_pe,24L + +#define SN_sbgp_ipAddrBlockv2 "sbgp-ipAddrBlockv2" +#define NID_sbgp_ipAddrBlockv2 1239 +#define OBJ_sbgp_ipAddrBlockv2 OBJ_id_pe,28L + +#define SN_sbgp_autonomousSysNumv2 "sbgp-autonomousSysNumv2" +#define NID_sbgp_autonomousSysNumv2 1240 +#define OBJ_sbgp_autonomousSysNumv2 OBJ_id_pe,29L + +#define SN_id_qt_cps "id-qt-cps" +#define LN_id_qt_cps "Policy Qualifier CPS" +#define NID_id_qt_cps 164 +#define OBJ_id_qt_cps OBJ_id_qt,1L + +#define SN_id_qt_unotice "id-qt-unotice" +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define NID_id_qt_unotice 165 +#define OBJ_id_qt_unotice OBJ_id_qt,2L + +#define SN_textNotice "textNotice" +#define NID_textNotice 293 +#define OBJ_textNotice OBJ_id_qt,3L + +#define SN_server_auth "serverAuth" +#define LN_server_auth "TLS Web Server Authentication" +#define NID_server_auth 129 +#define OBJ_server_auth OBJ_id_kp,1L + +#define SN_client_auth "clientAuth" +#define LN_client_auth "TLS Web Client Authentication" +#define NID_client_auth 130 +#define OBJ_client_auth OBJ_id_kp,2L + +#define SN_code_sign "codeSigning" +#define LN_code_sign "Code Signing" +#define NID_code_sign 131 +#define OBJ_code_sign OBJ_id_kp,3L + +#define SN_email_protect "emailProtection" +#define LN_email_protect "E-mail Protection" +#define NID_email_protect 132 +#define OBJ_email_protect OBJ_id_kp,4L + +#define SN_ipsecEndSystem "ipsecEndSystem" +#define LN_ipsecEndSystem "IPSec End System" +#define NID_ipsecEndSystem 294 +#define OBJ_ipsecEndSystem OBJ_id_kp,5L + +#define SN_ipsecTunnel "ipsecTunnel" +#define LN_ipsecTunnel "IPSec Tunnel" +#define NID_ipsecTunnel 295 +#define OBJ_ipsecTunnel OBJ_id_kp,6L + +#define SN_ipsecUser "ipsecUser" +#define LN_ipsecUser "IPSec User" +#define NID_ipsecUser 296 +#define OBJ_ipsecUser OBJ_id_kp,7L + +#define SN_time_stamp "timeStamping" +#define LN_time_stamp "Time Stamping" +#define NID_time_stamp 133 +#define OBJ_time_stamp OBJ_id_kp,8L + +#define SN_OCSP_sign "OCSPSigning" +#define LN_OCSP_sign "OCSP Signing" +#define NID_OCSP_sign 180 +#define OBJ_OCSP_sign OBJ_id_kp,9L + +#define SN_dvcs "DVCS" +#define LN_dvcs "dvcs" +#define NID_dvcs 297 +#define OBJ_dvcs OBJ_id_kp,10L + +#define SN_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#define SN_cmcArchive "cmcArchive" +#define LN_cmcArchive "CMC Archive Server" +#define NID_cmcArchive 1219 +#define OBJ_cmcArchive OBJ_id_kp,29L + +#define SN_id_kp_bgpsec_router "id-kp-bgpsec-router" +#define LN_id_kp_bgpsec_router "BGPsec Router" +#define NID_id_kp_bgpsec_router 1220 +#define OBJ_id_kp_bgpsec_router OBJ_id_kp,30L + +#define SN_id_kp_BrandIndicatorforMessageIdentification "id-kp-BrandIndicatorforMessageIdentification" +#define LN_id_kp_BrandIndicatorforMessageIdentification "Brand Indicator for Message Identification" +#define NID_id_kp_BrandIndicatorforMessageIdentification 1221 +#define OBJ_id_kp_BrandIndicatorforMessageIdentification OBJ_id_kp,31L + +#define SN_cmKGA "cmKGA" +#define LN_cmKGA "Certificate Management Key Generation Authority" +#define NID_cmKGA 1222 +#define OBJ_cmKGA OBJ_id_kp,32L + +#define SN_id_it_caProtEncCert "id-it-caProtEncCert" +#define NID_id_it_caProtEncCert 298 +#define OBJ_id_it_caProtEncCert OBJ_id_it,1L + +#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" +#define NID_id_it_signKeyPairTypes 299 +#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L + +#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" +#define NID_id_it_encKeyPairTypes 300 +#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L + +#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" +#define NID_id_it_preferredSymmAlg 301 +#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L + +#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" +#define NID_id_it_caKeyUpdateInfo 302 +#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L + +#define SN_id_it_currentCRL "id-it-currentCRL" +#define NID_id_it_currentCRL 303 +#define OBJ_id_it_currentCRL OBJ_id_it,6L + +#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" +#define NID_id_it_unsupportedOIDs 304 +#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L + +#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" +#define NID_id_it_subscriptionRequest 305 +#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L + +#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" +#define NID_id_it_subscriptionResponse 306 +#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L + +#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" +#define NID_id_it_keyPairParamReq 307 +#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L + +#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" +#define NID_id_it_keyPairParamRep 308 +#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L + +#define SN_id_it_revPassphrase "id-it-revPassphrase" +#define NID_id_it_revPassphrase 309 +#define OBJ_id_it_revPassphrase OBJ_id_it,12L + +#define SN_id_it_implicitConfirm "id-it-implicitConfirm" +#define NID_id_it_implicitConfirm 310 +#define OBJ_id_it_implicitConfirm OBJ_id_it,13L + +#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" +#define NID_id_it_confirmWaitTime 311 +#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L + +#define SN_id_it_origPKIMessage "id-it-origPKIMessage" +#define NID_id_it_origPKIMessage 312 +#define OBJ_id_it_origPKIMessage OBJ_id_it,15L + +#define SN_id_it_suppLangTags "id-it-suppLangTags" +#define NID_id_it_suppLangTags 784 +#define OBJ_id_it_suppLangTags OBJ_id_it,16L + +#define SN_id_it_caCerts "id-it-caCerts" +#define NID_id_it_caCerts 1223 +#define OBJ_id_it_caCerts OBJ_id_it,17L + +#define SN_id_it_rootCaKeyUpdate "id-it-rootCaKeyUpdate" +#define NID_id_it_rootCaKeyUpdate 1224 +#define OBJ_id_it_rootCaKeyUpdate OBJ_id_it,18L + +#define SN_id_it_certReqTemplate "id-it-certReqTemplate" +#define NID_id_it_certReqTemplate 1225 +#define OBJ_id_it_certReqTemplate OBJ_id_it,19L + +#define SN_id_it_rootCaCert "id-it-rootCaCert" +#define NID_id_it_rootCaCert 1254 +#define OBJ_id_it_rootCaCert OBJ_id_it,20L + +#define SN_id_it_certProfile "id-it-certProfile" +#define NID_id_it_certProfile 1255 +#define OBJ_id_it_certProfile OBJ_id_it,21L + +#define SN_id_it_crlStatusList "id-it-crlStatusList" +#define NID_id_it_crlStatusList 1256 +#define OBJ_id_it_crlStatusList OBJ_id_it,22L + +#define SN_id_it_crls "id-it-crls" +#define NID_id_it_crls 1257 +#define OBJ_id_it_crls OBJ_id_it,23L + +#define SN_id_regCtrl "id-regCtrl" +#define NID_id_regCtrl 313 +#define OBJ_id_regCtrl OBJ_id_pkip,1L + +#define SN_id_regInfo "id-regInfo" +#define NID_id_regInfo 314 +#define OBJ_id_regInfo OBJ_id_pkip,2L + +#define SN_id_regCtrl_regToken "id-regCtrl-regToken" +#define NID_id_regCtrl_regToken 315 +#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L + +#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" +#define NID_id_regCtrl_authenticator 316 +#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L + +#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" +#define NID_id_regCtrl_pkiPublicationInfo 317 +#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L + +#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" +#define NID_id_regCtrl_pkiArchiveOptions 318 +#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L + +#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" +#define NID_id_regCtrl_oldCertID 319 +#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L + +#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" +#define NID_id_regCtrl_protocolEncrKey 320 +#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L + +#define SN_id_regCtrl_altCertTemplate "id-regCtrl-altCertTemplate" +#define NID_id_regCtrl_altCertTemplate 1258 +#define OBJ_id_regCtrl_altCertTemplate OBJ_id_regCtrl,7L + +#define SN_id_regCtrl_algId "id-regCtrl-algId" +#define NID_id_regCtrl_algId 1259 +#define OBJ_id_regCtrl_algId OBJ_id_regCtrl,11L + +#define SN_id_regCtrl_rsaKeyLen "id-regCtrl-rsaKeyLen" +#define NID_id_regCtrl_rsaKeyLen 1260 +#define OBJ_id_regCtrl_rsaKeyLen OBJ_id_regCtrl,12L + +#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" +#define NID_id_regInfo_utf8Pairs 321 +#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L + +#define SN_id_regInfo_certReq "id-regInfo-certReq" +#define NID_id_regInfo_certReq 322 +#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L + +#define SN_id_alg_des40 "id-alg-des40" +#define NID_id_alg_des40 323 +#define OBJ_id_alg_des40 OBJ_id_alg,1L + +#define SN_id_alg_noSignature "id-alg-noSignature" +#define NID_id_alg_noSignature 324 +#define OBJ_id_alg_noSignature OBJ_id_alg,2L + +#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" +#define NID_id_alg_dh_sig_hmac_sha1 325 +#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L + +#define SN_id_alg_dh_pop "id-alg-dh-pop" +#define NID_id_alg_dh_pop 326 +#define OBJ_id_alg_dh_pop OBJ_id_alg,4L + +#define SN_id_cmc_statusInfo "id-cmc-statusInfo" +#define NID_id_cmc_statusInfo 327 +#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L + +#define SN_id_cmc_identification "id-cmc-identification" +#define NID_id_cmc_identification 328 +#define OBJ_id_cmc_identification OBJ_id_cmc,2L + +#define SN_id_cmc_identityProof "id-cmc-identityProof" +#define NID_id_cmc_identityProof 329 +#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L + +#define SN_id_cmc_dataReturn "id-cmc-dataReturn" +#define NID_id_cmc_dataReturn 330 +#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L + +#define SN_id_cmc_transactionId "id-cmc-transactionId" +#define NID_id_cmc_transactionId 331 +#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L + +#define SN_id_cmc_senderNonce "id-cmc-senderNonce" +#define NID_id_cmc_senderNonce 332 +#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L + +#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" +#define NID_id_cmc_recipientNonce 333 +#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L + +#define SN_id_cmc_addExtensions "id-cmc-addExtensions" +#define NID_id_cmc_addExtensions 334 +#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L + +#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" +#define NID_id_cmc_encryptedPOP 335 +#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L + +#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" +#define NID_id_cmc_decryptedPOP 336 +#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L + +#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" +#define NID_id_cmc_lraPOPWitness 337 +#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L + +#define SN_id_cmc_getCert "id-cmc-getCert" +#define NID_id_cmc_getCert 338 +#define OBJ_id_cmc_getCert OBJ_id_cmc,15L + +#define SN_id_cmc_getCRL "id-cmc-getCRL" +#define NID_id_cmc_getCRL 339 +#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L + +#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" +#define NID_id_cmc_revokeRequest 340 +#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L + +#define SN_id_cmc_regInfo "id-cmc-regInfo" +#define NID_id_cmc_regInfo 341 +#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L + +#define SN_id_cmc_responseInfo "id-cmc-responseInfo" +#define NID_id_cmc_responseInfo 342 +#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L + +#define SN_id_cmc_queryPending "id-cmc-queryPending" +#define NID_id_cmc_queryPending 343 +#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L + +#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" +#define NID_id_cmc_popLinkRandom 344 +#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L + +#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" +#define NID_id_cmc_popLinkWitness 345 +#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L + +#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" +#define NID_id_cmc_confirmCertAcceptance 346 +#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L + +#define SN_id_on_personalData "id-on-personalData" +#define NID_id_on_personalData 347 +#define OBJ_id_on_personalData OBJ_id_on,1L + +#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" +#define LN_id_on_permanentIdentifier "Permanent Identifier" +#define NID_id_on_permanentIdentifier 858 +#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L + +#define SN_id_on_hardwareModuleName "id-on-hardwareModuleName" +#define LN_id_on_hardwareModuleName "Hardware Module Name" +#define NID_id_on_hardwareModuleName 1321 +#define OBJ_id_on_hardwareModuleName OBJ_id_on,4L + +#define SN_XmppAddr "id-on-xmppAddr" +#define LN_XmppAddr "XmppAddr" +#define NID_XmppAddr 1209 +#define OBJ_XmppAddr OBJ_id_on,5L + +#define SN_SRVName "id-on-dnsSRV" +#define LN_SRVName "SRVName" +#define NID_SRVName 1210 +#define OBJ_SRVName OBJ_id_on,7L + +#define SN_NAIRealm "id-on-NAIRealm" +#define LN_NAIRealm "NAIRealm" +#define NID_NAIRealm 1211 +#define OBJ_NAIRealm OBJ_id_on,8L + +#define SN_id_on_SmtpUTF8Mailbox "id-on-SmtpUTF8Mailbox" +#define LN_id_on_SmtpUTF8Mailbox "Smtp UTF8 Mailbox" +#define NID_id_on_SmtpUTF8Mailbox 1208 +#define OBJ_id_on_SmtpUTF8Mailbox OBJ_id_on,9L + +#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" +#define NID_id_pda_dateOfBirth 348 +#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L + +#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" +#define NID_id_pda_placeOfBirth 349 +#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L + +#define SN_id_pda_gender "id-pda-gender" +#define NID_id_pda_gender 351 +#define OBJ_id_pda_gender OBJ_id_pda,3L + +#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" +#define NID_id_pda_countryOfCitizenship 352 +#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L + +#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" +#define NID_id_pda_countryOfResidence 353 +#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L + +#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" +#define NID_id_aca_authenticationInfo 354 +#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L + +#define SN_id_aca_accessIdentity "id-aca-accessIdentity" +#define NID_id_aca_accessIdentity 355 +#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L + +#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" +#define NID_id_aca_chargingIdentity 356 +#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L + +#define SN_id_aca_group "id-aca-group" +#define NID_id_aca_group 357 +#define OBJ_id_aca_group OBJ_id_aca,4L + +#define SN_id_aca_role "id-aca-role" +#define NID_id_aca_role 358 +#define OBJ_id_aca_role OBJ_id_aca,5L + +#define SN_id_aca_encAttrs "id-aca-encAttrs" +#define NID_id_aca_encAttrs 399 +#define OBJ_id_aca_encAttrs OBJ_id_aca,6L + +#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" +#define NID_id_qcs_pkixQCSyntax_v1 359 +#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L + +#define SN_ipAddr_asNumber "ipAddr-asNumber" +#define NID_ipAddr_asNumber 1241 +#define OBJ_ipAddr_asNumber OBJ_id_cp,2L + +#define SN_ipAddr_asNumberv2 "ipAddr-asNumberv2" +#define NID_ipAddr_asNumberv2 1242 +#define OBJ_ipAddr_asNumberv2 OBJ_id_cp,3L + +#define SN_id_cct_crs "id-cct-crs" +#define NID_id_cct_crs 360 +#define OBJ_id_cct_crs OBJ_id_cct,1L + +#define SN_id_cct_PKIData "id-cct-PKIData" +#define NID_id_cct_PKIData 361 +#define OBJ_id_cct_PKIData OBJ_id_cct,2L + +#define SN_id_cct_PKIResponse "id-cct-PKIResponse" +#define NID_id_cct_PKIResponse 362 +#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L + +#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" +#define LN_id_ppl_anyLanguage "Any language" +#define NID_id_ppl_anyLanguage 664 +#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L + +#define SN_id_ppl_inheritAll "id-ppl-inheritAll" +#define LN_id_ppl_inheritAll "Inherit all" +#define NID_id_ppl_inheritAll 665 +#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L + +#define SN_Independent "id-ppl-independent" +#define LN_Independent "Independent" +#define NID_Independent 667 +#define OBJ_Independent OBJ_id_ppl,2L + +#define SN_ad_OCSP "OCSP" +#define LN_ad_OCSP "OCSP" +#define NID_ad_OCSP 178 +#define OBJ_ad_OCSP OBJ_id_ad,1L + +#define SN_ad_ca_issuers "caIssuers" +#define LN_ad_ca_issuers "CA Issuers" +#define NID_ad_ca_issuers 179 +#define OBJ_ad_ca_issuers OBJ_id_ad,2L + +#define SN_ad_timeStamping "ad_timestamping" +#define LN_ad_timeStamping "AD Time Stamping" +#define NID_ad_timeStamping 363 +#define OBJ_ad_timeStamping OBJ_id_ad,3L + +#define SN_ad_dvcs "AD_DVCS" +#define LN_ad_dvcs "ad dvcs" +#define NID_ad_dvcs 364 +#define OBJ_ad_dvcs OBJ_id_ad,4L + +#define SN_caRepository "caRepository" +#define LN_caRepository "CA Repository" +#define NID_caRepository 785 +#define OBJ_caRepository OBJ_id_ad,5L + +#define SN_rpkiManifest "rpkiManifest" +#define LN_rpkiManifest "RPKI Manifest" +#define NID_rpkiManifest 1243 +#define OBJ_rpkiManifest OBJ_id_ad,10L + +#define SN_signedObject "signedObject" +#define LN_signedObject "Signed Object" +#define NID_signedObject 1244 +#define OBJ_signedObject OBJ_id_ad,11L + +#define SN_rpkiNotify "rpkiNotify" +#define LN_rpkiNotify "RPKI Notify" +#define NID_rpkiNotify 1245 +#define OBJ_rpkiNotify OBJ_id_ad,13L + +#define OBJ_id_pkix_OCSP OBJ_ad_OCSP + +#define SN_id_pkix_OCSP_basic "basicOCSPResponse" +#define LN_id_pkix_OCSP_basic "Basic OCSP Response" +#define NID_id_pkix_OCSP_basic 365 +#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L + +#define SN_id_pkix_OCSP_Nonce "Nonce" +#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" +#define NID_id_pkix_OCSP_Nonce 366 +#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L + +#define SN_id_pkix_OCSP_CrlID "CrlID" +#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" +#define NID_id_pkix_OCSP_CrlID 367 +#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L + +#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" +#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" +#define NID_id_pkix_OCSP_acceptableResponses 368 +#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L + +#define SN_id_pkix_OCSP_noCheck "noCheck" +#define LN_id_pkix_OCSP_noCheck "OCSP No Check" +#define NID_id_pkix_OCSP_noCheck 369 +#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L + +#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" +#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" +#define NID_id_pkix_OCSP_archiveCutoff 370 +#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L + +#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" +#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" +#define NID_id_pkix_OCSP_serviceLocator 371 +#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L + +#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" +#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" +#define NID_id_pkix_OCSP_extendedStatus 372 +#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L + +#define SN_id_pkix_OCSP_valid "valid" +#define NID_id_pkix_OCSP_valid 373 +#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L + +#define SN_id_pkix_OCSP_path "path" +#define NID_id_pkix_OCSP_path 374 +#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L + +#define SN_id_pkix_OCSP_trustRoot "trustRoot" +#define LN_id_pkix_OCSP_trustRoot "Trust Root" +#define NID_id_pkix_OCSP_trustRoot 375 +#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L + +#define SN_algorithm "algorithm" +#define LN_algorithm "algorithm" +#define NID_algorithm 376 +#define OBJ_algorithm 1L,3L,14L,3L,2L + +#define SN_md5WithRSA "RSA-NP-MD5" +#define LN_md5WithRSA "md5WithRSA" +#define NID_md5WithRSA 104 +#define OBJ_md5WithRSA OBJ_algorithm,3L + +#define SN_des_ecb "DES-ECB" +#define LN_des_ecb "des-ecb" +#define NID_des_ecb 29 +#define OBJ_des_ecb OBJ_algorithm,6L + +#define SN_des_cbc "DES-CBC" +#define LN_des_cbc "des-cbc" +#define NID_des_cbc 31 +#define OBJ_des_cbc OBJ_algorithm,7L + +#define SN_des_ofb64 "DES-OFB" +#define LN_des_ofb64 "des-ofb" +#define NID_des_ofb64 45 +#define OBJ_des_ofb64 OBJ_algorithm,8L + +#define SN_des_cfb64 "DES-CFB" +#define LN_des_cfb64 "des-cfb" +#define NID_des_cfb64 30 +#define OBJ_des_cfb64 OBJ_algorithm,9L + +#define SN_rsaSignature "rsaSignature" +#define NID_rsaSignature 377 +#define OBJ_rsaSignature OBJ_algorithm,11L + +#define SN_dsa_2 "DSA-old" +#define LN_dsa_2 "dsaEncryption-old" +#define NID_dsa_2 67 +#define OBJ_dsa_2 OBJ_algorithm,12L + +#define SN_dsaWithSHA "DSA-SHA" +#define LN_dsaWithSHA "dsaWithSHA" +#define NID_dsaWithSHA 66 +#define OBJ_dsaWithSHA OBJ_algorithm,13L + +#define SN_shaWithRSAEncryption "RSA-SHA" +#define LN_shaWithRSAEncryption "shaWithRSAEncryption" +#define NID_shaWithRSAEncryption 42 +#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L + +#define SN_des_ede_ecb "DES-EDE" +#define LN_des_ede_ecb "des-ede" +#define NID_des_ede_ecb 32 +#define OBJ_des_ede_ecb OBJ_algorithm,17L + +#define SN_des_ede3_ecb "DES-EDE3" +#define LN_des_ede3_ecb "des-ede3" +#define NID_des_ede3_ecb 33 + +#define SN_des_ede_cbc "DES-EDE-CBC" +#define LN_des_ede_cbc "des-ede-cbc" +#define NID_des_ede_cbc 43 + +#define SN_des_ede_cfb64 "DES-EDE-CFB" +#define LN_des_ede_cfb64 "des-ede-cfb" +#define NID_des_ede_cfb64 60 + +#define SN_des_ede3_cfb64 "DES-EDE3-CFB" +#define LN_des_ede3_cfb64 "des-ede3-cfb" +#define NID_des_ede3_cfb64 61 + +#define SN_des_ede_ofb64 "DES-EDE-OFB" +#define LN_des_ede_ofb64 "des-ede-ofb" +#define NID_des_ede_ofb64 62 + +#define SN_des_ede3_ofb64 "DES-EDE3-OFB" +#define LN_des_ede3_ofb64 "des-ede3-ofb" +#define NID_des_ede3_ofb64 63 + +#define SN_desx_cbc "DESX-CBC" +#define LN_desx_cbc "desx-cbc" +#define NID_desx_cbc 80 + +#define SN_sha "SHA" +#define LN_sha "sha" +#define NID_sha 41 +#define OBJ_sha OBJ_algorithm,18L + +#define SN_sha1 "SHA1" +#define LN_sha1 "sha1" +#define NID_sha1 64 +#define OBJ_sha1 OBJ_algorithm,26L + +#define SN_dsaWithSHA1_2 "DSA-SHA1-old" +#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +#define NID_dsaWithSHA1_2 70 +#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L + +#define SN_sha1WithRSA "RSA-SHA1-2" +#define LN_sha1WithRSA "sha1WithRSA" +#define NID_sha1WithRSA 115 +#define OBJ_sha1WithRSA OBJ_algorithm,29L + +#define SN_ripemd160 "RIPEMD160" +#define LN_ripemd160 "ripemd160" +#define NID_ripemd160 117 +#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L + +#define SN_ripemd160WithRSA "RSA-RIPEMD160" +#define LN_ripemd160WithRSA "ripemd160WithRSA" +#define NID_ripemd160WithRSA 119 +#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L + +#define SN_blake2bmac "BLAKE2BMAC" +#define LN_blake2bmac "blake2bmac" +#define NID_blake2bmac 1201 +#define OBJ_blake2bmac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L + +#define SN_blake2smac "BLAKE2SMAC" +#define LN_blake2smac "blake2smac" +#define NID_blake2smac 1202 +#define OBJ_blake2smac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L + +#define SN_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 OBJ_blake2bmac,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 OBJ_blake2smac,8L + +#define SN_sxnet "SXNetID" +#define LN_sxnet "Strong Extranet ID" +#define NID_sxnet 143 +#define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +#define SN_X500 "X500" +#define LN_X500 "directory services (X.500)" +#define NID_X500 11 +#define OBJ_X500 2L,5L + +#define SN_X509 "X509" +#define NID_X509 12 +#define OBJ_X509 OBJ_X500,4L + +#define SN_commonName "CN" +#define LN_commonName "commonName" +#define NID_commonName 13 +#define OBJ_commonName OBJ_X509,3L + +#define SN_surname "SN" +#define LN_surname "surname" +#define NID_surname 100 +#define OBJ_surname OBJ_X509,4L + +#define LN_serialNumber "serialNumber" +#define NID_serialNumber 105 +#define OBJ_serialNumber OBJ_X509,5L + +#define SN_countryName "C" +#define LN_countryName "countryName" +#define NID_countryName 14 +#define OBJ_countryName OBJ_X509,6L + +#define SN_localityName "L" +#define LN_localityName "localityName" +#define NID_localityName 15 +#define OBJ_localityName OBJ_X509,7L + +#define SN_stateOrProvinceName "ST" +#define LN_stateOrProvinceName "stateOrProvinceName" +#define NID_stateOrProvinceName 16 +#define OBJ_stateOrProvinceName OBJ_X509,8L + +#define SN_streetAddress "street" +#define LN_streetAddress "streetAddress" +#define NID_streetAddress 660 +#define OBJ_streetAddress OBJ_X509,9L + +#define SN_organizationName "O" +#define LN_organizationName "organizationName" +#define NID_organizationName 17 +#define OBJ_organizationName OBJ_X509,10L + +#define SN_organizationalUnitName "OU" +#define LN_organizationalUnitName "organizationalUnitName" +#define NID_organizationalUnitName 18 +#define OBJ_organizationalUnitName OBJ_X509,11L + +#define SN_title "title" +#define LN_title "title" +#define NID_title 106 +#define OBJ_title OBJ_X509,12L + +#define LN_description "description" +#define NID_description 107 +#define OBJ_description OBJ_X509,13L + +#define LN_searchGuide "searchGuide" +#define NID_searchGuide 859 +#define OBJ_searchGuide OBJ_X509,14L + +#define LN_businessCategory "businessCategory" +#define NID_businessCategory 860 +#define OBJ_businessCategory OBJ_X509,15L + +#define LN_postalAddress "postalAddress" +#define NID_postalAddress 861 +#define OBJ_postalAddress OBJ_X509,16L + +#define LN_postalCode "postalCode" +#define NID_postalCode 661 +#define OBJ_postalCode OBJ_X509,17L + +#define LN_postOfficeBox "postOfficeBox" +#define NID_postOfficeBox 862 +#define OBJ_postOfficeBox OBJ_X509,18L + +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_physicalDeliveryOfficeName 863 +#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L + +#define LN_telephoneNumber "telephoneNumber" +#define NID_telephoneNumber 864 +#define OBJ_telephoneNumber OBJ_X509,20L + +#define LN_telexNumber "telexNumber" +#define NID_telexNumber 865 +#define OBJ_telexNumber OBJ_X509,21L + +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_teletexTerminalIdentifier 866 +#define OBJ_teletexTerminalIdentifier OBJ_X509,22L + +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_facsimileTelephoneNumber 867 +#define OBJ_facsimileTelephoneNumber OBJ_X509,23L + +#define LN_x121Address "x121Address" +#define NID_x121Address 868 +#define OBJ_x121Address OBJ_X509,24L + +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_internationaliSDNNumber 869 +#define OBJ_internationaliSDNNumber OBJ_X509,25L + +#define LN_registeredAddress "registeredAddress" +#define NID_registeredAddress 870 +#define OBJ_registeredAddress OBJ_X509,26L + +#define LN_destinationIndicator "destinationIndicator" +#define NID_destinationIndicator 871 +#define OBJ_destinationIndicator OBJ_X509,27L + +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_preferredDeliveryMethod 872 +#define OBJ_preferredDeliveryMethod OBJ_X509,28L + +#define LN_presentationAddress "presentationAddress" +#define NID_presentationAddress 873 +#define OBJ_presentationAddress OBJ_X509,29L + +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_supportedApplicationContext 874 +#define OBJ_supportedApplicationContext OBJ_X509,30L + +#define SN_member "member" +#define NID_member 875 +#define OBJ_member OBJ_X509,31L + +#define SN_owner "owner" +#define NID_owner 876 +#define OBJ_owner OBJ_X509,32L + +#define LN_roleOccupant "roleOccupant" +#define NID_roleOccupant 877 +#define OBJ_roleOccupant OBJ_X509,33L + +#define SN_seeAlso "seeAlso" +#define NID_seeAlso 878 +#define OBJ_seeAlso OBJ_X509,34L + +#define LN_userPassword "userPassword" +#define NID_userPassword 879 +#define OBJ_userPassword OBJ_X509,35L + +#define LN_userCertificate "userCertificate" +#define NID_userCertificate 880 +#define OBJ_userCertificate OBJ_X509,36L + +#define LN_cACertificate "cACertificate" +#define NID_cACertificate 881 +#define OBJ_cACertificate OBJ_X509,37L + +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_authorityRevocationList 882 +#define OBJ_authorityRevocationList OBJ_X509,38L + +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_certificateRevocationList 883 +#define OBJ_certificateRevocationList OBJ_X509,39L + +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_crossCertificatePair 884 +#define OBJ_crossCertificatePair OBJ_X509,40L + +#define SN_name "name" +#define LN_name "name" +#define NID_name 173 +#define OBJ_name OBJ_X509,41L + +#define SN_givenName "GN" +#define LN_givenName "givenName" +#define NID_givenName 99 +#define OBJ_givenName OBJ_X509,42L + +#define SN_initials "initials" +#define LN_initials "initials" +#define NID_initials 101 +#define OBJ_initials OBJ_X509,43L + +#define LN_generationQualifier "generationQualifier" +#define NID_generationQualifier 509 +#define OBJ_generationQualifier OBJ_X509,44L + +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_x500UniqueIdentifier 503 +#define OBJ_x500UniqueIdentifier OBJ_X509,45L + +#define SN_dnQualifier "dnQualifier" +#define LN_dnQualifier "dnQualifier" +#define NID_dnQualifier 174 +#define OBJ_dnQualifier OBJ_X509,46L + +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_enhancedSearchGuide 885 +#define OBJ_enhancedSearchGuide OBJ_X509,47L + +#define LN_protocolInformation "protocolInformation" +#define NID_protocolInformation 886 +#define OBJ_protocolInformation OBJ_X509,48L + +#define LN_distinguishedName "distinguishedName" +#define NID_distinguishedName 887 +#define OBJ_distinguishedName OBJ_X509,49L + +#define LN_uniqueMember "uniqueMember" +#define NID_uniqueMember 888 +#define OBJ_uniqueMember OBJ_X509,50L + +#define LN_houseIdentifier "houseIdentifier" +#define NID_houseIdentifier 889 +#define OBJ_houseIdentifier OBJ_X509,51L + +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_supportedAlgorithms 890 +#define OBJ_supportedAlgorithms OBJ_X509,52L + +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_deltaRevocationList 891 +#define OBJ_deltaRevocationList OBJ_X509,53L + +#define SN_dmdName "dmdName" +#define NID_dmdName 892 +#define OBJ_dmdName OBJ_X509,54L + +#define LN_pseudonym "pseudonym" +#define NID_pseudonym 510 +#define OBJ_pseudonym OBJ_X509,65L + +#define SN_role "role" +#define LN_role "role" +#define NID_role 400 +#define OBJ_role OBJ_X509,72L + +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#define SN_X500algorithms "X500algorithms" +#define LN_X500algorithms "directory services - algorithms" +#define NID_X500algorithms 378 +#define OBJ_X500algorithms OBJ_X500,8L + +#define SN_rsa "RSA" +#define LN_rsa "rsa" +#define NID_rsa 19 +#define OBJ_rsa OBJ_X500algorithms,1L,1L + +#define SN_mdc2WithRSA "RSA-MDC2" +#define LN_mdc2WithRSA "mdc2WithRSA" +#define NID_mdc2WithRSA 96 +#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L + +#define SN_mdc2 "MDC2" +#define LN_mdc2 "mdc2" +#define NID_mdc2 95 +#define OBJ_mdc2 OBJ_X500algorithms,3L,101L + +#define SN_id_ce "id-ce" +#define NID_id_ce 81 +#define OBJ_id_ce OBJ_X500,29L + +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define NID_subject_directory_attributes 769 +#define OBJ_subject_directory_attributes OBJ_id_ce,9L + +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define NID_subject_key_identifier 82 +#define OBJ_subject_key_identifier OBJ_id_ce,14L + +#define SN_key_usage "keyUsage" +#define LN_key_usage "X509v3 Key Usage" +#define NID_key_usage 83 +#define OBJ_key_usage OBJ_id_ce,15L + +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define NID_private_key_usage_period 84 +#define OBJ_private_key_usage_period OBJ_id_ce,16L + +#define SN_subject_alt_name "subjectAltName" +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define NID_subject_alt_name 85 +#define OBJ_subject_alt_name OBJ_id_ce,17L + +#define SN_issuer_alt_name "issuerAltName" +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define NID_issuer_alt_name 86 +#define OBJ_issuer_alt_name OBJ_id_ce,18L + +#define SN_basic_constraints "basicConstraints" +#define LN_basic_constraints "X509v3 Basic Constraints" +#define NID_basic_constraints 87 +#define OBJ_basic_constraints OBJ_id_ce,19L + +#define SN_crl_number "crlNumber" +#define LN_crl_number "X509v3 CRL Number" +#define NID_crl_number 88 +#define OBJ_crl_number OBJ_id_ce,20L + +#define SN_crl_reason "CRLReason" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define NID_crl_reason 141 +#define OBJ_crl_reason OBJ_id_ce,21L + +#define SN_invalidity_date "invalidityDate" +#define LN_invalidity_date "Invalidity Date" +#define NID_invalidity_date 142 +#define OBJ_invalidity_date OBJ_id_ce,24L + +#define SN_delta_crl "deltaCRL" +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define NID_delta_crl 140 +#define OBJ_delta_crl OBJ_id_ce,27L + +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define NID_issuing_distribution_point 770 +#define OBJ_issuing_distribution_point OBJ_id_ce,28L + +#define SN_certificate_issuer "certificateIssuer" +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define NID_certificate_issuer 771 +#define OBJ_certificate_issuer OBJ_id_ce,29L + +#define SN_name_constraints "nameConstraints" +#define LN_name_constraints "X509v3 Name Constraints" +#define NID_name_constraints 666 +#define OBJ_name_constraints OBJ_id_ce,30L + +#define SN_crl_distribution_points "crlDistributionPoints" +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define NID_crl_distribution_points 103 +#define OBJ_crl_distribution_points OBJ_id_ce,31L + +#define SN_certificate_policies "certificatePolicies" +#define LN_certificate_policies "X509v3 Certificate Policies" +#define NID_certificate_policies 89 +#define OBJ_certificate_policies OBJ_id_ce,32L + +#define SN_any_policy "anyPolicy" +#define LN_any_policy "X509v3 Any Policy" +#define NID_any_policy 746 +#define OBJ_any_policy OBJ_certificate_policies,0L + +#define SN_policy_mappings "policyMappings" +#define LN_policy_mappings "X509v3 Policy Mappings" +#define NID_policy_mappings 747 +#define OBJ_policy_mappings OBJ_id_ce,33L + +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define NID_authority_key_identifier 90 +#define OBJ_authority_key_identifier OBJ_id_ce,35L + +#define SN_policy_constraints "policyConstraints" +#define LN_policy_constraints "X509v3 Policy Constraints" +#define NID_policy_constraints 401 +#define OBJ_policy_constraints OBJ_id_ce,36L + +#define SN_ext_key_usage "extendedKeyUsage" +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define NID_ext_key_usage 126 +#define OBJ_ext_key_usage OBJ_id_ce,37L + +#define SN_authority_attribute_identifier "authorityAttributeIdentifier" +#define LN_authority_attribute_identifier "X509v3 Authority Attribute Identifier" +#define NID_authority_attribute_identifier 1295 +#define OBJ_authority_attribute_identifier OBJ_id_ce,38L + +#define SN_role_spec_cert_identifier "roleSpecCertIdentifier" +#define LN_role_spec_cert_identifier "X509v3 Role Specification Certificate Identifier" +#define NID_role_spec_cert_identifier 1296 +#define OBJ_role_spec_cert_identifier OBJ_id_ce,39L + +#define SN_basic_att_constraints "basicAttConstraints" +#define LN_basic_att_constraints "X509v3 Basic Attribute Certificate Constraints" +#define NID_basic_att_constraints 1297 +#define OBJ_basic_att_constraints OBJ_id_ce,41L + +#define SN_delegated_name_constraints "delegatedNameConstraints" +#define LN_delegated_name_constraints "X509v3 Delegated Name Constraints" +#define NID_delegated_name_constraints 1298 +#define OBJ_delegated_name_constraints OBJ_id_ce,42L + +#define SN_time_specification "timeSpecification" +#define LN_time_specification "X509v3 Time Specification" +#define NID_time_specification 1299 +#define OBJ_time_specification OBJ_id_ce,43L + +#define SN_freshest_crl "freshestCRL" +#define LN_freshest_crl "X509v3 Freshest CRL" +#define NID_freshest_crl 857 +#define OBJ_freshest_crl OBJ_id_ce,46L + +#define SN_attribute_descriptor "attributeDescriptor" +#define LN_attribute_descriptor "X509v3 Attribute Descriptor" +#define NID_attribute_descriptor 1300 +#define OBJ_attribute_descriptor OBJ_id_ce,48L + +#define SN_user_notice "userNotice" +#define LN_user_notice "X509v3 User Notice" +#define NID_user_notice 1301 +#define OBJ_user_notice OBJ_id_ce,49L + +#define SN_soa_identifier "sOAIdentifier" +#define LN_soa_identifier "X509v3 Source of Authority Identifier" +#define NID_soa_identifier 1302 +#define OBJ_soa_identifier OBJ_id_ce,50L + +#define SN_acceptable_cert_policies "acceptableCertPolicies" +#define LN_acceptable_cert_policies "X509v3 Acceptable Certification Policies" +#define NID_acceptable_cert_policies 1303 +#define OBJ_acceptable_cert_policies OBJ_id_ce,52L + +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define NID_inhibit_any_policy 748 +#define OBJ_inhibit_any_policy OBJ_id_ce,54L + +#define SN_target_information "targetInformation" +#define LN_target_information "X509v3 AC Targeting" +#define NID_target_information 402 +#define OBJ_target_information OBJ_id_ce,55L + +#define SN_no_rev_avail "noRevAvail" +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define NID_no_rev_avail 403 +#define OBJ_no_rev_avail OBJ_id_ce,56L + +#define SN_acceptable_privilege_policies "acceptablePrivPolicies" +#define LN_acceptable_privilege_policies "X509v3 Acceptable Privilege Policies" +#define NID_acceptable_privilege_policies 1304 +#define OBJ_acceptable_privilege_policies OBJ_id_ce,57L + +#define SN_indirect_issuer "indirectIssuer" +#define LN_indirect_issuer "X509v3 Indirect Issuer" +#define NID_indirect_issuer 1305 +#define OBJ_indirect_issuer OBJ_id_ce,61L + +#define SN_no_assertion "noAssertion" +#define LN_no_assertion "X509v3 No Assertion" +#define NID_no_assertion 1306 +#define OBJ_no_assertion OBJ_id_ce,62L + +#define SN_id_aa_issuing_distribution_point "aAissuingDistributionPoint" +#define LN_id_aa_issuing_distribution_point "X509v3 Attribute Authority Issuing Distribution Point" +#define NID_id_aa_issuing_distribution_point 1307 +#define OBJ_id_aa_issuing_distribution_point OBJ_id_ce,63L + +#define SN_issued_on_behalf_of "issuedOnBehalfOf" +#define LN_issued_on_behalf_of "X509v3 Issued On Behalf Of" +#define NID_issued_on_behalf_of 1308 +#define OBJ_issued_on_behalf_of OBJ_id_ce,64L + +#define SN_single_use "singleUse" +#define LN_single_use "X509v3 Single Use" +#define NID_single_use 1309 +#define OBJ_single_use OBJ_id_ce,65L + +#define SN_group_ac "groupAC" +#define LN_group_ac "X509v3 Group Attribute Certificate" +#define NID_group_ac 1310 +#define OBJ_group_ac OBJ_id_ce,66L + +#define SN_allowed_attribute_assignments "allowedAttributeAssignments" +#define LN_allowed_attribute_assignments "X509v3 Allowed Attribute Assignments" +#define NID_allowed_attribute_assignments 1311 +#define OBJ_allowed_attribute_assignments OBJ_id_ce,67L + +#define SN_attribute_mappings "attributeMappings" +#define LN_attribute_mappings "X509v3 Attribute Mappings" +#define NID_attribute_mappings 1312 +#define OBJ_attribute_mappings OBJ_id_ce,68L + +#define SN_holder_name_constraints "holderNameConstraints" +#define LN_holder_name_constraints "X509v3 Holder Name Constraints" +#define NID_holder_name_constraints 1313 +#define OBJ_holder_name_constraints OBJ_id_ce,69L + +#define SN_authorization_validation "authorizationValidation" +#define LN_authorization_validation "X509v3 Authorization Validation" +#define NID_authorization_validation 1314 +#define OBJ_authorization_validation OBJ_id_ce,70L + +#define SN_prot_restrict "protRestrict" +#define LN_prot_restrict "X509v3 Protocol Restriction" +#define NID_prot_restrict 1315 +#define OBJ_prot_restrict OBJ_id_ce,71L + +#define SN_subject_alt_public_key_info "subjectAltPublicKeyInfo" +#define LN_subject_alt_public_key_info "X509v3 Subject Alternative Public Key Info" +#define NID_subject_alt_public_key_info 1316 +#define OBJ_subject_alt_public_key_info OBJ_id_ce,72L + +#define SN_alt_signature_algorithm "altSignatureAlgorithm" +#define LN_alt_signature_algorithm "X509v3 Alternative Signature Algorithm" +#define NID_alt_signature_algorithm 1317 +#define OBJ_alt_signature_algorithm OBJ_id_ce,73L + +#define SN_alt_signature_value "altSignatureValue" +#define LN_alt_signature_value "X509v3 Alternative Signature Value" +#define NID_alt_signature_value 1318 +#define OBJ_alt_signature_value OBJ_id_ce,74L + +#define SN_associated_information "associatedInformation" +#define LN_associated_information "X509v3 Associated Information" +#define NID_associated_information 1319 +#define OBJ_associated_information OBJ_id_ce,75L + +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define NID_anyExtendedKeyUsage 910 +#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L + +#define SN_netscape "Netscape" +#define LN_netscape "Netscape Communications Corp." +#define NID_netscape 57 +#define OBJ_netscape 2L,16L,840L,1L,113730L + +#define SN_netscape_cert_extension "nsCertExt" +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define NID_netscape_cert_extension 58 +#define OBJ_netscape_cert_extension OBJ_netscape,1L + +#define SN_netscape_data_type "nsDataType" +#define LN_netscape_data_type "Netscape Data Type" +#define NID_netscape_data_type 59 +#define OBJ_netscape_data_type OBJ_netscape,2L + +#define SN_netscape_cert_type "nsCertType" +#define LN_netscape_cert_type "Netscape Cert Type" +#define NID_netscape_cert_type 71 +#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L + +#define SN_netscape_base_url "nsBaseUrl" +#define LN_netscape_base_url "Netscape Base Url" +#define NID_netscape_base_url 72 +#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L + +#define SN_netscape_revocation_url "nsRevocationUrl" +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define NID_netscape_revocation_url 73 +#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L + +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define NID_netscape_ca_revocation_url 74 +#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L + +#define SN_netscape_renewal_url "nsRenewalUrl" +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define NID_netscape_renewal_url 75 +#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L + +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define NID_netscape_ca_policy_url 76 +#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L + +#define SN_netscape_ssl_server_name "nsSslServerName" +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define NID_netscape_ssl_server_name 77 +#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L + +#define SN_netscape_comment "nsComment" +#define LN_netscape_comment "Netscape Comment" +#define NID_netscape_comment 78 +#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L + +#define SN_netscape_cert_sequence "nsCertSequence" +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define NID_netscape_cert_sequence 79 +#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L + +#define SN_ns_sgc "nsSGC" +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define NID_ns_sgc 139 +#define OBJ_ns_sgc OBJ_netscape,4L,1L + +#define SN_org "ORG" +#define LN_org "org" +#define NID_org 379 +#define OBJ_org OBJ_iso,3L + +#define SN_dod "DOD" +#define LN_dod "dod" +#define NID_dod 380 +#define OBJ_dod OBJ_org,6L + +#define SN_iana "IANA" +#define LN_iana "iana" +#define NID_iana 381 +#define OBJ_iana OBJ_dod,1L + +#define OBJ_internet OBJ_iana + +#define SN_Directory "directory" +#define LN_Directory "Directory" +#define NID_Directory 382 +#define OBJ_Directory OBJ_internet,1L + +#define SN_Management "mgmt" +#define LN_Management "Management" +#define NID_Management 383 +#define OBJ_Management OBJ_internet,2L + +#define SN_Experimental "experimental" +#define LN_Experimental "Experimental" +#define NID_Experimental 384 +#define OBJ_Experimental OBJ_internet,3L + +#define SN_Private "private" +#define LN_Private "Private" +#define NID_Private 385 +#define OBJ_Private OBJ_internet,4L + +#define SN_Security "security" +#define LN_Security "Security" +#define NID_Security 386 +#define OBJ_Security OBJ_internet,5L + +#define SN_SNMPv2 "snmpv2" +#define LN_SNMPv2 "SNMPv2" +#define NID_SNMPv2 387 +#define OBJ_SNMPv2 OBJ_internet,6L + +#define LN_Mail "Mail" +#define NID_Mail 388 +#define OBJ_Mail OBJ_internet,7L + +#define SN_Enterprises "enterprises" +#define LN_Enterprises "Enterprises" +#define NID_Enterprises 389 +#define OBJ_Enterprises OBJ_Private,1L + +#define SN_dcObject "dcobject" +#define LN_dcObject "dcObject" +#define NID_dcObject 390 +#define OBJ_dcObject OBJ_Enterprises,1466L,344L + +#define SN_id_kp_wisun_fan_device "id-kp-wisun-fan-device" +#define LN_id_kp_wisun_fan_device "Wi-SUN Alliance Field Area Network (FAN)" +#define NID_id_kp_wisun_fan_device 1322 +#define OBJ_id_kp_wisun_fan_device OBJ_Enterprises,45605L,1L + +#define SN_mime_mhs "mime-mhs" +#define LN_mime_mhs "MIME MHS" +#define NID_mime_mhs 504 +#define OBJ_mime_mhs OBJ_Mail,1L + +#define SN_mime_mhs_headings "mime-mhs-headings" +#define LN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs_headings 505 +#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L + +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_bodies 506 +#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L + +#define SN_id_hex_partial_message "id-hex-partial-message" +#define LN_id_hex_partial_message "id-hex-partial-message" +#define NID_id_hex_partial_message 507 +#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L + +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_multipart_message 508 +#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L + +#define SN_zlib_compression "ZLIB" +#define LN_zlib_compression "zlib compression" +#define NID_zlib_compression 125 +#define OBJ_zlib_compression OBJ_id_smime_alg,8L + +#define OBJ_csor 2L,16L,840L,1L,101L,3L + +#define OBJ_nistAlgorithms OBJ_csor,4L + +#define OBJ_aes OBJ_nistAlgorithms,1L + +#define SN_aes_128_ecb "AES-128-ECB" +#define LN_aes_128_ecb "aes-128-ecb" +#define NID_aes_128_ecb 418 +#define OBJ_aes_128_ecb OBJ_aes,1L + +#define SN_aes_128_cbc "AES-128-CBC" +#define LN_aes_128_cbc "aes-128-cbc" +#define NID_aes_128_cbc 419 +#define OBJ_aes_128_cbc OBJ_aes,2L + +#define SN_aes_128_ofb128 "AES-128-OFB" +#define LN_aes_128_ofb128 "aes-128-ofb" +#define NID_aes_128_ofb128 420 +#define OBJ_aes_128_ofb128 OBJ_aes,3L + +#define SN_aes_128_cfb128 "AES-128-CFB" +#define LN_aes_128_cfb128 "aes-128-cfb" +#define NID_aes_128_cfb128 421 +#define OBJ_aes_128_cfb128 OBJ_aes,4L + +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_id_aes128_wrap 788 +#define OBJ_id_aes128_wrap OBJ_aes,5L + +#define SN_aes_128_gcm "id-aes128-GCM" +#define LN_aes_128_gcm "aes-128-gcm" +#define NID_aes_128_gcm 895 +#define OBJ_aes_128_gcm OBJ_aes,6L + +#define SN_aes_128_ccm "id-aes128-CCM" +#define LN_aes_128_ccm "aes-128-ccm" +#define NID_aes_128_ccm 896 +#define OBJ_aes_128_ccm OBJ_aes,7L + +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_id_aes128_wrap_pad 897 +#define OBJ_id_aes128_wrap_pad OBJ_aes,8L + +#define SN_aes_192_ecb "AES-192-ECB" +#define LN_aes_192_ecb "aes-192-ecb" +#define NID_aes_192_ecb 422 +#define OBJ_aes_192_ecb OBJ_aes,21L + +#define SN_aes_192_cbc "AES-192-CBC" +#define LN_aes_192_cbc "aes-192-cbc" +#define NID_aes_192_cbc 423 +#define OBJ_aes_192_cbc OBJ_aes,22L + +#define SN_aes_192_ofb128 "AES-192-OFB" +#define LN_aes_192_ofb128 "aes-192-ofb" +#define NID_aes_192_ofb128 424 +#define OBJ_aes_192_ofb128 OBJ_aes,23L + +#define SN_aes_192_cfb128 "AES-192-CFB" +#define LN_aes_192_cfb128 "aes-192-cfb" +#define NID_aes_192_cfb128 425 +#define OBJ_aes_192_cfb128 OBJ_aes,24L + +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_id_aes192_wrap 789 +#define OBJ_id_aes192_wrap OBJ_aes,25L + +#define SN_aes_192_gcm "id-aes192-GCM" +#define LN_aes_192_gcm "aes-192-gcm" +#define NID_aes_192_gcm 898 +#define OBJ_aes_192_gcm OBJ_aes,26L + +#define SN_aes_192_ccm "id-aes192-CCM" +#define LN_aes_192_ccm "aes-192-ccm" +#define NID_aes_192_ccm 899 +#define OBJ_aes_192_ccm OBJ_aes,27L + +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_id_aes192_wrap_pad 900 +#define OBJ_id_aes192_wrap_pad OBJ_aes,28L + +#define SN_aes_256_ecb "AES-256-ECB" +#define LN_aes_256_ecb "aes-256-ecb" +#define NID_aes_256_ecb 426 +#define OBJ_aes_256_ecb OBJ_aes,41L + +#define SN_aes_256_cbc "AES-256-CBC" +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_cbc 427 +#define OBJ_aes_256_cbc OBJ_aes,42L + +#define SN_aes_256_ofb128 "AES-256-OFB" +#define LN_aes_256_ofb128 "aes-256-ofb" +#define NID_aes_256_ofb128 428 +#define OBJ_aes_256_ofb128 OBJ_aes,43L + +#define SN_aes_256_cfb128 "AES-256-CFB" +#define LN_aes_256_cfb128 "aes-256-cfb" +#define NID_aes_256_cfb128 429 +#define OBJ_aes_256_cfb128 OBJ_aes,44L + +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_id_aes256_wrap 790 +#define OBJ_id_aes256_wrap OBJ_aes,45L + +#define SN_aes_256_gcm "id-aes256-GCM" +#define LN_aes_256_gcm "aes-256-gcm" +#define NID_aes_256_gcm 901 +#define OBJ_aes_256_gcm OBJ_aes,46L + +#define SN_aes_256_ccm "id-aes256-CCM" +#define LN_aes_256_ccm "aes-256-ccm" +#define NID_aes_256_ccm 902 +#define OBJ_aes_256_ccm OBJ_aes,47L + +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_id_aes256_wrap_pad 903 +#define OBJ_id_aes256_wrap_pad OBJ_aes,48L + +#define SN_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define NID_aes_128_cfb1 650 + +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define NID_aes_192_cfb1 651 + +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define NID_aes_256_cfb1 652 + +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define NID_aes_128_cfb8 653 + +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define NID_aes_192_cfb8 654 + +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define NID_aes_256_cfb8 655 + +#define SN_aes_128_ctr "AES-128-CTR" +#define LN_aes_128_ctr "aes-128-ctr" +#define NID_aes_128_ctr 904 + +#define SN_aes_192_ctr "AES-192-CTR" +#define LN_aes_192_ctr "aes-192-ctr" +#define NID_aes_192_ctr 905 + +#define SN_aes_256_ctr "AES-256-CTR" +#define LN_aes_256_ctr "aes-256-ctr" +#define NID_aes_256_ctr 906 + +#define SN_aes_128_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#define SN_des_cfb1 "DES-CFB1" +#define LN_des_cfb1 "des-cfb1" +#define NID_des_cfb1 656 + +#define SN_des_cfb8 "DES-CFB8" +#define LN_des_cfb8 "des-cfb8" +#define NID_des_cfb8 657 + +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define NID_des_ede3_cfb1 658 + +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define NID_des_ede3_cfb8 659 + +#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L + +#define SN_sha256 "SHA256" +#define LN_sha256 "sha256" +#define NID_sha256 672 +#define OBJ_sha256 OBJ_nist_hashalgs,1L + +#define SN_sha384 "SHA384" +#define LN_sha384 "sha384" +#define NID_sha384 673 +#define OBJ_sha384 OBJ_nist_hashalgs,2L + +#define SN_sha512 "SHA512" +#define LN_sha512 "sha512" +#define NID_sha512 674 +#define OBJ_sha512 OBJ_nist_hashalgs,3L + +#define SN_sha224 "SHA224" +#define LN_sha224 "sha224" +#define NID_sha224 675 +#define OBJ_sha224 OBJ_nist_hashalgs,4L + +#define SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#define SN_kmac128 "KMAC128" +#define LN_kmac128 "kmac128" +#define NID_kmac128 1196 +#define OBJ_kmac128 OBJ_nist_hashalgs,19L + +#define SN_kmac256 "KMAC256" +#define LN_kmac256 "kmac256" +#define NID_kmac256 1197 +#define OBJ_kmac256 OBJ_nist_hashalgs,20L + +#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_dsa_with_SHA224 802 +#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L + +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA256 803 +#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L + +#define OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#define SN_ML_DSA_44 "id-ml-dsa-44" +#define LN_ML_DSA_44 "ML-DSA-44" +#define NID_ML_DSA_44 1457 +#define OBJ_ML_DSA_44 OBJ_sigAlgs,17L + +#define SN_ML_DSA_65 "id-ml-dsa-65" +#define LN_ML_DSA_65 "ML-DSA-65" +#define NID_ML_DSA_65 1458 +#define OBJ_ML_DSA_65 OBJ_sigAlgs,18L + +#define SN_ML_DSA_87 "id-ml-dsa-87" +#define LN_ML_DSA_87 "ML-DSA-87" +#define NID_ML_DSA_87 1459 +#define OBJ_ML_DSA_87 OBJ_sigAlgs,19L + +#define SN_SLH_DSA_SHA2_128s "id-slh-dsa-sha2-128s" +#define LN_SLH_DSA_SHA2_128s "SLH-DSA-SHA2-128s" +#define NID_SLH_DSA_SHA2_128s 1460 +#define OBJ_SLH_DSA_SHA2_128s OBJ_sigAlgs,20L + +#define SN_SLH_DSA_SHA2_128f "id-slh-dsa-sha2-128f" +#define LN_SLH_DSA_SHA2_128f "SLH-DSA-SHA2-128f" +#define NID_SLH_DSA_SHA2_128f 1461 +#define OBJ_SLH_DSA_SHA2_128f OBJ_sigAlgs,21L + +#define SN_SLH_DSA_SHA2_192s "id-slh-dsa-sha2-192s" +#define LN_SLH_DSA_SHA2_192s "SLH-DSA-SHA2-192s" +#define NID_SLH_DSA_SHA2_192s 1462 +#define OBJ_SLH_DSA_SHA2_192s OBJ_sigAlgs,22L + +#define SN_SLH_DSA_SHA2_192f "id-slh-dsa-sha2-192f" +#define LN_SLH_DSA_SHA2_192f "SLH-DSA-SHA2-192f" +#define NID_SLH_DSA_SHA2_192f 1463 +#define OBJ_SLH_DSA_SHA2_192f OBJ_sigAlgs,23L + +#define SN_SLH_DSA_SHA2_256s "id-slh-dsa-sha2-256s" +#define LN_SLH_DSA_SHA2_256s "SLH-DSA-SHA2-256s" +#define NID_SLH_DSA_SHA2_256s 1464 +#define OBJ_SLH_DSA_SHA2_256s OBJ_sigAlgs,24L + +#define SN_SLH_DSA_SHA2_256f "id-slh-dsa-sha2-256f" +#define LN_SLH_DSA_SHA2_256f "SLH-DSA-SHA2-256f" +#define NID_SLH_DSA_SHA2_256f 1465 +#define OBJ_SLH_DSA_SHA2_256f OBJ_sigAlgs,25L + +#define SN_SLH_DSA_SHAKE_128s "id-slh-dsa-shake-128s" +#define LN_SLH_DSA_SHAKE_128s "SLH-DSA-SHAKE-128s" +#define NID_SLH_DSA_SHAKE_128s 1466 +#define OBJ_SLH_DSA_SHAKE_128s OBJ_sigAlgs,26L + +#define SN_SLH_DSA_SHAKE_128f "id-slh-dsa-shake-128f" +#define LN_SLH_DSA_SHAKE_128f "SLH-DSA-SHAKE-128f" +#define NID_SLH_DSA_SHAKE_128f 1467 +#define OBJ_SLH_DSA_SHAKE_128f OBJ_sigAlgs,27L + +#define SN_SLH_DSA_SHAKE_192s "id-slh-dsa-shake-192s" +#define LN_SLH_DSA_SHAKE_192s "SLH-DSA-SHAKE-192s" +#define NID_SLH_DSA_SHAKE_192s 1468 +#define OBJ_SLH_DSA_SHAKE_192s OBJ_sigAlgs,28L + +#define SN_SLH_DSA_SHAKE_192f "id-slh-dsa-shake-192f" +#define LN_SLH_DSA_SHAKE_192f "SLH-DSA-SHAKE-192f" +#define NID_SLH_DSA_SHAKE_192f 1469 +#define OBJ_SLH_DSA_SHAKE_192f OBJ_sigAlgs,29L + +#define SN_SLH_DSA_SHAKE_256s "id-slh-dsa-shake-256s" +#define LN_SLH_DSA_SHAKE_256s "SLH-DSA-SHAKE-256s" +#define NID_SLH_DSA_SHAKE_256s 1470 +#define OBJ_SLH_DSA_SHAKE_256s OBJ_sigAlgs,30L + +#define SN_SLH_DSA_SHAKE_256f "id-slh-dsa-shake-256f" +#define LN_SLH_DSA_SHAKE_256f "SLH-DSA-SHAKE-256f" +#define NID_SLH_DSA_SHAKE_256f 1471 +#define OBJ_SLH_DSA_SHAKE_256f OBJ_sigAlgs,31L + +#define SN_HASH_ML_DSA_44_WITH_SHA512 "id-hash-ml-dsa-44-with-sha512" +#define LN_HASH_ML_DSA_44_WITH_SHA512 "HASH-ML-DSA-44-WITH-SHA512" +#define NID_HASH_ML_DSA_44_WITH_SHA512 1472 +#define OBJ_HASH_ML_DSA_44_WITH_SHA512 OBJ_sigAlgs,32L + +#define SN_HASH_ML_DSA_65_WITH_SHA512 "id-hash-ml-dsa-65-with-sha512" +#define LN_HASH_ML_DSA_65_WITH_SHA512 "HASH-ML-DSA-65-WITH-SHA512" +#define NID_HASH_ML_DSA_65_WITH_SHA512 1473 +#define OBJ_HASH_ML_DSA_65_WITH_SHA512 OBJ_sigAlgs,33L + +#define SN_HASH_ML_DSA_87_WITH_SHA512 "id-hash-ml-dsa-87-with-sha512" +#define LN_HASH_ML_DSA_87_WITH_SHA512 "HASH-ML-DSA-87-WITH-SHA512" +#define NID_HASH_ML_DSA_87_WITH_SHA512 1474 +#define OBJ_HASH_ML_DSA_87_WITH_SHA512 OBJ_sigAlgs,34L + +#define SN_SLH_DSA_SHA2_128s_WITH_SHA256 "id-hash-slh-dsa-sha2-128s-with-sha256" +#define LN_SLH_DSA_SHA2_128s_WITH_SHA256 "SLH-DSA-SHA2-128s-WITH-SHA256" +#define NID_SLH_DSA_SHA2_128s_WITH_SHA256 1475 +#define OBJ_SLH_DSA_SHA2_128s_WITH_SHA256 OBJ_sigAlgs,35L + +#define SN_SLH_DSA_SHA2_128f_WITH_SHA256 "id-hash-slh-dsa-sha2-128f-with-sha256" +#define LN_SLH_DSA_SHA2_128f_WITH_SHA256 "SLH-DSA-SHA2-128f-WITH-SHA256" +#define NID_SLH_DSA_SHA2_128f_WITH_SHA256 1476 +#define OBJ_SLH_DSA_SHA2_128f_WITH_SHA256 OBJ_sigAlgs,36L + +#define SN_SLH_DSA_SHA2_192s_WITH_SHA512 "id-hash-slh-dsa-sha2-192s-with-sha512" +#define LN_SLH_DSA_SHA2_192s_WITH_SHA512 "SLH-DSA-SHA2-192s-WITH-SHA512" +#define NID_SLH_DSA_SHA2_192s_WITH_SHA512 1477 +#define OBJ_SLH_DSA_SHA2_192s_WITH_SHA512 OBJ_sigAlgs,37L + +#define SN_SLH_DSA_SHA2_192f_WITH_SHA512 "id-hash-slh-dsa-sha2-192f-with-sha512" +#define LN_SLH_DSA_SHA2_192f_WITH_SHA512 "SLH-DSA-SHA2-192f-WITH-SHA512" +#define NID_SLH_DSA_SHA2_192f_WITH_SHA512 1478 +#define OBJ_SLH_DSA_SHA2_192f_WITH_SHA512 OBJ_sigAlgs,38L + +#define SN_SLH_DSA_SHA2_256s_WITH_SHA512 "id-hash-slh-dsa-sha2-256s-with-sha512" +#define LN_SLH_DSA_SHA2_256s_WITH_SHA512 "SLH-DSA-SHA2-256s-WITH-SHA512" +#define NID_SLH_DSA_SHA2_256s_WITH_SHA512 1479 +#define OBJ_SLH_DSA_SHA2_256s_WITH_SHA512 OBJ_sigAlgs,39L + +#define SN_SLH_DSA_SHA2_256f_WITH_SHA512 "id-hash-slh-dsa-sha2-256f-with-sha512" +#define LN_SLH_DSA_SHA2_256f_WITH_SHA512 "SLH-DSA-SHA2-256f-WITH-SHA512" +#define NID_SLH_DSA_SHA2_256f_WITH_SHA512 1480 +#define OBJ_SLH_DSA_SHA2_256f_WITH_SHA512 OBJ_sigAlgs,40L + +#define SN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "id-hash-slh-dsa-shake-128s-with-shake128" +#define LN_SLH_DSA_SHAKE_128s_WITH_SHAKE128 "SLH-DSA-SHAKE-128s-WITH-SHAKE128" +#define NID_SLH_DSA_SHAKE_128s_WITH_SHAKE128 1481 +#define OBJ_SLH_DSA_SHAKE_128s_WITH_SHAKE128 OBJ_sigAlgs,41L + +#define SN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "id-hash-slh-dsa-shake-128f-with-shake128" +#define LN_SLH_DSA_SHAKE_128f_WITH_SHAKE128 "SLH-DSA-SHAKE-128f-WITH-SHAKE128" +#define NID_SLH_DSA_SHAKE_128f_WITH_SHAKE128 1482 +#define OBJ_SLH_DSA_SHAKE_128f_WITH_SHAKE128 OBJ_sigAlgs,42L + +#define SN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "id-hash-slh-dsa-shake-192s-with-shake256" +#define LN_SLH_DSA_SHAKE_192s_WITH_SHAKE256 "SLH-DSA-SHAKE-192s-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_192s_WITH_SHAKE256 1483 +#define OBJ_SLH_DSA_SHAKE_192s_WITH_SHAKE256 OBJ_sigAlgs,43L + +#define SN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "id-hash-slh-dsa-shake-192f-with-shake256" +#define LN_SLH_DSA_SHAKE_192f_WITH_SHAKE256 "SLH-DSA-SHAKE-192f-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_192f_WITH_SHAKE256 1484 +#define OBJ_SLH_DSA_SHAKE_192f_WITH_SHAKE256 OBJ_sigAlgs,44L + +#define SN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "id-hash-slh-dsa-shake-256s-with-shake256" +#define LN_SLH_DSA_SHAKE_256s_WITH_SHAKE256 "SLH-DSA-SHAKE-256s-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_256s_WITH_SHAKE256 1485 +#define OBJ_SLH_DSA_SHAKE_256s_WITH_SHAKE256 OBJ_sigAlgs,45L + +#define SN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "id-hash-slh-dsa-shake-256f-with-shake256" +#define LN_SLH_DSA_SHAKE_256f_WITH_SHAKE256 "SLH-DSA-SHAKE-256f-WITH-SHAKE256" +#define NID_SLH_DSA_SHAKE_256f_WITH_SHAKE256 1486 +#define OBJ_SLH_DSA_SHAKE_256f_WITH_SHAKE256 OBJ_sigAlgs,46L + +#define SN_hold_instruction_code "holdInstructionCode" +#define LN_hold_instruction_code "Hold Instruction Code" +#define NID_hold_instruction_code 430 +#define OBJ_hold_instruction_code OBJ_id_ce,23L + +#define OBJ_holdInstruction OBJ_X9_57,2L + +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_none "Hold Instruction None" +#define NID_hold_instruction_none 431 +#define OBJ_hold_instruction_none OBJ_holdInstruction,1L + +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define NID_hold_instruction_call_issuer 432 +#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L + +#define SN_hold_instruction_reject "holdInstructionReject" +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define NID_hold_instruction_reject 433 +#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L + +#define SN_itu_t_identified_organization "itu-t-identified-organization" +#define NID_itu_t_identified_organization 1264 +#define OBJ_itu_t_identified_organization OBJ_itu_t,4L + +#define SN_etsi "etsi" +#define NID_etsi 1265 +#define OBJ_etsi OBJ_itu_t_identified_organization,0L + +#define SN_electronic_signature_standard "electronic-signature-standard" +#define NID_electronic_signature_standard 1266 +#define OBJ_electronic_signature_standard OBJ_etsi,1733L + +#define SN_ess_attributes "ess-attributes" +#define NID_ess_attributes 1267 +#define OBJ_ess_attributes OBJ_electronic_signature_standard,2L + +#define SN_id_aa_ets_mimeType "id-aa-ets-mimeType" +#define NID_id_aa_ets_mimeType 1268 +#define OBJ_id_aa_ets_mimeType OBJ_ess_attributes,1L + +#define SN_id_aa_ets_longTermValidation "id-aa-ets-longTermValidation" +#define NID_id_aa_ets_longTermValidation 1269 +#define OBJ_id_aa_ets_longTermValidation OBJ_ess_attributes,2L + +#define SN_id_aa_ets_SignaturePolicyDocument "id-aa-ets-SignaturePolicyDocument" +#define NID_id_aa_ets_SignaturePolicyDocument 1270 +#define OBJ_id_aa_ets_SignaturePolicyDocument OBJ_ess_attributes,3L + +#define SN_id_aa_ets_archiveTimestampV3 "id-aa-ets-archiveTimestampV3" +#define NID_id_aa_ets_archiveTimestampV3 1271 +#define OBJ_id_aa_ets_archiveTimestampV3 OBJ_ess_attributes,4L + +#define SN_id_aa_ATSHashIndex "id-aa-ATSHashIndex" +#define NID_id_aa_ATSHashIndex 1272 +#define OBJ_id_aa_ATSHashIndex OBJ_ess_attributes,5L + +#define SN_cades "cades" +#define NID_cades 1273 +#define OBJ_cades OBJ_etsi,19122L + +#define SN_cades_attributes "cades-attributes" +#define NID_cades_attributes 1274 +#define OBJ_cades_attributes OBJ_cades,1L + +#define SN_id_aa_ets_signerAttrV2 "id-aa-ets-signerAttrV2" +#define NID_id_aa_ets_signerAttrV2 1275 +#define OBJ_id_aa_ets_signerAttrV2 OBJ_cades_attributes,1L + +#define SN_id_aa_ets_sigPolicyStore "id-aa-ets-sigPolicyStore" +#define NID_id_aa_ets_sigPolicyStore 1276 +#define OBJ_id_aa_ets_sigPolicyStore OBJ_cades_attributes,3L + +#define SN_id_aa_ATSHashIndex_v2 "id-aa-ATSHashIndex-v2" +#define NID_id_aa_ATSHashIndex_v2 1277 +#define OBJ_id_aa_ATSHashIndex_v2 OBJ_cades_attributes,4L + +#define SN_id_aa_ATSHashIndex_v3 "id-aa-ATSHashIndex-v3" +#define NID_id_aa_ATSHashIndex_v3 1278 +#define OBJ_id_aa_ATSHashIndex_v3 OBJ_cades_attributes,5L + +#define SN_signedAssertion "signedAssertion" +#define NID_signedAssertion 1279 +#define OBJ_signedAssertion OBJ_cades_attributes,6L + +#define SN_data "data" +#define NID_data 434 +#define OBJ_data OBJ_itu_t,9L + +#define SN_pss "pss" +#define NID_pss 435 +#define OBJ_pss OBJ_data,2342L + +#define SN_ucl "ucl" +#define NID_ucl 436 +#define OBJ_ucl OBJ_pss,19200300L + +#define SN_pilot "pilot" +#define NID_pilot 437 +#define OBJ_pilot OBJ_ucl,100L + +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilotAttributeType 438 +#define OBJ_pilotAttributeType OBJ_pilot,1L + +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeSyntax 439 +#define OBJ_pilotAttributeSyntax OBJ_pilot,3L + +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotObjectClass 440 +#define OBJ_pilotObjectClass OBJ_pilot,4L + +#define LN_pilotGroups "pilotGroups" +#define NID_pilotGroups 441 +#define OBJ_pilotGroups OBJ_pilot,10L + +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L + +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_caseIgnoreIA5StringSyntax 443 +#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L + +#define LN_pilotObject "pilotObject" +#define NID_pilotObject 444 +#define OBJ_pilotObject OBJ_pilotObjectClass,3L + +#define LN_pilotPerson "pilotPerson" +#define NID_pilotPerson 445 +#define OBJ_pilotPerson OBJ_pilotObjectClass,4L + +#define SN_account "account" +#define NID_account 446 +#define OBJ_account OBJ_pilotObjectClass,5L + +#define SN_document "document" +#define NID_document 447 +#define OBJ_document OBJ_pilotObjectClass,6L + +#define SN_room "room" +#define NID_room 448 +#define OBJ_room OBJ_pilotObjectClass,7L + +#define LN_documentSeries "documentSeries" +#define NID_documentSeries 449 +#define OBJ_documentSeries OBJ_pilotObjectClass,9L + +#define SN_Domain "domain" +#define LN_Domain "Domain" +#define NID_Domain 392 +#define OBJ_Domain OBJ_pilotObjectClass,13L + +#define LN_rFC822localPart "rFC822localPart" +#define NID_rFC822localPart 450 +#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L + +#define LN_dNSDomain "dNSDomain" +#define NID_dNSDomain 451 +#define OBJ_dNSDomain OBJ_pilotObjectClass,15L + +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_domainRelatedObject 452 +#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L + +#define LN_friendlyCountry "friendlyCountry" +#define NID_friendlyCountry 453 +#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L + +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_simpleSecurityObject 454 +#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L + +#define LN_pilotOrganization "pilotOrganization" +#define NID_pilotOrganization 455 +#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L + +#define LN_pilotDSA "pilotDSA" +#define NID_pilotDSA 456 +#define OBJ_pilotDSA OBJ_pilotObjectClass,21L + +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_qualityLabelledData 457 +#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L + +#define SN_userId "UID" +#define LN_userId "userId" +#define NID_userId 458 +#define OBJ_userId OBJ_pilotAttributeType,1L + +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_textEncodedORAddress 459 +#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L + +#define SN_rfc822Mailbox "mail" +#define LN_rfc822Mailbox "rfc822Mailbox" +#define NID_rfc822Mailbox 460 +#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L + +#define SN_info "info" +#define NID_info 461 +#define OBJ_info OBJ_pilotAttributeType,4L + +#define LN_favouriteDrink "favouriteDrink" +#define NID_favouriteDrink 462 +#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L + +#define LN_roomNumber "roomNumber" +#define NID_roomNumber 463 +#define OBJ_roomNumber OBJ_pilotAttributeType,6L + +#define SN_photo "photo" +#define NID_photo 464 +#define OBJ_photo OBJ_pilotAttributeType,7L + +#define LN_userClass "userClass" +#define NID_userClass 465 +#define OBJ_userClass OBJ_pilotAttributeType,8L + +#define SN_host "host" +#define NID_host 466 +#define OBJ_host OBJ_pilotAttributeType,9L + +#define SN_manager "manager" +#define NID_manager 467 +#define OBJ_manager OBJ_pilotAttributeType,10L + +#define LN_documentIdentifier "documentIdentifier" +#define NID_documentIdentifier 468 +#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L + +#define LN_documentTitle "documentTitle" +#define NID_documentTitle 469 +#define OBJ_documentTitle OBJ_pilotAttributeType,12L + +#define LN_documentVersion "documentVersion" +#define NID_documentVersion 470 +#define OBJ_documentVersion OBJ_pilotAttributeType,13L + +#define LN_documentAuthor "documentAuthor" +#define NID_documentAuthor 471 +#define OBJ_documentAuthor OBJ_pilotAttributeType,14L + +#define LN_documentLocation "documentLocation" +#define NID_documentLocation 472 +#define OBJ_documentLocation OBJ_pilotAttributeType,15L + +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_homeTelephoneNumber 473 +#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L + +#define SN_secretary "secretary" +#define NID_secretary 474 +#define OBJ_secretary OBJ_pilotAttributeType,21L + +#define LN_otherMailbox "otherMailbox" +#define NID_otherMailbox 475 +#define OBJ_otherMailbox OBJ_pilotAttributeType,22L + +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_lastModifiedTime 476 +#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L + +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedBy 477 +#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L + +#define SN_domainComponent "DC" +#define LN_domainComponent "domainComponent" +#define NID_domainComponent 391 +#define OBJ_domainComponent OBJ_pilotAttributeType,25L + +#define LN_aRecord "aRecord" +#define NID_aRecord 478 +#define OBJ_aRecord OBJ_pilotAttributeType,26L + +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_pilotAttributeType27 479 +#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L + +#define LN_mXRecord "mXRecord" +#define NID_mXRecord 480 +#define OBJ_mXRecord OBJ_pilotAttributeType,28L + +#define LN_nSRecord "nSRecord" +#define NID_nSRecord 481 +#define OBJ_nSRecord OBJ_pilotAttributeType,29L + +#define LN_sOARecord "sOARecord" +#define NID_sOARecord 482 +#define OBJ_sOARecord OBJ_pilotAttributeType,30L + +#define LN_cNAMERecord "cNAMERecord" +#define NID_cNAMERecord 483 +#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L + +#define LN_associatedDomain "associatedDomain" +#define NID_associatedDomain 484 +#define OBJ_associatedDomain OBJ_pilotAttributeType,37L + +#define LN_associatedName "associatedName" +#define NID_associatedName 485 +#define OBJ_associatedName OBJ_pilotAttributeType,38L + +#define LN_homePostalAddress "homePostalAddress" +#define NID_homePostalAddress 486 +#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L + +#define LN_personalTitle "personalTitle" +#define NID_personalTitle 487 +#define OBJ_personalTitle OBJ_pilotAttributeType,40L + +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L + +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_pagerTelephoneNumber 489 +#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L + +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_friendlyCountryName 490 +#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L + +#define SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#define LN_organizationalStatus "organizationalStatus" +#define NID_organizationalStatus 491 +#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L + +#define LN_janetMailbox "janetMailbox" +#define NID_janetMailbox 492 +#define OBJ_janetMailbox OBJ_pilotAttributeType,46L + +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_mailPreferenceOption 493 +#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L + +#define LN_buildingName "buildingName" +#define NID_buildingName 494 +#define OBJ_buildingName OBJ_pilotAttributeType,48L + +#define LN_dSAQuality "dSAQuality" +#define NID_dSAQuality 495 +#define OBJ_dSAQuality OBJ_pilotAttributeType,49L + +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_singleLevelQuality 496 +#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L + +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_subtreeMinimumQuality 497 +#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L + +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMaximumQuality 498 +#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L + +#define LN_personalSignature "personalSignature" +#define NID_personalSignature 499 +#define OBJ_personalSignature OBJ_pilotAttributeType,53L + +#define LN_dITRedirect "dITRedirect" +#define NID_dITRedirect 500 +#define OBJ_dITRedirect OBJ_pilotAttributeType,54L + +#define SN_audio "audio" +#define NID_audio 501 +#define OBJ_audio OBJ_pilotAttributeType,55L + +#define LN_documentPublisher "documentPublisher" +#define NID_documentPublisher 502 +#define OBJ_documentPublisher OBJ_pilotAttributeType,56L + +#define SN_id_set "id-set" +#define LN_id_set "Secure Electronic Transactions" +#define NID_id_set 512 +#define OBJ_id_set OBJ_international_organizations,42L + +#define SN_set_ctype "set-ctype" +#define LN_set_ctype "content types" +#define NID_set_ctype 513 +#define OBJ_set_ctype OBJ_id_set,0L + +#define SN_set_msgExt "set-msgExt" +#define LN_set_msgExt "message extensions" +#define NID_set_msgExt 514 +#define OBJ_set_msgExt OBJ_id_set,1L + +#define SN_set_attr "set-attr" +#define NID_set_attr 515 +#define OBJ_set_attr OBJ_id_set,3L + +#define SN_set_policy "set-policy" +#define NID_set_policy 516 +#define OBJ_set_policy OBJ_id_set,5L + +#define SN_set_certExt "set-certExt" +#define LN_set_certExt "certificate extensions" +#define NID_set_certExt 517 +#define OBJ_set_certExt OBJ_id_set,7L + +#define SN_set_brand "set-brand" +#define NID_set_brand 518 +#define OBJ_set_brand OBJ_id_set,8L + +#define SN_setct_PANData "setct-PANData" +#define NID_setct_PANData 519 +#define OBJ_setct_PANData OBJ_set_ctype,0L + +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANToken 520 +#define OBJ_setct_PANToken OBJ_set_ctype,1L + +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANOnly 521 +#define OBJ_setct_PANOnly OBJ_set_ctype,2L + +#define SN_setct_OIData "setct-OIData" +#define NID_setct_OIData 522 +#define OBJ_setct_OIData OBJ_set_ctype,3L + +#define SN_setct_PI "setct-PI" +#define NID_setct_PI 523 +#define OBJ_setct_PI OBJ_set_ctype,4L + +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PIData 524 +#define OBJ_setct_PIData OBJ_set_ctype,5L + +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIDataUnsigned 525 +#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L + +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_HODInput 526 +#define OBJ_setct_HODInput OBJ_set_ctype,7L + +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_AuthResBaggage 527 +#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L + +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L + +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevResBaggage 529 +#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L + +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_CapTokenSeq 530 +#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L + +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_PInitResData 531 +#define OBJ_setct_PInitResData OBJ_set_ctype,12L + +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PI_TBS 532 +#define OBJ_setct_PI_TBS OBJ_set_ctype,13L + +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PResData 533 +#define OBJ_setct_PResData OBJ_set_ctype,14L + +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_AuthReqTBS 534 +#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L + +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthResTBS 535 +#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L + +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBSX 536 +#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L + +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthTokenTBS 537 +#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L + +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_CapTokenData 538 +#define OBJ_setct_CapTokenData OBJ_set_ctype,20L + +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenTBS 539 +#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L + +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_AcqCardCodeMsg 540 +#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L + +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AuthRevReqTBS 541 +#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L + +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevResData 542 +#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L + +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResTBS 543 +#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L + +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_CapReqTBS 544 +#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L + +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBSX 545 +#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L + +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapResData 546 +#define OBJ_setct_CapResData OBJ_set_ctype,28L + +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapRevReqTBS 547 +#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L + +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBSX 548 +#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L + +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevResData 549 +#define OBJ_setct_CapRevResData OBJ_set_ctype,31L + +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CredReqTBS 550 +#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L + +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBSX 551 +#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L + +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredResData 552 +#define OBJ_setct_CredResData OBJ_set_ctype,34L + +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredRevReqTBS 553 +#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L + +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBSX 554 +#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L + +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevResData 555 +#define OBJ_setct_CredRevResData OBJ_set_ctype,37L + +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_PCertReqData 556 +#define OBJ_setct_PCertReqData OBJ_set_ctype,38L + +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertResTBS 557 +#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L + +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_BatchAdminReqData 558 +#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L + +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminResData 559 +#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L + +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L + +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L + +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_RegFormResTBS 562 +#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L + +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_CertReqData 563 +#define OBJ_setct_CertReqData OBJ_set_ctype,45L + +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqTBS 564 +#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L + +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertResData 565 +#define OBJ_setct_CertResData OBJ_set_ctype,47L + +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertInqReqTBS 566 +#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L + +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_ErrorTBS 567 +#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L + +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L + +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIUnsignedTBE 569 +#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L + +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_AuthReqTBE 570 +#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L + +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthResTBE 571 +#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L + +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBEX 572 +#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L + +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L + +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_CapTokenTBE 574 +#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L + +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBEX 575 +#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L + +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L + +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AuthRevReqTBE 577 +#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L + +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevResTBE 578 +#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L + +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBEB 579 +#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L + +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_CapReqTBE 580 +#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L + +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBEX 581 +#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L + +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapResTBE 582 +#define OBJ_setct_CapResTBE OBJ_set_ctype,64L + +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapRevReqTBE 583 +#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L + +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBEX 584 +#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L + +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevResTBE 585 +#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L + +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CredReqTBE 586 +#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L + +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBEX 587 +#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L + +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredResTBE 588 +#define OBJ_setct_CredResTBE OBJ_set_ctype,70L + +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredRevReqTBE 589 +#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L + +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBEX 590 +#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L + +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevResTBE 591 +#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L + +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L + +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminResTBE 593 +#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L + +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L + +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_CertReqTBE 595 +#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L + +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBEX 596 +#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L + +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertResTBE 597 +#define OBJ_setct_CertResTBE OBJ_set_ctype,79L + +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CRLNotificationTBS 598 +#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L + +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L + +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_BCIDistributionTBS 600 +#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L + +#define SN_setext_genCrypt "setext-genCrypt" +#define LN_setext_genCrypt "generic cryptogram" +#define NID_setext_genCrypt 601 +#define OBJ_setext_genCrypt OBJ_set_msgExt,1L + +#define SN_setext_miAuth "setext-miAuth" +#define LN_setext_miAuth "merchant initiated auth" +#define NID_setext_miAuth 602 +#define OBJ_setext_miAuth OBJ_set_msgExt,3L + +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_pinSecure 603 +#define OBJ_setext_pinSecure OBJ_set_msgExt,4L + +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinAny 604 +#define OBJ_setext_pinAny OBJ_set_msgExt,5L + +#define SN_setext_track2 "setext-track2" +#define NID_setext_track2 605 +#define OBJ_setext_track2 OBJ_set_msgExt,7L + +#define SN_setext_cv "setext-cv" +#define LN_setext_cv "additional verification" +#define NID_setext_cv 606 +#define OBJ_setext_cv OBJ_set_msgExt,8L + +#define SN_set_policy_root "set-policy-root" +#define NID_set_policy_root 607 +#define OBJ_set_policy_root OBJ_set_policy,0L + +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_setCext_hashedRoot 608 +#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L + +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_certType 609 +#define OBJ_setCext_certType OBJ_set_certExt,1L + +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_merchData 610 +#define OBJ_setCext_merchData OBJ_set_certExt,2L + +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_cCertRequired 611 +#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L + +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_tunneling 612 +#define OBJ_setCext_tunneling OBJ_set_certExt,4L + +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_setExt 613 +#define OBJ_setCext_setExt OBJ_set_certExt,5L + +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setQualf 614 +#define OBJ_setCext_setQualf OBJ_set_certExt,6L + +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_PGWYcapabilities 615 +#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L + +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_TokenIdentifier 616 +#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L + +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_Track2Data 617 +#define OBJ_setCext_Track2Data OBJ_set_certExt,9L + +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_TokenType 618 +#define OBJ_setCext_TokenType OBJ_set_certExt,10L + +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_IssuerCapabilities 619 +#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L + +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setAttr_Cert 620 +#define OBJ_setAttr_Cert OBJ_set_attr,0L + +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define NID_setAttr_PGWYcap 621 +#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L + +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_TokenType 622 +#define OBJ_setAttr_TokenType OBJ_set_attr,2L + +#define SN_setAttr_IssCap "setAttr-IssCap" +#define LN_setAttr_IssCap "issuer capabilities" +#define NID_setAttr_IssCap 623 +#define OBJ_setAttr_IssCap OBJ_set_attr,3L + +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_set_rootKeyThumb 624 +#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L + +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_addPolicy 625 +#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L + +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_setAttr_Token_EMV 626 +#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L + +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_B0Prime 627 +#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L + +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_IssCap_CVM 628 +#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L + +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_T2 629 +#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L + +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_Sig 630 +#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L + +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define NID_setAttr_GenCryptgrm 631 +#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L + +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define LN_setAttr_T2Enc "encrypted track 2" +#define NID_setAttr_T2Enc 632 +#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L + +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define NID_setAttr_T2cleartxt 633 +#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L + +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define LN_setAttr_TokICCsig "ICC or token signature" +#define NID_setAttr_TokICCsig 634 +#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L + +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define LN_setAttr_SecDevSig "secure device signature" +#define NID_setAttr_SecDevSig 635 +#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L + +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_set_brand_IATA_ATA 636 +#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L + +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_Diners 637 +#define OBJ_set_brand_Diners OBJ_set_brand,30L + +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_AmericanExpress 638 +#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L + +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_JCB 639 +#define OBJ_set_brand_JCB OBJ_set_brand,35L + +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_Visa 640 +#define OBJ_set_brand_Visa OBJ_set_brand,4L + +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_MasterCard 641 +#define OBJ_set_brand_MasterCard OBJ_set_brand,5L + +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_Novus 642 +#define OBJ_set_brand_Novus OBJ_set_brand,6011L + +#define SN_des_cdmf "DES-CDMF" +#define LN_des_cdmf "des-cdmf" +#define NID_des_cdmf 643 +#define OBJ_des_cdmf OBJ_rsadsi,3L,10L + +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_rsaOAEPEncryptionSET 644 +#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L + +#define SN_ipsec3 "Oakley-EC2N-3" +#define LN_ipsec3 "ipsec3" +#define NID_ipsec3 749 + +#define SN_ipsec4 "Oakley-EC2N-4" +#define LN_ipsec4 "ipsec4" +#define NID_ipsec4 750 + +#define SN_whirlpool "whirlpool" +#define NID_whirlpool 804 +#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L + +#define SN_cryptopro "cryptopro" +#define NID_cryptopro 805 +#define OBJ_cryptopro OBJ_member_body,643L,2L,2L + +#define SN_cryptocom "cryptocom" +#define NID_cryptocom 806 +#define OBJ_cryptocom OBJ_member_body,643L,2L,9L + +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L + +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L + +#define SN_id_GostR3411_94 "md_gost94" +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define NID_id_GostR3411_94 809 +#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L + +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define NID_id_HMACGostR3411_94 810 +#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L + +#define SN_id_GostR3410_2001 "gost2001" +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define NID_id_GostR3410_2001 811 +#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L + +#define SN_id_GostR3410_94 "gost94" +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define NID_id_GostR3410_94 812 +#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L + +#define SN_id_Gost28147_89 "gost89" +#define LN_id_Gost28147_89 "GOST 28147-89" +#define NID_id_Gost28147_89 813 +#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L + +#define SN_gost89_cnt "gost89-cnt" +#define NID_gost89_cnt 814 + +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#define SN_id_Gost28147_89_MAC "gost-mac" +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define NID_id_Gost28147_89_MAC 815 +#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L + +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define NID_id_GostR3411_94_prf 816 +#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L + +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define NID_id_GostR3410_2001DH 817 +#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L + +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define NID_id_GostR3410_94DH 818 +#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L + +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L + +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L + +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L + +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L + +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L + +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L + +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L + +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L + +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L + +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L + +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L + +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L + +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L + +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L + +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L + +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L + +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L + +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L + +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L + +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L + +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L + +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L + +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L + +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L + +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_94_a 845 +#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L + +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_aBis 846 +#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L + +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_b 847 +#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L + +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_bBis 848 +#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L + +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define NID_id_Gost28147_89_cc 849 +#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L + +#define SN_id_GostR3410_94_cc "gost94cc" +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define NID_id_GostR3410_94_cc 850 +#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L + +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define NID_id_GostR3410_2001_cc 851 +#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L + +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L + +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L + +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L + +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_magma_ctr_acpkm "magma-ctr-acpkm" +#define NID_magma_ctr_acpkm 1174 +#define OBJ_magma_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_magma_ctr_acpkm_omac "magma-ctr-acpkm-omac" +#define NID_magma_ctr_acpkm_omac 1175 +#define OBJ_magma_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_kuznyechik_ctr_acpkm "kuznyechik-ctr-acpkm" +#define NID_kuznyechik_ctr_acpkm 1177 +#define OBJ_kuznyechik_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_kuznyechik_ctr_acpkm_omac "kuznyechik-ctr-acpkm-omac" +#define NID_kuznyechik_ctr_acpkm_omac 1178 +#define OBJ_kuznyechik_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_magma_kexp15 "magma-kexp15" +#define NID_magma_kexp15 1181 +#define OBJ_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_kuznyechik_kexp15 "kuznyechik-kexp15" +#define NID_kuznyechik_kexp15 1183 +#define OBJ_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_OGRNIP "OGRNIP" +#define LN_OGRNIP "OGRNIP" +#define NID_OGRNIP 1226 +#define OBJ_OGRNIP OBJ_member_body,643L,100L,5L + +#define SN_subjectSignTool "subjectSignTool" +#define LN_subjectSignTool "Signing Tool of Subject" +#define NID_subjectSignTool 1007 +#define OBJ_subjectSignTool OBJ_member_body,643L,100L,111L + +#define SN_issuerSignTool "issuerSignTool" +#define LN_issuerSignTool "Signing Tool of Issuer" +#define NID_issuerSignTool 1008 +#define OBJ_issuerSignTool OBJ_member_body,643L,100L,112L + +#define SN_classSignTool "classSignTool" +#define LN_classSignTool "Class of Signing Tool" +#define NID_classSignTool 1227 +#define OBJ_classSignTool OBJ_member_body,643L,100L,113L + +#define SN_classSignToolKC1 "classSignToolKC1" +#define LN_classSignToolKC1 "Class of Signing Tool KC1" +#define NID_classSignToolKC1 1228 +#define OBJ_classSignToolKC1 OBJ_member_body,643L,100L,113L,1L + +#define SN_classSignToolKC2 "classSignToolKC2" +#define LN_classSignToolKC2 "Class of Signing Tool KC2" +#define NID_classSignToolKC2 1229 +#define OBJ_classSignToolKC2 OBJ_member_body,643L,100L,113L,2L + +#define SN_classSignToolKC3 "classSignToolKC3" +#define LN_classSignToolKC3 "Class of Signing Tool KC3" +#define NID_classSignToolKC3 1230 +#define OBJ_classSignToolKC3 OBJ_member_body,643L,100L,113L,3L + +#define SN_classSignToolKB1 "classSignToolKB1" +#define LN_classSignToolKB1 "Class of Signing Tool KB1" +#define NID_classSignToolKB1 1231 +#define OBJ_classSignToolKB1 OBJ_member_body,643L,100L,113L,4L + +#define SN_classSignToolKB2 "classSignToolKB2" +#define LN_classSignToolKB2 "Class of Signing Tool KB2" +#define NID_classSignToolKB2 1232 +#define OBJ_classSignToolKB2 OBJ_member_body,643L,100L,113L,5L + +#define SN_classSignToolKA1 "classSignToolKA1" +#define LN_classSignToolKA1 "Class of Signing Tool KA1" +#define NID_classSignToolKA1 1233 +#define OBJ_classSignToolKA1 OBJ_member_body,643L,100L,113L,6L + +#define SN_kuznyechik_ecb "kuznyechik-ecb" +#define NID_kuznyechik_ecb 1012 + +#define SN_kuznyechik_ctr "kuznyechik-ctr" +#define NID_kuznyechik_ctr 1013 + +#define SN_kuznyechik_ofb "kuznyechik-ofb" +#define NID_kuznyechik_ofb 1014 + +#define SN_kuznyechik_cbc "kuznyechik-cbc" +#define NID_kuznyechik_cbc 1015 + +#define SN_kuznyechik_cfb "kuznyechik-cfb" +#define NID_kuznyechik_cfb 1016 + +#define SN_kuznyechik_mac "kuznyechik-mac" +#define NID_kuznyechik_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define LN_camellia_128_cbc "camellia-128-cbc" +#define NID_camellia_128_cbc 751 +#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L + +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define LN_camellia_192_cbc "camellia-192-cbc" +#define NID_camellia_192_cbc 752 +#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L + +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define LN_camellia_256_cbc "camellia-256-cbc" +#define NID_camellia_256_cbc 753 +#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L + +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_id_camellia128_wrap 907 +#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L + +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia192_wrap 908 +#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L + +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia256_wrap 909 +#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L + +#define OBJ_ntt_ds 0L,3L,4401L,5L + +#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L + +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define LN_camellia_128_ecb "camellia-128-ecb" +#define NID_camellia_128_ecb 754 +#define OBJ_camellia_128_ecb OBJ_camellia,1L + +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define NID_camellia_128_ofb128 766 +#define OBJ_camellia_128_ofb128 OBJ_camellia,3L + +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define NID_camellia_128_cfb128 757 +#define OBJ_camellia_128_cfb128 OBJ_camellia,4L + +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define LN_camellia_192_ecb "camellia-192-ecb" +#define NID_camellia_192_ecb 755 +#define OBJ_camellia_192_ecb OBJ_camellia,21L + +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define NID_camellia_192_ofb128 767 +#define OBJ_camellia_192_ofb128 OBJ_camellia,23L + +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define NID_camellia_192_cfb128 758 +#define OBJ_camellia_192_cfb128 OBJ_camellia,24L + +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define LN_camellia_256_ecb "camellia-256-ecb" +#define NID_camellia_256_ecb 756 +#define OBJ_camellia_256_ecb OBJ_camellia,41L + +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define NID_camellia_256_ofb128 768 +#define OBJ_camellia_256_ofb128 OBJ_camellia,43L + +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define NID_camellia_256_cfb128 759 +#define OBJ_camellia_256_cfb128 OBJ_camellia,44L + +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define NID_camellia_128_cfb1 760 + +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define NID_camellia_192_cfb1 761 + +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define NID_camellia_256_cfb1 762 + +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define NID_camellia_128_cfb8 763 + +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define NID_camellia_192_cfb8 764 + +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define NID_camellia_256_cfb8 765 + +#define OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#define SN_kisa "KISA" +#define LN_kisa "kisa" +#define NID_kisa 773 +#define OBJ_kisa OBJ_member_body,410L,200004L + +#define SN_seed_ecb "SEED-ECB" +#define LN_seed_ecb "seed-ecb" +#define NID_seed_ecb 776 +#define OBJ_seed_ecb OBJ_kisa,1L,3L + +#define SN_seed_cbc "SEED-CBC" +#define LN_seed_cbc "seed-cbc" +#define NID_seed_cbc 777 +#define OBJ_seed_cbc OBJ_kisa,1L,4L + +#define SN_seed_cfb128 "SEED-CFB" +#define LN_seed_cfb128 "seed-cfb" +#define NID_seed_cfb128 779 +#define OBJ_seed_cfb128 OBJ_kisa,1L,5L + +#define SN_seed_ofb128 "SEED-OFB" +#define LN_seed_ofb128 "seed-ofb" +#define NID_seed_ofb128 778 +#define OBJ_seed_ofb128 OBJ_kisa,1L,6L + +#define SN_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#define SN_sm4_gcm "SM4-GCM" +#define LN_sm4_gcm "sm4-gcm" +#define NID_sm4_gcm 1248 +#define OBJ_sm4_gcm OBJ_sm_scheme,104L,8L + +#define SN_sm4_ccm "SM4-CCM" +#define LN_sm4_ccm "sm4-ccm" +#define NID_sm4_ccm 1249 +#define OBJ_sm4_ccm OBJ_sm_scheme,104L,9L + +#define SN_sm4_xts "SM4-XTS" +#define LN_sm4_xts "sm4-xts" +#define NID_sm4_xts 1290 +#define OBJ_sm4_xts OBJ_sm_scheme,104L,10L + +#define SN_hmac "HMAC" +#define LN_hmac "hmac" +#define NID_hmac 855 + +#define SN_cmac "CMAC" +#define LN_cmac "cmac" +#define NID_cmac 894 + +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define NID_rc4_hmac_md5 915 + +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define NID_aes_128_cbc_hmac_sha1 916 + +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define NID_aes_192_cbc_hmac_sha1 917 + +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define NID_aes_256_cbc_hmac_sha1 918 + +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define NID_aes_128_cbc_hmac_sha256 948 + +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define NID_aes_192_cbc_hmac_sha256 949 + +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define NID_aes_256_cbc_hmac_sha256 950 + +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#define SN_aes_128_cbc_hmac_sha1_etm "AES-128-CBC-HMAC-SHA1-ETM" +#define LN_aes_128_cbc_hmac_sha1_etm "aes-128-cbc-hmac-sha1-etm" +#define NID_aes_128_cbc_hmac_sha1_etm 1487 + +#define SN_aes_192_cbc_hmac_sha1_etm "AES-192-CBC-HMAC-SHA1-ETM" +#define LN_aes_192_cbc_hmac_sha1_etm "aes-192-cbc-hmac-sha1-etm" +#define NID_aes_192_cbc_hmac_sha1_etm 1488 + +#define SN_aes_256_cbc_hmac_sha1_etm "AES-256-CBC-HMAC-SHA1-ETM" +#define LN_aes_256_cbc_hmac_sha1_etm "aes-256-cbc-hmac-sha1-etm" +#define NID_aes_256_cbc_hmac_sha1_etm 1489 + +#define SN_aes_128_cbc_hmac_sha256_etm "AES-128-CBC-HMAC-SHA256-ETM" +#define LN_aes_128_cbc_hmac_sha256_etm "aes-128-cbc-hmac-sha256-etm" +#define NID_aes_128_cbc_hmac_sha256_etm 1490 + +#define SN_aes_192_cbc_hmac_sha256_etm "AES-192-CBC-HMAC-SHA256-ETM" +#define LN_aes_192_cbc_hmac_sha256_etm "aes-192-cbc-hmac-sha256-etm" +#define NID_aes_192_cbc_hmac_sha256_etm 1491 + +#define SN_aes_256_cbc_hmac_sha256_etm "AES-256-CBC-HMAC-SHA256-ETM" +#define LN_aes_256_cbc_hmac_sha256_etm "aes-256-cbc-hmac-sha256-etm" +#define NID_aes_256_cbc_hmac_sha256_etm 1492 + +#define SN_aes_128_cbc_hmac_sha512_etm "AES-128-CBC-HMAC-SHA512-ETM" +#define LN_aes_128_cbc_hmac_sha512_etm "aes-128-cbc-hmac-sha512-etm" +#define NID_aes_128_cbc_hmac_sha512_etm 1493 + +#define SN_aes_192_cbc_hmac_sha512_etm "AES-192-CBC-HMAC-SHA512-ETM" +#define LN_aes_192_cbc_hmac_sha512_etm "aes-192-cbc-hmac-sha512-etm" +#define NID_aes_192_cbc_hmac_sha512_etm 1494 + +#define SN_aes_256_cbc_hmac_sha512_etm "AES-256-CBC-HMAC-SHA512-ETM" +#define LN_aes_256_cbc_hmac_sha512_etm "aes-256-cbc-hmac-sha512-etm" +#define NID_aes_256_cbc_hmac_sha512_etm 1495 + +#define SN_dhpublicnumber "dhpublicnumber" +#define LN_dhpublicnumber "X9.42 DH" +#define NID_dhpublicnumber 920 +#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L + +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_brainpoolP160r1 921 +#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L + +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160t1 922 +#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L + +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP192r1 923 +#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L + +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192t1 924 +#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L + +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP224r1 925 +#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L + +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224t1 926 +#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L + +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP256r1 927 +#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L + +#define SN_brainpoolP256r1tls13 "brainpoolP256r1tls13" +#define NID_brainpoolP256r1tls13 1285 + +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256t1 928 +#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L + +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP320r1 929 +#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L + +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320t1 930 +#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L + +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP384r1 931 +#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L + +#define SN_brainpoolP384r1tls13 "brainpoolP384r1tls13" +#define NID_brainpoolP384r1tls13 1286 + +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384t1 932 +#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L + +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP512r1 933 +#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L + +#define SN_brainpoolP512r1tls13 "brainpoolP512r1tls13" +#define NID_brainpoolP512r1tls13 1287 + +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512t1 934 +#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L + +#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L + +#define OBJ_secg_scheme OBJ_certicom_arc,1L + +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L + +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L + +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L + +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L + +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L + +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L + +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L + +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L + +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L + +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L + +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dh_std_kdf 946 + +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_cofactor_kdf 947 + +#define SN_ct_precert_scts "ct_precert_scts" +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define NID_ct_precert_scts 951 +#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L + +#define SN_ct_precert_poison "ct_precert_poison" +#define LN_ct_precert_poison "CT Precertificate Poison" +#define NID_ct_precert_poison 952 +#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L + +#define SN_ct_precert_signer "ct_precert_signer" +#define LN_ct_precert_signer "CT Precertificate Signer" +#define NID_ct_precert_signer 953 +#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L + +#define SN_ct_cert_scts "ct_cert_scts" +#define LN_ct_cert_scts "CT Certificate SCTs" +#define NID_ct_cert_scts 954 +#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L + +#define SN_jurisdictionLocalityName "jurisdictionL" +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define NID_jurisdictionLocalityName 955 +#define OBJ_jurisdictionLocalityName OBJ_ms_corp,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName OBJ_ms_corp,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName OBJ_ms_corp,60L,2L,1L,3L + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_sshkdf "SSHKDF" +#define LN_sshkdf "sshkdf" +#define NID_sshkdf 1203 + +#define SN_sskdf "SSKDF" +#define LN_sskdf "sskdf" +#define NID_sskdf 1205 + +#define SN_x942kdf "X942KDF" +#define LN_x942kdf "x942kdf" +#define NID_x942kdf 1207 + +#define SN_x963kdf "X963KDF" +#define LN_x963kdf "x963kdf" +#define NID_x963kdf 1206 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_gost18 "KxGOST18" +#define LN_kx_gost18 "kx-gost18" +#define NID_kx_gost18 1218 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_modp_1536 "modp_1536" +#define NID_modp_1536 1212 + +#define SN_modp_2048 "modp_2048" +#define NID_modp_2048 1213 + +#define SN_modp_3072 "modp_3072" +#define NID_modp_3072 1214 + +#define SN_modp_4096 "modp_4096" +#define NID_modp_4096 1215 + +#define SN_modp_6144 "modp_6144" +#define NID_modp_6144 1216 + +#define SN_modp_8192 "modp_8192" +#define NID_modp_8192 1217 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L + +#define SN_aes_128_siv "AES-128-SIV" +#define LN_aes_128_siv "aes-128-siv" +#define NID_aes_128_siv 1198 + +#define SN_aes_192_siv "AES-192-SIV" +#define LN_aes_192_siv "aes-192-siv" +#define NID_aes_192_siv 1199 + +#define SN_aes_256_siv "AES-256-SIV" +#define LN_aes_256_siv "aes-256-siv" +#define NID_aes_256_siv 1200 + +#define SN_oracle "oracle-organization" +#define LN_oracle "Oracle organization" +#define NID_oracle 1282 +#define OBJ_oracle OBJ_joint_iso_itu_t,16L,840L,1L,113894L + +#define SN_oracle_jdk_trustedkeyusage "oracle-jdk-trustedkeyusage" +#define LN_oracle_jdk_trustedkeyusage "Trusted key usage (Oracle)" +#define NID_oracle_jdk_trustedkeyusage 1283 +#define OBJ_oracle_jdk_trustedkeyusage OBJ_oracle,746875L,1L,1L + +#define SN_brotli "brotli" +#define LN_brotli "Brotli compression" +#define NID_brotli 1288 + +#define SN_zstd "zstd" +#define LN_zstd "Zstandard compression" +#define NID_zstd 1289 + +#define SN_tcg "tcg" +#define LN_tcg "Trusted Computing Group" +#define NID_tcg 1324 +#define OBJ_tcg 2L,23L,133L + +#define SN_tcg_tcpaSpecVersion "tcg-tcpaSpecVersion" +#define NID_tcg_tcpaSpecVersion 1325 +#define OBJ_tcg_tcpaSpecVersion OBJ_tcg,1L + +#define SN_tcg_attribute "tcg-attribute" +#define LN_tcg_attribute "Trusted Computing Group Attributes" +#define NID_tcg_attribute 1326 +#define OBJ_tcg_attribute OBJ_tcg,2L + +#define SN_tcg_protocol "tcg-protocol" +#define LN_tcg_protocol "Trusted Computing Group Protocols" +#define NID_tcg_protocol 1327 +#define OBJ_tcg_protocol OBJ_tcg,3L + +#define SN_tcg_algorithm "tcg-algorithm" +#define LN_tcg_algorithm "Trusted Computing Group Algorithms" +#define NID_tcg_algorithm 1328 +#define OBJ_tcg_algorithm OBJ_tcg,4L + +#define SN_tcg_platformClass "tcg-platformClass" +#define LN_tcg_platformClass "Trusted Computing Group Platform Classes" +#define NID_tcg_platformClass 1329 +#define OBJ_tcg_platformClass OBJ_tcg,5L + +#define SN_tcg_ce "tcg-ce" +#define LN_tcg_ce "Trusted Computing Group Certificate Extensions" +#define NID_tcg_ce 1330 +#define OBJ_tcg_ce OBJ_tcg,6L + +#define SN_tcg_kp "tcg-kp" +#define LN_tcg_kp "Trusted Computing Group Key Purposes" +#define NID_tcg_kp 1331 +#define OBJ_tcg_kp OBJ_tcg,8L + +#define SN_tcg_ca "tcg-ca" +#define LN_tcg_ca "Trusted Computing Group Certificate Policies" +#define NID_tcg_ca 1332 +#define OBJ_tcg_ca OBJ_tcg,11L + +#define SN_tcg_address "tcg-address" +#define LN_tcg_address "Trusted Computing Group Address Formats" +#define NID_tcg_address 1333 +#define OBJ_tcg_address OBJ_tcg,17L + +#define SN_tcg_registry "tcg-registry" +#define LN_tcg_registry "Trusted Computing Group Registry" +#define NID_tcg_registry 1334 +#define OBJ_tcg_registry OBJ_tcg,18L + +#define SN_tcg_traits "tcg-traits" +#define LN_tcg_traits "Trusted Computing Group Traits" +#define NID_tcg_traits 1335 +#define OBJ_tcg_traits OBJ_tcg,19L + +#define SN_tcg_common "tcg-common" +#define LN_tcg_common "Trusted Computing Group Common" +#define NID_tcg_common 1336 +#define OBJ_tcg_common OBJ_tcg_platformClass,1L + +#define SN_tcg_at_platformManufacturerStr "tcg-at-platformManufacturerStr" +#define LN_tcg_at_platformManufacturerStr "TCG Platform Manufacturer String" +#define NID_tcg_at_platformManufacturerStr 1337 +#define OBJ_tcg_at_platformManufacturerStr OBJ_tcg_common,1L + +#define SN_tcg_at_platformManufacturerId "tcg-at-platformManufacturerId" +#define LN_tcg_at_platformManufacturerId "TCG Platform Manufacturer ID" +#define NID_tcg_at_platformManufacturerId 1338 +#define OBJ_tcg_at_platformManufacturerId OBJ_tcg_common,2L + +#define SN_tcg_at_platformConfigUri "tcg-at-platformConfigUri" +#define LN_tcg_at_platformConfigUri "TCG Platform Configuration URI" +#define NID_tcg_at_platformConfigUri 1339 +#define OBJ_tcg_at_platformConfigUri OBJ_tcg_common,3L + +#define SN_tcg_at_platformModel "tcg-at-platformModel" +#define LN_tcg_at_platformModel "TCG Platform Model" +#define NID_tcg_at_platformModel 1340 +#define OBJ_tcg_at_platformModel OBJ_tcg_common,4L + +#define SN_tcg_at_platformVersion "tcg-at-platformVersion" +#define LN_tcg_at_platformVersion "TCG Platform Version" +#define NID_tcg_at_platformVersion 1341 +#define OBJ_tcg_at_platformVersion OBJ_tcg_common,5L + +#define SN_tcg_at_platformSerial "tcg-at-platformSerial" +#define LN_tcg_at_platformSerial "TCG Platform Serial Number" +#define NID_tcg_at_platformSerial 1342 +#define OBJ_tcg_at_platformSerial OBJ_tcg_common,6L + +#define SN_tcg_at_platformConfiguration "tcg-at-platformConfiguration" +#define LN_tcg_at_platformConfiguration "TCG Platform Configuration" +#define NID_tcg_at_platformConfiguration 1343 +#define OBJ_tcg_at_platformConfiguration OBJ_tcg_common,7L + +#define SN_tcg_at_platformIdentifier "tcg-at-platformIdentifier" +#define LN_tcg_at_platformIdentifier "TCG Platform Identifier" +#define NID_tcg_at_platformIdentifier 1344 +#define OBJ_tcg_at_platformIdentifier OBJ_tcg_common,8L + +#define SN_tcg_at_tpmManufacturer "tcg-at-tpmManufacturer" +#define LN_tcg_at_tpmManufacturer "TPM Manufacturer" +#define NID_tcg_at_tpmManufacturer 1345 +#define OBJ_tcg_at_tpmManufacturer OBJ_tcg_attribute,1L + +#define SN_tcg_at_tpmModel "tcg-at-tpmModel" +#define LN_tcg_at_tpmModel "TPM Model" +#define NID_tcg_at_tpmModel 1346 +#define OBJ_tcg_at_tpmModel OBJ_tcg_attribute,2L + +#define SN_tcg_at_tpmVersion "tcg-at-tpmVersion" +#define LN_tcg_at_tpmVersion "TPM Version" +#define NID_tcg_at_tpmVersion 1347 +#define OBJ_tcg_at_tpmVersion OBJ_tcg_attribute,3L + +#define SN_tcg_at_securityQualities "tcg-at-securityQualities" +#define LN_tcg_at_securityQualities "Security Qualities" +#define NID_tcg_at_securityQualities 1348 +#define OBJ_tcg_at_securityQualities OBJ_tcg_attribute,10L + +#define SN_tcg_at_tpmProtectionProfile "tcg-at-tpmProtectionProfile" +#define LN_tcg_at_tpmProtectionProfile "TPM Protection Profile" +#define NID_tcg_at_tpmProtectionProfile 1349 +#define OBJ_tcg_at_tpmProtectionProfile OBJ_tcg_attribute,11L + +#define SN_tcg_at_tpmSecurityTarget "tcg-at-tpmSecurityTarget" +#define LN_tcg_at_tpmSecurityTarget "TPM Security Target" +#define NID_tcg_at_tpmSecurityTarget 1350 +#define OBJ_tcg_at_tpmSecurityTarget OBJ_tcg_attribute,12L + +#define SN_tcg_at_tbbProtectionProfile "tcg-at-tbbProtectionProfile" +#define LN_tcg_at_tbbProtectionProfile "TBB Protection Profile" +#define NID_tcg_at_tbbProtectionProfile 1351 +#define OBJ_tcg_at_tbbProtectionProfile OBJ_tcg_attribute,13L + +#define SN_tcg_at_tbbSecurityTarget "tcg-at-tbbSecurityTarget" +#define LN_tcg_at_tbbSecurityTarget "TBB Security Target" +#define NID_tcg_at_tbbSecurityTarget 1352 +#define OBJ_tcg_at_tbbSecurityTarget OBJ_tcg_attribute,14L + +#define SN_tcg_at_tpmIdLabel "tcg-at-tpmIdLabel" +#define LN_tcg_at_tpmIdLabel "TPM ID Label" +#define NID_tcg_at_tpmIdLabel 1353 +#define OBJ_tcg_at_tpmIdLabel OBJ_tcg_attribute,15L + +#define SN_tcg_at_tpmSpecification "tcg-at-tpmSpecification" +#define LN_tcg_at_tpmSpecification "TPM Specification" +#define NID_tcg_at_tpmSpecification 1354 +#define OBJ_tcg_at_tpmSpecification OBJ_tcg_attribute,16L + +#define SN_tcg_at_tcgPlatformSpecification "tcg-at-tcgPlatformSpecification" +#define LN_tcg_at_tcgPlatformSpecification "TPM Platform Specification" +#define NID_tcg_at_tcgPlatformSpecification 1355 +#define OBJ_tcg_at_tcgPlatformSpecification OBJ_tcg_attribute,17L + +#define SN_tcg_at_tpmSecurityAssertions "tcg-at-tpmSecurityAssertions" +#define LN_tcg_at_tpmSecurityAssertions "TPM Security Assertions" +#define NID_tcg_at_tpmSecurityAssertions 1356 +#define OBJ_tcg_at_tpmSecurityAssertions OBJ_tcg_attribute,18L + +#define SN_tcg_at_tbbSecurityAssertions "tcg-at-tbbSecurityAssertions" +#define LN_tcg_at_tbbSecurityAssertions "TBB Security Assertions" +#define NID_tcg_at_tbbSecurityAssertions 1357 +#define OBJ_tcg_at_tbbSecurityAssertions OBJ_tcg_attribute,19L + +#define SN_tcg_at_tcgCredentialSpecification "tcg-at-tcgCredentialSpecification" +#define LN_tcg_at_tcgCredentialSpecification "TCG Credential Specification" +#define NID_tcg_at_tcgCredentialSpecification 1358 +#define OBJ_tcg_at_tcgCredentialSpecification OBJ_tcg_attribute,23L + +#define SN_tcg_at_tcgCredentialType "tcg-at-tcgCredentialType" +#define LN_tcg_at_tcgCredentialType "TCG Credential Type" +#define NID_tcg_at_tcgCredentialType 1359 +#define OBJ_tcg_at_tcgCredentialType OBJ_tcg_attribute,25L + +#define SN_tcg_at_previousPlatformCertificates "tcg-at-previousPlatformCertificates" +#define LN_tcg_at_previousPlatformCertificates "TCG Previous Platform Certificates" +#define NID_tcg_at_previousPlatformCertificates 1360 +#define OBJ_tcg_at_previousPlatformCertificates OBJ_tcg_attribute,26L + +#define SN_tcg_at_tbbSecurityAssertions_v3 "tcg-at-tbbSecurityAssertions-v3" +#define LN_tcg_at_tbbSecurityAssertions_v3 "TCG TBB Security Assertions V3" +#define NID_tcg_at_tbbSecurityAssertions_v3 1361 +#define OBJ_tcg_at_tbbSecurityAssertions_v3 OBJ_tcg_attribute,27L + +#define SN_tcg_at_cryptographicAnchors "tcg-at-cryptographicAnchors" +#define LN_tcg_at_cryptographicAnchors "TCG Cryptographic Anchors" +#define NID_tcg_at_cryptographicAnchors 1362 +#define OBJ_tcg_at_cryptographicAnchors OBJ_tcg_attribute,28L + +#define SN_tcg_at_platformConfiguration_v1 "tcg-at-platformConfiguration-v1" +#define LN_tcg_at_platformConfiguration_v1 "Platform Configuration Version 1" +#define NID_tcg_at_platformConfiguration_v1 1363 +#define OBJ_tcg_at_platformConfiguration_v1 OBJ_tcg_at_platformConfiguration,1L + +#define SN_tcg_at_platformConfiguration_v2 "tcg-at-platformConfiguration-v2" +#define LN_tcg_at_platformConfiguration_v2 "Platform Configuration Version 2" +#define NID_tcg_at_platformConfiguration_v2 1364 +#define OBJ_tcg_at_platformConfiguration_v2 OBJ_tcg_at_platformConfiguration,2L + +#define SN_tcg_at_platformConfiguration_v3 "tcg-at-platformConfiguration-v3" +#define LN_tcg_at_platformConfiguration_v3 "Platform Configuration Version 3" +#define NID_tcg_at_platformConfiguration_v3 1365 +#define OBJ_tcg_at_platformConfiguration_v3 OBJ_tcg_at_platformConfiguration,3L + +#define SN_tcg_at_platformConfigUri_v3 "tcg-at-platformConfigUri-v3" +#define LN_tcg_at_platformConfigUri_v3 "Platform Configuration URI Version 3" +#define NID_tcg_at_platformConfigUri_v3 1366 +#define OBJ_tcg_at_platformConfigUri_v3 OBJ_tcg_at_platformConfiguration,4L + +#define SN_tcg_algorithm_null "tcg-algorithm-null" +#define LN_tcg_algorithm_null "TCG NULL Algorithm" +#define NID_tcg_algorithm_null 1367 +#define OBJ_tcg_algorithm_null OBJ_tcg_algorithm,1L + +#define SN_tcg_kp_EKCertificate "tcg-kp-EKCertificate" +#define LN_tcg_kp_EKCertificate "Endorsement Key Certificate" +#define NID_tcg_kp_EKCertificate 1368 +#define OBJ_tcg_kp_EKCertificate OBJ_tcg_kp,1L + +#define SN_tcg_kp_PlatformAttributeCertificate "tcg-kp-PlatformAttributeCertificate" +#define LN_tcg_kp_PlatformAttributeCertificate "Platform Attribute Certificate" +#define NID_tcg_kp_PlatformAttributeCertificate 1369 +#define OBJ_tcg_kp_PlatformAttributeCertificate OBJ_tcg_kp,2L + +#define SN_tcg_kp_AIKCertificate "tcg-kp-AIKCertificate" +#define LN_tcg_kp_AIKCertificate "Attestation Identity Key Certificate" +#define NID_tcg_kp_AIKCertificate 1370 +#define OBJ_tcg_kp_AIKCertificate OBJ_tcg_kp,3L + +#define SN_tcg_kp_PlatformKeyCertificate "tcg-kp-PlatformKeyCertificate" +#define LN_tcg_kp_PlatformKeyCertificate "Platform Key Certificate" +#define NID_tcg_kp_PlatformKeyCertificate 1371 +#define OBJ_tcg_kp_PlatformKeyCertificate OBJ_tcg_kp,4L + +#define SN_tcg_kp_DeltaPlatformAttributeCertificate "tcg-kp-DeltaPlatformAttributeCertificate" +#define LN_tcg_kp_DeltaPlatformAttributeCertificate "Delta Platform Attribute Certificate" +#define NID_tcg_kp_DeltaPlatformAttributeCertificate 1372 +#define OBJ_tcg_kp_DeltaPlatformAttributeCertificate OBJ_tcg_kp,5L + +#define SN_tcg_kp_DeltaPlatformKeyCertificate "tcg-kp-DeltaPlatformKeyCertificate" +#define LN_tcg_kp_DeltaPlatformKeyCertificate "Delta Platform Key Certificate" +#define NID_tcg_kp_DeltaPlatformKeyCertificate 1373 +#define OBJ_tcg_kp_DeltaPlatformKeyCertificate OBJ_tcg_kp,6L + +#define SN_tcg_kp_AdditionalPlatformAttributeCertificate "tcg-kp-AdditionalPlatformAttributeCertificate" +#define LN_tcg_kp_AdditionalPlatformAttributeCertificate "Additional Platform Attribute Certificate" +#define NID_tcg_kp_AdditionalPlatformAttributeCertificate 1374 +#define OBJ_tcg_kp_AdditionalPlatformAttributeCertificate OBJ_tcg_kp,7L + +#define SN_tcg_kp_AdditionalPlatformKeyCertificate "tcg-kp-AdditionalPlatformKeyCertificate" +#define LN_tcg_kp_AdditionalPlatformKeyCertificate "Additional Platform Key Certificate" +#define NID_tcg_kp_AdditionalPlatformKeyCertificate 1375 +#define OBJ_tcg_kp_AdditionalPlatformKeyCertificate OBJ_tcg_kp,8L + +#define SN_tcg_ce_relevantCredentials "tcg-ce-relevantCredentials" +#define LN_tcg_ce_relevantCredentials "Relevant Credentials" +#define NID_tcg_ce_relevantCredentials 1376 +#define OBJ_tcg_ce_relevantCredentials OBJ_tcg_ce,2L + +#define SN_tcg_ce_relevantManifests "tcg-ce-relevantManifests" +#define LN_tcg_ce_relevantManifests "Relevant Manifests" +#define NID_tcg_ce_relevantManifests 1377 +#define OBJ_tcg_ce_relevantManifests OBJ_tcg_ce,3L + +#define SN_tcg_ce_virtualPlatformAttestationService "tcg-ce-virtualPlatformAttestationService" +#define LN_tcg_ce_virtualPlatformAttestationService "Virtual Platform Attestation Service" +#define NID_tcg_ce_virtualPlatformAttestationService 1378 +#define OBJ_tcg_ce_virtualPlatformAttestationService OBJ_tcg_ce,4L + +#define SN_tcg_ce_migrationControllerAttestationService "tcg-ce-migrationControllerAttestationService" +#define LN_tcg_ce_migrationControllerAttestationService "Migration Controller Attestation Service" +#define NID_tcg_ce_migrationControllerAttestationService 1379 +#define OBJ_tcg_ce_migrationControllerAttestationService OBJ_tcg_ce,5L + +#define SN_tcg_ce_migrationControllerRegistrationService "tcg-ce-migrationControllerRegistrationService" +#define LN_tcg_ce_migrationControllerRegistrationService "Migration Controller Registration Service" +#define NID_tcg_ce_migrationControllerRegistrationService 1380 +#define OBJ_tcg_ce_migrationControllerRegistrationService OBJ_tcg_ce,6L + +#define SN_tcg_ce_virtualPlatformBackupService "tcg-ce-virtualPlatformBackupService" +#define LN_tcg_ce_virtualPlatformBackupService "Virtual Platform Backup Service" +#define NID_tcg_ce_virtualPlatformBackupService 1381 +#define OBJ_tcg_ce_virtualPlatformBackupService OBJ_tcg_ce,7L + +#define SN_tcg_prt_tpmIdProtocol "tcg-prt-tpmIdProtocol" +#define LN_tcg_prt_tpmIdProtocol "TCG TPM Protocol" +#define NID_tcg_prt_tpmIdProtocol 1382 +#define OBJ_tcg_prt_tpmIdProtocol OBJ_tcg_protocol,1L + +#define SN_tcg_address_ethernetmac "tcg-address-ethernetmac" +#define LN_tcg_address_ethernetmac "Ethernet MAC Address" +#define NID_tcg_address_ethernetmac 1383 +#define OBJ_tcg_address_ethernetmac OBJ_tcg_address,1L + +#define SN_tcg_address_wlanmac "tcg-address-wlanmac" +#define LN_tcg_address_wlanmac "WLAN MAC Address" +#define NID_tcg_address_wlanmac 1384 +#define OBJ_tcg_address_wlanmac OBJ_tcg_address,2L + +#define SN_tcg_address_bluetoothmac "tcg-address-bluetoothmac" +#define LN_tcg_address_bluetoothmac "Bluetooth MAC Address" +#define NID_tcg_address_bluetoothmac 1385 +#define OBJ_tcg_address_bluetoothmac OBJ_tcg_address,3L + +#define SN_tcg_registry_componentClass "tcg-registry-componentClass" +#define LN_tcg_registry_componentClass "TCG Component Class" +#define NID_tcg_registry_componentClass 1386 +#define OBJ_tcg_registry_componentClass OBJ_tcg_registry,3L + +#define SN_tcg_registry_componentClass_tcg "tcg-registry-componentClass-tcg" +#define LN_tcg_registry_componentClass_tcg "Trusted Computed Group Registry" +#define NID_tcg_registry_componentClass_tcg 1387 +#define OBJ_tcg_registry_componentClass_tcg OBJ_tcg_registry_componentClass,1L + +#define SN_tcg_registry_componentClass_ietf "tcg-registry-componentClass-ietf" +#define LN_tcg_registry_componentClass_ietf "Internet Engineering Task Force Registry" +#define NID_tcg_registry_componentClass_ietf 1388 +#define OBJ_tcg_registry_componentClass_ietf OBJ_tcg_registry_componentClass,2L + +#define SN_tcg_registry_componentClass_dmtf "tcg-registry-componentClass-dmtf" +#define LN_tcg_registry_componentClass_dmtf "Distributed Management Task Force Registry" +#define NID_tcg_registry_componentClass_dmtf 1389 +#define OBJ_tcg_registry_componentClass_dmtf OBJ_tcg_registry_componentClass,3L + +#define SN_tcg_registry_componentClass_pcie "tcg-registry-componentClass-pcie" +#define LN_tcg_registry_componentClass_pcie "PCIE Component Class" +#define NID_tcg_registry_componentClass_pcie 1390 +#define OBJ_tcg_registry_componentClass_pcie OBJ_tcg_registry_componentClass,4L + +#define SN_tcg_registry_componentClass_disk "tcg-registry-componentClass-disk" +#define LN_tcg_registry_componentClass_disk "Disk Component Class" +#define NID_tcg_registry_componentClass_disk 1391 +#define OBJ_tcg_registry_componentClass_disk OBJ_tcg_registry_componentClass,5L + +#define SN_tcg_cap_verifiedPlatformCertificate "tcg-cap-verifiedPlatformCertificate" +#define LN_tcg_cap_verifiedPlatformCertificate "TCG Verified Platform Certificate CA Policy" +#define NID_tcg_cap_verifiedPlatformCertificate 1392 +#define OBJ_tcg_cap_verifiedPlatformCertificate OBJ_tcg_ca,4L + +#define SN_tcg_tr_ID "tcg-tr-ID" +#define LN_tcg_tr_ID "TCG Trait Identifiers" +#define NID_tcg_tr_ID 1393 +#define OBJ_tcg_tr_ID OBJ_tcg_traits,1L + +#define SN_tcg_tr_category "tcg-tr-category" +#define LN_tcg_tr_category "TCG Trait Categories" +#define NID_tcg_tr_category 1394 +#define OBJ_tcg_tr_category OBJ_tcg_traits,2L + +#define SN_tcg_tr_registry "tcg-tr-registry" +#define LN_tcg_tr_registry "TCG Trait Registries" +#define NID_tcg_tr_registry 1395 +#define OBJ_tcg_tr_registry OBJ_tcg_traits,3L + +#define SN_tcg_tr_ID_Boolean "tcg-tr-ID-Boolean" +#define LN_tcg_tr_ID_Boolean "Boolean Trait" +#define NID_tcg_tr_ID_Boolean 1396 +#define OBJ_tcg_tr_ID_Boolean OBJ_tcg_tr_ID,1L + +#define SN_tcg_tr_ID_CertificateIdentifier "tcg-tr-ID-CertificateIdentifier" +#define LN_tcg_tr_ID_CertificateIdentifier "Certificate Identifier Trait" +#define NID_tcg_tr_ID_CertificateIdentifier 1397 +#define OBJ_tcg_tr_ID_CertificateIdentifier OBJ_tcg_tr_ID,2L + +#define SN_tcg_tr_ID_CommonCriteria "tcg-tr-ID-CommonCriteria" +#define LN_tcg_tr_ID_CommonCriteria "Common Criteria Trait" +#define NID_tcg_tr_ID_CommonCriteria 1398 +#define OBJ_tcg_tr_ID_CommonCriteria OBJ_tcg_tr_ID,3L + +#define SN_tcg_tr_ID_componentClass "tcg-tr-ID-componentClass" +#define LN_tcg_tr_ID_componentClass "Component Class Trait" +#define NID_tcg_tr_ID_componentClass 1399 +#define OBJ_tcg_tr_ID_componentClass OBJ_tcg_tr_ID,4L + +#define SN_tcg_tr_ID_componentIdentifierV11 "tcg-tr-ID-componentIdentifierV11" +#define LN_tcg_tr_ID_componentIdentifierV11 "Component Identifier V1.1 Trait" +#define NID_tcg_tr_ID_componentIdentifierV11 1400 +#define OBJ_tcg_tr_ID_componentIdentifierV11 OBJ_tcg_tr_ID,5L + +#define SN_tcg_tr_ID_FIPSLevel "tcg-tr-ID-FIPSLevel" +#define LN_tcg_tr_ID_FIPSLevel "FIPS Level Trait" +#define NID_tcg_tr_ID_FIPSLevel 1401 +#define OBJ_tcg_tr_ID_FIPSLevel OBJ_tcg_tr_ID,6L + +#define SN_tcg_tr_ID_ISO9000Level "tcg-tr-ID-ISO9000Level" +#define LN_tcg_tr_ID_ISO9000Level "ISO 9000 Level Trait" +#define NID_tcg_tr_ID_ISO9000Level 1402 +#define OBJ_tcg_tr_ID_ISO9000Level OBJ_tcg_tr_ID,7L + +#define SN_tcg_tr_ID_networkMAC "tcg-tr-ID-networkMAC" +#define LN_tcg_tr_ID_networkMAC "Network MAC Trait" +#define NID_tcg_tr_ID_networkMAC 1403 +#define OBJ_tcg_tr_ID_networkMAC OBJ_tcg_tr_ID,8L + +#define SN_tcg_tr_ID_OID "tcg-tr-ID-OID" +#define LN_tcg_tr_ID_OID "Object Identifier Trait" +#define NID_tcg_tr_ID_OID 1404 +#define OBJ_tcg_tr_ID_OID OBJ_tcg_tr_ID,9L + +#define SN_tcg_tr_ID_PEN "tcg-tr-ID-PEN" +#define LN_tcg_tr_ID_PEN "Private Enterprise Number Trait" +#define NID_tcg_tr_ID_PEN 1405 +#define OBJ_tcg_tr_ID_PEN OBJ_tcg_tr_ID,10L + +#define SN_tcg_tr_ID_platformFirmwareCapabilities "tcg-tr-ID-platformFirmwareCapabilities" +#define LN_tcg_tr_ID_platformFirmwareCapabilities "Platform Firmware Capabilities Trait" +#define NID_tcg_tr_ID_platformFirmwareCapabilities 1406 +#define OBJ_tcg_tr_ID_platformFirmwareCapabilities OBJ_tcg_tr_ID,11L + +#define SN_tcg_tr_ID_platformFirmwareSignatureVerification "tcg-tr-ID-platformFirmwareSignatureVerification" +#define LN_tcg_tr_ID_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait" +#define NID_tcg_tr_ID_platformFirmwareSignatureVerification 1407 +#define OBJ_tcg_tr_ID_platformFirmwareSignatureVerification OBJ_tcg_tr_ID,12L + +#define SN_tcg_tr_ID_platformFirmwareUpdateCompliance "tcg-tr-ID-platformFirmwareUpdateCompliance" +#define LN_tcg_tr_ID_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait" +#define NID_tcg_tr_ID_platformFirmwareUpdateCompliance 1408 +#define OBJ_tcg_tr_ID_platformFirmwareUpdateCompliance OBJ_tcg_tr_ID,13L + +#define SN_tcg_tr_ID_platformHardwareCapabilities "tcg-tr-ID-platformHardwareCapabilities" +#define LN_tcg_tr_ID_platformHardwareCapabilities "Platform Hardware Capabilities Trait" +#define NID_tcg_tr_ID_platformHardwareCapabilities 1409 +#define OBJ_tcg_tr_ID_platformHardwareCapabilities OBJ_tcg_tr_ID,14L + +#define SN_tcg_tr_ID_RTM "tcg-tr-ID-RTM" +#define LN_tcg_tr_ID_RTM "Root of Trust for Measurement Trait" +#define NID_tcg_tr_ID_RTM 1410 +#define OBJ_tcg_tr_ID_RTM OBJ_tcg_tr_ID,15L + +#define SN_tcg_tr_ID_status "tcg-tr-ID-status" +#define LN_tcg_tr_ID_status "Attribute Status Trait" +#define NID_tcg_tr_ID_status 1411 +#define OBJ_tcg_tr_ID_status OBJ_tcg_tr_ID,16L + +#define SN_tcg_tr_ID_URI "tcg-tr-ID-URI" +#define LN_tcg_tr_ID_URI "Uniform Resource Identifier Trait" +#define NID_tcg_tr_ID_URI 1412 +#define OBJ_tcg_tr_ID_URI OBJ_tcg_tr_ID,17L + +#define SN_tcg_tr_ID_UTF8String "tcg-tr-ID-UTF8String" +#define LN_tcg_tr_ID_UTF8String "UTF8String Trait" +#define NID_tcg_tr_ID_UTF8String 1413 +#define OBJ_tcg_tr_ID_UTF8String OBJ_tcg_tr_ID,18L + +#define SN_tcg_tr_ID_IA5String "tcg-tr-ID-IA5String" +#define LN_tcg_tr_ID_IA5String "IA5String Trait" +#define NID_tcg_tr_ID_IA5String 1414 +#define OBJ_tcg_tr_ID_IA5String OBJ_tcg_tr_ID,19L + +#define SN_tcg_tr_ID_PEMCertString "tcg-tr-ID-PEMCertString" +#define LN_tcg_tr_ID_PEMCertString "PEM-Encoded Certificate String Trait" +#define NID_tcg_tr_ID_PEMCertString 1415 +#define OBJ_tcg_tr_ID_PEMCertString OBJ_tcg_tr_ID,20L + +#define SN_tcg_tr_ID_PublicKey "tcg-tr-ID-PublicKey" +#define LN_tcg_tr_ID_PublicKey "Public Key Trait" +#define NID_tcg_tr_ID_PublicKey 1416 +#define OBJ_tcg_tr_ID_PublicKey OBJ_tcg_tr_ID,21L + +#define SN_tcg_tr_cat_platformManufacturer "tcg-tr-cat-platformManufacturer" +#define LN_tcg_tr_cat_platformManufacturer "Platform Manufacturer Trait Category" +#define NID_tcg_tr_cat_platformManufacturer 1417 +#define OBJ_tcg_tr_cat_platformManufacturer OBJ_tcg_tr_category,1L + +#define SN_tcg_tr_cat_platformModel "tcg-tr-cat-platformModel" +#define LN_tcg_tr_cat_platformModel "Platform Model Trait Category" +#define NID_tcg_tr_cat_platformModel 1418 +#define OBJ_tcg_tr_cat_platformModel OBJ_tcg_tr_category,2L + +#define SN_tcg_tr_cat_platformVersion "tcg-tr-cat-platformVersion" +#define LN_tcg_tr_cat_platformVersion "Platform Version Trait Category" +#define NID_tcg_tr_cat_platformVersion 1419 +#define OBJ_tcg_tr_cat_platformVersion OBJ_tcg_tr_category,3L + +#define SN_tcg_tr_cat_platformSerial "tcg-tr-cat-platformSerial" +#define LN_tcg_tr_cat_platformSerial "Platform Serial Trait Category" +#define NID_tcg_tr_cat_platformSerial 1420 +#define OBJ_tcg_tr_cat_platformSerial OBJ_tcg_tr_category,4L + +#define SN_tcg_tr_cat_platformManufacturerIdentifier "tcg-tr-cat-platformManufacturerIdentifier" +#define LN_tcg_tr_cat_platformManufacturerIdentifier "Platform Manufacturer Identifier Trait Category" +#define NID_tcg_tr_cat_platformManufacturerIdentifier 1421 +#define OBJ_tcg_tr_cat_platformManufacturerIdentifier OBJ_tcg_tr_category,5L + +#define SN_tcg_tr_cat_platformOwnership "tcg-tr-cat-platformOwnership" +#define LN_tcg_tr_cat_platformOwnership "Platform Ownership Trait Category" +#define NID_tcg_tr_cat_platformOwnership 1422 +#define OBJ_tcg_tr_cat_platformOwnership OBJ_tcg_tr_category,6L + +#define SN_tcg_tr_cat_componentClass "tcg-tr-cat-componentClass" +#define LN_tcg_tr_cat_componentClass "Component Class Trait Category" +#define NID_tcg_tr_cat_componentClass 1423 +#define OBJ_tcg_tr_cat_componentClass OBJ_tcg_tr_category,7L + +#define SN_tcg_tr_cat_componentManufacturer "tcg-tr-cat-componentManufacturer" +#define LN_tcg_tr_cat_componentManufacturer "Component Manufacturer Trait Category" +#define NID_tcg_tr_cat_componentManufacturer 1424 +#define OBJ_tcg_tr_cat_componentManufacturer OBJ_tcg_tr_category,8L + +#define SN_tcg_tr_cat_componentModel "tcg-tr-cat-componentModel" +#define LN_tcg_tr_cat_componentModel "Component Model Trait Category" +#define NID_tcg_tr_cat_componentModel 1425 +#define OBJ_tcg_tr_cat_componentModel OBJ_tcg_tr_category,9L + +#define SN_tcg_tr_cat_componentSerial "tcg-tr-cat-componentSerial" +#define LN_tcg_tr_cat_componentSerial "Component Serial Trait Category" +#define NID_tcg_tr_cat_componentSerial 1426 +#define OBJ_tcg_tr_cat_componentSerial OBJ_tcg_tr_category,10L + +#define SN_tcg_tr_cat_componentStatus "tcg-tr-cat-componentStatus" +#define LN_tcg_tr_cat_componentStatus "Component Status Trait Category" +#define NID_tcg_tr_cat_componentStatus 1427 +#define OBJ_tcg_tr_cat_componentStatus OBJ_tcg_tr_category,11L + +#define SN_tcg_tr_cat_componentLocation "tcg-tr-cat-componentLocation" +#define LN_tcg_tr_cat_componentLocation "Component Location Trait Category" +#define NID_tcg_tr_cat_componentLocation 1428 +#define OBJ_tcg_tr_cat_componentLocation OBJ_tcg_tr_category,12L + +#define SN_tcg_tr_cat_componentRevision "tcg-tr-cat-componentRevision" +#define LN_tcg_tr_cat_componentRevision "Component Revision Trait Category" +#define NID_tcg_tr_cat_componentRevision 1429 +#define OBJ_tcg_tr_cat_componentRevision OBJ_tcg_tr_category,13L + +#define SN_tcg_tr_cat_componentFieldReplaceable "tcg-tr-cat-componentFieldReplaceable" +#define LN_tcg_tr_cat_componentFieldReplaceable "Component Field Replaceable Trait Category" +#define NID_tcg_tr_cat_componentFieldReplaceable 1430 +#define OBJ_tcg_tr_cat_componentFieldReplaceable OBJ_tcg_tr_category,14L + +#define SN_tcg_tr_cat_EKCertificate "tcg-tr-cat-EKCertificate" +#define LN_tcg_tr_cat_EKCertificate "EK Certificate Trait Category" +#define NID_tcg_tr_cat_EKCertificate 1431 +#define OBJ_tcg_tr_cat_EKCertificate OBJ_tcg_tr_category,15L + +#define SN_tcg_tr_cat_IAKCertificate "tcg-tr-cat-IAKCertificate" +#define LN_tcg_tr_cat_IAKCertificate "IAK Certificate Trait Category" +#define NID_tcg_tr_cat_IAKCertificate 1432 +#define OBJ_tcg_tr_cat_IAKCertificate OBJ_tcg_tr_category,16L + +#define SN_tcg_tr_cat_IDevIDCertificate "tcg-tr-cat-IDevIDCertificate" +#define LN_tcg_tr_cat_IDevIDCertificate "IDevID Certificate Trait Category" +#define NID_tcg_tr_cat_IDevIDCertificate 1433 +#define OBJ_tcg_tr_cat_IDevIDCertificate OBJ_tcg_tr_category,17L + +#define SN_tcg_tr_cat_DICECertificate "tcg-tr-cat-DICECertificate" +#define LN_tcg_tr_cat_DICECertificate "DICE Certificate Trait Category" +#define NID_tcg_tr_cat_DICECertificate 1434 +#define OBJ_tcg_tr_cat_DICECertificate OBJ_tcg_tr_category,18L + +#define SN_tcg_tr_cat_SPDMCertificate "tcg-tr-cat-SPDMCertificate" +#define LN_tcg_tr_cat_SPDMCertificate "SPDM Certificate Trait Category" +#define NID_tcg_tr_cat_SPDMCertificate 1435 +#define OBJ_tcg_tr_cat_SPDMCertificate OBJ_tcg_tr_category,19L + +#define SN_tcg_tr_cat_PEMCertificate "tcg-tr-cat-PEMCertificate" +#define LN_tcg_tr_cat_PEMCertificate "PEM Certificate Trait Category" +#define NID_tcg_tr_cat_PEMCertificate 1436 +#define OBJ_tcg_tr_cat_PEMCertificate OBJ_tcg_tr_category,20L + +#define SN_tcg_tr_cat_PlatformCertificate "tcg-tr-cat-PlatformCertificate" +#define LN_tcg_tr_cat_PlatformCertificate "Platform Certificate Trait Category" +#define NID_tcg_tr_cat_PlatformCertificate 1437 +#define OBJ_tcg_tr_cat_PlatformCertificate OBJ_tcg_tr_category,21L + +#define SN_tcg_tr_cat_DeltaPlatformCertificate "tcg-tr-cat-DeltaPlatformCertificate" +#define LN_tcg_tr_cat_DeltaPlatformCertificate "Delta Platform Certificate Trait Category" +#define NID_tcg_tr_cat_DeltaPlatformCertificate 1438 +#define OBJ_tcg_tr_cat_DeltaPlatformCertificate OBJ_tcg_tr_category,22L + +#define SN_tcg_tr_cat_RebasePlatformCertificate "tcg-tr-cat-RebasePlatformCertificate" +#define LN_tcg_tr_cat_RebasePlatformCertificate "Rebase Platform Certificate Trait Category" +#define NID_tcg_tr_cat_RebasePlatformCertificate 1439 +#define OBJ_tcg_tr_cat_RebasePlatformCertificate OBJ_tcg_tr_category,23L + +#define SN_tcg_tr_cat_genericCertificate "tcg-tr-cat-genericCertificate" +#define LN_tcg_tr_cat_genericCertificate "Generic Certificate Trait Category" +#define NID_tcg_tr_cat_genericCertificate 1440 +#define OBJ_tcg_tr_cat_genericCertificate OBJ_tcg_tr_category,24L + +#define SN_tcg_tr_cat_CommonCriteria "tcg-tr-cat-CommonCriteria" +#define LN_tcg_tr_cat_CommonCriteria "Common Criteria Trait Category" +#define NID_tcg_tr_cat_CommonCriteria 1441 +#define OBJ_tcg_tr_cat_CommonCriteria OBJ_tcg_tr_category,25L + +#define SN_tcg_tr_cat_componentIdentifierV11 "tcg-tr-cat-componentIdentifierV11" +#define LN_tcg_tr_cat_componentIdentifierV11 "Component Identifier V1.1 Trait Category" +#define NID_tcg_tr_cat_componentIdentifierV11 1442 +#define OBJ_tcg_tr_cat_componentIdentifierV11 OBJ_tcg_tr_category,26L + +#define SN_tcg_tr_cat_FIPSLevel "tcg-tr-cat-FIPSLevel" +#define LN_tcg_tr_cat_FIPSLevel "FIPS Level Trait Category" +#define NID_tcg_tr_cat_FIPSLevel 1443 +#define OBJ_tcg_tr_cat_FIPSLevel OBJ_tcg_tr_category,27L + +#define SN_tcg_tr_cat_ISO9000 "tcg-tr-cat-ISO9000" +#define LN_tcg_tr_cat_ISO9000 "ISO 9000 Trait Category" +#define NID_tcg_tr_cat_ISO9000 1444 +#define OBJ_tcg_tr_cat_ISO9000 OBJ_tcg_tr_category,28L + +#define SN_tcg_tr_cat_networkMAC "tcg-tr-cat-networkMAC" +#define LN_tcg_tr_cat_networkMAC "Network MAC Trait Category" +#define NID_tcg_tr_cat_networkMAC 1445 +#define OBJ_tcg_tr_cat_networkMAC OBJ_tcg_tr_category,29L + +#define SN_tcg_tr_cat_attestationProtocol "tcg-tr-cat-attestationProtocol" +#define LN_tcg_tr_cat_attestationProtocol "Attestation Protocol Trait Category" +#define NID_tcg_tr_cat_attestationProtocol 1446 +#define OBJ_tcg_tr_cat_attestationProtocol OBJ_tcg_tr_category,30L + +#define SN_tcg_tr_cat_PEN "tcg-tr-cat-PEN" +#define LN_tcg_tr_cat_PEN "Private Enterprise Number Trait Category" +#define NID_tcg_tr_cat_PEN 1447 +#define OBJ_tcg_tr_cat_PEN OBJ_tcg_tr_category,31L + +#define SN_tcg_tr_cat_platformFirmwareCapabilities "tcg-tr-cat-platformFirmwareCapabilities" +#define LN_tcg_tr_cat_platformFirmwareCapabilities "Platform Firmware Capabilities Trait Category" +#define NID_tcg_tr_cat_platformFirmwareCapabilities 1448 +#define OBJ_tcg_tr_cat_platformFirmwareCapabilities OBJ_tcg_tr_category,32L + +#define SN_tcg_tr_cat_platformHardwareCapabilities "tcg-tr-cat-platformHardwareCapabilities" +#define LN_tcg_tr_cat_platformHardwareCapabilities "Platform Hardware Capabilities Trait Category" +#define NID_tcg_tr_cat_platformHardwareCapabilities 1449 +#define OBJ_tcg_tr_cat_platformHardwareCapabilities OBJ_tcg_tr_category,33L + +#define SN_tcg_tr_cat_platformFirmwareSignatureVerification "tcg-tr-cat-platformFirmwareSignatureVerification" +#define LN_tcg_tr_cat_platformFirmwareSignatureVerification "Platform Firmware Signature Verification Trait Category" +#define NID_tcg_tr_cat_platformFirmwareSignatureVerification 1450 +#define OBJ_tcg_tr_cat_platformFirmwareSignatureVerification OBJ_tcg_tr_category,34L + +#define SN_tcg_tr_cat_platformFirmwareUpdateCompliance "tcg-tr-cat-platformFirmwareUpdateCompliance" +#define LN_tcg_tr_cat_platformFirmwareUpdateCompliance "Platform Firmware Update Compliance Trait Category" +#define NID_tcg_tr_cat_platformFirmwareUpdateCompliance 1451 +#define OBJ_tcg_tr_cat_platformFirmwareUpdateCompliance OBJ_tcg_tr_category,35L + +#define SN_tcg_tr_cat_RTM "tcg-tr-cat-RTM" +#define LN_tcg_tr_cat_RTM "Root of Trust of Measurement Trait Category" +#define NID_tcg_tr_cat_RTM 1452 +#define OBJ_tcg_tr_cat_RTM OBJ_tcg_tr_category,36L + +#define SN_tcg_tr_cat_PublicKey "tcg-tr-cat-PublicKey" +#define LN_tcg_tr_cat_PublicKey "Public Key Trait Category" +#define NID_tcg_tr_cat_PublicKey 1453 +#define OBJ_tcg_tr_cat_PublicKey OBJ_tcg_tr_category,37L + +#define OBJ_nistKems OBJ_nistAlgorithms,4L + +#define SN_ML_KEM_512 "id-alg-ml-kem-512" +#define LN_ML_KEM_512 "ML-KEM-512" +#define NID_ML_KEM_512 1454 +#define OBJ_ML_KEM_512 OBJ_nistKems,1L + +#define SN_ML_KEM_768 "id-alg-ml-kem-768" +#define LN_ML_KEM_768 "ML-KEM-768" +#define NID_ML_KEM_768 1455 +#define OBJ_ML_KEM_768 OBJ_nistKems,2L + +#define SN_ML_KEM_1024 "id-alg-ml-kem-1024" +#define LN_ML_KEM_1024 "ML-KEM-1024" +#define NID_ML_KEM_1024 1456 +#define OBJ_ML_KEM_1024 OBJ_nistKems,3L + +#endif /* OPENSSL_OBJ_MAC_H */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm SN_magma_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm NID_magma_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_magma_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac SN_magma_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac NID_magma_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_magma_ctr_acpkm_omac + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm SN_kuznyechik_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm NID_kuznyechik_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_kuznyechik_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac SN_kuznyechik_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac NID_kuznyechik_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_kuznyechik_ctr_acpkm_omac + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 SN_magma_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 NID_magma_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_magma_kexp15 + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 SN_kuznyechik_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 NID_kuznyechik_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_kuznyechik_kexp15 + +#define SN_grasshopper_ecb SN_kuznyechik_ecb +#define NID_grasshopper_ecb NID_kuznyechik_ecb + +#define SN_grasshopper_ctr SN_kuznyechik_ctr +#define NID_grasshopper_ctr NID_kuznyechik_ctr + +#define SN_grasshopper_ofb SN_kuznyechik_ofb +#define NID_grasshopper_ofb NID_kuznyechik_ofb + +#define SN_grasshopper_cbc SN_kuznyechik_cbc +#define NID_grasshopper_cbc NID_kuznyechik_cbc + +#define SN_grasshopper_cfb SN_kuznyechik_cfb +#define NID_grasshopper_cfb NID_kuznyechik_cfb + +#define SN_grasshopper_mac SN_kuznyechik_mac +#define NID_grasshopper_mac NID_kuznyechik_mac + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/objects.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/objects.h new file mode 100644 index 0000000..de1f1db --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/objects.h @@ -0,0 +1,186 @@ +/* + * Copyright 1995-2024 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_OBJECTS_H +#define OPENSSL_OBJECTS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OBJECTS_H +#endif + +#include +#include +#include +#include + +#define OBJ_NAME_TYPE_UNDEF 0x00 +#define OBJ_NAME_TYPE_MD_METH 0x01 +#define OBJ_NAME_TYPE_CIPHER_METH 0x02 +#define OBJ_NAME_TYPE_PKEY_METH 0x03 +#define OBJ_NAME_TYPE_COMP_METH 0x04 +#define OBJ_NAME_TYPE_MAC_METH 0x05 +#define OBJ_NAME_TYPE_KDF_METH 0x06 +#define OBJ_NAME_TYPE_NUM 0x07 + +#define OBJ_NAME_ALIAS 0x8000 + +#define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 +#define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct obj_name_st { + int type; + int alias; + const char *name; + const char *data; +} OBJ_NAME; + +#define OBJ_create_and_add_object(a, b, c) OBJ_create(a, b, c) + +int OBJ_NAME_init(void); +int OBJ_NAME_new_index(unsigned long (*hash_func)(const char *), + int (*cmp_func)(const char *, const char *), + void (*free_func)(const char *, int, const char *)); +const char *OBJ_NAME_get(const char *name, int type); +int OBJ_NAME_add(const char *name, int type, const char *data); +int OBJ_NAME_remove(const char *name, int type); +void OBJ_NAME_cleanup(int type); /* -1 for everything */ +void OBJ_NAME_do_all(int type, void (*fn)(const OBJ_NAME *, void *arg), + void *arg); +void OBJ_NAME_do_all_sorted(int type, + void (*fn)(const OBJ_NAME *, void *arg), + void *arg); + +DECLARE_ASN1_DUP_FUNCTION_name(ASN1_OBJECT, OBJ) +ASN1_OBJECT *OBJ_nid2obj(int n); +const char *OBJ_nid2ln(int n); +const char *OBJ_nid2sn(int n); +int OBJ_obj2nid(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); +int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); +int OBJ_txt2nid(const char *s); +int OBJ_ln2nid(const char *s); +int OBJ_sn2nid(const char *s); +int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); +const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, + int (*cmp)(const void *, const void *)); +const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, + int size, + int (*cmp)(const void *, const void *), + int flags); + +#define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ + static int nm##_cmp(type1 const *, type2 const *); \ + scope type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +#define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ + _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) +#define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +/*- + * Unsolved problem: if a type is actually a pointer type, like + * nid_triple is, then its impossible to get a const where you need + * it. Consider: + * + * typedef int nid_triple[3]; + * const void *a_; + * const nid_triple const *a = a_; + * + * The assignment discards a const because what you really want is: + * + * const int const * const *a = a_; + * + * But if you do that, you lose the fact that a is an array of 3 ints, + * which breaks comparison functions. + * + * Thus we end up having to cast, sadly, or unpack the + * declarations. Or, as I finally did in this case, declare nid_triple + * to be a struct, which it should have been in the first place. + * + * Ben, August 2008. + * + * Also, strictly speaking not all types need be const, but handling + * the non-constness means a lot of complication, and in practice + * comparison routines do always not touch their arguments. + */ + +#define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a, b); \ + } \ + static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +#define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a, b); \ + } \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +#define OBJ_bsearch(type1, key, type2, base, num, cmp) \ + ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1, key), CHECKED_PTR_OF(type2, base), \ + num, sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1, cmp##_type_1), \ + (void)CHECKED_PTR_OF(type2, cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN))) + +#define OBJ_bsearch_ex(type1, key, type2, base, num, cmp, flags) \ + ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1, key), CHECKED_PTR_OF(type2, base), \ + num, sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1, cmp##_type_1), \ + (void)type_2 = CHECKED_PTR_OF(type2, cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN)), \ + flags) + +int OBJ_new_nid(int num); +int OBJ_add_object(const ASN1_OBJECT *obj); +int OBJ_create(const char *oid, const char *sn, const char *ln); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OBJ_cleanup() \ + while (0) \ + continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); +int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); +int OBJ_add_sigid(int signid, int dig_id, int pkey_id); +void OBJ_sigid_free(void); + +#define SN_ac_auditEntity SN_ac_auditIdentity + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/objectserr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/objectserr.h new file mode 100644 index 0000000..2927561 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/objectserr.h @@ -0,0 +1,26 @@ +/* + * 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_OBJECTSERR_H +#define OPENSSL_OBJECTSERR_H +#pragma once + +#include +#include +#include + +/* + * OBJ reason codes. + */ +#define OBJ_R_OID_EXISTS 102 +#define OBJ_R_UNKNOWN_NID 101 +#define OBJ_R_UNKNOWN_OBJECT_NAME 103 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ocsp.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ocsp.h new file mode 100644 index 0000000..00467ba --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ocsp.h @@ -0,0 +1,487 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ocsp.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_OCSP_H +#define OPENSSL_OCSP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OCSP_H +#endif + +#include +#include +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * -- value 7 is not used + * removeFromCRL (8), + * privilegeWithdrawn (9), + * aACompromise (10) } + */ +#define OCSP_REVOKED_STATUS_NOSTATUS -1 +#define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +#define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +#define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +#define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +#define OCSP_REVOKED_STATUS_SUPERSEDED 4 +#define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +#define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +#define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 +#define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 +#define OCSP_REVOKED_STATUS_AACOMPROMISE 10 + +#ifndef OPENSSL_NO_OCSP + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +#define OCSP_DEFAULT_NONCE_LENGTH 16 + +#define OCSP_NOCERTS 0x1 +#define OCSP_NOINTERN 0x2 +#define OCSP_NOSIGS 0x4 +#define OCSP_NOCHAIN 0x8 +#define OCSP_NOVERIFY 0x10 +#define OCSP_NOEXPLICIT 0x20 +#define OCSP_NOCASIGN 0x40 +#define OCSP_NODELEGATED 0x80 +#define OCSP_NOCHECKS 0x100 +#define OCSP_TRUSTOTHER 0x200 +#define OCSP_RESPID_KEY 0x400 +#define OCSP_NOTIME 0x800 +#define OCSP_PARTIAL_CHAIN 0x1000 + +typedef struct ocsp_cert_id_st OCSP_CERTID; +typedef struct ocsp_one_request_st OCSP_ONEREQ; +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) +#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) +#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) +#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) +#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) +#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) +#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_freefunc_type(freefunc)) +#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) +#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) +#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) +#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) +#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) +#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) +#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) +#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) +#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) +#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) +#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) +#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) +#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) +#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) +#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) + +/* clang-format on */ + +#define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +#define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +#define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +#define OCSP_RESPONSE_STATUS_TRYLATER 3 +#define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +#define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +#define V_OCSP_RESPID_NAME 0 +#define V_OCSP_RESPID_KEY 1 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) +#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) +#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) +#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) +#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) +#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) +#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_freefunc_type(freefunc)) +#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) +#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) +#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) +#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +#define V_OCSP_CERTSTATUS_GOOD 0 +#define V_OCSP_CERTSTATUS_REVOKED 1 +#define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) +#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) +#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) +#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) +#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) +#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) +#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) +#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) +#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) +#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) +#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) +#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +#define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +#define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +#define d2i_OCSP_REQUEST_bio(bp, p) ASN1_d2i_bio_of(OCSP_REQUEST, OCSP_REQUEST_new, d2i_OCSP_REQUEST, bp, p) + +#define d2i_OCSP_RESPONSE_bio(bp, p) ASN1_d2i_bio_of(OCSP_RESPONSE, OCSP_RESPONSE_new, d2i_OCSP_RESPONSE, bp, p) + +#define PEM_read_bio_OCSP_REQUEST(bp, x, cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char **)(x), cb, NULL) + +#define PEM_read_bio_OCSP_RESPONSE(bp, x, cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char **)(x), cb, NULL) + +#define PEM_write_bio_OCSP_REQUEST(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define PEM_write_bio_OCSP_RESPONSE(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define i2d_OCSP_RESPONSE_bio(bp, o) ASN1_i2d_bio_of(OCSP_RESPONSE, i2d_OCSP_RESPONSE, bp, o) + +#define i2d_OCSP_REQUEST_bio(bp, o) ASN1_i2d_bio_of(OCSP_REQUEST, i2d_OCSP_REQUEST, bp, o) + +#define ASN1_BIT_STRING_digest(data, type, md, len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING), type, data, md, len) + +#define OCSP_CERTSTATUS_dup(cs) \ + (OCSP_CERTSTATUS *)ASN1_dup((i2d_of_void *)i2d_OCSP_CERTSTATUS, \ + (d2i_of_void *)d2i_OCSP_CERTSTATUS, (char *)(cs)) + +DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) + +OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, + const OCSP_REQUEST *req, int buf_size); +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; +#define OCSP_REQ_CTX_new(io, buf_size) \ + OSSL_HTTP_REQ_CTX_new(io, io, buf_size) +#define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free +#define OCSP_REQ_CTX_http(rctx, op, path) \ + (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, NULL, NULL, path)) +#define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header +#define OCSP_REQ_CTX_i2d(r, it, req) \ + OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) +#define OCSP_REQ_CTX_set1_req(r, req) \ + OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) +#define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio +#define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i +#define OCSP_sendreq_nbio(p, r) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ + ASN1_ITEM_rptr(OCSP_RESPONSE)) +#define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio +#define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length +#endif + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, const X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP *bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +#define OCSP_parse_url(url, host, port, path, ssl) \ + OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key_ex(OCSP_RESPID *respid, X509 *cert, + OSSL_LIB_CTX *libctx, const char *propq); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, + const char *propq); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(const X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_OCSP) */ +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ocsperr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ocsperr.h new file mode 100644 index 0000000..18e035e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ocsperr.h @@ -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_OCSPERR_H +#define OPENSSL_OCSPERR_H +#pragma once + +#include +#include +#include + +#ifndef OPENSSL_NO_OCSP + +/* + * OCSP reason codes. + */ +#define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +#define OCSP_R_DIGEST_ERR 102 +#define OCSP_R_DIGEST_NAME_ERR 106 +#define OCSP_R_DIGEST_SIZE_ERR 107 +#define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +#define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +#define OCSP_R_MISSING_OCSPSIGNING_USAGE 103 +#define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE 124 +#define OCSP_R_NOT_BASIC_RESPONSE 104 +#define OCSP_R_NO_CERTIFICATES_IN_CHAIN 105 +#define OCSP_R_NO_RESPONSE_DATA 108 +#define OCSP_R_NO_REVOKED_TIME 109 +#define OCSP_R_NO_SIGNER_KEY 130 +#define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 110 +#define OCSP_R_REQUEST_NOT_SIGNED 128 +#define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA 111 +#define OCSP_R_ROOT_CA_NOT_TRUSTED 112 +#define OCSP_R_SIGNATURE_FAILURE 117 +#define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND 118 +#define OCSP_R_STATUS_EXPIRED 125 +#define OCSP_R_STATUS_NOT_YET_VALID 126 +#define OCSP_R_STATUS_TOO_OLD 127 +#define OCSP_R_UNKNOWN_MESSAGE_DIGEST 119 +#define OCSP_R_UNKNOWN_NID 120 +#define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE 129 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/opensslconf.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/opensslconf.h new file mode 100644 index 0000000..4a8d78e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/opensslconf.h @@ -0,0 +1,17 @@ +/* + * 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_OPENSSLCONF_H +#define OPENSSL_OPENSSLCONF_H +#pragma once + +#include +#include + +#endif /* OPENSSL_OPENSSLCONF_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/opensslv.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/opensslv.h new file mode 100644 index 0000000..e518027 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/opensslv.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/opensslv.h.in + * + * Copyright 1999-2025 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_OPENSSLV_H +#define OPENSSL_OPENSSLV_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SECTION 1: VERSION DATA. These will change for each release + */ + +/* + * Base version macros + * + * These macros express version number MAJOR.MINOR.PATCH exactly + */ +/* clang-format off */ +# define OPENSSL_VERSION_MAJOR 3 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_MINOR 6 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_PATCH 2 +/* clang-format on */ + +/* + * Additional version information + * + * These are also part of the new version scheme, but aren't part + * of the version number itself. + */ + +/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_PRE_RELEASE "" +/* clang-format on */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_BUILD_METADATA "" +/* clang-format on */ + +/* + * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA + * to be anything but the empty string. Its use is entirely reserved for + * others + */ + +/* + * Shared library version + * + * This is strictly to express ABI version, which may or may not + * be related to the API version expressed with the macros above. + * This is defined in free form. + */ +/* clang-format off */ +# define OPENSSL_SHLIB_VERSION 3 +/* clang-format on */ + +/* + * SECTION 2: USEFUL MACROS + */ + +/* For checking general API compatibility when preprocessing */ +#define OPENSSL_VERSION_PREREQ(maj, min) \ + ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) + +/* + * Macros to get the version in easily digested string form, both the short + * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced + * with the values from the corresponding OPENSSL_VERSION_ macros) and the + * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and + * OPENSSL_VERSION_BUILD_METADATA_STR appended. + */ +/* clang-format off */ +# define OPENSSL_VERSION_STR "3.6.2" +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_FULL_VERSION_STR "3.6.2" +/* clang-format on */ + +/* + * SECTION 3: ADDITIONAL METADATA + * + * These strings are defined separately to allow them to be parsable. + */ +/* clang-format off */ +# define OPENSSL_RELEASE_DATE "7 Apr 2026" +/* clang-format on */ + +/* + * SECTION 4: BACKWARD COMPATIBILITY + */ + +/* clang-format off */ +# define OPENSSL_VERSION_TEXT "OpenSSL 3.6.2 7 Apr 2026" +/* clang-format on */ + +/* clang-format off */ +/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PP0L */ +# define OPENSSL_VERSION_NUMBER \ + ( (OPENSSL_VERSION_MAJOR<<28) \ + |(OPENSSL_VERSION_MINOR<<20) \ + |(OPENSSL_VERSION_PATCH<<4) \ + |0x0L ) +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OPENSSLV_H +#endif + +#endif /* OPENSSL_OPENSSLV_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ossl_typ.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ossl_typ.h new file mode 100644 index 0000000..a562299 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ossl_typ.h @@ -0,0 +1,16 @@ +/* + * Copyright 2019 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 + */ + +/* + * The original was renamed to + * + * This header file only exists for compatibility reasons with older + * applications which #include . + */ +#include diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/param_build.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/param_build.h new file mode 100644 index 0000000..be6a025 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/param_build.h @@ -0,0 +1,63 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, 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_PARAM_BUILD_H +#define OPENSSL_PARAM_BUILD_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +OSSL_PARAM_BLD *OSSL_PARAM_BLD_new(void); +OSSL_PARAM *OSSL_PARAM_BLD_to_param(OSSL_PARAM_BLD *bld); +void OSSL_PARAM_BLD_free(OSSL_PARAM_BLD *bld); + +int OSSL_PARAM_BLD_push_int(OSSL_PARAM_BLD *bld, const char *key, int val); +int OSSL_PARAM_BLD_push_uint(OSSL_PARAM_BLD *bld, const char *key, + unsigned int val); +int OSSL_PARAM_BLD_push_long(OSSL_PARAM_BLD *bld, const char *key, + long int val); +int OSSL_PARAM_BLD_push_ulong(OSSL_PARAM_BLD *bld, const char *key, + unsigned long int val); +int OSSL_PARAM_BLD_push_int32(OSSL_PARAM_BLD *bld, const char *key, + int32_t val); +int OSSL_PARAM_BLD_push_uint32(OSSL_PARAM_BLD *bld, const char *key, + uint32_t val); +int OSSL_PARAM_BLD_push_int64(OSSL_PARAM_BLD *bld, const char *key, + int64_t val); +int OSSL_PARAM_BLD_push_uint64(OSSL_PARAM_BLD *bld, const char *key, + uint64_t val); +int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key, + size_t val); +int OSSL_PARAM_BLD_push_time_t(OSSL_PARAM_BLD *bld, const char *key, + time_t val); +int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key, + double val); +int OSSL_PARAM_BLD_push_BN(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn); +int OSSL_PARAM_BLD_push_BN_pad(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn, size_t sz); +int OSSL_PARAM_BLD_push_utf8_string(OSSL_PARAM_BLD *bld, const char *key, + const char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_utf8_ptr(OSSL_PARAM_BLD *bld, const char *key, + char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_string(OSSL_PARAM_BLD *bld, const char *key, + const void *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_ptr(OSSL_PARAM_BLD *bld, const char *key, + void *buf, size_t bsize); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_PARAM_BUILD_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/params.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/params.h new file mode 100644 index 0000000..6772c40 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/params.h @@ -0,0 +1,166 @@ +/* + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, 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_PARAMS_H +#define OPENSSL_PARAMS_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_PARAM_UNMODIFIED ((size_t)-1) + +#define OSSL_PARAM_END \ + { NULL, 0, NULL, 0, 0 } + +#define OSSL_PARAM_DEFN(key, type, addr, sz) \ + { (key), (type), (addr), (sz), OSSL_PARAM_UNMODIFIED } + +/* Basic parameter types without return sizes */ +#define OSSL_PARAM_int(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int)) +#define OSSL_PARAM_uint(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned int)) +#define OSSL_PARAM_long(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(long int)) +#define OSSL_PARAM_ulong(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned long int)) +#define OSSL_PARAM_int32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int32_t)) +#define OSSL_PARAM_uint32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint32_t)) +#define OSSL_PARAM_int64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int64_t)) +#define OSSL_PARAM_uint64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint64_t)) +#define OSSL_PARAM_size_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), sizeof(size_t)) +#define OSSL_PARAM_time_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(time_t)) +#define OSSL_PARAM_double(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_REAL, (addr), sizeof(double)) + +#define OSSL_PARAM_BN(key, bn, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (bn), (sz)) +#define OSSL_PARAM_utf8_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_STRING, (addr), sz) +#define OSSL_PARAM_octet_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_STRING, (addr), sz) + +#define OSSL_PARAM_utf8_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_PTR, (addr), sz) +#define OSSL_PARAM_octet_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_PTR, (addr), sz) + +/* Search an OSSL_PARAM array for a matching name */ +OSSL_PARAM *OSSL_PARAM_locate(OSSL_PARAM *p, const char *key); +const OSSL_PARAM *OSSL_PARAM_locate_const(const OSSL_PARAM *p, const char *key); + +/* Basic parameter type run-time construction */ +OSSL_PARAM OSSL_PARAM_construct_int(const char *key, int *buf); +OSSL_PARAM OSSL_PARAM_construct_uint(const char *key, unsigned int *buf); +OSSL_PARAM OSSL_PARAM_construct_long(const char *key, long int *buf); +OSSL_PARAM OSSL_PARAM_construct_ulong(const char *key, unsigned long int *buf); +OSSL_PARAM OSSL_PARAM_construct_int32(const char *key, int32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint32(const char *key, uint32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_int64(const char *key, int64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint64(const char *key, uint64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_size_t(const char *key, size_t *buf); +OSSL_PARAM OSSL_PARAM_construct_time_t(const char *key, time_t *buf); +OSSL_PARAM OSSL_PARAM_construct_BN(const char *key, unsigned char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_double(const char *key, double *buf); +OSSL_PARAM OSSL_PARAM_construct_utf8_string(const char *key, char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_string(const char *key, void *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_ptr(const char *key, void **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_end(void); + +int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to, + const OSSL_PARAM *paramdefs, + const char *key, const char *value, + size_t value_n, int *found); + +int OSSL_PARAM_print_to_bio(const OSSL_PARAM *params, BIO *bio, + int print_values); + +int OSSL_PARAM_get_int(const OSSL_PARAM *p, int *val); +int OSSL_PARAM_get_uint(const OSSL_PARAM *p, unsigned int *val); +int OSSL_PARAM_get_long(const OSSL_PARAM *p, long int *val); +int OSSL_PARAM_get_ulong(const OSSL_PARAM *p, unsigned long int *val); +int OSSL_PARAM_get_int32(const OSSL_PARAM *p, int32_t *val); +int OSSL_PARAM_get_uint32(const OSSL_PARAM *p, uint32_t *val); +int OSSL_PARAM_get_int64(const OSSL_PARAM *p, int64_t *val); +int OSSL_PARAM_get_uint64(const OSSL_PARAM *p, uint64_t *val); +int OSSL_PARAM_get_size_t(const OSSL_PARAM *p, size_t *val); +int OSSL_PARAM_get_time_t(const OSSL_PARAM *p, time_t *val); + +int OSSL_PARAM_set_int(OSSL_PARAM *p, int val); +int OSSL_PARAM_set_uint(OSSL_PARAM *p, unsigned int val); +int OSSL_PARAM_set_long(OSSL_PARAM *p, long int val); +int OSSL_PARAM_set_ulong(OSSL_PARAM *p, unsigned long int val); +int OSSL_PARAM_set_int32(OSSL_PARAM *p, int32_t val); +int OSSL_PARAM_set_uint32(OSSL_PARAM *p, uint32_t val); +int OSSL_PARAM_set_int64(OSSL_PARAM *p, int64_t val); +int OSSL_PARAM_set_uint64(OSSL_PARAM *p, uint64_t val); +int OSSL_PARAM_set_size_t(OSSL_PARAM *p, size_t val); +int OSSL_PARAM_set_time_t(OSSL_PARAM *p, time_t val); + +int OSSL_PARAM_get_double(const OSSL_PARAM *p, double *val); +int OSSL_PARAM_set_double(OSSL_PARAM *p, double val); + +int OSSL_PARAM_get_BN(const OSSL_PARAM *p, BIGNUM **val); +int OSSL_PARAM_set_BN(OSSL_PARAM *p, const BIGNUM *val); + +int OSSL_PARAM_get_utf8_string(const OSSL_PARAM *p, char **val, size_t max_len); +int OSSL_PARAM_set_utf8_string(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_string(const OSSL_PARAM *p, void **val, size_t max_len, + size_t *used_len); +int OSSL_PARAM_set_octet_string(OSSL_PARAM *p, const void *val, size_t len); + +int OSSL_PARAM_get_utf8_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_set_utf8_ptr(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); +int OSSL_PARAM_set_octet_ptr(OSSL_PARAM *p, const void *val, + size_t used_len); + +int OSSL_PARAM_get_utf8_string_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_get_octet_string_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); + +int OSSL_PARAM_modified(const OSSL_PARAM *p); +void OSSL_PARAM_set_all_unmodified(OSSL_PARAM *p); + +OSSL_PARAM *OSSL_PARAM_dup(const OSSL_PARAM *p); +OSSL_PARAM *OSSL_PARAM_merge(const OSSL_PARAM *p1, const OSSL_PARAM *p2); +void OSSL_PARAM_free(OSSL_PARAM *p); + +int OSSL_PARAM_set_octet_string_or_ptr(OSSL_PARAM *p, const void *val, + size_t len); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pem.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pem.h new file mode 100644 index 0000000..fa64aaf --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pem.h @@ -0,0 +1,548 @@ +/* + * Copyright 1995-2025 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_PEM_H +#define OPENSSL_PEM_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PEM_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PEM_BUFSIZE 1024 + +#define PEM_STRING_X509_OLD "X509 CERTIFICATE" +#define PEM_STRING_X509 "CERTIFICATE" +#define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +#define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +#define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +#define PEM_STRING_X509_CRL "X509 CRL" +#define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +#define PEM_STRING_PUBLIC "PUBLIC KEY" +#define PEM_STRING_RSA "RSA PRIVATE KEY" +#define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +#define PEM_STRING_DSA "DSA PRIVATE KEY" +#define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +#define PEM_STRING_PKCS7 "PKCS7" +#define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +#define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +#define PEM_STRING_PKCS8INF "PRIVATE KEY" +#define PEM_STRING_DHPARAMS "DH PARAMETERS" +#define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +#define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +#define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +#define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +#define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +#define PEM_STRING_PARAMETERS "PARAMETERS" +#define PEM_STRING_CMS "CMS" +#define PEM_STRING_SM2PRIVATEKEY "SM2 PRIVATE KEY" +#define PEM_STRING_SM2PARAMETERS "SM2 PARAMETERS" +#define PEM_STRING_ACERT "ATTRIBUTE CERTIFICATE" + +#define PEM_TYPE_ENCRYPTED 10 +#define PEM_TYPE_MIC_ONLY 20 +#define PEM_TYPE_MIC_CLEAR 30 +#define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +#define PEM_read_cb_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u) +#define PEM_read_cb_ex_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name##_ex(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +#define PEM_write_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x) +#define PEM_write_cb_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u) +#define PEM_write_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) +#define PEM_write_cb_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +#ifdef OPENSSL_NO_STDIO + +#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +#endif +#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +#endif +#else + +#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str, fp, \ + (void **)x, cb, u); \ + } + +#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ + PEM_write_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) +#endif +#endif + +#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + type *PEM_read_bio_##name(BIO *bp, type **x, \ + pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str, bp, \ + (void **)x, cb, u); \ + } + +#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + PEM_write_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +#define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) +#endif + +#define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +/* + * 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. + */ +#if defined(OPENSSL_NO_STDIO) + +#define DECLARE_PEM_read_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_read_fp_ex_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_fp_ex_attr(attr, name, type) /**/ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const_attr(attr, name, type) /**/ +#endif +#define DECLARE_PEM_write_cb_fp_attr(attr, name, type) /**/ +#define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) /**/ + +#else + +#define DECLARE_PEM_read_fp_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); +#define DECLARE_PEM_read_fp_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); \ + attr PEM_read_cb_ex_fnsig(name, type, FILE, read); + +#define DECLARE_PEM_write_fp_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +#define DECLARE_PEM_write_fp_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); \ + attr PEM_write_ex_fnsig(name, type, FILE, write); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +#endif +#define DECLARE_PEM_write_cb_fp_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); +#define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); \ + attr PEM_write_cb_ex_fnsig(name, type, FILE, write); + +#endif + +#define DECLARE_PEM_read_fp(name, type) \ + DECLARE_PEM_read_fp_attr(extern, name, type) +#define DECLARE_PEM_write_fp(name, type) \ + DECLARE_PEM_write_fp_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_fp_const(name, type) \ + DECLARE_PEM_write_fp_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_write_cb_fp(name, type) \ + DECLARE_PEM_write_cb_fp_attr(extern, name, type) + +#define DECLARE_PEM_read_bio_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); +#define DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); \ + attr PEM_read_cb_ex_fnsig(name, type, BIO, read_bio); +#define DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_bio_attr(extern, name, type) +#define DECLARE_PEM_read_bio_ex(name, type) \ + DECLARE_PEM_read_bio_ex_attr(extern, name, type) + +#define DECLARE_PEM_write_bio_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_ex_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_bio_attr(extern, name, type) +#define DECLARE_PEM_write_bio_ex(name, type) \ + DECLARE_PEM_write_bio_ex_attr(extern, name, type) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_bio_const_attr(extern, name, type) +#endif + +#define DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_cb_ex_fnsig(name, type, BIO, write_bio); +#define DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_bio_attr(extern, name, type) +#define DECLARE_PEM_write_cb_ex_bio(name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(extern, name, type) + +#define DECLARE_PEM_write_attr(attr, name, type) \ + DECLARE_PEM_write_bio_attr(attr, name, type) \ + DECLARE_PEM_write_fp_attr(attr, name, type) +#define DECLARE_PEM_write_ex_attr(attr, name, type) \ + DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_attr(extern, name, type) +#define DECLARE_PEM_write_ex(name, type) \ + DECLARE_PEM_write_ex_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_write_const_attr(attr, name, type) \ + DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + DECLARE_PEM_write_fp_const_attr(attr, name, type) +#define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_write_cb_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_attr(attr, name, type) +#define DECLARE_PEM_write_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_attr(extern, name, type) +#define DECLARE_PEM_write_cb_ex(name, type) \ + DECLARE_PEM_write_cb_ex_attr(extern, name, type) +#define DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_read_bio_attr(attr, name, type) \ + DECLARE_PEM_read_fp_attr(attr, name, type) +#define DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_read_fp_ex_attr(attr, name, type) +#define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_attr(extern, name, type) +#define DECLARE_PEM_read_ex(name, type) \ + DECLARE_PEM_read_ex_attr(extern, name, type) +#define DECLARE_PEM_rw_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_attr(attr, name, type) +#define DECLARE_PEM_rw_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_ex_attr(attr, name, type) +#define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_rw_attr(extern, name, type) +#define DECLARE_PEM_rw_ex(name, type) \ + DECLARE_PEM_rw_ex_attr(extern, name, type) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define DECLARE_PEM_rw_const_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_const_attr(attr, name, type) +#define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_rw_const_attr(extern, name, type) +#endif +#define DECLARE_PEM_rw_cb_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_cb_attr(attr, name, type) +#define DECLARE_PEM_rw_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_ex_attr(attr, name, type) +#define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_rw_cb_attr(extern, name, type) +#define DECLARE_PEM_rw_cb_ex(name, type) \ + DECLARE_PEM_rw_cb_ex_attr(extern, name, type) + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +#define PEM_FLAG_SECURE 0x1 +#define PEM_FLAG_EAY_COMPATIBLE 0x2 +#define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio_ctx(OSSL_i2d_of_void_ctx *i2d, void *vctx, + const char *name, BIO *bp, const void *x, + const EVP_CIPHER *enc, const unsigned char *kstr, + int klen, pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_bio_ex(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, + const char *propq); + +int PEM_X509_INFO_write_bio(BIO *bp, const X509_INFO *xi, EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +#ifndef OPENSSL_NO_STDIO +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + const void *x, const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_ex(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, + void *u, OSSL_LIB_CTX *libctx, const char *propq); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, const unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, const char *str); + +#include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(X509_PUBKEY, X509_PUBKEY) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSAPublicKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSA_PUBKEY, RSA) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSA_PUBKEY, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSAparams, DSA) +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, ECPrivateKey, EC_KEY) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, EC_PUBKEY, EC_KEY) +#endif +#endif + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH) +DECLARE_PEM_write_attr(OSSL_DEPRECATEDIN_3_0, DHxparams, DH) +#endif +#endif +DECLARE_PEM_rw_cb_ex(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw_ex(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, const EVP_PKEY *x, + const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +/* Why do these take a signed char *kstr? */ +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, const EVP_PKEY *, const EVP_CIPHER *, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_bio(BIO *bp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS8PrivateKey_fp(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cd, void *u); +#endif +EVP_PKEY *PEM_read_bio_Parameters_ex(BIO *bp, EVP_PKEY **x, + OSSL_LIB_CTX *libctx, const char *propq); +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, const EVP_PKEY *x); + +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, const EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, const EVP_PKEY *pk); +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); +int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pem2.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pem2.h new file mode 100644 index 0000000..6d3ab2a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pem2.h @@ -0,0 +1,19 @@ +/* + * Copyright 1999-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_PEM2_H +#define OPENSSL_PEM2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PEM2_H +#endif +#include +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pemerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pemerr.h new file mode 100644 index 0000000..eb3c9a1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pemerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_PEMERR_H +#define OPENSSL_PEMERR_H +#pragma once + +#include +#include +#include + +/* + * PEM reason codes. + */ +#define PEM_R_BAD_BASE64_DECODE 100 +#define PEM_R_BAD_DECRYPT 101 +#define PEM_R_BAD_END_LINE 102 +#define PEM_R_BAD_IV_CHARS 103 +#define PEM_R_BAD_MAGIC_NUMBER 116 +#define PEM_R_BAD_PASSWORD_READ 104 +#define PEM_R_BAD_VERSION_NUMBER 117 +#define PEM_R_BIO_WRITE_FAILURE 118 +#define PEM_R_CIPHER_IS_NULL 127 +#define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +#define PEM_R_EXPECTING_DSS_KEY_BLOB 131 +#define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +#define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +#define PEM_R_EXPECTING_RSA_KEY_BLOB 132 +#define PEM_R_HEADER_TOO_LONG 128 +#define PEM_R_INCONSISTENT_HEADER 121 +#define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +#define PEM_R_KEYBLOB_TOO_SHORT 123 +#define PEM_R_MISSING_DEK_IV 129 +#define PEM_R_NOT_DEK_INFO 105 +#define PEM_R_NOT_ENCRYPTED 106 +#define PEM_R_NOT_PROC_TYPE 107 +#define PEM_R_NO_START_LINE 108 +#define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +#define PEM_R_PVK_DATA_TOO_SHORT 124 +#define PEM_R_PVK_TOO_SHORT 125 +#define PEM_R_READ_KEY 111 +#define PEM_R_SHORT_HEADER 112 +#define PEM_R_UNEXPECTED_DEK_IV 130 +#define PEM_R_UNSUPPORTED_CIPHER 113 +#define PEM_R_UNSUPPORTED_ENCRYPTION 114 +#define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +#define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 +#define PEM_R_UNSUPPORTED_PVK_KEY_TYPE 133 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs12.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs12.h new file mode 100644 index 0000000..60f1de8 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs12.h @@ -0,0 +1,376 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/pkcs12.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS12_H +#define OPENSSL_PKCS12_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS12_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PKCS12_KEY_ID 1 +#define PKCS12_IV_ID 2 +#define PKCS12_MAC_ID 3 + +/* Default iteration count */ +#ifndef PKCS12_DEFAULT_ITER +#define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +#endif + +#define PKCS12_MAC_KEY_LENGTH 20 + +/* + * The macro is expected to be used only internally. Kept for + * backwards compatibility. NIST requires 16, previous value was + * 8. Allow to override this at compile time. + */ +#ifndef PKCS12_SALT_LEN +#define PKCS12_SALT_LEN 16 +#endif + +/* It's not clear if these are actually needed... */ +#define PKCS12_key_gen PKCS12_key_gen_utf8 +#define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +#define KEY_EX 0x10 +#define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) +#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) +#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) +#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) +#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) +#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) +#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) +#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) +#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) +#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) +#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) +#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +#define PKCS12_ERROR 0 +#define PKCS12_OK 1 + +/* Compatibility macros */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 + +#define M_PKCS12_bag_type PKCS12_bag_type +#define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +#define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +#define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +#define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +#define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +#define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +#define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +#define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +#define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +#define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +#endif + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); +const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_secret(int type, int vtype, const unsigned char *value, int len); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf, + OSSL_LIB_CTX *ctx, + const char *propq); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, + int passlen, OSSL_LIB_CTX *ctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen, + OSSL_LIB_CTX *ctx, + const char *propq); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +X509_SIG *PKCS8_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, + OSSL_LIB_CTX *ctx, const char *propq); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags, + OSSL_LIB_CTX *ctx, const char *propq); + +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, + const unsigned char *bytes, int len); +int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, + const unsigned char *bytes, int len); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf); +void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf, + OSSL_LIB_CTX *libctx, + const char *propq); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf, + OSSL_LIB_CTX *ctx, + const char *propq); +PKCS12 *PKCS12_init(int mode); +PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_asc_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); +PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype); +PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass); +PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, + int nid_type, const unsigned char *value, int len); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); +PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, + OSSL_LIB_CTX *ctx, const char *propq); + +int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, const PKCS12 *p12); +#endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +#ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +#endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs12err.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs12err.h new file mode 100644 index 0000000..2ad38f8 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs12err.h @@ -0,0 +1,44 @@ +/* + * 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_PKCS12ERR_H +#define OPENSSL_PKCS12ERR_H +#pragma once + +#include +#include +#include + +/* + * PKCS12 reason codes. + */ +#define PKCS12_R_CALLBACK_FAILED 115 +#define PKCS12_R_CANT_PACK_STRUCTURE 100 +#define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 +#define PKCS12_R_DECODE_ERROR 101 +#define PKCS12_R_ENCODE_ERROR 102 +#define PKCS12_R_ENCRYPT_ERROR 103 +#define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 +#define PKCS12_R_INVALID_NULL_ARGUMENT 104 +#define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 +#define PKCS12_R_INVALID_TYPE 112 +#define PKCS12_R_IV_GEN_ERROR 106 +#define PKCS12_R_KEY_GEN_ERROR 107 +#define PKCS12_R_MAC_ABSENT 108 +#define PKCS12_R_MAC_GENERATION_ERROR 109 +#define PKCS12_R_MAC_SETUP_ERROR 110 +#define PKCS12_R_MAC_STRING_SET_ERROR 111 +#define PKCS12_R_MAC_VERIFY_FAILURE 113 +#define PKCS12_R_PARSE_ERROR 114 +#define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 +#define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +#define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs7.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs7.h new file mode 100644 index 0000000..3e7299f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs7.h @@ -0,0 +1,435 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/pkcs7.h.in + * + * 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS7_H +#define OPENSSL_PKCS7_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS7_H +#endif + +#include +#include +#include + +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct PKCS7_CTX_st { + OSSL_LIB_CTX *libctx; + char *propq; +} PKCS7_CTX; + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; /* confusing name, actually used for signing */ + ASN1_OCTET_STRING *enc_digest; /* confusing name, actually signature */ + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; + const PKCS7_CTX *ctx; +} PKCS7_SIGNER_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) +#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) +#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) +#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) +#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) +#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) +#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ + const PKCS7_CTX *ctx; +} PKCS7_RECIP_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) +#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) +#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) +#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) +#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) +#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) +#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; + const PKCS7_CTX *ctx; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +#define PKCS7_S_HEADER 0 +#define PKCS7_S_BODY 1 +#define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; + PKCS7_CTX ctx; +} PKCS7; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) +#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) +#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) +#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) +#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) +#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) +#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_freefunc_type(freefunc)) +#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) +#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) +#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) +#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) +#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) + +/* clang-format on */ + +#define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +#define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +#define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +#define PKCS7_get_attributes(si) ((si)->unauth_attr) + +#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +#define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +#define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +#define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +#define PKCS7_set_detached(p, v) \ + PKCS7_ctrl(p, PKCS7_OP_SET_DETACHED_SIGNATURE, v, NULL) +#define PKCS7_get_detached(p) \ + PKCS7_ctrl(p, PKCS7_OP_GET_DETACHED_SIGNATURE, 0, NULL) + +#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +#define PKCS7_TEXT 0x1 +#define PKCS7_NOCERTS 0x2 +#define PKCS7_NOSIGS 0x4 +#define PKCS7_NOCHAIN 0x8 +#define PKCS7_NOINTERN 0x10 +#define PKCS7_NOVERIFY 0x20 +#define PKCS7_DETACHED 0x40 +#define PKCS7_BINARY 0x80 +#define PKCS7_NOATTR 0x100 +#define PKCS7_NOSMIMECAP 0x200 +#define PKCS7_NOOLDMIMETYPE 0x400 +#define PKCS7_CRLFEOL 0x800 +#define PKCS7_STREAM 0x1000 +#define PKCS7_NOCRL 0x2000 +#define PKCS7_PARTIAL 0x4000 +#define PKCS7_REUSE_DIGEST 0x8000 +#define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +#define SMIME_TEXT PKCS7_TEXT +#define SMIME_NOCERTS PKCS7_NOCERTS +#define SMIME_NOSIGS PKCS7_NOSIGS +#define SMIME_NOCHAIN PKCS7_NOCHAIN +#define SMIME_NOINTERN PKCS7_NOINTERN +#define SMIME_NOVERIFY PKCS7_NOVERIFY +#define SMIME_DETACHED PKCS7_DETACHED +#define SMIME_BINARY PKCS7_BINARY +#define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +#define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +#ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, const PKCS7 *p7); +#endif +DECLARE_ASN1_DUP_FUNCTION(PKCS7) +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, const PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) +PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_type_is_other(PKCS7 *p7); +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *signer); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_get_octet_string(PKCS7 *p7); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(const PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(const PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); +PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, int flags, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7_ex(BIO *bio, BIO **bcont, PKCS7 **p7); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs7err.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs7err.h new file mode 100644 index 0000000..358fe10 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/pkcs7err.h @@ -0,0 +1,61 @@ +/* + * 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_PKCS7ERR_H +#define OPENSSL_PKCS7ERR_H +#pragma once + +#include +#include +#include + +/* + * PKCS7 reason codes. + */ +#define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 +#define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 +#define PKCS7_R_CIPHER_NOT_INITIALIZED 116 +#define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 +#define PKCS7_R_CTRL_ERROR 152 +#define PKCS7_R_DECRYPT_ERROR 119 +#define PKCS7_R_DIGEST_FAILURE 101 +#define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 +#define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 +#define PKCS7_R_ERROR_ADDING_RECIPIENT 120 +#define PKCS7_R_ERROR_SETTING_CIPHER 121 +#define PKCS7_R_INVALID_NULL_POINTER 143 +#define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +#define PKCS7_R_NO_CONTENT 122 +#define PKCS7_R_NO_DEFAULT_DIGEST 151 +#define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +#define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +#define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +#define PKCS7_R_NO_SIGNERS 142 +#define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 +#define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 +#define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 +#define PKCS7_R_PKCS7_DATASIGN 145 +#define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 +#define PKCS7_R_SIGNATURE_FAILURE 105 +#define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 +#define PKCS7_R_SIGNING_CTRL_FAILURE 147 +#define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 +#define PKCS7_R_SMIME_TEXT_ERROR 129 +#define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 +#define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 +#define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 +#define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 +#define PKCS7_R_UNKNOWN_OPERATION 110 +#define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 +#define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 +#define PKCS7_R_WRONG_CONTENT_TYPE 113 +#define PKCS7_R_WRONG_PKCS7_TYPE 114 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/prov_ssl.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/prov_ssl.h new file mode 100644 index 0000000..269c3b8 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/prov_ssl.h @@ -0,0 +1,38 @@ +/* + * Copyright 2021-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_PROV_SSL_H +#define OPENSSL_PROV_SSL_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* SSL/TLS related defines useful to providers */ + +#define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* SSL/TLS uses a 2 byte unsigned version number */ +#define SSL3_VERSION 0x0300 +#define TLS1_VERSION 0x0301 +#define TLS1_1_VERSION 0x0302 +#define TLS1_2_VERSION 0x0303 +#define TLS1_3_VERSION 0x0304 +#define DTLS1_VERSION 0xFEFF +#define DTLS1_2_VERSION 0xFEFD +#define DTLS1_BAD_VER 0x0100 + +/* QUIC uses a 4 byte unsigned version number */ +#define OSSL_QUIC1_VERSION 0x0000001 + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_PROV_SSL_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/proverr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/proverr.h new file mode 100644 index 0000000..a82b8e4 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/proverr.h @@ -0,0 +1,169 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_PROVERR_H +#define OPENSSL_PROVERR_H +#pragma once + +#include +#include +#include + +/* + * PROV reason codes. + */ +#define PROV_R_ADDITIONAL_INPUT_TOO_LONG 184 +#define PROV_R_ALGORITHM_MISMATCH 173 +#define PROV_R_ALREADY_INSTANTIATED 185 +#define PROV_R_BAD_DECRYPT 100 +#define PROV_R_BAD_ENCODING 141 +#define PROV_R_BAD_LENGTH 142 +#define PROV_R_BAD_TLS_CLIENT_VERSION 161 +#define PROV_R_BN_ERROR 160 +#define PROV_R_CIPHER_OPERATION_FAILED 102 +#define PROV_R_COFACTOR_REQUIRED 236 +#define PROV_R_DERIVATION_FUNCTION_INIT_FAILED 205 +#define PROV_R_DIGEST_NOT_ALLOWED 174 +#define PROV_R_EMS_NOT_ENABLED 233 +#define PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS 244 +#define PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK 186 +#define PROV_R_ERROR_INSTANTIATING_DRBG 188 +#define PROV_R_ERROR_RETRIEVING_ENTROPY 189 +#define PROV_R_ERROR_RETRIEVING_NONCE 190 +#define PROV_R_FAILED_DURING_DERIVATION 164 +#define PROV_R_FAILED_TO_CREATE_LOCK 180 +#define PROV_R_FAILED_TO_DECRYPT 162 +#define PROV_R_FAILED_TO_GENERATE_KEY 121 +#define PROV_R_FAILED_TO_GET_PARAMETER 103 +#define PROV_R_FAILED_TO_SET_PARAMETER 104 +#define PROV_R_FAILED_TO_SIGN 175 +#define PROV_R_FINAL_CALL_OUT_OF_ORDER 237 +#define PROV_R_FIPS_MODULE_CONDITIONAL_ERROR 227 +#define PROV_R_FIPS_MODULE_ENTERING_ERROR_STATE 224 +#define PROV_R_FIPS_MODULE_IMPORT_PCT_ERROR 253 +#define PROV_R_FIPS_MODULE_IN_ERROR_STATE 225 +#define PROV_R_GENERATE_ERROR 191 +#define PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 165 +#define PROV_R_INDICATOR_INTEGRITY_FAILURE 210 +#define PROV_R_INIT_CALL_OUT_OF_ORDER 238 +#define PROV_R_INSUFFICIENT_DRBG_STRENGTH 181 +#define PROV_R_INVALID_AAD 108 +#define PROV_R_INVALID_AEAD 231 +#define PROV_R_INVALID_CONFIG_DATA 211 +#define PROV_R_INVALID_CONSTANT_LENGTH 157 +#define PROV_R_INVALID_CURVE 176 +#define PROV_R_INVALID_CUSTOM_LENGTH 111 +#define PROV_R_INVALID_DATA 115 +#define PROV_R_INVALID_DIGEST 122 +#define PROV_R_INVALID_DIGEST_LENGTH 166 +#define PROV_R_INVALID_DIGEST_SIZE 218 +#define PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION 243 +#define PROV_R_INVALID_INPUT_LENGTH 230 +#define PROV_R_INVALID_ITERATION_COUNT 123 +#define PROV_R_INVALID_IV_LENGTH 109 +#define PROV_R_INVALID_KDF 232 +#define PROV_R_INVALID_KEY 158 +#define PROV_R_INVALID_KEY_LENGTH 105 +#define PROV_R_INVALID_MAC 151 +#define PROV_R_INVALID_MEMORY_SIZE 235 +#define PROV_R_INVALID_MGF1_MD 167 +#define PROV_R_INVALID_MODE 125 +#define PROV_R_INVALID_OUTPUT_LENGTH 217 +#define PROV_R_INVALID_PADDING_MODE 168 +#define PROV_R_INVALID_PREHASHED_DIGEST_LENGTH 241 +#define PROV_R_INVALID_PUBINFO 198 +#define PROV_R_INVALID_SALT_LENGTH 112 +#define PROV_R_INVALID_SEED_LENGTH 154 +#define PROV_R_INVALID_SIGNATURE_SIZE 179 +#define PROV_R_INVALID_STATE 212 +#define PROV_R_INVALID_TAG 110 +#define PROV_R_INVALID_TAG_LENGTH 118 +#define PROV_R_INVALID_THREAD_POOL_SIZE 234 +#define PROV_R_INVALID_UKM_LENGTH 200 +#define PROV_R_INVALID_X931_DIGEST 170 +#define PROV_R_IN_ERROR_STATE 192 +#define PROV_R_KEY_SETUP_FAILED 101 +#define PROV_R_KEY_SIZE_TOO_SMALL 171 +#define PROV_R_LENGTH_TOO_LARGE 202 +#define PROV_R_MISMATCHING_DOMAIN_PARAMETERS 203 +#define PROV_R_MISSING_CEK_ALG 144 +#define PROV_R_MISSING_CIPHER 155 +#define PROV_R_MISSING_CONFIG_DATA 213 +#define PROV_R_MISSING_CONSTANT 156 +#define PROV_R_MISSING_KEY 128 +#define PROV_R_MISSING_MAC 150 +#define PROV_R_MISSING_MESSAGE_DIGEST 129 +#define PROV_R_MISSING_OID 209 +#define PROV_R_MISSING_PASS 130 +#define PROV_R_MISSING_SALT 131 +#define PROV_R_MISSING_SECRET 132 +#define PROV_R_MISSING_SEED 140 +#define PROV_R_MISSING_SESSION_ID 133 +#define PROV_R_MISSING_TYPE 134 +#define PROV_R_MISSING_XCGHASH 135 +#define PROV_R_ML_DSA_NO_FORMAT 245 +#define PROV_R_ML_KEM_NO_FORMAT 246 +#define PROV_R_MODULE_INTEGRITY_FAILURE 214 +#define PROV_R_NOT_A_PRIVATE_KEY 221 +#define PROV_R_NOT_A_PUBLIC_KEY 220 +#define PROV_R_NOT_INSTANTIATED 193 +#define PROV_R_NOT_PARAMETERS 226 +#define PROV_R_NOT_SUPPORTED 136 +#define PROV_R_NOT_XOF_OR_INVALID_LENGTH 113 +#define PROV_R_NO_INSTANCE_ALLOWED 242 +#define PROV_R_NO_KEY_SET 114 +#define PROV_R_NO_PARAMETERS_SET 177 +#define PROV_R_NULL_LENGTH_POINTER 247 +#define PROV_R_NULL_OUTPUT_BUFFER 248 +#define PROV_R_ONESHOT_CALL_OUT_OF_ORDER 239 +#define PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 178 +#define PROV_R_OUTPUT_BUFFER_TOO_SMALL 106 +#define PROV_R_PARENT_CANNOT_GENERATE_RANDOM_NUMBERS 228 +#define PROV_R_PARENT_CANNOT_SUPPLY_ENTROPY_SEED 187 +#define PROV_R_PARENT_LOCKING_NOT_ENABLED 182 +#define PROV_R_PARENT_STRENGTH_TOO_WEAK 194 +#define PROV_R_PATH_MUST_BE_ABSOLUTE 219 +#define PROV_R_PERSONALISATION_STRING_TOO_LONG 195 +#define PROV_R_PSS_SALTLEN_TOO_SMALL 172 +#define PROV_R_REPEATED_PARAMETER 252 +#define PROV_R_REQUEST_TOO_LARGE_FOR_DRBG 196 +#define PROV_R_REQUIRE_CTR_MODE_CIPHER 206 +#define PROV_R_RESEED_ERROR 197 +#define PROV_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 222 +#define PROV_R_SEED_SOURCES_MUST_NOT_HAVE_A_PARENT 229 +#define PROV_R_SELF_TEST_KAT_FAILURE 215 +#define PROV_R_SELF_TEST_POST_FAILURE 216 +#define PROV_R_TAG_NOT_NEEDED 120 +#define PROV_R_TAG_NOT_SET 119 +#define PROV_R_TOO_MANY_RECORDS 126 +#define PROV_R_UNABLE_TO_FIND_CIPHERS 207 +#define PROV_R_UNABLE_TO_GET_PARENT_STRENGTH 199 +#define PROV_R_UNABLE_TO_GET_PASSPHRASE 159 +#define PROV_R_UNABLE_TO_INITIALISE_CIPHERS 208 +#define PROV_R_UNABLE_TO_LOAD_SHA256 147 +#define PROV_R_UNABLE_TO_LOCK_PARENT 201 +#define PROV_R_UNABLE_TO_RESEED 204 +#define PROV_R_UNEXPECTED_KEY_PARAMETERS 249 +#define PROV_R_UNSUPPORTED_CEK_ALG 145 +#define PROV_R_UNSUPPORTED_KEY_SIZE 153 +#define PROV_R_UNSUPPORTED_MAC_TYPE 137 +#define PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS 152 +#define PROV_R_UNSUPPORTED_SELECTION 250 +#define PROV_R_UPDATE_CALL_OUT_OF_ORDER 240 +#define PROV_R_URI_AUTHORITY_UNSUPPORTED 223 +#define PROV_R_VALUE_ERROR 138 +#define PROV_R_WRONG_CIPHERTEXT_SIZE 251 +#define PROV_R_WRONG_FINAL_BLOCK_LENGTH 107 +#define PROV_R_WRONG_OUTPUT_BUFFER_SIZE 139 +#define PROV_R_XOF_DIGESTS_NOT_ALLOWED 183 +#define PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE 148 +#define PROV_R_XTS_DUPLICATED_KEYS 149 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/provider.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/provider.h new file mode 100644 index 0000000..c34beea --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/provider.h @@ -0,0 +1,94 @@ +/* + * Copyright 2019-2025 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_PROVIDER_H +#define OPENSSL_PROVIDER_H +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Set and Get a library context search path */ +int OSSL_PROVIDER_set_default_search_path(OSSL_LIB_CTX *, const char *path); +const char *OSSL_PROVIDER_get0_default_search_path(OSSL_LIB_CTX *libctx); + +/* Load and unload a provider */ +OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *, const char *name); +OSSL_PROVIDER *OSSL_PROVIDER_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params); +OSSL_PROVIDER *OSSL_PROVIDER_try_load(OSSL_LIB_CTX *, const char *name, + int retain_fallbacks); +OSSL_PROVIDER *OSSL_PROVIDER_try_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params, + int retain_fallbacks); +int OSSL_PROVIDER_unload(OSSL_PROVIDER *prov); +int OSSL_PROVIDER_available(OSSL_LIB_CTX *, const char *name); +int OSSL_PROVIDER_do_all(OSSL_LIB_CTX *ctx, + int (*cb)(OSSL_PROVIDER *provider, void *cbdata), + void *cbdata); + +const OSSL_PARAM *OSSL_PROVIDER_gettable_params(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_params(const OSSL_PROVIDER *prov, OSSL_PARAM params[]); +int OSSL_PROVIDER_self_test(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_capabilities(const OSSL_PROVIDER *prov, + const char *capability, + OSSL_CALLBACK *cb, + void *arg); + +/*- + * Provider configuration parameters are normally set in the configuration file, + * but can also be set early in the main program before a provider is in use by + * multiple threads. + * + * Only UTF8-string values are supported. + */ +int OSSL_PROVIDER_add_conf_parameter(OSSL_PROVIDER *prov, const char *name, + const char *value); +/* + * Retrieves any of the requested configuration parameters for the given + * provider that were set in the configuration file or via the above + * OSSL_PROVIDER_add_parameter() function. + * + * The |params| array elements MUST have type OSSL_PARAM_UTF8_PTR, values are + * returned by reference, not as copies. + */ +int OSSL_PROVIDER_get_conf_parameters(const OSSL_PROVIDER *prov, + OSSL_PARAM params[]); +/* + * Parse a provider configuration parameter as a boolean value, + * or return a default value if unable to retrieve the parameter. + * Values like "1", "yes", "true", ... are true (nonzero). + * Values like "0", "no", "false", ... are false (zero). + */ +int OSSL_PROVIDER_conf_get_bool(const OSSL_PROVIDER *prov, + const char *name, int defval); + +const OSSL_ALGORITHM *OSSL_PROVIDER_query_operation(const OSSL_PROVIDER *prov, + int operation_id, + int *no_cache); +void OSSL_PROVIDER_unquery_operation(const OSSL_PROVIDER *prov, + int operation_id, const OSSL_ALGORITHM *algs); +void *OSSL_PROVIDER_get0_provider_ctx(const OSSL_PROVIDER *prov); +const OSSL_DISPATCH *OSSL_PROVIDER_get0_dispatch(const OSSL_PROVIDER *prov); + +/* Add a built in providers */ +int OSSL_PROVIDER_add_builtin(OSSL_LIB_CTX *, const char *name, + OSSL_provider_init_fn *init_fn); + +/* Information */ +const char *OSSL_PROVIDER_get0_name(const OSSL_PROVIDER *prov); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/quic.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/quic.h new file mode 100644 index 0000000..657969b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/quic.h @@ -0,0 +1,75 @@ +/* + * Copyright 2022-2025 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_QUIC_H +#define OPENSSL_QUIC_H +#pragma once + +#include +#include + +#ifndef OPENSSL_NO_QUIC + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Method used for non-thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_method(void); + +/* + * Method used for thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_thread_method(void); + +/* + * QUIC transport error codes (RFC 9000 s. 20.1) + */ +#define OSSL_QUIC_ERR_NO_ERROR 0x00 +#define OSSL_QUIC_ERR_INTERNAL_ERROR 0x01 +#define OSSL_QUIC_ERR_CONNECTION_REFUSED 0x02 +#define OSSL_QUIC_ERR_FLOW_CONTROL_ERROR 0x03 +#define OSSL_QUIC_ERR_STREAM_LIMIT_ERROR 0x04 +#define OSSL_QUIC_ERR_STREAM_STATE_ERROR 0x05 +#define OSSL_QUIC_ERR_FINAL_SIZE_ERROR 0x06 +#define OSSL_QUIC_ERR_FRAME_ENCODING_ERROR 0x07 +#define OSSL_QUIC_ERR_TRANSPORT_PARAMETER_ERROR 0x08 +#define OSSL_QUIC_ERR_CONNECTION_ID_LIMIT_ERROR 0x09 +#define OSSL_QUIC_ERR_PROTOCOL_VIOLATION 0x0A +#define OSSL_QUIC_ERR_INVALID_TOKEN 0x0B +#define OSSL_QUIC_ERR_APPLICATION_ERROR 0x0C +#define OSSL_QUIC_ERR_CRYPTO_BUFFER_EXCEEDED 0x0D +#define OSSL_QUIC_ERR_KEY_UPDATE_ERROR 0x0E +#define OSSL_QUIC_ERR_AEAD_LIMIT_REACHED 0x0F +#define OSSL_QUIC_ERR_NO_VIABLE_PATH 0x10 + +/* Inclusive range for handshake-specific errors. */ +#define OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN 0x0100 +#define OSSL_QUIC_ERR_CRYPTO_ERR_END 0x01FF + +#define OSSL_QUIC_ERR_CRYPTO_ERR(X) \ + (OSSL_QUIC_ERR_CRYPTO_ERR_BEGIN + (X)) + +/* Local errors. */ +#define OSSL_QUIC_LOCAL_ERR_IDLE_TIMEOUT \ + ((uint64_t)0xFFFFFFFFFFFFFFFFULL) + +/* + * Method used for QUIC server operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_server_method(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_NO_QUIC */ +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rand.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rand.h new file mode 100644 index 0000000..7272309 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rand.h @@ -0,0 +1,133 @@ +/* + * Copyright 1995-2025 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_RAND_H +#define OPENSSL_RAND_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RAND_H +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Default security strength (in the sense of [NIST SP 800-90Ar1]) + * + * NIST SP 800-90Ar1 supports the strength of the DRBG being smaller than that + * of the cipher by collecting less entropy. The current DRBG implementation + * does not take RAND_DRBG_STRENGTH into account and sets the strength of the + * DRBG to that of the cipher. + */ +#define RAND_DRBG_STRENGTH 256 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +struct rand_meth_st { + int (*seed)(const void *buf, int num); + int (*bytes)(unsigned char *buf, int num); + void (*cleanup)(void); + int (*add)(const void *buf, int num, double randomness); + int (*pseudorand)(unsigned char *buf, int num); + int (*status)(void); +}; + +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_method(const RAND_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RAND_METHOD *RAND_get_rand_method(void); +#ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_engine(ENGINE *engine); +#endif + +OSSL_DEPRECATEDIN_3_0 RAND_METHOD *RAND_OpenSSL(void); +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define RAND_cleanup() \ + while (0) \ + continue +#endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); + +/* + * Equivalent of RAND_priv_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_priv_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +/* + * Equivalent of RAND_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 int RAND_pseudo_bytes(unsigned char *buf, int num); +#endif + +EVP_RAND_CTX *RAND_get0_primary(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_public(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_private(OSSL_LIB_CTX *ctx); +int RAND_set0_public(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); +int RAND_set0_private(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); + +int RAND_set_DRBG_type(OSSL_LIB_CTX *ctx, const char *drbg, const char *propq, + const char *cipher, const char *digest); +int RAND_set_seed_source_type(OSSL_LIB_CTX *ctx, const char *seed, + const char *propq); + +void RAND_seed(const void *buf, int num); +void RAND_keep_random_devices_open(int keep); + +#if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +#endif + void RAND_add(const void *buf, int num, double randomness); +int RAND_load_file(const char *file, long max_bytes); +int RAND_write_file(const char *file); +const char *RAND_file_name(char *file, size_t num); +int RAND_status(void); + +#ifndef OPENSSL_NO_EGD +int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); +int RAND_egd(const char *path); +int RAND_egd_bytes(const char *path, int bytes); +#endif + +int RAND_poll(void); + +#if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H)) +/* application has to include in order to use these */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void RAND_screen(void); +OSSL_DEPRECATEDIN_1_1_0 int RAND_event(UINT, WPARAM, LPARAM); +#endif +#endif + +int RAND_set1_random_provider(OSSL_LIB_CTX *ctx, OSSL_PROVIDER *p); + +/* Which parameter to provider_random call */ +#define OSSL_PROV_RANDOM_PUBLIC 0 +#define OSSL_PROV_RANDOM_PRIVATE 1 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/randerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/randerr.h new file mode 100644 index 0000000..6107cdd --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/randerr.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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_RANDERR_H +#define OPENSSL_RANDERR_H +#pragma once + +#include +#include +#include + +/* + * RAND reason codes. + */ +#define RAND_R_ADDITIONAL_INPUT_TOO_LONG 102 +#define RAND_R_ALREADY_INSTANTIATED 103 +#define RAND_R_ARGUMENT_OUT_OF_RANGE 105 +#define RAND_R_CANNOT_OPEN_FILE 121 +#define RAND_R_DRBG_ALREADY_INITIALIZED 129 +#define RAND_R_DRBG_NOT_INITIALISED 104 +#define RAND_R_ENTROPY_INPUT_TOO_LONG 106 +#define RAND_R_ENTROPY_OUT_OF_RANGE 124 +#define RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED 127 +#define RAND_R_ERROR_INITIALISING_DRBG 107 +#define RAND_R_ERROR_INSTANTIATING_DRBG 108 +#define RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 109 +#define RAND_R_ERROR_RETRIEVING_ENTROPY 110 +#define RAND_R_ERROR_RETRIEVING_NONCE 111 +#define RAND_R_FAILED_TO_CREATE_LOCK 126 +#define RAND_R_FUNC_NOT_IMPLEMENTED 101 +#define RAND_R_FWRITE_ERROR 123 +#define RAND_R_GENERATE_ERROR 112 +#define RAND_R_INSUFFICIENT_DRBG_STRENGTH 139 +#define RAND_R_INTERNAL_ERROR 113 +#define RAND_R_INVALID_PROPERTY_QUERY 137 +#define RAND_R_IN_ERROR_STATE 114 +#define RAND_R_NOT_A_REGULAR_FILE 122 +#define RAND_R_NOT_INSTANTIATED 115 +#define RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED 128 +#define RAND_R_PARENT_LOCKING_NOT_ENABLED 130 +#define RAND_R_PARENT_STRENGTH_TOO_WEAK 131 +#define RAND_R_PERSONALISATION_STRING_TOO_LONG 116 +#define RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED 133 +#define RAND_R_PRNG_NOT_SEEDED 100 +#define RAND_R_RANDOM_POOL_IS_EMPTY 142 +#define RAND_R_RANDOM_POOL_OVERFLOW 125 +#define RAND_R_RANDOM_POOL_UNDERFLOW 134 +#define RAND_R_REQUEST_TOO_LARGE_FOR_DRBG 117 +#define RAND_R_RESEED_ERROR 118 +#define RAND_R_SELFTEST_FAILURE 119 +#define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135 +#define RAND_R_TOO_MUCH_NONCE_REQUESTED 136 +#define RAND_R_UNABLE_TO_CREATE_DRBG 143 +#define RAND_R_UNABLE_TO_FETCH_DRBG 144 +#define RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER 141 +#define RAND_R_UNABLE_TO_GET_PARENT_STRENGTH 138 +#define RAND_R_UNABLE_TO_LOCK_PARENT 140 +#define RAND_R_UNSUPPORTED_DRBG_FLAGS 132 +#define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc2.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc2.h new file mode 100644 index 0000000..7da28f7 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc2.h @@ -0,0 +1,68 @@ +/* + * 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_RC2_H +#define OPENSSL_RC2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC2_H +#endif + +#include + +#ifndef OPENSSL_NO_RC2 +#ifdef __cplusplus +extern "C" { +#endif + +#define RC2_BLOCK 8 +#define RC2_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef unsigned int RC2_INT; + +#define RC2_ENCRYPT 1 +#define RC2_DECRYPT 0 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void RC2_set_key(RC2_KEY *key, int len, + const unsigned char *data, int bits); +OSSL_DEPRECATEDIN_3_0 void RC2_ecb_encrypt(const unsigned char *in, + unsigned char *out, RC2_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_encrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_decrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num, int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc4.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc4.h new file mode 100644 index 0000000..92dce0c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc4.h @@ -0,0 +1,47 @@ +/* + * 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_RC4_H +#define OPENSSL_RC4_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC4_H +#endif + +#include + +#ifndef OPENSSL_NO_RC4 +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *RC4_options(void); +OSSL_DEPRECATEDIN_3_0 void RC4_set_key(RC4_KEY *key, int len, + const unsigned char *data); +OSSL_DEPRECATEDIN_3_0 void RC4(RC4_KEY *key, size_t len, + const unsigned char *indata, + unsigned char *outdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc5.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc5.h new file mode 100644 index 0000000..2e91e98 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rc5.h @@ -0,0 +1,79 @@ +/* + * 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_RC5_H +#define OPENSSL_RC5_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RC5_H +#endif + +#include + +#ifndef OPENSSL_NO_RC5 +#ifdef __cplusplus +extern "C" { +#endif + +#define RC5_32_BLOCK 8 +#define RC5_32_KEY_LENGTH 16 /* This is a default, max is 255 */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define RC5_ENCRYPT 1 +#define RC5_DECRYPT 0 + +#define RC5_32_INT unsigned int + +/* + * This are the only values supported. Tweak the code if you want more The + * most supported modes will be RC5-32/12/16 RC5-32/16/8 + */ +#define RC5_8_ROUNDS 8 +#define RC5_12_ROUNDS 12 +#define RC5_16_ROUNDS 16 + +typedef struct rc5_key_st { + /* Number of rounds */ + int rounds; + RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)]; +} RC5_32_KEY; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RC5_32_set_key(RC5_32_KEY *key, int len, + const unsigned char *data, + int rounds); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ecb_encrypt(const unsigned char *in, + unsigned char *out, + RC5_32_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *schedule, + unsigned char *ivec, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *schedule, + unsigned char *ivec, int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ripemd.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ripemd.h new file mode 100644 index 0000000..a72d1da --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ripemd.h @@ -0,0 +1,59 @@ +/* + * 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_RIPEMD_H +#define OPENSSL_RIPEMD_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RIPEMD_H +#endif + +#include + +#ifndef OPENSSL_NO_RMD160 +#include +#include + +#define RIPEMD160_DIGEST_LENGTH 20 + +#ifdef __cplusplus +extern "C" { +#endif +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define RIPEMD160_LONG unsigned int + +#define RIPEMD160_CBLOCK 64 +#define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK / 4) + +typedef struct RIPEMD160state_st { + RIPEMD160_LONG A, B, C, D, E; + RIPEMD160_LONG Nl, Nh; + RIPEMD160_LONG data[RIPEMD160_LBLOCK]; + unsigned int num; +} RIPEMD160_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Init(RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *RIPEMD160(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void RIPEMD160_Transform(RIPEMD160_CTX *c, + const unsigned char *b); +#endif + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rsa.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rsa.h new file mode 100644 index 0000000..08335e0 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rsa.h @@ -0,0 +1,614 @@ +/* + * Copyright 1995-2026 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_RSA_H +#define OPENSSL_RSA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_RSA_H +#endif + +#include + +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_RSA_MAX_MODULUS_BITS +#define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +#endif + +#define RSA_3 0x3L +#define RSA_F4 0x10001L + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +#define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 2048 + +#ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +#define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +#endif + +/* exponent limit enforced for "large" modulus only */ +#ifndef OPENSSL_RSA_MAX_PUBEXP_BITS +#define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +#endif +/* based on RFC 8017 appendix A.1.2 */ +#define RSA_ASN1_VERSION_DEFAULT 0 +#define RSA_ASN1_VERSION_MULTI 1 + +#define RSA_DEFAULT_PRIME_NUM 2 + +#define RSA_METHOD_FLAG_NO_CHECK 0x0001 +#define RSA_FLAG_CACHE_PUBLIC 0x0002 +#define RSA_FLAG_CACHE_PRIVATE 0x0004 +#define RSA_FLAG_BLINDING 0x0008 +#define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +#define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +#define RSA_FLAG_NO_BLINDING 0x0080 +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define RSA_FLAG_NO_CONSTTIME 0x0000 +#endif +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +#ifndef OPENSSL_NO_DEPRECATED_0_9_8 +#define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +#endif + +/*- + * New with 3.0: use part of the flags to denote exact type of RSA key, + * some of which are limited to specific signature and encryption schemes. + * These different types share the same RSA structure, but indicate the + * use of certain fields in that structure. + * Currently known are: + * RSA - this is the "normal" unlimited RSA structure (typenum 0) + * RSASSA-PSS - indicates that the PSS parameters are used. + * RSAES-OAEP - no specific field used for the moment, but OAEP padding + * is expected. (currently unused) + * + * 4 bits allow for 16 types + */ +#define RSA_FLAG_TYPE_MASK 0xF000 +#define RSA_FLAG_TYPE_RSA 0x0000 +#define RSA_FLAG_TYPE_RSASSAPSS 0x1000 +#define RSA_FLAG_TYPE_RSAESOAEP 0x2000 + +int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad_mode); +int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad_mode); + +int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen); + +int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int bits); +int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes); +int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +#endif + +/* Salt length matches digest */ +#define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +#define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +#define RSA_PSS_SALTLEN_MAX -3 +/* Auto-detect on verify, set salt length to min(maximum possible, digest + * length) on sign */ +#define RSA_PSS_SALTLEN_AUTO_DIGEST_MAX -4 +/* Old compatible max salt length for sign only */ +#define RSA_PSS_SALTLEN_MAX_SIGN -2 + +int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md_name(EVP_PKEY_CTX *ctx, + const char *mdname); + +int EVP_PKEY_CTX_set_rsa_pss_keygen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_md_name(EVP_PKEY_CTX *ctx, + const char *mdname, + const char *mdprops); + +int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, void *label, int llen); +int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); + +#define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +#define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +#define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +#define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +#define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +#define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +#define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +#define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +#define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +#define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +#define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +#define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +#define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +#define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14) + +#define RSA_PKCS1_PADDING 1 +#define RSA_NO_PADDING 3 +#define RSA_PKCS1_OAEP_PADDING 4 +#define RSA_X931_PADDING 5 + +/* EVP_PKEY_ only */ +#define RSA_PKCS1_PSS_PADDING 6 +#define RSA_PKCS1_WITH_TLS_PADDING 7 + +/* internal RSA_ only */ +#define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 + +#define RSA_PKCS1_PADDING_SIZE 11 + +#define RSA_set_app_data(s, arg) RSA_set_ex_data(s, 0, arg) +#define RSA_get_app_data(s) RSA_get_ex_data(s, 0) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new(void); +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new_method(ENGINE *engine); +OSSL_DEPRECATEDIN_3_0 int RSA_bits(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_security_bits(const RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_crt_params(RSA *r, + BIGNUM *dmp1, BIGNUM *dmq1, + BIGNUM *iqmp); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_multi_prime_params(RSA *r, + BIGNUM *primes[], + BIGNUM *exps[], + BIGNUM *coeffs[], + int pnum); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, + const BIGNUM **d); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_factors(const RSA *r, + const BIGNUM **p, const BIGNUM **q); +OSSL_DEPRECATEDIN_3_0 int RSA_get_multi_prime_extra_count(const RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_get0_multi_prime_factors(const RSA *r, + const BIGNUM *primes[]); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, + const BIGNUM **dmq1, + const BIGNUM **iqmp); +OSSL_DEPRECATEDIN_3_0 +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_n(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_e(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_d(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_p(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_q(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmp1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmq1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_iqmp(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +OSSL_DEPRECATEDIN_3_0 void RSA_clear_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_test_flags(const RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_set_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_get_version(RSA *r); +OSSL_DEPRECATEDIN_3_0 ENGINE *RSA_get0_engine(const RSA *r); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +#define EVP_RSA_gen(bits) \ + EVP_PKEY_Q_keygen(NULL, NULL, "RSA", (size_t)(0 + (bits))) + +/* Deprecated version */ +#ifndef OPENSSL_NO_DEPRECATED_0_9_8 +OSSL_DEPRECATEDIN_0_9_8 RSA *RSA_generate_key(int bits, unsigned long e, void (*callback)(int, int, void *), + void *cb_arg); +#endif + +/* New version */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb); +/* Multi-prime version */ +OSSL_DEPRECATEDIN_3_0 int RSA_generate_multi_prime_key(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, + BIGNUM *q1, BIGNUM *q2, + const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, + const BIGNUM *Xq2, const BIGNUM *Xq, + const BIGNUM *e, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_generate_key_ex(RSA *rsa, int bits, + const BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 int RSA_check_key(const RSA *); +OSSL_DEPRECATEDIN_3_0 int RSA_check_key_ex(const RSA *, BN_GENCB *cb); +/* next 4 return -1 on error */ +OSSL_DEPRECATEDIN_3_0 +int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +OSSL_DEPRECATEDIN_3_0 int RSA_up_ref(RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_flags(const RSA *r); + +OSSL_DEPRECATEDIN_3_0 void RSA_set_default_method(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_null_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_method(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPrivateKey) +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) +DECLARE_ASN1_DUP_FUNCTION(RSA_PSS_PARAMS) + +struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int RSA_print_fp(FILE *fp, const RSA *r, int offset); +#endif + +OSSL_DEPRECATEDIN_3_0 int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_verify(int type, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ +OSSL_DEPRECATEDIN_3_0 +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigbuf, unsigned int siglen, + RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void RSA_blinding_off(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int PKCS1_MGF1(unsigned char *mask, long len, + const unsigned char *seed, long seedlen, + const EVP_MD *dgst); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_none(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_hash_id(int nid); + +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +#define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +OSSL_DEPRECATEDIN_3_0 int RSA_set_ex_data(RSA *r, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *RSA_get_ex_data(const RSA *r, int idx); + +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPublicKey) +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPrivateKey) + +/* + * If this flag is set the RSA 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 RSA_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 RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +#define RSA_FLAG_CHECKED 0x0800 + +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_new(const char *name, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_meth_free(RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const char *RSA_meth_get0_name(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set1_name(RSA_METHOD *meth, + const char *name); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_get_flags(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +OSSL_DEPRECATEDIN_3_0 void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set0_app_data(RSA_METHOD *meth, + void *app_data); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth))(int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec)(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth))(BIGNUM *r0, + const BIGNUM *i, + RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp)(BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth))(BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp)(BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_init(const RSA_METHOD *meth))(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init)(RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_finish(const RSA_METHOD *meth))(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish)(RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_sign(const RSA_METHOD *meth))(int type, + const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, + unsigned int *siglen, + const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign)(int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_verify(const RSA_METHOD *meth))(int dtype, + const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, + const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify)(int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_keygen(const RSA_METHOD *meth))(RSA *rsa, int bits, + BIGNUM *e, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen)(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth))(RSA *rsa, + int bits, + int primes, + BIGNUM *e, + BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen)(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rsaerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rsaerr.h new file mode 100644 index 0000000..8432f5f --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/rsaerr.h @@ -0,0 +1,105 @@ +/* + * 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_RSAERR_H +#define OPENSSL_RSAERR_H +#pragma once + +#include +#include +#include + +/* + * RSA reason codes. + */ +#define RSA_R_ALGORITHM_MISMATCH 100 +#define RSA_R_BAD_E_VALUE 101 +#define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 +#define RSA_R_BAD_PAD_BYTE_COUNT 103 +#define RSA_R_BAD_SIGNATURE 104 +#define RSA_R_BLOCK_TYPE_IS_NOT_01 106 +#define RSA_R_BLOCK_TYPE_IS_NOT_02 107 +#define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 +#define RSA_R_DATA_TOO_LARGE 109 +#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 +#define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 +#define RSA_R_DATA_TOO_SMALL 111 +#define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 +#define RSA_R_DIGEST_DOES_NOT_MATCH 158 +#define RSA_R_DIGEST_NOT_ALLOWED 145 +#define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 +#define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 +#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 +#define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 +#define RSA_R_FIRST_OCTET_INVALID 133 +#define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 +#define RSA_R_INVALID_DIGEST 157 +#define RSA_R_INVALID_DIGEST_LENGTH 143 +#define RSA_R_INVALID_HEADER 137 +#define RSA_R_INVALID_KEYPAIR 171 +#define RSA_R_INVALID_KEY_LENGTH 173 +#define RSA_R_INVALID_LABEL 160 +#define RSA_R_INVALID_LENGTH 181 +#define RSA_R_INVALID_MESSAGE_LENGTH 131 +#define RSA_R_INVALID_MGF1_MD 156 +#define RSA_R_INVALID_MODULUS 174 +#define RSA_R_INVALID_MULTI_PRIME_KEY 167 +#define RSA_R_INVALID_OAEP_PARAMETERS 161 +#define RSA_R_INVALID_PADDING 138 +#define RSA_R_INVALID_PADDING_MODE 141 +#define RSA_R_INVALID_PSS_PARAMETERS 149 +#define RSA_R_INVALID_PSS_SALTLEN 146 +#define RSA_R_INVALID_REQUEST 175 +#define RSA_R_INVALID_SALT_LENGTH 150 +#define RSA_R_INVALID_STRENGTH 176 +#define RSA_R_INVALID_TRAILER 139 +#define RSA_R_INVALID_X931_DIGEST 142 +#define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 +#define RSA_R_KEY_PRIME_NUM_INVALID 165 +#define RSA_R_KEY_SIZE_TOO_SMALL 120 +#define RSA_R_LAST_OCTET_INVALID 134 +#define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +#define RSA_R_MISSING_PRIVATE_KEY 179 +#define RSA_R_MODULUS_TOO_LARGE 105 +#define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +#define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +#define RSA_R_MP_R_NOT_PRIME 170 +#define RSA_R_NO_PUBLIC_EXPONENT 140 +#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +#define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +#define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +#define RSA_R_OAEP_DECODING_ERROR 121 +#define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 +#define RSA_R_PADDING_CHECK_FAILED 114 +#define RSA_R_PAIRWISE_TEST_FAILURE 177 +#define RSA_R_PKCS_DECODING_ERROR 159 +#define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +#define RSA_R_PUB_EXPONENT_OUT_OF_RANGE 178 +#define RSA_R_P_NOT_PRIME 128 +#define RSA_R_Q_NOT_PRIME 129 +#define RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT 180 +#define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 +#define RSA_R_SLEN_CHECK_FAILED 136 +#define RSA_R_SLEN_RECOVERY_FAILED 135 +#define RSA_R_SSLV3_ROLLBACK_ATTACK 115 +#define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 +#define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 +#define RSA_R_UNKNOWN_DIGEST 166 +#define RSA_R_UNKNOWN_MASK_DIGEST 151 +#define RSA_R_UNKNOWN_PADDING_TYPE 118 +#define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +#define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +#define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 +#define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 +#define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 +#define RSA_R_VALUE_MISSING 147 +#define RSA_R_WRONG_SIGNATURE_LENGTH 119 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/safestack.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/safestack.h new file mode 100644 index 0000000..50acb0b --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/safestack.h @@ -0,0 +1,326 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/safestack.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SAFESTACK_H +#define OPENSSL_SAFESTACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SAFESTACK_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define STACK_OF(type) struct stack_st_##type + +/* Helper macro for internal use */ +#define SKM_DEFINE_STACK_OF_INTERNAL(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_inline void sk_##t1##_freefunc_thunk(OPENSSL_sk_freefunc freefunc_arg, void *ptr) \ + { \ + sk_##t1##_freefunc freefunc = (sk_##t1##_freefunc)freefunc_arg; \ + freefunc((t3 *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *ossl_check_##t1##_type(t2 *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ + { \ + return (const OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ + { \ + return (OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ + { \ + return (OPENSSL_sk_compfunc)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ + { \ + return (OPENSSL_sk_copyfunc)cpy; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ + { \ + return (OPENSSL_sk_freefunc)fr; \ + } + +#define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_inline void sk_##t1##_freefunc_thunk(OPENSSL_sk_freefunc freefunc_arg, void *ptr) \ + { \ + sk_##t1##_freefunc freefunc = (sk_##t1##_freefunc)freefunc_arg; \ + freefunc((t3 *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + OPENSSL_STACK *ret = OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + OPENSSL_STACK *ret = OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_freefunc_thunk f_thunk; \ + \ + f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk; \ + sk = (STACK_OF(t1) *)OPENSSL_sk_set_thunks((OPENSSL_STACK *)sk, f_thunk); \ + \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ + { \ + return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +#define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +#define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) +#define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +#define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) +#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) +#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) +#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) +#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) +#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) +#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) +#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) +#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) +#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) +#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) +#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) +#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) +#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) +#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) +#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) +#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) +#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) +#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) +#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) +#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) +#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) +#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) +#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) +#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) +#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) +#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) +#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) + +/* clang-format on */ +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/seed.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/seed.h new file mode 100644 index 0000000..8c2b20a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/seed.h @@ -0,0 +1,112 @@ +/* + * Copyright 2007-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 + */ + +/* + * Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Neither the name of author nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef OPENSSL_SEED_H +#define OPENSSL_SEED_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SEED_H +#endif + +#include + +#ifndef OPENSSL_NO_SEED +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SEED_BLOCK_SIZE 16 +#define SEED_KEY_LENGTH 16 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* look whether we need 'long' to get 32 bits */ +#ifdef AES_LONG +#ifndef SEED_LONG +#define SEED_LONG 1 +#endif +#endif + +typedef struct seed_key_st { +#ifdef SEED_LONG + unsigned long data[32]; +#else + unsigned int data[32]; +#endif +} SEED_KEY_SCHEDULE; +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_ecb_encrypt(const unsigned char *in, + unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int *num, int enc); +OSSL_DEPRECATEDIN_3_0 +void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], + int *num); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/self_test.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/self_test.h new file mode 100644 index 0000000..6e671c1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/self_test.h @@ -0,0 +1,116 @@ +/* + * Copyright 2019-2025 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_SELF_TEST_H +#define OPENSSL_SELF_TEST_H +#pragma once + +#include /* OSSL_CALLBACK */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* The test event phases */ +#define OSSL_SELF_TEST_PHASE_NONE "None" +#define OSSL_SELF_TEST_PHASE_START "Start" +#define OSSL_SELF_TEST_PHASE_CORRUPT "Corrupt" +#define OSSL_SELF_TEST_PHASE_PASS "Pass" +#define OSSL_SELF_TEST_PHASE_FAIL "Fail" + +/* Test event categories */ +#define OSSL_SELF_TEST_TYPE_NONE "None" +#define OSSL_SELF_TEST_TYPE_MODULE_INTEGRITY "Module_Integrity" +#define OSSL_SELF_TEST_TYPE_INSTALL_INTEGRITY "Install_Integrity" +#define OSSL_SELF_TEST_TYPE_CRNG "Continuous_RNG_Test" +#define OSSL_SELF_TEST_TYPE_PCT "Conditional_PCT" +#define OSSL_SELF_TEST_TYPE_PCT_KAT "Conditional_KAT" +#define OSSL_SELF_TEST_TYPE_PCT_IMPORT "Import_PCT" +#define OSSL_SELF_TEST_TYPE_KAT_INTEGRITY "KAT_Integrity" +#define OSSL_SELF_TEST_TYPE_KAT_CIPHER "KAT_Cipher" +#define OSSL_SELF_TEST_TYPE_KAT_ASYM_CIPHER "KAT_AsymmetricCipher" +#define OSSL_SELF_TEST_TYPE_KAT_ASYM_KEYGEN "KAT_AsymmetricKeyGeneration" +#define OSSL_SELF_TEST_TYPE_KAT_KEM "KAT_KEM" +#define OSSL_SELF_TEST_TYPE_KAT_DIGEST "KAT_Digest" +#define OSSL_SELF_TEST_TYPE_KAT_SIGNATURE "KAT_Signature" +#define OSSL_SELF_TEST_TYPE_PCT_SIGNATURE "PCT_Signature" +#define OSSL_SELF_TEST_TYPE_KAT_KDF "KAT_KDF" +#define OSSL_SELF_TEST_TYPE_KAT_KA "KAT_KA" +#define OSSL_SELF_TEST_TYPE_DRBG "DRBG" + +/* Test event sub categories */ +#define OSSL_SELF_TEST_DESC_NONE "None" +#define OSSL_SELF_TEST_DESC_INTEGRITY_HMAC "HMAC" +#define OSSL_SELF_TEST_DESC_PCT_RSA "RSA" +#define OSSL_SELF_TEST_DESC_PCT_RSA_PKCS1 "RSA" +#define OSSL_SELF_TEST_DESC_PCT_ECDSA "ECDSA" +#define OSSL_SELF_TEST_DESC_PCT_EDDSA "EDDSA" +#define OSSL_SELF_TEST_DESC_PCT_DH "DH" +#define OSSL_SELF_TEST_DESC_PCT_DSA "DSA" +#define OSSL_SELF_TEST_DESC_PCT_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_PCT_ML_KEM "ML-KEM" +#define OSSL_SELF_TEST_DESC_PCT_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_CIPHER_AES_GCM "AES_GCM" +#define OSSL_SELF_TEST_DESC_CIPHER_AES_ECB "AES_ECB_Decrypt" +#define OSSL_SELF_TEST_DESC_CIPHER_TDES "TDES" +#define OSSL_SELF_TEST_DESC_ASYM_RSA_ENC "RSA_Encrypt" +#define OSSL_SELF_TEST_DESC_ASYM_RSA_DEC "RSA_Decrypt" +#define OSSL_SELF_TEST_DESC_MD_SHA1 "SHA1" +#define OSSL_SELF_TEST_DESC_MD_SHA2 "SHA2" +#define OSSL_SELF_TEST_DESC_MD_SHA3 "SHA3" +#define OSSL_SELF_TEST_DESC_SIGN_DSA "DSA" +#define OSSL_SELF_TEST_DESC_SIGN_RSA "RSA" +#define OSSL_SELF_TEST_DESC_SIGN_ECDSA "ECDSA" +#define OSSL_SELF_TEST_DESC_SIGN_DetECDSA "DetECDSA" +#define OSSL_SELF_TEST_DESC_SIGN_EDDSA "EDDSA" +#define OSSL_SELF_TEST_DESC_SIGN_LMS "LMS" +#define OSSL_SELF_TEST_DESC_SIGN_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_SIGN_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_KEM "KEM" +#define OSSL_SELF_TEST_DESC_DRBG_CTR "CTR" +#define OSSL_SELF_TEST_DESC_DRBG_HASH "HASH" +#define OSSL_SELF_TEST_DESC_DRBG_HMAC "HMAC" +#define OSSL_SELF_TEST_DESC_KA_DH "DH" +#define OSSL_SELF_TEST_DESC_KA_ECDH "ECDH" +#define OSSL_SELF_TEST_DESC_KDF_HKDF "HKDF" +#define OSSL_SELF_TEST_DESC_KDF_SSKDF "SSKDF" +#define OSSL_SELF_TEST_DESC_KDF_X963KDF "X963KDF" +#define OSSL_SELF_TEST_DESC_KDF_X942KDF "X942KDF" +#define OSSL_SELF_TEST_DESC_KDF_PBKDF2 "PBKDF2" +#define OSSL_SELF_TEST_DESC_KDF_SSHKDF "SSHKDF" +#define OSSL_SELF_TEST_DESC_KDF_TLS12_PRF "TLS12_PRF" +#define OSSL_SELF_TEST_DESC_KDF_KBKDF "KBKDF" +#define OSSL_SELF_TEST_DESC_KDF_KBKDF_KMAC "KBKDF_KMAC" +#define OSSL_SELF_TEST_DESC_KDF_TLS13_EXTRACT "TLS13_KDF_EXTRACT" +#define OSSL_SELF_TEST_DESC_KDF_TLS13_EXPAND "TLS13_KDF_EXPAND" +#define OSSL_SELF_TEST_DESC_RNG "RNG" +#define OSSL_SELF_TEST_DESC_KEYGEN_ML_DSA "ML-DSA" +#define OSSL_SELF_TEST_DESC_KEYGEN_ML_KEM "ML-KEM" +#define OSSL_SELF_TEST_DESC_KEYGEN_SLH_DSA "SLH-DSA" +#define OSSL_SELF_TEST_DESC_ENCAP_KEM "KEM_Encap" +#define OSSL_SELF_TEST_DESC_DECAP_KEM "KEM_Decap" +#define OSSL_SELF_TEST_DESC_DECAP_KEM_FAIL "KEM_Decap_Reject" + +void OSSL_SELF_TEST_set_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK *cb, + void *cbarg); +void OSSL_SELF_TEST_get_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK **cb, + void **cbarg); + +OSSL_SELF_TEST *OSSL_SELF_TEST_new(OSSL_CALLBACK *cb, void *cbarg); +void OSSL_SELF_TEST_free(OSSL_SELF_TEST *st); + +void OSSL_SELF_TEST_onbegin(OSSL_SELF_TEST *st, const char *type, + const char *desc); +int OSSL_SELF_TEST_oncorrupt_byte(OSSL_SELF_TEST *st, unsigned char *bytes); +void OSSL_SELF_TEST_onend(OSSL_SELF_TEST *st, int ret); + +#ifdef __cplusplus +} +#endif +#endif /* OPENSSL_SELF_TEST_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sha.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sha.h new file mode 100644 index 0000000..52b0266 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sha.h @@ -0,0 +1,139 @@ +/* + * 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_SHA_H +#define OPENSSL_SHA_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SHA_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SHA_DIGEST_LENGTH 20 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! SHA_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +#define SHA_LONG unsigned int + +#define SHA_LBLOCK 16 +#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a \ + * contiguous array of 32 bit wide \ + * big-endian values. */ +#define SHA_LAST_BLOCK (SHA_CBLOCK - 8) + +typedef struct SHAstate_st { + SHA_LONG h0, h1, h2, h3, h4; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num; +} SHA_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA1_Init(SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA1_Final(unsigned char *md, SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA1_Transform(SHA_CTX *c, const unsigned char *data); +#endif + +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SHA256_CBLOCK (SHA_LBLOCK * 4) /* SHA-256 treats input data as a \ + * contiguous array of 32 bit wide \ + * big-endian values. */ + +typedef struct SHA256state_st { + SHA_LONG h[8]; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num, md_len; +} SHA256_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA224_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA224_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA224_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA256_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA256_Transform(SHA256_CTX *c, + const unsigned char *data); +#endif + +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); + +#define SHA256_192_DIGEST_LENGTH 24 +#define SHA224_DIGEST_LENGTH 28 +#define SHA256_DIGEST_LENGTH 32 +#define SHA384_DIGEST_LENGTH 48 +#define SHA512_DIGEST_LENGTH 64 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 + * being exactly 64-bit wide. See Implementation Notes in sha512.c + * for further details. + */ +/* + * SHA-512 treats input data as a + * contiguous array of 64 bit + * wide big-endian values. + */ +#define SHA512_CBLOCK (SHA_LBLOCK * 8) +#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) +#define SHA_LONG64 unsigned __int64 +#elif defined(__arch64__) +#define SHA_LONG64 unsigned long +#else +#define SHA_LONG64 unsigned long long +#endif + +typedef struct SHA512state_st { + SHA_LONG64 h[8]; + SHA_LONG64 Nl, Nh; + union { + SHA_LONG64 d[SHA_LBLOCK]; + unsigned char p[SHA512_CBLOCK]; + } u; + unsigned int num, md_len; +} SHA512_CTX; + +OSSL_DEPRECATEDIN_3_0 int SHA384_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA384_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA384_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA512_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA512_Transform(SHA512_CTX *c, + const unsigned char *data); +#endif + +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/srp.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/srp.h new file mode 100644 index 0000000..8dd7404 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/srp.h @@ -0,0 +1,291 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/srp.h.in + * + * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. 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 + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SRP_H +#define OPENSSL_SRP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SRP_H +#endif + +#include + +#ifndef OPENSSL_NO_SRP +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) +#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) +#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) +#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) +#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) +#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) +#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_freefunc_type(freefunc)) +#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) +#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) +#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) +#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) +#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) +#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) +#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) +#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) +#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) +#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) +#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_freefunc_type(freefunc)) +#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) +#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) +#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) +#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_user_pwd_new(void); +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, + const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, + const char *info); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; + /* to simulate a user */ + char *seed_key; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) +#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) +#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) +#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) +#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) +#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) +#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_freefunc_type(freefunc)) +#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) +#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) +#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) +#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_VBASE *SRP_VBASE_new(char *seed_key); +OSSL_DEPRECATEDIN_3_0 +void SRP_VBASE_free(SRP_VBASE *vb); +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); + +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g, OSSL_LIB_CTX *libctx, + const char *propq); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g); + +#define SRP_NO_ERROR 0 +#define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +#define SRP_ERR_VBASE_BN_LIB 2 +#define SRP_ERR_OPEN_FILE 3 +#define SRP_ERR_MEMORY 4 + +#define DB_srptype 0 +#define DB_srpverifier 1 +#define DB_srpsalt 2 +#define DB_srpid 3 +#define DB_srpgN 4 +#define DB_srpinfo 5 +#undef DB_NUMBER +#define DB_NUMBER 6 + +#define DB_SRP_INDEX 'I' +#define DB_SRP_VALID 'V' +#define DB_SRP_REVOKED 'R' +#define DB_SRP_MODIF 'v' + +/* see srp.c */ +OSSL_DEPRECATEDIN_3_0 +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); + +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ + +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +#define SRP_MINIMAL_N 1024 + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/* This method ignores the configured seed and fails for an unknown user. */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 +SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/srtp.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/srtp.h new file mode 100644 index 0000000..3b716e1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/srtp.h @@ -0,0 +1,68 @@ +/* + * Copyright 2011-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 + */ + +/* + * DTLS code by Eric Rescorla + * + * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. + */ + +#ifndef OPENSSL_SRTP_H +#define OPENSSL_SRTP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_D1_SRTP_H +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SRTP_AES128_CM_SHA1_80 0x0001 +#define SRTP_AES128_CM_SHA1_32 0x0002 +#define SRTP_AES128_F8_SHA1_80 0x0003 +#define SRTP_AES128_F8_SHA1_32 0x0004 +#define SRTP_NULL_SHA1_80 0x0005 +#define SRTP_NULL_SHA1_32 0x0006 + +/* AEAD SRTP protection profiles from RFC 7714 */ +#define SRTP_AEAD_AES_128_GCM 0x0007 +#define SRTP_AEAD_AES_256_GCM 0x0008 + +/* DOUBLE AEAD SRTP protection profiles from RFC 8723 */ +#define SRTP_DOUBLE_AEAD_AES_128_GCM_AEAD_AES_128_GCM 0x0009 +#define SRTP_DOUBLE_AEAD_AES_256_GCM_AEAD_AES_256_GCM 0x000A + +/* ARIA SRTP protection profiles from RFC 8269 */ +#define SRTP_ARIA_128_CTR_HMAC_SHA1_80 0x000B +#define SRTP_ARIA_128_CTR_HMAC_SHA1_32 0x000C +#define SRTP_ARIA_256_CTR_HMAC_SHA1_80 0x000D +#define SRTP_ARIA_256_CTR_HMAC_SHA1_32 0x000E +#define SRTP_AEAD_ARIA_128_GCM 0x000F +#define SRTP_AEAD_ARIA_256_GCM 0x0010 + +#ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl.h new file mode 100644 index 0000000..ccdfdac --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl.h @@ -0,0 +1,2947 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ssl.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SSL_H +#define OPENSSL_SSL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL_H +#endif + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +#define SSL_SESSION_ASN1_VERSION 0x0001 + +#define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +#define SSL_MAX_SID_CTX_LENGTH 32 + +#define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512 / 8) +#define SSL_MAX_KEY_ARG_LENGTH 8 +/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ + +/* The maximum number of encrypt/decrypt pipelines we can support */ +#define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +#define SSL_TXT_LOW "LOW" +#define SSL_TXT_MEDIUM "MEDIUM" +#define SSL_TXT_HIGH "HIGH" +#define SSL_TXT_FIPS "FIPS" + +#define SSL_TXT_aNULL "aNULL" +#define SSL_TXT_eNULL "eNULL" +#define SSL_TXT_NULL "NULL" + +#define SSL_TXT_kRSA "kRSA" +#define SSL_TXT_kDHr "kDHr" /* this cipher class has been removed */ +#define SSL_TXT_kDHd "kDHd" /* this cipher class has been removed */ +#define SSL_TXT_kDH "kDH" /* this cipher class has been removed */ +#define SSL_TXT_kEDH "kEDH" /* alias for kDHE */ +#define SSL_TXT_kDHE "kDHE" +#define SSL_TXT_kECDHr "kECDHr" /* this cipher class has been removed */ +#define SSL_TXT_kECDHe "kECDHe" /* this cipher class has been removed */ +#define SSL_TXT_kECDH "kECDH" /* this cipher class has been removed */ +#define SSL_TXT_kEECDH "kEECDH" /* alias for kECDHE */ +#define SSL_TXT_kECDHE "kECDHE" +#define SSL_TXT_kPSK "kPSK" +#define SSL_TXT_kRSAPSK "kRSAPSK" +#define SSL_TXT_kECDHEPSK "kECDHEPSK" +#define SSL_TXT_kDHEPSK "kDHEPSK" +#define SSL_TXT_kGOST "kGOST" +#define SSL_TXT_kGOST18 "kGOST18" +#define SSL_TXT_kSRP "kSRP" + +#define SSL_TXT_aRSA "aRSA" +#define SSL_TXT_aDSS "aDSS" +#define SSL_TXT_aDH "aDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDH "aECDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDSA "aECDSA" +#define SSL_TXT_aPSK "aPSK" +#define SSL_TXT_aGOST94 "aGOST94" +#define SSL_TXT_aGOST01 "aGOST01" +#define SSL_TXT_aGOST12 "aGOST12" +#define SSL_TXT_aGOST "aGOST" +#define SSL_TXT_aSRP "aSRP" + +#define SSL_TXT_DSS "DSS" +#define SSL_TXT_DH "DH" +#define SSL_TXT_DHE "DHE" /* same as "kDHE:-ADH" */ +#define SSL_TXT_EDH "EDH" /* alias for DHE */ +#define SSL_TXT_ADH "ADH" +#define SSL_TXT_RSA "RSA" +#define SSL_TXT_ECDH "ECDH" +#define SSL_TXT_EECDH "EECDH" /* alias for ECDHE" */ +#define SSL_TXT_ECDHE "ECDHE" /* same as "kECDHE:-AECDH" */ +#define SSL_TXT_AECDH "AECDH" +#define SSL_TXT_ECDSA "ECDSA" +#define SSL_TXT_PSK "PSK" +#define SSL_TXT_SRP "SRP" + +#define SSL_TXT_DES "DES" +#define SSL_TXT_3DES "3DES" +#define SSL_TXT_RC4 "RC4" +#define SSL_TXT_RC2 "RC2" +#define SSL_TXT_IDEA "IDEA" +#define SSL_TXT_SEED "SEED" +#define SSL_TXT_AES128 "AES128" +#define SSL_TXT_AES256 "AES256" +#define SSL_TXT_AES "AES" +#define SSL_TXT_AES_GCM "AESGCM" +#define SSL_TXT_AES_CCM "AESCCM" +#define SSL_TXT_AES_CCM_8 "AESCCM8" +#define SSL_TXT_CAMELLIA128 "CAMELLIA128" +#define SSL_TXT_CAMELLIA256 "CAMELLIA256" +#define SSL_TXT_CAMELLIA "CAMELLIA" +#define SSL_TXT_CHACHA20 "CHACHA20" +#define SSL_TXT_GOST "GOST89" +#define SSL_TXT_ARIA "ARIA" +#define SSL_TXT_ARIA_GCM "ARIAGCM" +#define SSL_TXT_ARIA128 "ARIA128" +#define SSL_TXT_ARIA256 "ARIA256" +#define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" +#define SSL_TXT_CBC "CBC" + +#define SSL_TXT_MD5 "MD5" +#define SSL_TXT_SHA1 "SHA1" +#define SSL_TXT_SHA "SHA" /* same as "SHA1" */ +#define SSL_TXT_GOST94 "GOST94" +#define SSL_TXT_GOST89MAC "GOST89MAC" +#define SSL_TXT_GOST12 "GOST12" +#define SSL_TXT_GOST89MAC12 "GOST89MAC12" +#define SSL_TXT_SHA256 "SHA256" +#define SSL_TXT_SHA384 "SHA384" + +#define SSL_TXT_SSLV3 "SSLv3" +#define SSL_TXT_TLSV1 "TLSv1" +#define SSL_TXT_TLSV1_1 "TLSv1.1" +#define SSL_TXT_TLSV1_2 "TLSv1.2" + +#define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +#define SSL_TXT_CMPALL "COMPLEMENTOFALL" +#define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() + * Update both macro and function simultaneously + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* + * This is the default set of TLSv1.3 ciphersuites + * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() + * Update both macro and function simultaneously + */ +#define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +#define SSL_SENT_SHUTDOWN 1 +#define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +#define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; + +STACK_OF(SSL_CIPHER); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) +#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) +#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) +#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) +#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) +#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) +#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) +#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) +#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) +#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) +#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) +#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x00001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x00002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x00008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x00020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* Typedef for SSL async callback */ +typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); + +#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) + +/* + * SSL/TLS connection options. + */ +/* Disable Extended master secret */ +#define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) +/* Cleanse plaintext copies of data delivered to the application */ +#define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) +/* Allow initial connection to servers that don't support RI */ +#define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) +/* Enable support for Kernel TLS */ +#define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) +#define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) +#define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) +#define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) +#define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) +#define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +#define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added + * in OpenSSL 0.9.6d. Usually (depending on the application protocol) + * the workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it + * in SSL_OP_ALL. Added in 0.9.6e + */ +#define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS SSL_OP_BIT(11) +/* DTLS options */ +#define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) +/* Turn on Cookie Exchange (on relevant for servers) */ +#define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) +/* Don't use RFC4507 ticket extension */ +#define SSL_OP_NO_TICKET SSL_OP_BIT(14) +#ifndef OPENSSL_NO_DTLS1_METHOD +/* + * Use Cisco's version identifier of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) + */ +#define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) +#endif +/* As server, disallow session resumption on renegotiation */ +#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) +/* Don't use compression even if supported */ +#define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) +/* Permit unsafe legacy renegotiation */ +#define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) +/* Disable encrypt-then-mac */ +#define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future + * version of OpenSSL may have this disabled by default. + */ +#define SSL_OP_ENABLE_MIDDLEBOX_COMPAT SSL_OP_BIT(20) +/* + * Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_SERVER_PREFERENCE + */ +#define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) +/* + * Set on servers to choose cipher, curve or group according to server's + * preferences. + */ +#define SSL_OP_SERVER_PREFERENCE SSL_OP_BIT(22) +/* Equivalent definition for backwards compatibility: */ +#define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_SERVER_PREFERENCE +/* + * If set, a server will allow a client to issue an SSLv3.0 version + * number as latest version supported in the premaster secret, even when + * TLSv1.0 (version 3.1) was announced in the client hello. Normally + * this is forbidden to prevent version rollback attacks. + */ +#define SSL_OP_TLS_ROLLBACK_BUG SSL_OP_BIT(23) +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. + * This is a server-side option only (no effect on the client). + */ +#define SSL_OP_NO_ANTI_REPLAY SSL_OP_BIT(24) +#define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) +#define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) +#define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) +#define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) +#define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) +/* Disallow all renegotiation */ +#define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) +/* + * Make server add server-hello extension from early version of + * cryptopro draft, when GOST ciphersuite is negotiated. Required for + * interoperability with CryptoPro CSP 3.x + */ +#define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +#define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +#define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) +/* Enable KTLS TX zerocopy on Linux */ +#define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) +#define SSL_OP_LEGACY_EC_POINT_FORMATS SSL_OP_BIT(36) + +/* + * Option "collections." + */ +#define SSL_OP_NO_SSL_MASK \ + (SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \ + | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3) +#define SSL_OP_NO_DTLS_MASK \ + (SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2) + +/* Various bug workarounds that should be rather harmless. */ +#define SSL_OP_ALL \ + (SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ + | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* + * OBSOLETE OPTIONS retained for compatibility + */ + +#define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +#define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +#define SSL_OP_TLS_D5_BUG 0x0 +#define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +#define SSL_OP_SINGLE_ECDH_USE 0x0 +#define SSL_OP_SINGLE_DH_USE 0x0 +#define SSL_OP_EPHEMERAL_RSA 0x0 +#define SSL_OP_NO_SSLv2 0x0 +#define SSL_OP_PKCS1_CHECK_1 0x0 +#define SSL_OP_PKCS1_CHECK_2 0x0 +#define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +#define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +#define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +#define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +#define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +#define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +#define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +#define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +#define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +#define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +#define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +#define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +#define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +#define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +#define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +#define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +#define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +#define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +#define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +#define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +#define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +#define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +#define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +#define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +#define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +#define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +#define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +#define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +#define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +#define CERT_PKEY_RPK 0x1000 + +#define SSL_CONF_FLAG_CMDLINE 0x1 +#define SSL_CONF_FLAG_FILE 0x2 +#define SSL_CONF_FLAG_CLIENT 0x4 +#define SSL_CONF_FLAG_SERVER 0x8 +#define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +#define SSL_CONF_FLAG_CERTIFICATE 0x20 +#define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +#define SSL_CONF_TYPE_UNKNOWN 0x0 +#define SSL_CONF_TYPE_STRING 0x1 +#define SSL_CONF_TYPE_FILE 0x2 +#define SSL_CONF_TYPE_DIR 0x3 +#define SSL_CONF_TYPE_NONE 0x4 +#define SSL_CONF_TYPE_STORE 0x5 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +#define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); +uint64_t SSL_get_options(const SSL *s); +uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_clear_options(SSL *s, uint64_t op); +uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_set_options(SSL *s, uint64_t op); + +#define SSL_CTX_set_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, (op), NULL) +#define SSL_CTX_clear_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, 0, NULL) +#define SSL_clear_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_set_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, (op), NULL) +#define SSL_get_mode(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, 0, NULL) +#define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl), SSL_CTRL_SET_MTU, (mtu), NULL) +#define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl), DTLS_CTRL_SET_LINK_MTU, (mtu), NULL) +#define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl), DTLS_CTRL_GET_LINK_MIN_MTU, 0, NULL) + +#define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +#define SSL_CTX_set_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_set_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_CTX_clear_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) +#define SSL_clear_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +#define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +#define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +#define SSL_get_extms_support(s) \ + SSL_ctrl((s), SSL_CTRL_GET_EXTMS_SUPPORT, 0, NULL) + +#ifndef OPENSSL_NO_SRP +/* see tls_srp.c */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, + int *ad); +OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); +#endif +#endif + +/* 100k max cert list */ +#define SSL_MAX_CERT_LIST_DEFAULT (1024 * 100) + +#define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024 * 20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB)(SSL *ssl, unsigned char *id, + unsigned int *id_len); + +#define SSL_SESS_CACHE_OFF 0x0000 +#define SSL_SESS_CACHE_CLIENT 0x0001 +#define SSL_SESS_CACHE_SERVER 0x0002 +#define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_SERVER) +#define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +#define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +#define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +#define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP | SSL_SESS_CACHE_NO_INTERNAL_STORE) +#define SSL_SESS_CACHE_UPDATE_TIME 0x0400 + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +#define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_NUMBER, 0, NULL) +#define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT, 0, NULL) +#define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_GOOD, 0, NULL) +#define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT, 0, NULL) +#define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_GOOD, 0, NULL) +#define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_HIT, 0, NULL) +#define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CB_HIT, 0, NULL) +#define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_MISSES, 0, NULL) +#define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_TIMEOUTS, 0, NULL) +#define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CACHE_FULL, 0, NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb)(struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb)(struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb)(struct ssl_st + *ssl, + const unsigned char + *data, + int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb)(SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +#ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +#endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb)(SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb)(SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +#ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +#define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +#endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *server, unsigned int server_len, + const unsigned char *client, + unsigned int client_len); + +#define OPENSSL_NPN_UNSUPPORTED 0 +#define OPENSSL_NPN_NEGOTIATED 1 +#define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +#ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +#define PSK_MAX_IDENTITY_LEN 256 +#define PSK_MAX_PSK_LEN 512 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +#endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +#define SSL_NOTHING 1 +#define SSL_WRITING 2 +#define SSL_READING 3 +#define SSL_X509_LOOKUP 4 +#define SSL_ASYNC_PAUSED 5 +#define SSL_ASYNC_NO_JOBS 6 +#define SSL_CLIENT_HELLO_CB 7 +#define SSL_RETRY_VERIFY 8 + +/* These will only be used when doing non-blocking IO */ +#define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +#define SSL_want_read(s) (SSL_want(s) == SSL_READING) +#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +#define SSL_want_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) +#define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +#define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +#define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +#define SSL_MAC_FLAG_READ_MAC_STREAM 1 +#define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 +#define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 +#define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +#include +#include +#include /* This is mostly sslv3 with a few tweaks */ +#include /* Datagram TLS */ +#include /* Support for the use_srtp extension */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) +#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) +#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) +#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) +#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) +#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) +#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) +#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_freefunc_type(freefunc)) +#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) +#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) +#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) +#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) + +/* clang-format on */ + +/* compatibility */ +#define SSL_set_app_data(s, arg) (SSL_set_ex_data(s, 0, (char *)(arg))) +#define SSL_get_app_data(s) (SSL_get_ex_data(s, 0)) +#define SSL_SESSION_set_app_data(s, a) (SSL_SESSION_set_ex_data(s, 0, \ + (char *)(a))) +#define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s, 0)) +#define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx, 0)) +#define SSL_CTX_set_app_data(ctx, arg) (SSL_CTX_set_ex_data(ctx, 0, \ + (char *)(arg))) +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); +#endif + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +#define SSL_ST_CONNECT 0x1000 +#define SSL_ST_ACCEPT 0x2000 + +#define SSL_ST_MASK 0x0FFF + +#define SSL_CB_LOOP 0x01 +#define SSL_CB_EXIT 0x02 +#define SSL_CB_READ 0x04 +#define SSL_CB_WRITE 0x08 +#define SSL_CB_ALERT 0x4000 /* used in callback */ +#define SSL_CB_READ_ALERT (SSL_CB_ALERT | SSL_CB_READ) +#define SSL_CB_WRITE_ALERT (SSL_CB_ALERT | SSL_CB_WRITE) +#define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT | SSL_CB_LOOP) +#define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT | SSL_CB_EXIT) +#define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT | SSL_CB_LOOP) +#define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT | SSL_CB_EXIT) +#define SSL_CB_HANDSHAKE_START 0x10 +#define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +#define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +#define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +#define SSL_ST_READ_HEADER 0xF0 +#define SSL_ST_READ_BODY 0xF1 +#define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +#define SSL_VERIFY_NONE 0x00 +#define SSL_VERIFY_PEER 0x01 +#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +#define SSL_VERIFY_CLIENT_ONCE 0x04 +#define SSL_VERIFY_POST_HANDSHAKE 0x08 + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OpenSSL_add_ssl_algorithms() SSL_library_init() +#define SSLeay_add_ssl_algorithms() SSL_library_init() +#endif + +/* More backward compatibility */ +#define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_cipher_bits(s, np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s), np) +#define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +#define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_time(a) SSL_SESSION_get_time(a) +#define SSL_set_time(a, b) SSL_SESSION_set_time((a), (b)) +#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +#define SSL_set_timeout(a, b) SSL_SESSION_set_timeout((a), (b)) + +#define d2i_SSL_SESSION_bio(bp, s_id) ASN1_d2i_bio_of(SSL_SESSION, SSL_SESSION_new, d2i_SSL_SESSION, bp, s_id) +#define i2d_SSL_SESSION_bio(bp, s_id) ASN1_i2d_bio_of(SSL_SESSION, i2d_SSL_SESSION, bp, s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +#define SSL_AD_REASON_OFFSET 1000 /* offset to get SSL_R_... value \ + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +#define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +#define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +#define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +#define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +#define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +#define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +#define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +#define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +#define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +#define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +#define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +#define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +#define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +#define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +#define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +#define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +#define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +#define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +#define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +#define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +#define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +#define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +#define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +#define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +#define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +#define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +#define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +#define SSL_ERROR_NONE 0 +#define SSL_ERROR_SSL 1 +#define SSL_ERROR_WANT_READ 2 +#define SSL_ERROR_WANT_WRITE 3 +#define SSL_ERROR_WANT_X509_LOOKUP 4 +#define SSL_ERROR_SYSCALL 5 /* look at error stack/return \ + * value/errno */ +#define SSL_ERROR_ZERO_RETURN 6 +#define SSL_ERROR_WANT_CONNECT 7 +#define SSL_ERROR_WANT_ACCEPT 8 +#define SSL_ERROR_WANT_ASYNC 9 +#define SSL_ERROR_WANT_ASYNC_JOB 10 +#define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +#define SSL_ERROR_WANT_RETRY_VERIFY 12 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TMP_DH 3 +#define SSL_CTRL_SET_TMP_ECDH 4 +#define SSL_CTRL_SET_TMP_DH_CB 6 +#endif + +#define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +#define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +#define SSL_CTRL_GET_FLAGS 13 +#define SSL_CTRL_EXTRA_CHAIN_CERT 14 +#define SSL_CTRL_SET_MSG_CALLBACK 15 +#define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +#define SSL_CTRL_SET_MTU 17 +/* Stats */ +#define SSL_CTRL_SESS_NUMBER 20 +#define SSL_CTRL_SESS_CONNECT 21 +#define SSL_CTRL_SESS_CONNECT_GOOD 22 +#define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +#define SSL_CTRL_SESS_ACCEPT 24 +#define SSL_CTRL_SESS_ACCEPT_GOOD 25 +#define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +#define SSL_CTRL_SESS_HIT 27 +#define SSL_CTRL_SESS_CB_HIT 28 +#define SSL_CTRL_SESS_MISSES 29 +#define SSL_CTRL_SESS_TIMEOUTS 30 +#define SSL_CTRL_SESS_CACHE_FULL 31 +#define SSL_CTRL_MODE 33 +#define SSL_CTRL_GET_READ_AHEAD 40 +#define SSL_CTRL_SET_READ_AHEAD 41 +#define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +#define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +#define SSL_CTRL_SET_SESS_CACHE_MODE 44 +#define SSL_CTRL_GET_SESS_CACHE_MODE 45 +#define SSL_CTRL_GET_MAX_CERT_LIST 50 +#define SSL_CTRL_SET_MAX_CERT_LIST 51 +#define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +#define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +#define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +#define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +#endif +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +#define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +#define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +#define SSL_CTRL_SET_SRP_ARG 78 +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +#define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +#define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +#define DTLS_CTRL_GET_TIMEOUT 73 +#define DTLS_CTRL_HANDLE_TIMEOUT 74 +#define SSL_CTRL_GET_RI_SUPPORT 76 +#define SSL_CTRL_CLEAR_MODE 78 +#define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +#define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +#define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +#define SSL_CTRL_CHAIN 88 +#define SSL_CTRL_CHAIN_CERT 89 +#define SSL_CTRL_GET_GROUPS 90 +#define SSL_CTRL_SET_GROUPS 91 +#define SSL_CTRL_SET_GROUPS_LIST 92 +#define SSL_CTRL_GET_SHARED_GROUP 93 +#define SSL_CTRL_SET_SIGALGS 97 +#define SSL_CTRL_SET_SIGALGS_LIST 98 +#define SSL_CTRL_CERT_FLAGS 99 +#define SSL_CTRL_CLEAR_CERT_FLAGS 100 +#define SSL_CTRL_SET_CLIENT_SIGALGS 101 +#define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +#define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +#define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +#define SSL_CTRL_BUILD_CERT_CHAIN 105 +#define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +#define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +#define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +#define SSL_CTRL_GET_PEER_TMP_KEY 109 +#define SSL_CTRL_GET_RAW_CIPHERLIST 110 +#define SSL_CTRL_GET_EC_POINT_FORMATS 111 +#define SSL_CTRL_GET_CHAIN_CERTS 115 +#define SSL_CTRL_SELECT_CURRENT_CERT 116 +#define SSL_CTRL_SET_CURRENT_CERT 117 +#define SSL_CTRL_SET_DH_AUTO 118 +#define DTLS_CTRL_SET_LINK_MTU 120 +#define DTLS_CTRL_GET_LINK_MIN_MTU 121 +#define SSL_CTRL_GET_EXTMS_SUPPORT 122 +#define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +#define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +#define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +#define SSL_CTRL_SET_MAX_PIPELINES 126 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +#define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +#define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +#define SSL_CTRL_GET_SIGNATURE_NID 132 +#define SSL_CTRL_GET_TMP_KEY 133 +#define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +#define SSL_CTRL_GET_IANA_GROUPS 135 +#define SSL_CTRL_SET_RETRY_VERIFY 136 +#define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +#define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +#define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +#define SSL_CTRL_GET_SIGNATURE_NAME 140 +#define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP_EX 142 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP_EX 143 +#define SSL_CERT_SET_FIRST 1 +#define SSL_CERT_SET_NEXT 2 +#define SSL_CERT_SET_SERVER 3 +#define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl, DTLS_CTRL_GET_TIMEOUT, 0, (void *)(arg)) +#define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl, DTLS_CTRL_HANDLE_TIMEOUT, 0, NULL) +#define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_TOTAL_RENEGOTIATIONS, 0, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_dh(ctx, dh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_set_tmp_dh(ssl, dh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_ecdh(ctx, ecdh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#define SSL_set_tmp_ecdh(ssl, ecdh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#endif +#define SSL_CTX_add_extra_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_get_extra_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 0, px509) +#define SSL_CTX_get_extra_chain_certs_only(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 1, px509) +#define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS, 0, NULL) +#define SSL_CTX_set0_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_CTX_set1_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_CTX_add0_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_add1_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_CTX_get0_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx, NULL) +#define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_CTX_select_current_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_CTX_set0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_set1_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_add0_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_add1_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_get0_chain_certs(s, px509) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s, NULL) +#define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_select_current_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_set_current_cert(s, op) \ + SSL_ctrl(s, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_set0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) + +#define SSL_get1_groups(s, glist) \ + SSL_ctrl(s, SSL_CTRL_GET_GROUPS, 0, (int *)(glist)) +#define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_IANA_GROUPS, 0, (uint16_t **)(plst)) +#define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS, glistlen, (int *)(glist)) +#define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(s)) +#define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) +#define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS, glistlen, (char *)(glist)) +#define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(str)) +#define SSL_get_shared_group(s, n) \ + SSL_ctrl(s, SSL_CTRL_GET_SHARED_GROUP, n, NULL) +#define SSL_get_negotiated_group(s) \ + SSL_ctrl(s, SSL_CTRL_GET_NEGOTIATED_GROUP, 0, NULL) +#define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +#define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, \ + (char *)(clist)) +#define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, (char *)(clist)) +#define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NID, 0, pn) +#define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NID, 0, pn) +#define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_TMP_KEY, 0, pk) +#define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_TMP_KEY, 0, pk) +#define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_RAW_CIPHERLIST, 0, plst) +#define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_EC_POINT_FORMATS, 0, plst) +#define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +#define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +const char *SSL_get0_group_name(SSL *s); +const char *SSL_group_to_name(SSL *s, int id); + +/* Backwards compatibility, original 1.1.0 names */ +#define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +#define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); +int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +#define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +#define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +#define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +#define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +#define SSL_get1_curves SSL_get1_groups +#define SSL_CTX_set1_curves SSL_CTX_set1_groups +#define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +#define SSL_set1_curves SSL_set1_groups +#define SSL_set1_curves_list SSL_set1_groups_list +#define SSL_get_shared_curve SSL_get_shared_group + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* Provide some compatibility macros for removed functionality. */ +#define SSL_CTX_need_tmp_RSA(ctx) 0 +#define SSL_CTX_set_tmp_rsa(ctx, rsa) 1 +#define SSL_need_tmp_RSA(ssl) 0 +#define SSL_set_tmp_rsa(ssl, rsa) 1 +#define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +#define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +#define SSL_CTX_set_tmp_rsa_callback(ctx, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#define SSL_set_tmp_rsa_callback(ssl, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, + const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +#ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +#endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb)(SSL *ssl, void *arg), void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, + const unsigned char *d, long len); +#endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +/* serverinfo file format versions */ +#define SSL_SERVERINFOV1 1 +#define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); +int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *uri); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, \ + NULL) +#endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +#ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +#endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); + +#ifdef OPENSSL_X509_H +__owur X509 *SSL_get0_peer_certificate(const SSL *s); +__owur X509 *SSL_get1_peer_certificate(const SSL *s); +/* Deprecated in 3.0.0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_get_peer_certificate SSL_get1_peer_certificate +#endif +#endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb)(X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb)(SSL *ssl, void *arg), + void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +#endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, const unsigned char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, const unsigned char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +#ifndef OPENSSL_NO_SRP +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb)(SSL *, int *, void *)); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); + +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); +#endif +#endif + +/* + * ClientHello callback and helpers. + */ + +#define SSL_CLIENT_HELLO_SUCCESS 1 +#define SSL_CLIENT_HELLO_ERROR 0 +#define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn)(SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +typedef int (*SSL_new_pending_conn_cb_fn)(SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +#ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); +__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); +__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); +__owur int SSL_set_async_callback_arg(SSL *s, void *arg); +__owur int SSL_get_async_status(SSL *s, int *status); + +#endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +#define SSL_READ_EARLY_DATA_ERROR 0 +#define SSL_READ_EARLY_DATA_SUCCESS 1 +#define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, + int flags); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +#define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + +#define SSL_EARLY_DATA_NOT_SENT 0 +#define SSL_EARLY_DATA_REJECTED 1 +#define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); + +/* This sets the 'default' SSL version that SSL_new() will create */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); +#endif + +#ifndef OPENSSL_NO_SSL3_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); +#endif +#endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +#ifndef OPENSSL_NO_TLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_2_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); +#endif +#endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_new_session_ticket(SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_library_init() OPENSSL_init_ssl(0, NULL) +#endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); +__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); +__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, + const char *CAfile, + const char *CApath); +#define SSL_get0_session SSL_get_session /* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +#define SSL_CTX_sess_set_cache_size(ctx, t) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_SIZE, t, NULL) +#define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_SIZE, 0, NULL) +#define SSL_CTX_set_session_cache_mode(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_MODE, m, NULL) +#define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_MODE, 0, NULL) + +#define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +#define SSL_CTX_set_default_read_ahead(ctx, m) SSL_CTX_set_read_ahead(ctx, m) +#define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_READ_AHEAD, 0, NULL) +#define SSL_CTX_set_read_ahead(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_READ_AHEAD, m, NULL) +#define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_CTX_set_max_cert_list(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) +#define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_set_max_cert_list(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) + +#define SSL_CTX_set_max_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_set_max_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_split_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_set_split_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_max_pipelines(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_max_pipelines(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_retry_verify(ssl) \ + (SSL_ctrl(ssl, SSL_CTRL_SET_RETRY_VERIFY, 0, NULL) > 0) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* NB: the |keylength| is only applicable when is_export is true */ +OSSL_DEPRECATEDIN_3_0 +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +OSSL_DEPRECATEDIN_3_0 +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +#endif +#endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_COMP_free_compression_methods() \ + while (0) \ + continue +#endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb)(SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb)(SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); + +int SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +#define SSL_ACCEPT_STREAM_UNI (1U << 1) +#define SSL_ACCEPT_STREAM_BIDI (1U << 2) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +#ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +#endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +#define SSL_VALUE_CLASS_GENERIC 0 +#define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +#define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +#define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +#define SSL_VALUE_NONE 0 +#define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +#define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +#define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +#define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +#define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +#define SSL_VALUE_EVENT_HANDLING_MODE 6 +#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +#define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +#define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +#define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +#define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +#define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +#define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +#define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +#define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +#define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +#define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +#define SSL_POLL_EVENT_NONE 0 + +#define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +#define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +#define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +#define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +#define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +#define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +#define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +#define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +#define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +#define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +#define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +#define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +#define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +#define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +#define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +#define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +#define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +#define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +#define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +#define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +#define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +#define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_cache_hit(s) SSL_session_reused(s) +#endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +#ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +#endif + +#ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +#endif + +#ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void)SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void)SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +#endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +#define SSL_SECOP_OTHER_TYPE 0xffff0000 +#define SSL_SECOP_OTHER_NONE 0 +#define SSL_SECOP_OTHER_CIPHER (1 << 16) +#define SSL_SECOP_OTHER_CURVE (2 << 16) +#define SSL_SECOP_OTHER_DH (3 << 16) +#define SSL_SECOP_OTHER_PKEY (4 << 16) +#define SSL_SECOP_OTHER_SIGALG (5 << 16) +#define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +#define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +#define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +#define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +#define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +#define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +#define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +#define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +#define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +#define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +#define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +#define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +#define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +#define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +#define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +#define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +#define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s))(const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx))(const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +#define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +#define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +#define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +#ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +#endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +#define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +#define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +#define SSL_TICKET_NONE 2 +/* Empty ticket present */ +#define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +#define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +#define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +#define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +/* store the default cipher strings inside the library */ +const char *OSSL_default_cipher_list(void); +const char *OSSL_default_ciphersuites(void); + +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +#define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +#define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +#define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +#define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl2.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl2.h new file mode 100644 index 0000000..67d1d02 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl2.h @@ -0,0 +1,30 @@ +/* + * 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_SSL2_H +#define OPENSSL_SSL2_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL2_H +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL2_VERSION 0x0002 + +#define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl3.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl3.h new file mode 100644 index 0000000..f35b6ea --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ssl3.h @@ -0,0 +1,357 @@ +/* + * Copyright 1995-2025 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_SSL3_H +#define OPENSSL_SSL3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL3_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signalling cipher suite value from RFC 5746 + * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) + */ +#define SSL3_CK_SCSV 0x030000FF + +/* + * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 + * (TLS_FALLBACK_SCSV) + */ +#define SSL3_CK_FALLBACK_SCSV 0x03005600 + +#define SSL3_CK_RSA_NULL_MD5 0x03000001 +#define SSL3_CK_RSA_NULL_SHA 0x03000002 +#define SSL3_CK_RSA_RC4_40_MD5 0x03000003 +#define SSL3_CK_RSA_RC4_128_MD5 0x03000004 +#define SSL3_CK_RSA_RC4_128_SHA 0x03000005 +#define SSL3_CK_RSA_RC2_40_MD5 0x03000006 +#define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 +#define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 +#define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 +#define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A + +#define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B +#define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C +#define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D +#define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E +#define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F +#define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 + +#define SSL3_CK_DHE_DSS_DES_40_CBC_SHA 0x03000011 +#define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +#define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +#define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +#define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +#define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +#define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +#define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +#define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +#define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +#define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +#define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_RSA_DES_192_CBC3_SHA + +#define SSL3_CK_ADH_RC4_40_MD5 0x03000017 +#define SSL3_CK_ADH_RC4_128_MD5 0x03000018 +#define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 +#define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A +#define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +#define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +#define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +#define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +#define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +#define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +#define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +#define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +#define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" +#define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" +#define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" +#define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" +#define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" +#define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" +#define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" +#define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" +#define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" +#define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" + +#define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" +#define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" +#define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" +#define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" +#define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" +#define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" + +#define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" +#define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" +#define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" +#define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" +#define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" +#define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" + +/* + * This next block of six "EDH" labels is for backward compatibility with + * older versions of OpenSSL. New code should use the six "DHE" labels above + * instead: + */ +#define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" +#define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" +#define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" +#define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" +#define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" +#define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" + +#define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" +#define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" +#define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" +#define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" +#define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" + +#define SSL3_SSL_SESSION_ID_LENGTH 32 +#define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 + +#define SSL3_MASTER_SECRET_SIZE 48 +#define SSL3_RANDOM_SIZE 32 +#define SSL3_SESSION_ID_SIZE 32 +#define SSL3_RT_HEADER_LENGTH 5 + +#define SSL3_HM_HEADER_LENGTH 4 + +#ifndef SSL3_ALIGN_PAYLOAD +/* + * Some will argue that this increases memory footprint, but it's not + * actually true. Point is that malloc has to return at least 64-bit aligned + * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. + * Suggested pre-gaping simply moves these wasted bytes from the end of + * allocated region to its front, but makes data payload aligned, which + * improves performance:-) + */ +#define SSL3_ALIGN_PAYLOAD 8 +#else +#if (SSL3_ALIGN_PAYLOAD & (SSL3_ALIGN_PAYLOAD - 1)) != 0 +#error "insane SSL3_ALIGN_PAYLOAD" +#undef SSL3_ALIGN_PAYLOAD +#endif +#endif + +/* + * This is the maximum MAC (digest) size used by the SSL library. Currently + * maximum of 20 is used by SHA1, but we reserve for future extension for + * 512-bit hashes. + */ + +#define SSL3_RT_MAX_MD_SIZE 64 + +/* + * Maximum block size used in all ciphersuites. Currently 16 for AES. + */ + +#define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 + +#define SSL3_RT_MAX_EXTRA (16384) + +/* Maximum plaintext length: defined by SSL/TLS standards */ +#define SSL3_RT_MAX_PLAIN_LENGTH 16384 +/* Maximum compression overhead: defined by SSL/TLS standards */ +#define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 + +/* + * The standards give a maximum encryption overhead of 1024 bytes. In + * practice the value is lower than this. The overhead is the maximum number + * of padding bytes (256) plus the mac size. + */ +#define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) +#define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * OpenSSL currently only uses a padding length of at most one block so the + * send overhead is smaller. + */ + +#define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ + (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) + +/* If compression isn't used don't include the compression overhead */ + +#ifdef OPENSSL_NO_COMP +#define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH +#else +#define SSL3_RT_MAX_COMPRESSED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_COMPRESSED_OVERHEAD) +#endif +#define SSL3_RT_MAX_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_ENCRYPTED_OVERHEAD + SSL3_RT_MAX_COMPRESSED_LENGTH) +#define SSL3_RT_MAX_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +#define SSL3_RT_MAX_PACKET_SIZE \ + (SSL3_RT_MAX_ENCRYPTED_LENGTH + SSL3_RT_HEADER_LENGTH) + +#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" + +/* SSL3_VERSION is defined in prov_ssl.h */ +#define SSL3_VERSION_MAJOR 0x03 +#define SSL3_VERSION_MINOR 0x00 + +#define SSL3_RT_CHANGE_CIPHER_SPEC 20 +#define SSL3_RT_ALERT 21 +#define SSL3_RT_HANDSHAKE 22 +#define SSL3_RT_APPLICATION_DATA 23 + +/* Pseudo content types to indicate additional parameters */ +#define TLS1_RT_CRYPTO 0x1000 +#define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) +#define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) +#define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) +#define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) + +#define TLS1_RT_CRYPTO_READ 0x0000 +#define TLS1_RT_CRYPTO_WRITE 0x0100 +#define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) +#define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) +#define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) +#define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) + +/* Pseudo content types for SSL/TLS header info */ +#define SSL3_RT_HEADER 0x100 +#define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +/* Pseudo content types for QUIC */ +#define SSL3_RT_QUIC_DATAGRAM 0x200 +#define SSL3_RT_QUIC_PACKET 0x201 +#define SSL3_RT_QUIC_FRAME_FULL 0x202 +#define SSL3_RT_QUIC_FRAME_HEADER 0x203 +#define SSL3_RT_QUIC_FRAME_PADDING 0x204 + +#define SSL3_AL_WARNING 1 +#define SSL3_AL_FATAL 2 + +#define SSL3_AD_CLOSE_NOTIFY 0 +#define SSL3_AD_UNEXPECTED_MESSAGE 10 /* fatal */ +#define SSL3_AD_BAD_RECORD_MAC 20 /* fatal */ +#define SSL3_AD_DECOMPRESSION_FAILURE 30 /* fatal */ +#define SSL3_AD_HANDSHAKE_FAILURE 40 /* fatal */ +#define SSL3_AD_NO_CERTIFICATE 41 +#define SSL3_AD_BAD_CERTIFICATE 42 +#define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 +#define SSL3_AD_CERTIFICATE_REVOKED 44 +#define SSL3_AD_CERTIFICATE_EXPIRED 45 +#define SSL3_AD_CERTIFICATE_UNKNOWN 46 +#define SSL3_AD_ILLEGAL_PARAMETER 47 /* fatal */ + +#define TLS1_HB_REQUEST 1 +#define TLS1_HB_RESPONSE 2 + +#define SSL3_CT_RSA_SIGN 1 +#define SSL3_CT_DSS_SIGN 2 +#define SSL3_CT_RSA_FIXED_DH 3 +#define SSL3_CT_DSS_FIXED_DH 4 +#define SSL3_CT_RSA_EPHEMERAL_DH 5 +#define SSL3_CT_DSS_EPHEMERAL_DH 6 +#define SSL3_CT_FORTEZZA_DMS 20 +/* + * SSL3_CT_NUMBER is used to size arrays and it must be large enough to + * contain all of the cert types defined for *either* SSLv3 and TLSv1. + */ +#define SSL3_CT_NUMBER 12 + +#if defined(TLS_CT_NUMBER) +#if TLS_CT_NUMBER != SSL3_CT_NUMBER +#error "SSL/TLS CT_NUMBER values do not match" +#endif +#endif + +/* No longer used as of OpenSSL 1.1.1 */ +#define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +#define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +#define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +#define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +#define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +#define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +#define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +#define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +#define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +/* 0x2000 is reserved for TLS1_FLAGS_QUIC (internal) */ +/* 0x4000 is reserved for TLS1_FLAGS_QUIC_INTERNAL (internal) */ + +#define SSL3_MT_HELLO_REQUEST 0 +#define SSL3_MT_CLIENT_HELLO 1 +#define SSL3_MT_SERVER_HELLO 2 +#define SSL3_MT_NEWSESSION_TICKET 4 +#define SSL3_MT_END_OF_EARLY_DATA 5 +#define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +#define SSL3_MT_CERTIFICATE 11 +#define SSL3_MT_SERVER_KEY_EXCHANGE 12 +#define SSL3_MT_CERTIFICATE_REQUEST 13 +#define SSL3_MT_SERVER_DONE 14 +#define SSL3_MT_CERTIFICATE_VERIFY 15 +#define SSL3_MT_CLIENT_KEY_EXCHANGE 16 +#define SSL3_MT_FINISHED 20 +#define SSL3_MT_CERTIFICATE_URL 21 +#define SSL3_MT_CERTIFICATE_STATUS 22 +#define SSL3_MT_SUPPLEMENTAL_DATA 23 +#define SSL3_MT_KEY_UPDATE 24 +#define SSL3_MT_COMPRESSED_CERTIFICATE 25 +#ifndef OPENSSL_NO_NEXTPROTONEG +#define SSL3_MT_NEXT_PROTO 67 +#endif +#define SSL3_MT_MESSAGE_HASH 254 +#define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +#define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +#define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +#define SSL3_CC_READ 0x001 +#define SSL3_CC_WRITE 0x002 +#define SSL3_CC_CLIENT 0x010 +#define SSL3_CC_SERVER 0x020 +#define SSL3_CC_EARLY 0x040 +#define SSL3_CC_HANDSHAKE 0x080 +#define SSL3_CC_APPLICATION 0x100 +#define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT | SSL3_CC_WRITE) +#define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER | SSL3_CC_READ) +#define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT | SSL3_CC_READ) +#define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER | SSL3_CC_WRITE) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sslerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sslerr.h new file mode 100644 index 0000000..6993255 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sslerr.h @@ -0,0 +1,380 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_SSLERR_H +#define OPENSSL_SSLERR_H +#pragma once + +#include +#include +#include + +/* + * SSL reason codes. + */ +#define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +#define SSL_R_APP_DATA_IN_HANDSHAKE 100 +#define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +#define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +#define SSL_R_BAD_CERTIFICATE 348 +#define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +#define SSL_R_BAD_CIPHER 186 +#define SSL_R_BAD_COMPRESSION_ALGORITHM 326 +#define SSL_R_BAD_DATA 390 +#define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +#define SSL_R_BAD_DECOMPRESSION 107 +#define SSL_R_BAD_DH_VALUE 102 +#define SSL_R_BAD_DIGEST_LENGTH 111 +#define SSL_R_BAD_EARLY_DATA 233 +#define SSL_R_BAD_ECC_CERT 304 +#define SSL_R_BAD_ECPOINT 306 +#define SSL_R_BAD_EXTENSION 110 +#define SSL_R_BAD_HANDSHAKE_LENGTH 332 +#define SSL_R_BAD_HANDSHAKE_STATE 236 +#define SSL_R_BAD_HELLO_REQUEST 105 +#define SSL_R_BAD_HRR_VERSION 263 +#define SSL_R_BAD_KEY_SHARE 108 +#define SSL_R_BAD_KEY_UPDATE 122 +#define SSL_R_BAD_LEGACY_VERSION 292 +#define SSL_R_BAD_LENGTH 271 +#define SSL_R_BAD_PACKET 240 +#define SSL_R_BAD_PACKET_LENGTH 115 +#define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +#define SSL_R_BAD_PSK 219 +#define SSL_R_BAD_PSK_IDENTITY 114 +#define SSL_R_BAD_RECORD_TYPE 443 +#define SSL_R_BAD_RSA_ENCRYPT 119 +#define SSL_R_BAD_SIGNATURE 123 +#define SSL_R_BAD_SRP_A_LENGTH 347 +#define SSL_R_BAD_SRP_PARAMETERS 371 +#define SSL_R_BAD_SRTP_MKI_VALUE 352 +#define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +#define SSL_R_BAD_SSL_FILETYPE 124 +#define SSL_R_BAD_VALUE 384 +#define SSL_R_BAD_WRITE_RETRY 127 +#define SSL_R_BINDER_DOES_NOT_VERIFY 253 +#define SSL_R_BIO_NOT_SET 128 +#define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +#define SSL_R_BN_LIB 130 +#define SSL_R_CALLBACK_FAILED 234 +#define SSL_R_CANNOT_CHANGE_CIPHER 109 +#define SSL_R_CANNOT_GET_GROUP_NAME 299 +#define SSL_R_CA_DN_LENGTH_MISMATCH 131 +#define SSL_R_CA_KEY_TOO_SMALL 397 +#define SSL_R_CA_MD_TOO_WEAK 398 +#define SSL_R_CCS_RECEIVED_EARLY 133 +#define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +#define SSL_R_CERT_CB_ERROR 377 +#define SSL_R_CERT_LENGTH_MISMATCH 135 +#define SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +#define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +#define SSL_R_CLIENTHELLO_TLSEXT 226 +#define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +#define SSL_R_COMPRESSION_DISABLED 343 +#define SSL_R_COMPRESSION_FAILURE 141 +#define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +#define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +#define SSL_R_CONNECTION_TYPE_NOT_SET 144 +#define SSL_R_CONN_USE_ONLY 356 +#define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 +#define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +#define SSL_R_COOKIE_MISMATCH 308 +#define SSL_R_COPY_PARAMETERS_FAILED 296 +#define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +#define SSL_R_DANE_ALREADY_ENABLED 172 +#define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +#define SSL_R_DANE_NOT_ENABLED 175 +#define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +#define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +#define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +#define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +#define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +#define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +#define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +#define SSL_R_DANE_TLSA_NULL_DATA 203 +#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +#define SSL_R_DATA_LENGTH_TOO_LONG 146 +#define SSL_R_DECRYPTION_FAILED 147 +#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +#define SSL_R_DH_KEY_TOO_SMALL 394 +#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +#define SSL_R_DIGEST_CHECK_FAILED 149 +#define SSL_R_DOMAIN_USE_ONLY 422 +#define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +#define SSL_R_DUPLICATE_COMPRESSION_ID 309 +#define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +#define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +#define SSL_R_EE_KEY_TOO_SMALL 399 +#define SSL_R_EMPTY_RAW_PUBLIC_KEY 349 +#define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +#define SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG 419 +#define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +#define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +#define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +#define SSL_R_EXTENSION_NOT_RECEIVED 279 +#define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +#define SSL_R_EXT_LENGTH_MISMATCH 163 +#define SSL_R_FAILED_TO_GET_PARAMETER 316 +#define SSL_R_FAILED_TO_INIT_ASYNC 405 +#define SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE 417 +#define SSL_R_FEATURE_NOT_RENEGOTIABLE 413 +#define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +#define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +#define SSL_R_HTTPS_PROXY_REQUEST 155 +#define SSL_R_HTTP_REQUEST 156 +#define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +#define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +#define SSL_R_INAPPROPRIATE_FALLBACK 373 +#define SSL_R_INCONSISTENT_COMPRESSION 340 +#define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +#define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +#define SSL_R_INCONSISTENT_EXTMS 104 +#define SSL_R_INSUFFICIENT_SECURITY 241 +#define SSL_R_INVALID_ALERT 205 +#define SSL_R_INVALID_CCS_MESSAGE 260 +#define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +#define SSL_R_INVALID_COMMAND 280 +#define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +#define SSL_R_INVALID_CONFIG 283 +#define SSL_R_INVALID_CONFIGURATION_NAME 113 +#define SSL_R_INVALID_CONTEXT 282 +#define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +#define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +#define SSL_R_INVALID_MAX_EARLY_DATA 174 +#define SSL_R_INVALID_NULL_CMD_NAME 385 +#define SSL_R_INVALID_RAW_PUBLIC_KEY 350 +#define SSL_R_INVALID_RECORD 317 +#define SSL_R_INVALID_SEQUENCE_NUMBER 402 +#define SSL_R_INVALID_SERVERINFO_DATA 388 +#define SSL_R_INVALID_SESSION_ID 999 +#define SSL_R_INVALID_SRP_USERNAME 357 +#define SSL_R_INVALID_STATUS_RESPONSE 328 +#define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +#define SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED 333 +#define SSL_R_LENGTH_MISMATCH 159 +#define SSL_R_LENGTH_TOO_LONG 404 +#define SSL_R_LENGTH_TOO_SHORT 160 +#define SSL_R_LIBRARY_BUG 274 +#define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +#define SSL_R_LISTENER_USE_ONLY 421 +#define SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED 395 +#define SSL_R_MISSING_DSA_SIGNING_CERT 165 +#define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +#define SSL_R_MISSING_FATAL 256 +#define SSL_R_MISSING_PARAMETERS 290 +#define SSL_R_MISSING_PSK_KEX_MODES_EXTENSION 310 +#define SSL_R_MISSING_QUIC_TLS_FUNCTIONS 423 +#define SSL_R_MISSING_RSA_CERTIFICATE 168 +#define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +#define SSL_R_MISSING_RSA_SIGNING_CERT 170 +#define SSL_R_MISSING_SIGALGS_EXTENSION 112 +#define SSL_R_MISSING_SIGNING_CERT 221 +#define SSL_R_MISSING_SRP_PARAM 358 +#define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +#define SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION 420 +#define SSL_R_MISSING_TMP_DH_KEY 171 +#define SSL_R_MISSING_TMP_ECDH_KEY 311 +#define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +#define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +#define SSL_R_NOT_REPLACING_CERTIFICATE 289 +#define SSL_R_NOT_SERVER 284 +#define SSL_R_NO_APPLICATION_PROTOCOL 235 +#define SSL_R_NO_CERTIFICATES_RETURNED 176 +#define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +#define SSL_R_NO_CERTIFICATE_SET 179 +#define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +#define SSL_R_NO_CIPHERS_AVAILABLE 181 +#define SSL_R_NO_CIPHERS_SPECIFIED 183 +#define SSL_R_NO_CIPHER_MATCH 185 +#define SSL_R_NO_CLIENT_CERT_METHOD 331 +#define SSL_R_NO_COMPRESSION_SPECIFIED 187 +#define SSL_R_NO_COOKIE_CALLBACK_SET 287 +#define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +#define SSL_R_NO_METHOD_SPECIFIED 188 +#define SSL_R_NO_PEM_EXTENSIONS 389 +#define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +#define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +#define SSL_R_NO_RENEGOTIATION 339 +#define SSL_R_NO_REQUIRED_DIGEST 324 +#define SSL_R_NO_SHARED_CIPHER 193 +#define SSL_R_NO_SHARED_GROUPS 410 +#define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +#define SSL_R_NO_SRTP_PROFILES 359 +#define SSL_R_NO_STREAM 355 +#define SSL_R_NO_SUITABLE_DIGEST_ALGORITHM 297 +#define SSL_R_NO_SUITABLE_GROUPS 295 +#define SSL_R_NO_SUITABLE_KEY_SHARE 101 +#define SSL_R_NO_SUITABLE_RECORD_LAYER 322 +#define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +#define SSL_R_NO_VALID_SCTS 216 +#define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +#define SSL_R_NULL_SSL_CTX 195 +#define SSL_R_NULL_SSL_METHOD_PASSED 196 +#define SSL_R_OCSP_CALLBACK_FAILURE 305 +#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +#define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +#define SSL_R_OVERFLOW_ERROR 237 +#define SSL_R_PACKET_LENGTH_TOO_LONG 198 +#define SSL_R_PARSE_TLSEXT 227 +#define SSL_R_PATH_TOO_LONG 270 +#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +#define SSL_R_PEM_NAME_BAD_PREFIX 391 +#define SSL_R_PEM_NAME_TOO_SHORT 392 +#define SSL_R_PIPELINE_FAILURE 406 +#define SSL_R_POLL_REQUEST_NOT_SUPPORTED 418 +#define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +#define SSL_R_PRIVATE_KEY_MISMATCH 288 +#define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +#define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +#define SSL_R_PSK_NO_CLIENT_CB 224 +#define SSL_R_PSK_NO_SERVER_CB 225 +#define SSL_R_QUIC_HANDSHAKE_LAYER_ERROR 393 +#define SSL_R_QUIC_NETWORK_ERROR 387 +#define SSL_R_QUIC_PROTOCOL_ERROR 382 +#define SSL_R_READ_BIO_NOT_SET 211 +#define SSL_R_READ_TIMEOUT_EXPIRED 312 +#define SSL_R_RECORDS_NOT_RELEASED 321 +#define SSL_R_RECORD_LAYER_FAILURE 313 +#define SSL_R_RECORD_LENGTH_MISMATCH 213 +#define SSL_R_RECORD_TOO_SMALL 298 +#define SSL_R_REMOTE_PEER_ADDRESS_NOT_SET 346 +#define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +#define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +#define SSL_R_RENEGOTIATION_MISMATCH 337 +#define SSL_R_REQUEST_PENDING 285 +#define SSL_R_REQUEST_SENT 286 +#define SSL_R_REQUIRED_CIPHER_MISSING 215 +#define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +#define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +#define SSL_R_SCT_VERIFICATION_FAILED 208 +#define SSL_R_SEQUENCE_CTR_WRAPPED 327 +#define SSL_R_SERVERHELLO_TLSEXT 275 +#define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +#define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +#define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +#define SSL_R_SRP_A_CALC 361 +#define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +#define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +#define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +#define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +#define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +#define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +#define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +#define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +#define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +#define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +#define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +#define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +#define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +#define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +#define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +#define SSL_R_SSL_COMMAND_SECTION_EMPTY 117 +#define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +#define SSL_R_SSL_HANDSHAKE_FAILURE 229 +#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +#define SSL_R_SSL_NEGATIVE_LENGTH 372 +#define SSL_R_SSL_SECTION_EMPTY 126 +#define SSL_R_SSL_SECTION_NOT_FOUND 136 +#define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +#define SSL_R_SSL_SESSION_ID_CONFLICT 302 +#define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +#define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +#define SSL_R_SSL_SESSION_ID_TOO_LONG 408 +#define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +#define SSL_R_STILL_IN_INIT 121 +#define SSL_R_STREAM_COUNT_LIMITED 411 +#define SSL_R_STREAM_FINISHED 365 +#define SSL_R_STREAM_RECV_ONLY 366 +#define SSL_R_STREAM_RESET 375 +#define SSL_R_STREAM_SEND_ONLY 379 +#define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +#define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +#define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +#define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +#define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +#define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +#define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +#define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +#define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +#define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +#define SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL 1120 +#define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +#define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +#define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +#define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +#define SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY 1115 +#define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +#define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +#define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +#define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +#define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +#define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +#define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +#define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +#define SSL_R_TOO_MANY_KEY_UPDATES 132 +#define SSL_R_TOO_MANY_WARN_ALERTS 409 +#define SSL_R_TOO_MUCH_EARLY_DATA 164 +#define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +#define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +#define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +#define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +#define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +#define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +#define SSL_R_UNEXPECTED_EOF_WHILE_READING 294 +#define SSL_R_UNEXPECTED_MESSAGE 244 +#define SSL_R_UNEXPECTED_RECORD 245 +#define SSL_R_UNINITIALIZED 276 +#define SSL_R_UNKNOWN_ALERT_TYPE 246 +#define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +#define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +#define SSL_R_UNKNOWN_CIPHER_TYPE 249 +#define SSL_R_UNKNOWN_CMD_NAME 386 +#define SSL_R_UNKNOWN_COMMAND 139 +#define SSL_R_UNKNOWN_DIGEST 368 +#define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +#define SSL_R_UNKNOWN_MANDATORY_PARAMETER 323 +#define SSL_R_UNKNOWN_PKEY_TYPE 251 +#define SSL_R_UNKNOWN_PROTOCOL 252 +#define SSL_R_UNKNOWN_SSL_VERSION 254 +#define SSL_R_UNKNOWN_STATE 255 +#define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +#define SSL_R_UNSOLICITED_EXTENSION 217 +#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE 414 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS 415 +#define SSL_R_UNSUPPORTED_CONFIG_VALUE_OP 416 +#define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +#define SSL_R_UNSUPPORTED_PROTOCOL 258 +#define SSL_R_UNSUPPORTED_SSL_VERSION 259 +#define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +#define SSL_R_UNSUPPORTED_WRITE_FLAG 412 +#define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +#define SSL_R_VERSION_TOO_HIGH 166 +#define SSL_R_VERSION_TOO_LOW 396 +#define SSL_R_WRONG_CERTIFICATE_TYPE 383 +#define SSL_R_WRONG_CIPHER_RETURNED 261 +#define SSL_R_WRONG_CURVE 378 +#define SSL_R_WRONG_RPK_TYPE 351 +#define SSL_R_WRONG_SIGNATURE_LENGTH 264 +#define SSL_R_WRONG_SIGNATURE_SIZE 265 +#define SSL_R_WRONG_SIGNATURE_TYPE 370 +#define SSL_R_WRONG_SSL_VERSION 266 +#define SSL_R_WRONG_VERSION_NUMBER 267 +#define SSL_R_X509_LIB 268 +#define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sslerr_legacy.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sslerr_legacy.h new file mode 100644 index 0000000..8cf1ebd --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/sslerr_legacy.h @@ -0,0 +1,467 @@ +/* + * Copyright 2020-2024 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 header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public sslerr.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_SSLERR_LEGACY_H +#define OPENSSL_SSLERR_LEGACY_H +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_SSL_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * SSL function codes. + */ +#define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 0 +#define SSL_F_ADD_KEY_SHARE 0 +#define SSL_F_BYTES_TO_CIPHER_LIST 0 +#define SSL_F_CHECK_SUITEB_CIPHER_LIST 0 +#define SSL_F_CIPHERSUITE_CB 0 +#define SSL_F_CONSTRUCT_CA_NAMES 0 +#define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 0 +#define SSL_F_CONSTRUCT_STATEFUL_TICKET 0 +#define SSL_F_CONSTRUCT_STATELESS_TICKET 0 +#define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 0 +#define SSL_F_CREATE_TICKET_PREQUEL 0 +#define SSL_F_CT_MOVE_SCTS 0 +#define SSL_F_CT_STRICT 0 +#define SSL_F_CUSTOM_EXT_ADD 0 +#define SSL_F_CUSTOM_EXT_PARSE 0 +#define SSL_F_D2I_SSL_SESSION 0 +#define SSL_F_DANE_CTX_ENABLE 0 +#define SSL_F_DANE_MTYPE_SET 0 +#define SSL_F_DANE_TLSA_ADD 0 +#define SSL_F_DERIVE_SECRET_KEY_AND_IV 0 +#define SSL_F_DO_DTLS1_WRITE 0 +#define SSL_F_DO_SSL3_WRITE 0 +#define SSL_F_DTLS1_BUFFER_RECORD 0 +#define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 0 +#define SSL_F_DTLS1_HEARTBEAT 0 +#define SSL_F_DTLS1_HM_FRAGMENT_NEW 0 +#define SSL_F_DTLS1_PREPROCESS_FRAGMENT 0 +#define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 0 +#define SSL_F_DTLS1_PROCESS_RECORD 0 +#define SSL_F_DTLS1_READ_BYTES 0 +#define SSL_F_DTLS1_READ_FAILED 0 +#define SSL_F_DTLS1_RETRANSMIT_MESSAGE 0 +#define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 0 +#define SSL_F_DTLS1_WRITE_BYTES 0 +#define SSL_F_DTLSV1_LISTEN 0 +#define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +#define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 0 +#define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 0 +#define SSL_F_DTLS_PROCESS_HELLO_VERIFY 0 +#define SSL_F_DTLS_RECORD_LAYER_NEW 0 +#define SSL_F_DTLS_WAIT_FOR_DRY 0 +#define SSL_F_EARLY_DATA_COUNT_OK 0 +#define SSL_F_FINAL_EARLY_DATA 0 +#define SSL_F_FINAL_EC_PT_FORMATS 0 +#define SSL_F_FINAL_EMS 0 +#define SSL_F_FINAL_KEY_SHARE 0 +#define SSL_F_FINAL_MAXFRAGMENTLEN 0 +#define SSL_F_FINAL_RENEGOTIATE 0 +#define SSL_F_FINAL_SERVER_NAME 0 +#define SSL_F_FINAL_SIG_ALGS 0 +#define SSL_F_GET_CERT_VERIFY_TBS_DATA 0 +#define SSL_F_NSS_KEYLOG_INT 0 +#define SSL_F_OPENSSL_INIT_SSL 0 +#define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_POST_WORK 0 +#define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 0 +#define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 0 +#define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 0 +#define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 0 +#define SSL_F_PARSE_CA_NAMES 0 +#define SSL_F_PITEM_NEW 0 +#define SSL_F_PQUEUE_NEW 0 +#define SSL_F_PROCESS_KEY_SHARE_EXT 0 +#define SSL_F_READ_STATE_MACHINE 0 +#define SSL_F_SET_CLIENT_CIPHERSUITE 0 +#define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 0 +#define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 0 +#define SSL_F_SRP_VERIFY_SERVER_PARAM 0 +#define SSL_F_SSL3_CHANGE_CIPHER_STATE 0 +#define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 0 +#define SSL_F_SSL3_CTRL 0 +#define SSL_F_SSL3_CTX_CTRL 0 +#define SSL_F_SSL3_DIGEST_CACHED_RECORDS 0 +#define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 0 +#define SSL_F_SSL3_ENC 0 +#define SSL_F_SSL3_FINAL_FINISH_MAC 0 +#define SSL_F_SSL3_FINISH_MAC 0 +#define SSL_F_SSL3_GENERATE_KEY_BLOCK 0 +#define SSL_F_SSL3_GENERATE_MASTER_SECRET 0 +#define SSL_F_SSL3_GET_RECORD 0 +#define SSL_F_SSL3_INIT_FINISHED_MAC 0 +#define SSL_F_SSL3_OUTPUT_CERT_CHAIN 0 +#define SSL_F_SSL3_READ_BYTES 0 +#define SSL_F_SSL3_READ_N 0 +#define SSL_F_SSL3_SETUP_KEY_BLOCK 0 +#define SSL_F_SSL3_SETUP_READ_BUFFER 0 +#define SSL_F_SSL3_SETUP_WRITE_BUFFER 0 +#define SSL_F_SSL3_WRITE_BYTES 0 +#define SSL_F_SSL3_WRITE_PENDING 0 +#define SSL_F_SSL_ADD_CERT_CHAIN 0 +#define SSL_F_SSL_ADD_CERT_TO_BUF 0 +#define SSL_F_SSL_ADD_CERT_TO_WPACKET 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 0 +#define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 0 +#define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_BUILD_CERT_CHAIN 0 +#define SSL_F_SSL_BYTES_TO_CIPHER_LIST 0 +#define SSL_F_SSL_CACHE_CIPHERLIST 0 +#define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 0 +#define SSL_F_SSL_CERT_DUP 0 +#define SSL_F_SSL_CERT_NEW 0 +#define SSL_F_SSL_CERT_SET0_CHAIN 0 +#define SSL_F_SSL_CHECK_PRIVATE_KEY 0 +#define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 0 +#define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 0 +#define SSL_F_SSL_CHOOSE_CLIENT_VERSION 0 +#define SSL_F_SSL_CIPHER_DESCRIPTION 0 +#define SSL_F_SSL_CIPHER_LIST_TO_BYTES 0 +#define SSL_F_SSL_CIPHER_PROCESS_RULESTR 0 +#define SSL_F_SSL_CIPHER_STRENGTH_SORT 0 +#define SSL_F_SSL_CLEAR 0 +#define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 0 +#define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 0 +#define SSL_F_SSL_CONF_CMD 0 +#define SSL_F_SSL_CREATE_CIPHER_LIST 0 +#define SSL_F_SSL_CTRL 0 +#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 0 +#define SSL_F_SSL_CTX_ENABLE_CT 0 +#define SSL_F_SSL_CTX_MAKE_PROFILES 0 +#define SSL_F_SSL_CTX_NEW 0 +#define SSL_F_SSL_CTX_SET_ALPN_PROTOS 0 +#define SSL_F_SSL_CTX_SET_CIPHER_LIST 0 +#define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 0 +#define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 0 +#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 0 +#define SSL_F_SSL_CTX_SET_SSL_VERSION 0 +#define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 0 +#define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 0 +#define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 0 +#define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 0 +#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO_EX 0 +#define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 0 +#define SSL_F_SSL_DANE_DUP 0 +#define SSL_F_SSL_DANE_ENABLE 0 +#define SSL_F_SSL_DERIVE 0 +#define SSL_F_SSL_DO_CONFIG 0 +#define SSL_F_SSL_DO_HANDSHAKE 0 +#define SSL_F_SSL_DUP_CA_LIST 0 +#define SSL_F_SSL_ENABLE_CT 0 +#define SSL_F_SSL_GENERATE_PKEY_GROUP 0 +#define SSL_F_SSL_GENERATE_SESSION_ID 0 +#define SSL_F_SSL_GET_NEW_SESSION 0 +#define SSL_F_SSL_GET_PREV_SESSION 0 +#define SSL_F_SSL_GET_SERVER_CERT_INDEX 0 +#define SSL_F_SSL_GET_SIGN_PKEY 0 +#define SSL_F_SSL_HANDSHAKE_HASH 0 +#define SSL_F_SSL_INIT_WBIO_BUFFER 0 +#define SSL_F_SSL_KEY_UPDATE 0 +#define SSL_F_SSL_LOAD_CLIENT_CA_FILE 0 +#define SSL_F_SSL_LOG_MASTER_SECRET 0 +#define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_SSL_MODULE_INIT 0 +#define SSL_F_SSL_NEW 0 +#define SSL_F_SSL_NEXT_PROTO_VALIDATE 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 0 +#define SSL_F_SSL_PEEK 0 +#define SSL_F_SSL_PEEK_EX 0 +#define SSL_F_SSL_PEEK_INTERNAL 0 +#define SSL_F_SSL_READ 0 +#define SSL_F_SSL_READ_EARLY_DATA 0 +#define SSL_F_SSL_READ_EX 0 +#define SSL_F_SSL_READ_INTERNAL 0 +#define SSL_F_SSL_RENEGOTIATE 0 +#define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 0 +#define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 0 +#define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 0 +#define SSL_F_SSL_SESSION_DUP 0 +#define SSL_F_SSL_SESSION_NEW 0 +#define SSL_F_SSL_SESSION_PRINT_FP 0 +#define SSL_F_SSL_SESSION_SET1_ID 0 +#define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 0 +#define SSL_F_SSL_SET_ALPN_PROTOS 0 +#define SSL_F_SSL_SET_CERT 0 +#define SSL_F_SSL_SET_CERT_AND_KEY 0 +#define SSL_F_SSL_SET_CIPHER_LIST 0 +#define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 0 +#define SSL_F_SSL_SET_FD 0 +#define SSL_F_SSL_SET_PKEY 0 +#define SSL_F_SSL_SET_RFD 0 +#define SSL_F_SSL_SET_SESSION 0 +#define SSL_F_SSL_SET_SESSION_ID_CONTEXT 0 +#define SSL_F_SSL_SET_SESSION_TICKET_EXT 0 +#define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +#define SSL_F_SSL_SET_WFD 0 +#define SSL_F_SSL_SHUTDOWN 0 +#define SSL_F_SSL_SRP_CTX_INIT 0 +#define SSL_F_SSL_START_ASYNC_JOB 0 +#define SSL_F_SSL_UNDEFINED_FUNCTION 0 +#define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 0 +#define SSL_F_SSL_USE_CERTIFICATE 0 +#define SSL_F_SSL_USE_CERTIFICATE_ASN1 0 +#define SSL_F_SSL_USE_CERTIFICATE_FILE 0 +#define SSL_F_SSL_USE_PRIVATEKEY 0 +#define SSL_F_SSL_USE_PRIVATEKEY_ASN1 0 +#define SSL_F_SSL_USE_PRIVATEKEY_FILE 0 +#define SSL_F_SSL_USE_PSK_IDENTITY_HINT 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 0 +#define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 0 +#define SSL_F_SSL_VALIDATE_CT 0 +#define SSL_F_SSL_VERIFY_CERT_CHAIN 0 +#define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 0 +#define SSL_F_SSL_WRITE 0 +#define SSL_F_SSL_WRITE_EARLY_DATA 0 +#define SSL_F_SSL_WRITE_EARLY_FINISH 0 +#define SSL_F_SSL_WRITE_EX 0 +#define SSL_F_SSL_WRITE_INTERNAL 0 +#define SSL_F_STATE_MACHINE 0 +#define SSL_F_TLS12_CHECK_PEER_SIGALG 0 +#define SSL_F_TLS12_COPY_SIGALGS 0 +#define SSL_F_TLS13_CHANGE_CIPHER_STATE 0 +#define SSL_F_TLS13_ENC 0 +#define SSL_F_TLS13_FINAL_FINISH_MAC 0 +#define SSL_F_TLS13_GENERATE_SECRET 0 +#define SSL_F_TLS13_HKDF_EXPAND 0 +#define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 0 +#define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 0 +#define SSL_F_TLS13_SETUP_KEY_BLOCK 0 +#define SSL_F_TLS1_CHANGE_CIPHER_STATE 0 +#define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 0 +#define SSL_F_TLS1_ENC 0 +#define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 0 +#define SSL_F_TLS1_GET_CURVELIST 0 +#define SSL_F_TLS1_PRF 0 +#define SSL_F_TLS1_SAVE_U16 0 +#define SSL_F_TLS1_SETUP_KEY_BLOCK 0 +#define SSL_F_TLS1_SET_GROUPS 0 +#define SSL_F_TLS1_SET_RAW_SIGALGS 0 +#define SSL_F_TLS1_SET_SERVER_SIGALGS 0 +#define SSL_F_TLS1_SET_SHARED_SIGALGS 0 +#define SSL_F_TLS1_SET_SIGALGS 0 +#define SSL_F_TLS_CHOOSE_SIGALG 0 +#define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 0 +#define SSL_F_TLS_COLLECT_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 0 +#define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_CERT_STATUS 0 +#define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 0 +#define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +#define SSL_F_TLS_CONSTRUCT_CKE_DHE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_GOST 0 +#define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_CONSTRUCT_CKE_RSA 0 +#define SSL_F_TLS_CONSTRUCT_CKE_SRP 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_EMS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_ETM 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_NPN 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PSK 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SCT 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SRP 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 0 +#define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 0 +#define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_EXTENSIONS 0 +#define SSL_F_TLS_CONSTRUCT_FINISHED 0 +#define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 0 +#define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_ALPN 0 +#define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 0 +#define SSL_F_TLS_CONSTRUCT_STOC_DONE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_EMS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_ETM 0 +#define SSL_F_TLS_CONSTRUCT_STOC_HELLO 0 +#define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 0 +#define SSL_F_TLS_CONSTRUCT_STOC_PSK 0 +#define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 0 +#define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 0 +#define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_FINISH_HANDSHAKE 0 +#define SSL_F_TLS_GET_MESSAGE_BODY 0 +#define SSL_F_TLS_GET_MESSAGE_HEADER 0 +#define SSL_F_TLS_HANDLE_ALPN 0 +#define SSL_F_TLS_HANDLE_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 0 +#define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 0 +#define SSL_F_TLS_PARSE_CTOS_ALPN 0 +#define SSL_F_TLS_PARSE_CTOS_COOKIE 0 +#define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 0 +#define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 0 +#define SSL_F_TLS_PARSE_CTOS_EMS 0 +#define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 0 +#define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 0 +#define SSL_F_TLS_PARSE_CTOS_PSK 0 +#define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 0 +#define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 0 +#define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 0 +#define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 0 +#define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 0 +#define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 0 +#define SSL_F_TLS_PARSE_CTOS_SRP 0 +#define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 0 +#define SSL_F_TLS_PARSE_CTOS_USE_SRTP 0 +#define SSL_F_TLS_PARSE_STOC_ALPN 0 +#define SSL_F_TLS_PARSE_STOC_COOKIE 0 +#define SSL_F_TLS_PARSE_STOC_EARLY_DATA 0 +#define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 0 +#define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 0 +#define SSL_F_TLS_PARSE_STOC_KEY_SHARE 0 +#define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 0 +#define SSL_F_TLS_PARSE_STOC_NPN 0 +#define SSL_F_TLS_PARSE_STOC_PSK 0 +#define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 0 +#define SSL_F_TLS_PARSE_STOC_SCT 0 +#define SSL_F_TLS_PARSE_STOC_SERVER_NAME 0 +#define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 0 +#define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 0 +#define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 0 +#define SSL_F_TLS_PARSE_STOC_USE_SRTP 0 +#define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 0 +#define SSL_F_TLS_PROCESS_CERT_STATUS 0 +#define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 0 +#define SSL_F_TLS_PROCESS_CERT_VERIFY 0 +#define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 0 +#define SSL_F_TLS_PROCESS_CKE_DHE 0 +#define SSL_F_TLS_PROCESS_CKE_ECDHE 0 +#define SSL_F_TLS_PROCESS_CKE_GOST 0 +#define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_PROCESS_CKE_RSA 0 +#define SSL_F_TLS_PROCESS_CKE_SRP 0 +#define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_CLIENT_HELLO 0 +#define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 0 +#define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 0 +#define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 0 +#define SSL_F_TLS_PROCESS_FINISHED 0 +#define SSL_F_TLS_PROCESS_HELLO_REQ 0 +#define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 0 +#define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 0 +#define SSL_F_TLS_PROCESS_KEY_EXCHANGE 0 +#define SSL_F_TLS_PROCESS_KEY_UPDATE 0 +#define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 0 +#define SSL_F_TLS_PROCESS_NEXT_PROTO 0 +#define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 0 +#define SSL_F_TLS_PROCESS_SERVER_DONE 0 +#define SSL_F_TLS_PROCESS_SERVER_HELLO 0 +#define SSL_F_TLS_PROCESS_SKE_DHE 0 +#define SSL_F_TLS_PROCESS_SKE_ECDHE 0 +#define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 0 +#define SSL_F_TLS_PROCESS_SKE_SRP 0 +#define SSL_F_TLS_PSK_DO_BINDER 0 +#define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 0 +#define SSL_F_TLS_SETUP_HANDSHAKE 0 +#define SSL_F_USE_CERTIFICATE_CHAIN_FILE 0 +#define SSL_F_WPACKET_INTERN_INIT_LEN 0 +#define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 0 +#define SSL_F_WRITE_STATE_MACHINE 0 +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/stack.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/stack.h new file mode 100644 index 0000000..542de76 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/stack.h @@ -0,0 +1,92 @@ +/* + * Copyright 1995-2025 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_STACK_H +#define OPENSSL_STACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_STACK_H +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void (*OPENSSL_sk_freefunc_thunk)(OPENSSL_sk_freefunc, void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +OPENSSL_STACK *OPENSSL_sk_set_thunks(OPENSSL_STACK *st, OPENSSL_sk_freefunc_thunk f_thunk); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, OPENSSL_sk_freefunc func); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_all(OPENSSL_STACK *st, const void *data, int *pnum); +int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); +void *OPENSSL_sk_shift(OPENSSL_STACK *st); +void *OPENSSL_sk_pop(OPENSSL_STACK *st); +void OPENSSL_sk_zero(OPENSSL_STACK *st); +OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, + OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); +void OPENSSL_sk_sort(OPENSSL_STACK *st); +int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _STACK OPENSSL_STACK +#define sk_num OPENSSL_sk_num +#define sk_value OPENSSL_sk_value +#define sk_set OPENSSL_sk_set +#define sk_new OPENSSL_sk_new +#define sk_new_null OPENSSL_sk_new_null +#define sk_free OPENSSL_sk_free +#define sk_pop_free OPENSSL_sk_pop_free +#define sk_deep_copy OPENSSL_sk_deep_copy +#define sk_insert OPENSSL_sk_insert +#define sk_delete OPENSSL_sk_delete +#define sk_delete_ptr OPENSSL_sk_delete_ptr +#define sk_find OPENSSL_sk_find +#define sk_find_ex OPENSSL_sk_find_ex +#define sk_push OPENSSL_sk_push +#define sk_unshift OPENSSL_sk_unshift +#define sk_shift OPENSSL_sk_shift +#define sk_pop OPENSSL_sk_pop +#define sk_zero OPENSSL_sk_zero +#define sk_set_cmp_func OPENSSL_sk_set_cmp_func +#define sk_dup OPENSSL_sk_dup +#define sk_sort OPENSSL_sk_sort +#define sk_is_sorted OPENSSL_sk_is_sorted +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/store.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/store.h new file mode 100644 index 0000000..2f14704 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/store.h @@ -0,0 +1,372 @@ +/* + * Copyright 2016-2025 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_STORE_H +#define OPENSSL_STORE_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OSSL_STORE_H +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * The main OSSL_STORE functions. + * ------------------------------ + * + * These allow applications to open a channel to a resource with supported + * data (keys, certs, crls, ...), read the data a piece at a time and decide + * what to do with it, and finally close. + */ + +typedef struct ossl_store_ctx_st OSSL_STORE_CTX; + +/* + * Typedef for the OSSL_STORE_INFO post processing callback. This can be used + * to massage the given OSSL_STORE_INFO, or to drop it entirely (by returning + * NULL). + */ +typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, + void *); + +/* + * Open a channel given a URI. The given UI method will be used any time the + * loader needs extra input, for example when a password or pin is needed, and + * will be passed the same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + */ +OSSL_STORE_CTX * +OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); +OSSL_STORE_CTX * +OSSL_STORE_open_ex(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/* + * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be + * done, and depends on the underlying loader (use OSSL_STORE_get0_scheme to + * determine which loader is used), except for common commands (see below). + * Each command takes different arguments. + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, + ... /* args */); +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, + va_list args); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* + * Common ctrl commands that different loaders may choose to support. + */ +/* int on = 0 or 1; STORE_ctrl(ctx, STORE_C_USE_SECMEM, &on); */ +#define OSSL_STORE_C_USE_SECMEM 1 +/* Where custom commands start */ +#define OSSL_STORE_C_CUSTOM_START 100 + +#endif + +/* + * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE + * functionality, given a context. + * Returns a OSSL_STORE_INFO pointer, from which OpenSSL typed data can be + * extracted with OSSL_STORE_INFO_get0_PKEY(), OSSL_STORE_INFO_get0_CERT(), ... + * NULL is returned on error, which may include that the data found at the URI + * can't be figured out for certain or is ambiguous. + */ +OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); + +/* + * Deletes the object in the store by URI. + * Returns 1 on success, 0 otherwise. + */ +int OSSL_STORE_delete(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[]); + +/* + * Check if end of data (end of file) is reached + * Returns 1 on end, 0 otherwise. + */ +int OSSL_STORE_eof(OSSL_STORE_CTX *ctx); + +/* + * Check if an error occurred + * Returns 1 if it did, 0 otherwise. + */ +int OSSL_STORE_error(OSSL_STORE_CTX *ctx); + +/* + * Close the channel + * Returns 1 on success, 0 on error. + */ +int OSSL_STORE_close(OSSL_STORE_CTX *ctx); + +/* + * Attach to a BIO. This works like OSSL_STORE_open() except it takes a + * BIO instead of a uri, along with a scheme to use when reading. + * The given UI method will be used any time the loader needs extra input, + * for example when a password or pin is needed, and will be passed the + * same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + * + * Note that this function is considered unsafe, all depending on what the + * BIO actually reads. + */ +OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, const char *scheme, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/*- + * Extracting OpenSSL types from and creating new OSSL_STORE_INFOs + * --------------------------------------------------------------- + */ + +/* + * Types of data that can be ossl_stored in a OSSL_STORE_INFO. + * OSSL_STORE_INFO_NAME is typically found when getting a listing of + * available "files" / "tokens" / what have you. + */ +#define OSSL_STORE_INFO_NAME 1 /* char * */ +#define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_PUBKEY 3 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_PKEY 4 /* EVP_PKEY * */ +#define OSSL_STORE_INFO_CERT 5 /* X509 * */ +#define OSSL_STORE_INFO_CRL 6 /* X509_CRL * */ + +/* + * Functions to generate OSSL_STORE_INFOs, one function for each type we + * support having in them, as well as a generic constructor. + * + * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO + * and will therefore be freed when the OSSL_STORE_INFO is freed. + */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new(int type, void *data); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); +int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PUBKEY(EVP_PKEY *pubkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); + +/* + * Functions to try to extract data from a OSSL_STORE_INFO. + */ +int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +void *OSSL_STORE_INFO_get0_data(int type, const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *info); + +const char *OSSL_STORE_INFO_type_string(int type); + +/* + * Free the OSSL_STORE_INFO + */ +void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); + +/*- + * Functions to construct a search URI from a base URI and search criteria + * ----------------------------------------------------------------------- + */ + +/* OSSL_STORE search types */ +#define OSSL_STORE_SEARCH_BY_NAME 1 /* subject in certs, issuer in CRLs */ +#define OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 2 +#define OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 3 +#define OSSL_STORE_SEARCH_BY_ALIAS 4 + +/* To check what search types the scheme handler supports */ +int OSSL_STORE_supports_search(OSSL_STORE_CTX *ctx, int search_type); + +/* Search term constructors */ +/* + * The input is considered to be owned by the caller, and must therefore + * remain present throughout the lifetime of the returned OSSL_STORE_SEARCH + */ +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name, + const ASN1_INTEGER + *serial); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest, + const unsigned char + *bytes, + size_t len); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias); + +/* Search term destructor */ +void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search); + +/* Search term accessors */ +int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion); +X509_NAME *OSSL_STORE_SEARCH_get0_name(const OSSL_STORE_SEARCH *criterion); +const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH + *criterion); +const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH + *criterion, + size_t *length); +const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion); +const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH *criterion); + +/* + * Add search criterion and expected return type (which can be unspecified) + * to the loading channel. This MUST happen before the first OSSL_STORE_load(). + */ +int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); +int OSSL_STORE_find(OSSL_STORE_CTX *ctx, const OSSL_STORE_SEARCH *search); + +/*- + * Function to fetch a loader and extract data from it + * --------------------------------------------------- + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; + +OSSL_STORE_LOADER *OSSL_STORE_LOADER_fetch(OSSL_LIB_CTX *libctx, + const char *scheme, + const char *properties); +int OSSL_STORE_LOADER_up_ref(OSSL_STORE_LOADER *loader); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); +const OSSL_PROVIDER *OSSL_STORE_LOADER_get0_provider(const OSSL_STORE_LOADER * + loader); +const char *OSSL_STORE_LOADER_get0_properties(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_description(const OSSL_STORE_LOADER *loader); +int OSSL_STORE_LOADER_is_a(const OSSL_STORE_LOADER *loader, + const char *scheme); +void OSSL_STORE_LOADER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(OSSL_STORE_LOADER *loader, + void *arg), + void *arg); +int OSSL_STORE_LOADER_names_do_all(const OSSL_STORE_LOADER *loader, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM * +OSSL_STORE_LOADER_settable_ctx_params(const OSSL_STORE_LOADER *loader); + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* struct ossl_store_loader_ctx_st is defined differently by each loader */ +typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)(const OSSL_STORE_LOADER *loader, const char *uri, + const UI_METHOD *ui_method, void *ui_data); +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_ex_fn)(const OSSL_STORE_LOADER *loader, + const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); + +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn)(const OSSL_STORE_LOADER *loader, BIO *bio, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, va_list args); +typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); +typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, const OSSL_STORE_SEARCH *criteria); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); + +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open_ex(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_ex_fn open_ex_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_attach(OSSL_STORE_LOADER *loader, + OSSL_STORE_attach_fn attach_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +OSSL_DEPRECATEDIN_3_0 +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); +#endif + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_do_all_loaders(void (*do_function)(const OSSL_STORE_LOADER *loader, + void *do_arg), + void *do_arg); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/storeerr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/storeerr.h new file mode 100644 index 0000000..a61bee1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/storeerr.h @@ -0,0 +1,47 @@ +/* + * 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_STOREERR_H +#define OPENSSL_STOREERR_H +#pragma once + +#include +#include +#include + +/* + * OSSL_STORE reason codes. + */ +#define OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE 107 +#define OSSL_STORE_R_BAD_PASSWORD_READ 115 +#define OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC 113 +#define OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST 121 +#define OSSL_STORE_R_INVALID_SCHEME 106 +#define OSSL_STORE_R_IS_NOT_A 112 +#define OSSL_STORE_R_LOADER_INCOMPLETE 116 +#define OSSL_STORE_R_LOADING_STARTED 117 +#define OSSL_STORE_R_NOT_A_CERTIFICATE 100 +#define OSSL_STORE_R_NOT_A_CRL 101 +#define OSSL_STORE_R_NOT_A_NAME 103 +#define OSSL_STORE_R_NOT_A_PRIVATE_KEY 102 +#define OSSL_STORE_R_NOT_A_PUBLIC_KEY 122 +#define OSSL_STORE_R_NOT_PARAMETERS 104 +#define OSSL_STORE_R_NO_LOADERS_FOUND 123 +#define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114 +#define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108 +#define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119 +#define OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED 109 +#define OSSL_STORE_R_UNREGISTERED_SCHEME 105 +#define OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE 110 +#define OSSL_STORE_R_UNSUPPORTED_OPERATION 118 +#define OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE 120 +#define OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED 111 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/symhacks.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/symhacks.h new file mode 100644 index 0000000..d041395 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/symhacks.h @@ -0,0 +1,39 @@ +/* + * Copyright 1999-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_SYMHACKS_H +#define OPENSSL_SYMHACKS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SYMHACKS_H +#endif + +#include + +/* Case insensitive linking causes problems.... */ +#if defined(OPENSSL_SYS_VMS) +#undef ERR_load_CRYPTO_strings +#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +#undef OCSP_crlID_new +#define OCSP_crlID_new OCSP_crlID2_new + +#undef d2i_ECPARAMETERS +#define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +#undef i2d_ECPARAMETERS +#define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +#undef d2i_ECPKPARAMETERS +#define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +#undef i2d_ECPKPARAMETERS +#define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +#endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/thread.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/thread.h new file mode 100644 index 0000000..6d86e0e --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/thread.h @@ -0,0 +1,31 @@ +/* + * Copyright 1995-2023 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_THREAD_H +#define OPENSSL_THREAD_H + +#define OSSL_THREAD_SUPPORT_FLAG_THREAD_POOL (1U << 0) +#define OSSL_THREAD_SUPPORT_FLAG_DEFAULT_SPAWN (1U << 1) + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +uint32_t OSSL_get_thread_support_flags(void); +int OSSL_set_max_threads(OSSL_LIB_CTX *ctx, uint64_t max_threads); +uint64_t OSSL_get_max_threads(OSSL_LIB_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_THREAD_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/tls1.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/tls1.h new file mode 100644 index 0000000..34d3768 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/tls1.h @@ -0,0 +1,1222 @@ +/* + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. 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_TLS1_H +#define OPENSSL_TLS1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TLS1_H +#endif + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Default security level if not overridden at config time */ +#ifndef OPENSSL_TLS_SECURITY_LEVEL +#define OPENSSL_TLS_SECURITY_LEVEL 2 +#endif + +/* TLS*_VERSION constants are defined in prov_ssl.h */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TLS_MAX_VERSION TLS1_3_VERSION +#endif + +/* Special value for method supporting multiple versions */ +#define TLS_ANY_VERSION 0x10000 + +#define TLS1_VERSION_MAJOR 0x03 +#define TLS1_VERSION_MINOR 0x01 + +#define TLS1_1_VERSION_MAJOR 0x03 +#define TLS1_1_VERSION_MINOR 0x02 + +#define TLS1_2_VERSION_MAJOR 0x03 +#define TLS1_2_VERSION_MINOR 0x03 + +#define TLS1_get_version(s) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +#define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 0) + +#define TLS1_AD_DECRYPTION_FAILED 21 +#define TLS1_AD_RECORD_OVERFLOW 22 +#define TLS1_AD_UNKNOWN_CA 48 /* fatal */ +#define TLS1_AD_ACCESS_DENIED 49 /* fatal */ +#define TLS1_AD_DECODE_ERROR 50 /* fatal */ +#define TLS1_AD_DECRYPT_ERROR 51 +#define TLS1_AD_EXPORT_RESTRICTION 60 /* fatal */ +#define TLS1_AD_PROTOCOL_VERSION 70 /* fatal */ +#define TLS1_AD_INSUFFICIENT_SECURITY 71 /* fatal */ +#define TLS1_AD_INTERNAL_ERROR 80 /* fatal */ +#define TLS1_AD_INAPPROPRIATE_FALLBACK 86 /* fatal */ +#define TLS1_AD_USER_CANCELLED 90 +#define TLS1_AD_NO_RENEGOTIATION 100 +/* TLSv1.3 alerts */ +#define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +#define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* codes 110-114 are from RFC3546 */ +#define TLS1_AD_UNSUPPORTED_EXTENSION 110 +#define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +#define TLS1_AD_UNRECOGNIZED_NAME 112 +#define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +#define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +#define TLS1_AD_UNKNOWN_PSK_IDENTITY 115 /* fatal */ +#define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +#define TLSEXT_TYPE_server_name 0 +#define TLSEXT_TYPE_max_fragment_length 1 +#define TLSEXT_TYPE_client_certificate_url 2 +#define TLSEXT_TYPE_trusted_ca_keys 3 +#define TLSEXT_TYPE_truncated_hmac 4 +#define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +#define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +#define TLSEXT_TYPE_client_authz 7 +#define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +#define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +#define TLSEXT_TYPE_supported_groups 10 +#define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +#define TLSEXT_TYPE_ec_point_formats 11 + +/* ExtensionType value from RFC5054 */ +#define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +#define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +#define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC7301 */ +#define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +#define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * Extension type for Raw Public Keys + * https://tools.ietf.org/html/rfc7250 + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml + */ +#define TLSEXT_TYPE_client_cert_type 19 +#define TLSEXT_TYPE_server_cert_type 20 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +#define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +#define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +#define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC8879 */ +#define TLSEXT_TYPE_compress_certificate 27 + +/* ExtensionType value from RFC4507 */ +#define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +#define TLSEXT_TYPE_psk 41 +#define TLSEXT_TYPE_early_data 42 +#define TLSEXT_TYPE_supported_versions 43 +#define TLSEXT_TYPE_cookie 44 +#define TLSEXT_TYPE_psk_kex_modes 45 +#define TLSEXT_TYPE_certificate_authorities 47 +#define TLSEXT_TYPE_post_handshake_auth 49 +#define TLSEXT_TYPE_signature_algorithms_cert 50 +#define TLSEXT_TYPE_key_share 51 +#define TLSEXT_TYPE_quic_transport_parameters 57 + +/* Temporary extension type */ +#define TLSEXT_TYPE_renegotiate 0xff01 + +#ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +#define TLSEXT_TYPE_next_proto_neg 13172 +#endif + +/* NameType value from RFC3546 */ +#define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +#define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +#define TLSEXT_ECPOINTFORMAT_first 0 +#define TLSEXT_ECPOINTFORMAT_uncompressed 0 +#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +#define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +#define TLSEXT_signature_anonymous 0 +#define TLSEXT_signature_rsa 1 +#define TLSEXT_signature_dsa 2 +#define TLSEXT_signature_ecdsa 3 +#define TLSEXT_signature_gostr34102001 237 +#define TLSEXT_signature_gostr34102012_256 238 +#define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +#define TLSEXT_signature_num 7 + +#define TLSEXT_hash_none 0 +#define TLSEXT_hash_md5 1 +#define TLSEXT_hash_sha1 2 +#define TLSEXT_hash_sha224 3 +#define TLSEXT_hash_sha256 4 +#define TLSEXT_hash_sha384 5 +#define TLSEXT_hash_sha512 6 +#define TLSEXT_hash_gostr3411 237 +#define TLSEXT_hash_gostr34112012_256 238 +#define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +#define TLSEXT_hash_num 10 + +/* Possible compression values from RFC8879 */ +/* Not defined in RFC8879, but used internally for no-compression */ +#define TLSEXT_comp_cert_none 0 +#define TLSEXT_comp_cert_zlib 1 +#define TLSEXT_comp_cert_brotli 2 +#define TLSEXT_comp_cert_zstd 3 +/* one more than the number of defined values - used as size of 0-terminated array */ +#define TLSEXT_comp_cert_limit 4 + +/* Flag set for unrecognised algorithms */ +#define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +#define TLSEXT_curve_P_256 23 +#define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +#define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +#define TLSEXT_max_fragment_length_512 1 +#define TLSEXT_max_fragment_length_1024 2 +#define TLSEXT_max_fragment_length_2048 3 +#define TLSEXT_max_fragment_length_4096 4 +/* OpenSSL value for unset maximum fragment length extension */ +#define TLSEXT_max_fragment_length_UNSPECIFIED 255 + +/* + * TLS Certificate Type (for RFC7250) + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-3 + */ +#define TLSEXT_cert_type_x509 0 +#define TLSEXT_cert_type_pgp 1 /* recognized, but not supported */ +#define TLSEXT_cert_type_rpk 2 +#define TLSEXT_cert_type_1609dot2 3 /* recognized, but not supported */ + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +#define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +char *SSL_get1_builtin_sigalgs(OSSL_LIB_CTX *libctx); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +__owur int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +#define SSL_set_tlsext_host_name(s, name) \ + SSL_ctrl(s, SSL_CTRL_SET_TLSEXT_HOSTNAME, TLSEXT_NAMETYPE_host_name, \ + (void *)name) + +#define SSL_set_tlsext_debug_callback(ssl, cb) \ + SSL_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_DEBUG_CB, \ + (void (*)(void))cb) + +#define SSL_set_tlsext_debug_arg(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_DEBUG_ARG, 0, arg) + +#define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE, 0, NULL) + +#define SSL_set_tlsext_status_type(ssl, type) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, type, NULL) + +#define SSL_get_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS, 0, arg) + +#define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS, 0, arg) + +#define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS, 0, arg) + +#define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS, 0, arg) + +#define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP, 0, arg) + +#define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP, arglen, arg) + +#define SSL_get0_tlsext_status_ocsp_resp_ex(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP_EX, 0, arg) + +#define SSL_set0_tlsext_status_ocsp_resp_ex(ssl, arg) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP_EX, 0, arg) + +#define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ + SSL_CTX_callback_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_CB, \ + (void (*)(void))cb) + +#define SSL_TLSEXT_ERR_OK 0 +#define SSL_TLSEXT_ERR_ALERT_WARNING 1 +#define SSL_TLSEXT_ERR_ALERT_FATAL 2 +#define SSL_TLSEXT_ERR_NOACK 3 + +#define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG, 0, arg) + +#define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_TLSEXT_TICKET_KEYS, keylen, keys) +#define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_TICKET_KEYS, keylen, keys) + +#define SSL_CTX_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB, 0, (void *)cb) +#define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB, \ + (void (*)(void))cb) + +#define SSL_CTX_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG, 0, arg) +#define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG, 0, arg) + +#define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, type, NULL) + +#define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl, SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE, 0, NULL) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl, SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB, \ + (void (*)(void))cb) +#endif +int SSL_CTX_set_tlsext_ticket_key_evp_cb(SSL_CTX *ctx, int (*fp)(SSL *, unsigned char *, unsigned char *, EVP_CIPHER_CTX *, EVP_MAC_CTX *, int)); + +/* PSK ciphersuites from 4279 */ +#define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +#define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +#define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +#define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D +#define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +#define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +#define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +#define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +#define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +#define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +#define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +#define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +#define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +#define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +#define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +#define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +#define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +#define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +#define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +#define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +#define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +#define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +#define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +#define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +#define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +#define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* AES ciphersuites from RFC3268 */ +#define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +#define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +#define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +#define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +#define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +#define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 +#define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +#define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +#define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +#define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +#define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +#define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +#define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +#define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +#define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +#define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +#define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +#define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +#define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +#define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +#define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +#define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +#define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +#define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +#define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +#define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +#define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +#define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +#define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +#define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +#define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +#define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +#define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +#define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +#define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +#define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +#define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +#define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +#define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +#define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +#define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +#define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +#define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +#define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +#define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* CCM ciphersuites from RFC6655 */ +#define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +#define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +#define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +#define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +#define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +#define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +#define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +#define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +#define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +#define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +#define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +#define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +#define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +#define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +#define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +#define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +#define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +#define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +#define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +#define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +#define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +#define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +#define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +#define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +#define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +#define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +#define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +#define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +#define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +#define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +#define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +#define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +#define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +#define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +#define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +#define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +#define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +#define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +#define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +#define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +#define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +#define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +#define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +#define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +#define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +#define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +#define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +#define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +#define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +#define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +#define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +#define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +#define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +#define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +#define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +#define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +#define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +#define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +#define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* ECDHE PSK ciphersuites from RFC5489 */ +#define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +#define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +#define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +#define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +#define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +#define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +#define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +#define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +#define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +#define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +#define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +#define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +#define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +#define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +#define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +#define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +#define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +#define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +#define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +#define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +#define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +#define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +#define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +#define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +#define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +#define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +#define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Integrity-only ciphersuites from RFC 9150 */ +#define TLS1_3_CK_SHA256_SHA256 0x0300C0B4 +#define TLS1_3_CK_SHA384_SHA384 0x0300C0B5 + +/* Aria ciphersuites from RFC6209 */ +#define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +#define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +#define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +#define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +#define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +#define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +#define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +#define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +#define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +#define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +#define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +#define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +#define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +#define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +#define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +#define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +#define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +#define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +#define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +#define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +#define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +#define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +#define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +#define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +#define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +#define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +#define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +#define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +#define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +#define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +#define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +#define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +#define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +#define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +#define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +#define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +#define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +#define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +#define TLS1_3_RFC_SHA256_SHA256 "TLS_SHA256_SHA256" +#define TLS1_3_RFC_SHA384_SHA384 "TLS_SHA384_SHA384" +#define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +#define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +#define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +#define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +#define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +#define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +#define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +#define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +#define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +#define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +#define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +#define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +#define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +#define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +#define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +#define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +#define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +#define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +#define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +#define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + +/* + * XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE + * ciphers names with "EDH" instead of "DHE". Going forward, we should be + * using DHE everywhere, though we may indefinitely maintain aliases for + * users or configurations that used "EDH" + */ +#define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +#define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +#define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +#define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +#define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +#define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +#define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +#define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +#define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +#define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +#define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +#define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +#define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +#define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +#define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +#define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +#define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +#define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +#define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +#define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +#define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +#define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +#define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +#define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +#define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +#define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +#define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +#define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +#define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +#define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* SRP ciphersuite from RFC 5054 */ +#define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +#define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +#define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +#define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +#define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +#define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +#define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +#define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +#define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +#define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +#define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +#define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* SEED ciphersuites from RFC4162 */ +#define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +#define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +#define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +#define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +#define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +#define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +#define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +#define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +#define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +#define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +#define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +#define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +#define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +#define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +#define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +#define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +#define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* CCM ciphersuites from RFC6655 */ +#define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +#define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +#define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +#define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +#define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +#define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +#define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +#define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +#define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +#define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +#define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +#define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* ECDH HMAC based ciphersuites from RFC5289 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +#define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +#define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +#define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +#define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +#define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +#define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +#define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +#define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +#define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +#define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +#define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +#define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +#define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +#define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +#define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +#define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +#define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +#define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +#define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +#define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +#define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-GCM-SHA384" + +#define TLS_CT_RSA_SIGN 1 +#define TLS_CT_DSS_SIGN 2 +#define TLS_CT_RSA_FIXED_DH 3 +#define TLS_CT_DSS_FIXED_DH 4 +#define TLS_CT_ECDSA_SIGN 64 +#define TLS_CT_RSA_FIXED_ECDH 65 +#define TLS_CT_ECDSA_FIXED_ECDH 66 +#define TLS_CT_GOST01_SIGN 22 +#define TLS_CT_GOST12_IANA_SIGN 67 +#define TLS_CT_GOST12_IANA_512_SIGN 68 +#define TLS_CT_GOST12_LEGACY_SIGN 238 +#define TLS_CT_GOST12_LEGACY_512_SIGN 239 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TLS_CT_GOST12_SIGN TLS_CT_GOST12_LEGACY_SIGN +#define TLS_CT_GOST12_512_SIGN TLS_CT_GOST12_LEGACY_512_SIGN +#endif + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +#define TLS_CT_NUMBER 12 + +#if defined(SSL3_CT_NUMBER) +#if TLS_CT_NUMBER != SSL3_CT_NUMBER +#error "SSL/TLS CT_NUMBER values do not match" +#endif +#endif + +#define TLS1_FINISH_MAC_LENGTH 12 + +#define TLS_MD_MAX_CONST_SIZE 22 + +/* ASCII: "client finished", in hex for EBCDIC compatibility */ +#define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +#define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +/* ASCII: "server finished", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +#define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "key expansion", in hex for EBCDIC compatibility */ +#define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" +#define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +/* ASCII: "client write key", in hex for EBCDIC compatibility */ +#define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +#define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +#define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "IV block", in hex for EBCDIC compatibility */ +#define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" +#define TLS_MD_IV_BLOCK_CONST_SIZE 8 +/* ASCII: "master secret", in hex for EBCDIC compatibility */ +#define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +#define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +/* ASCII: "extended master secret", in hex for EBCDIC compatibility */ +#define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +#define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/trace.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/trace.h new file mode 100644 index 0000000..ff0fba7 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/trace.h @@ -0,0 +1,325 @@ +/* + * 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_TRACE_H +#define OPENSSL_TRACE_H +#pragma once + +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * TRACE CATEGORIES + */ + +/* + * The trace messages of the OpenSSL libraries are organized into different + * categories. For every trace category, the application can register a separate + * tracer callback. When a callback is registered, a so called trace channel is + * created for this category. This channel consists essentially of an internal + * BIO which sends all trace output it receives to the registered application + * callback. + * + * The ALL category can be used as a fallback category to register a single + * channel which receives the output from all categories. However, if the + * application intends to print the trace channel name in the line prefix, + * it is better to register channels for all categories separately. + * (This is how the openssl application does it.) + */ +#define OSSL_TRACE_CATEGORY_ALL 0 /* The fallback */ +#define OSSL_TRACE_CATEGORY_TRACE 1 +#define OSSL_TRACE_CATEGORY_INIT 2 +#define OSSL_TRACE_CATEGORY_TLS 3 +#define OSSL_TRACE_CATEGORY_TLS_CIPHER 4 +#define OSSL_TRACE_CATEGORY_CONF 5 +#define OSSL_TRACE_CATEGORY_ENGINE_TABLE 6 +#define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT 7 +#define OSSL_TRACE_CATEGORY_PKCS5V2 8 +#define OSSL_TRACE_CATEGORY_PKCS12_KEYGEN 9 +#define OSSL_TRACE_CATEGORY_PKCS12_DECRYPT 10 +#define OSSL_TRACE_CATEGORY_X509V3_POLICY 11 +#define OSSL_TRACE_CATEGORY_BN_CTX 12 +#define OSSL_TRACE_CATEGORY_CMP 13 +#define OSSL_TRACE_CATEGORY_STORE 14 +#define OSSL_TRACE_CATEGORY_DECODER 15 +#define OSSL_TRACE_CATEGORY_ENCODER 16 +#define OSSL_TRACE_CATEGORY_REF_COUNT 17 +#define OSSL_TRACE_CATEGORY_HTTP 18 +#define OSSL_TRACE_CATEGORY_PROVIDER 19 +#define OSSL_TRACE_CATEGORY_QUERY 20 +#define OSSL_TRACE_CATEGORY_NUM 21 +/* KEEP THIS LIST IN SYNC with trace_categories[] in crypto/trace.c */ + +/* Returns the trace category number for the given |name| */ +int OSSL_trace_get_category_num(const char *name); + +/* Returns the trace category name for the given |num| */ +const char *OSSL_trace_get_category_name(int num); + +/* + * TRACE CONSUMERS + */ + +/* + * Enables tracing for the given |category| by providing a BIO sink + * as |channel|. If a null pointer is passed as |channel|, an existing + * trace channel is removed and tracing for the category is disabled. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_channel(int category, BIO *channel); + +/* + * Attach a prefix and a suffix to the given |category|, to be printed at the + * beginning and at the end of each trace output group, i.e. when + * OSSL_trace_begin() and OSSL_trace_end() are called. + * If a null pointer is passed as argument, the existing prefix or suffix is + * removed. + * + * They return 1 on success and 0 on failure + */ +int OSSL_trace_set_prefix(int category, const char *prefix); +int OSSL_trace_set_suffix(int category, const char *suffix); + +/* + * OSSL_trace_cb is the type tracing callback provided by the application. + * It MUST return the number of bytes written, or 0 on error (in other words, + * it can never write zero bytes). + * + * The |buffer| will always contain text, which may consist of several lines. + * The |data| argument points to whatever data was provided by the application + * when registering the tracer function. + * + * The |category| number is given, as well as a |cmd| number, described below. + */ +typedef size_t (*OSSL_trace_cb)(const char *buffer, size_t count, + int category, int cmd, void *data); +/* + * Possible |cmd| numbers. + */ +#define OSSL_TRACE_CTRL_BEGIN 0 +#define OSSL_TRACE_CTRL_WRITE 1 +#define OSSL_TRACE_CTRL_END 2 + +/* + * Enables tracing for the given |category| by creating an internal + * trace channel which sends the output to the given |callback|. + * If a null pointer is passed as callback, an existing trace channel + * is removed and tracing for the category is disabled. + * + * NOTE: OSSL_trace_set_channel() and OSSL_trace_set_callback() are mutually + * exclusive. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_callback(int category, OSSL_trace_cb callback, void *data); + +/* + * TRACE PRODUCERS + */ + +/* + * Returns 1 if tracing for the specified category is enabled, otherwise 0 + */ +int OSSL_trace_enabled(int category); + +/* + * Wrap a group of tracing output calls. OSSL_trace_begin() locks tracing and + * returns the trace channel associated with the given category, or NULL if no + * channel is associated with the category. OSSL_trace_end() unlocks tracing. + * + * Usage: + * + * BIO *out; + * if ((out = OSSL_trace_begin(category)) != NULL) { + * ... + * BIO_fprintf(out, ...); + * ... + * OSSL_trace_end(category, out); + * } + * + * See also the convenience macros OSSL_TRACE_BEGIN and OSSL_TRACE_END below. + */ +BIO *OSSL_trace_begin(int category); +void OSSL_trace_end(int category, BIO *channel); + +/* + * OSSL_TRACE* Convenience Macros + */ + +/* + * When the tracing feature is disabled, these macros are defined to + * produce dead code, which a good compiler should eliminate. + */ + +/* + * OSSL_TRACE_BEGIN, OSSL_TRACE_END - Define a Trace Group + * + * These two macros can be used to create a block which is executed only + * if the corresponding trace category is enabled. Inside this block, a + * local variable named |trc_out| is defined, which points to the channel + * associated with the given trace category. + * + * Usage: (using 'TLS' as an example category) + * + * OSSL_TRACE_BEGIN(TLS) { + * + * BIO_fprintf(trc_out, ... ); + * + * } OSSL_TRACE_END(TLS); + * + * + * This expands to the following code + * + * do { + * BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_TLS); + * if (trc_out != NULL) { + * ... + * BIO_fprintf(trc_out, ...); + * } + * OSSL_trace_end(OSSL_TRACE_CATEGORY_TLS, trc_out); + * } while (0); + * + * The use of the inner '{...}' group and the trailing ';' is enforced + * by the definition of the macros in order to make the code look as much + * like C code as possible. + * + * Before returning from inside the trace block, it is necessary to + * call OSSL_TRACE_CANCEL(category). + */ + +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_##category); \ + \ + if (trc_out != NULL) + +#define OSSL_TRACE_END(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out); \ + } \ + while (0) + +#define OSSL_TRACE_CANCEL(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out) + +#else + +#define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = NULL; \ + if (0) + +#define OSSL_TRACE_END(category) \ + } \ + while (0) + +#define OSSL_TRACE_CANCEL(category) \ + ((void)0) + +#endif + +/* + * OSSL_TRACE_ENABLED() - Check whether tracing is enabled for |category| + * + * Usage: + * + * if (OSSL_TRACE_ENABLED(TLS)) { + * ... + * } + */ +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACE_ENABLED(category) \ + OSSL_trace_enabled(OSSL_TRACE_CATEGORY_##category) + +#else + +#define OSSL_TRACE_ENABLED(category) (0) + +#endif + +/* + * OSSL_TRACE*() - OneShot Trace Macros + * + * These macros are intended to produce a simple printf-style trace output. + * Unfortunately, C90 macros don't support variable arguments, so the + * "vararg" OSSL_TRACEV() macro has a rather weird usage pattern: + * + * OSSL_TRACEV(category, (trc_out, "format string", ...args...)); + * + * Where 'channel' is the literal symbol of this name, not a variable. + * For that reason, it is currently not intended to be used directly, + * but only as helper macro for the other oneshot trace macros + * OSSL_TRACE(), OSSL_TRACE1(), OSSL_TRACE2(), ... + * + * Usage: + * + * OSSL_TRACE(INIT, "Hello world!\n"); + * OSSL_TRACE1(TLS, "The answer is %d\n", 42); + * OSSL_TRACE2(TLS, "The ultimate question to answer %d is '%s'\n", + * 42, "What do you get when you multiply six by nine?"); + */ + +#if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +#define OSSL_TRACEV(category, args) \ + OSSL_TRACE_BEGIN(category) \ + BIO_printf args; \ + OSSL_TRACE_END(category) + +#else + +#define OSSL_TRACEV(category, args) ((void)0) + +#endif + +#define OSSL_TRACE(category, text) \ + OSSL_TRACEV(category, (trc_out, "%s", text)) + +#define OSSL_TRACE1(category, format, arg1) \ + OSSL_TRACEV(category, (trc_out, format, arg1)) +#define OSSL_TRACE2(category, format, arg1, arg2) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2)) +#define OSSL_TRACE3(category, format, arg1, arg2, arg3) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3)) +#define OSSL_TRACE4(category, format, arg1, arg2, arg3, arg4) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4)) +#define OSSL_TRACE5(category, format, arg1, arg2, arg3, arg4, arg5) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5)) +#define OSSL_TRACE6(category, format, arg1, arg2, arg3, arg4, arg5, arg6) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6)) +#define OSSL_TRACE7(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7)) +#define OSSL_TRACE8(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)) +#define OSSL_TRACE9(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)) + +#define OSSL_TRACE_STRING_MAX 80 +int OSSL_trace_string(BIO *out, int text, int full, + const unsigned char *data, size_t size); +#define OSSL_TRACE_STRING(category, text, full, data, len) \ + OSSL_TRACE_BEGIN(category) \ + { \ + OSSL_trace_string(trc_out, text, full, data, len); \ + } \ + OSSL_TRACE_END(category) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ts.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ts.h new file mode 100644 index 0000000..edb6ca1 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ts.h @@ -0,0 +1,521 @@ +/* + * Copyright 2006-2024 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_TS_H +#define OPENSSL_TS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TS_H +#endif + +#include + +#ifndef OPENSSL_NO_TS +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct TS_msg_imprint_st TS_MSG_IMPRINT; +typedef struct TS_req_st TS_REQ; +typedef struct TS_accuracy_st TS_ACCURACY; +typedef struct TS_tst_info_st TS_TST_INFO; + +/* Possible values for status. */ +#define TS_STATUS_GRANTED 0 +#define TS_STATUS_GRANTED_WITH_MODS 1 +#define TS_STATUS_REJECTION 2 +#define TS_STATUS_WAITING 3 +#define TS_STATUS_REVOCATION_WARNING 4 +#define TS_STATUS_REVOCATION_NOTIFICATION 5 + +/* Possible values for failure_info. */ +#define TS_INFO_BAD_ALG 0 +#define TS_INFO_BAD_REQUEST 2 +#define TS_INFO_BAD_DATA_FORMAT 5 +#define TS_INFO_TIME_NOT_AVAILABLE 14 +#define TS_INFO_UNACCEPTED_POLICY 15 +#define TS_INFO_UNACCEPTED_EXTENSION 16 +#define TS_INFO_ADD_INFO_NOT_AVAILABLE 17 +#define TS_INFO_SYSTEM_FAILURE 25 + +typedef struct TS_status_info_st TS_STATUS_INFO; + +typedef struct TS_resp_st TS_RESP; + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_REQ) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_REQ, TS_REQ) +DECLARE_ASN1_DUP_FUNCTION(TS_REQ) + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, const TS_REQ *a); +#endif +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, const TS_REQ *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_MSG_IMPRINT) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_MSG_IMPRINT, TS_MSG_IMPRINT) +DECLARE_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) + +#ifndef OPENSSL_NO_STDIO +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_fp(FILE *fp, const TS_MSG_IMPRINT *a); +#endif +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_bio(BIO *bio, const TS_MSG_IMPRINT *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_RESP) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_RESP, TS_RESP) +DECLARE_ASN1_DUP_FUNCTION(TS_RESP) + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, const TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, const TS_RESP *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_STATUS_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_STATUS_INFO, TS_STATUS_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_STATUS_INFO) + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_TST_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_TST_INFO, TS_TST_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_TST_INFO) +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); + +#ifndef OPENSSL_NO_STDIO +TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a); +int i2d_TS_TST_INFO_fp(FILE *fp, const TS_TST_INFO *a); +#endif +TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a); +int i2d_TS_TST_INFO_bio(BIO *bio, const TS_TST_INFO *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_ACCURACY) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_ACCURACY, TS_ACCURACY) +DECLARE_ASN1_DUP_FUNCTION(TS_ACCURACY) + +int TS_REQ_set_version(TS_REQ *a, long version); +long TS_REQ_get_version(const TS_REQ *a); + +int TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i); +const ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a); + +const STACK_OF(ASN1_UTF8STRING) * +TS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a); + +const ASN1_BIT_STRING * +TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *a); + +int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a); + +int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg); +X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a); + +int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len); +ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a); + +int TS_REQ_set_policy_id(TS_REQ *a, const ASN1_OBJECT *policy); +ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a); + +int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a); + +int TS_REQ_set_cert_req(TS_REQ *a, int cert_req); +int TS_REQ_get_cert_req(const TS_REQ *a); + +STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a); +void TS_REQ_ext_free(TS_REQ *a); +int TS_REQ_get_ext_count(TS_REQ *a); +int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos); +int TS_REQ_get_ext_by_OBJ(TS_REQ *a, const ASN1_OBJECT *obj, int lastpos); +int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos); +X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc); +X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc); +int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc); +void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx); + +/* Function declarations for TS_REQ defined in ts/ts_req_print.c */ + +int TS_REQ_print_bio(BIO *bio, TS_REQ *a); + +/* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */ + +int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info); +TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a); + +/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */ +void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info); +PKCS7 *TS_RESP_get_token(TS_RESP *a); +TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a); + +int TS_TST_INFO_set_version(TS_TST_INFO *a, long version); +long TS_TST_INFO_get_version(const TS_TST_INFO *a); + +int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id); +ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a); + +int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a); + +int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial); +const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a); + +int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime); +const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a); + +int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy); +TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a); + +int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds); +const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a); + +int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis); +const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a); + +int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros); +const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a); + +int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering); +int TS_TST_INFO_get_ordering(const TS_TST_INFO *a); + +int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a); + +int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa); +GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a); + +STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a); +void TS_TST_INFO_ext_free(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_count(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos); +int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, const ASN1_OBJECT *obj, + int lastpos); +int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos); +X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc); +X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc); +int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc); +void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx); + +/* + * Declarations related to response generation, defined in ts/ts_resp_sign.c. + */ + +/* Optional flags for response generation. */ + +/* Don't include the TSA name in response. */ +#define TS_TSA_NAME 0x01 + +/* Set ordering to true in response. */ +#define TS_ORDERING 0x02 + +/* + * Include the signer certificate and the other specified certificates in + * the ESS signing certificate attribute beside the PKCS7 signed data. + * Only the signer certificates is included by default. + */ +#define TS_ESS_CERT_ID_CHAIN 0x04 + +/* Forward declaration. */ +struct TS_resp_ctx; + +/* This must return a unique number less than 160 bits long. */ +typedef ASN1_INTEGER *(*TS_serial_cb)(struct TS_resp_ctx *, void *); + +/* + * This must return the seconds and microseconds since Jan 1, 1970 in the sec + * and usec variables allocated by the caller. Return non-zero for success + * and zero for failure. + */ +typedef int (*TS_time_cb)(struct TS_resp_ctx *, void *, long *sec, + long *usec); + +/* + * This must process the given extension. It can modify the TS_TST_INFO + * object of the context. Return values: !0 (processed), 0 (error, it must + * set the status info/failure info of the response). + */ +typedef int (*TS_extension_cb)(struct TS_resp_ctx *, X509_EXTENSION *, + void *); + +typedef struct TS_resp_ctx TS_RESP_CTX; + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +TS_RESP_CTX *TS_RESP_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +void TS_RESP_CTX_free(TS_RESP_CTX *ctx); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key); + +int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx, + const EVP_MD *signer_digest); +int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy); + +/* No additional certs are included in the response by default. */ +int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs); + +/* + * Adds a new acceptable policy, only the default policy is accepted by + * default. + */ +int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +#define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +#define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +#define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +#define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +#define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +#define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +#define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +#define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +#define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +#define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +#define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +#define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx TS_VERIFY_CTX; + +int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response); +int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token); + +/* + * Declarations related to response verification context, + */ +TS_VERIFY_CTX *TS_VERIFY_CTX_new(void); +void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx); +int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f); +int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_data().") +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +#endif +int TS_VERIFY_CTX_set0_data(TS_VERIFY_CTX *ctx, BIO *b); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_imprint().") +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +#endif +int TS_VERIFY_CTX_set0_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_store().") +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +#endif +int TS_VERIFY_CTX_set0_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define TS_VERIFY_CTS_set_certs(ctx, cert) TS_VERIFY_CTX_set_certs(ctx, cert) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("Unclear semantics, replace with TS_VERIFY_CTX_set0_certs().") +STACK_OF(X509) *TS_VERIFY_CTX_set_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); +#endif +int TS_VERIFY_CTX_set0_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); + +/*- + * If ctx is NULL, it allocates and returns a new object, otherwise + * it returns ctx. It initialises all the members as follows: + * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE) + * certs = NULL + * store = NULL + * policy = policy from the request or NULL if absent (in this case + * TS_VFY_POLICY is cleared from flags as well) + * md_alg = MD algorithm from request + * imprint, imprint_len = imprint from request + * data = NULL + * nonce, nonce_len = nonce from the request or NULL if absent (in this case + * TS_VFY_NONCE is cleared from flags as well) + * tsa_name = NULL + * Important: after calling this method TS_VFY_SIGNATURE should be added! + */ +TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx); + +/* Function declarations for TS_RESP defined in ts/ts_resp_print.c */ + +int TS_RESP_print_bio(BIO *bio, TS_RESP *a); +int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a); +int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a); + +/* Common utility functions defined in ts/ts_lib.c */ + +int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num); +int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj); +int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions); +int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg); +int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg); + +/* + * Function declarations for handling configuration options, defined in + * ts/ts_conf.c + */ + +X509 *TS_CONF_load_cert(const char *file); +STACK_OF(X509) *TS_CONF_load_certs(const char *file); +EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); +const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); +int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, + TS_RESP_CTX *ctx); +#ifndef OPENSSL_NO_ENGINE +int TS_CONF_set_crypto_device(CONF *conf, const char *section, + const char *device); +int TS_CONF_set_default_engine(const char *name); +#endif +int TS_CONF_set_signer_cert(CONF *conf, const char *section, + const char *cert, TS_RESP_CTX *ctx); +int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_key(CONF *conf, const char *section, + const char *key, const char *pass, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_digest(CONF *conf, const char *section, + const char *md, TS_RESP_CTX *ctx); +int TS_CONF_set_def_policy(CONF *conf, const char *section, + const char *policy, TS_RESP_CTX *ctx); +int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_clock_precision_digits(const CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/tserr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/tserr.h new file mode 100644 index 0000000..0bec94a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/tserr.h @@ -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_TSERR_H +#define OPENSSL_TSERR_H +#pragma once + +#include +#include +#include + +#ifndef OPENSSL_NO_TS + +/* + * TS reason codes. + */ +#define TS_R_BAD_PKCS7_TYPE 132 +#define TS_R_BAD_TYPE 133 +#define TS_R_CANNOT_LOAD_CERT 137 +#define TS_R_CANNOT_LOAD_KEY 138 +#define TS_R_CERTIFICATE_VERIFY_ERROR 100 +#define TS_R_COULD_NOT_SET_ENGINE 127 +#define TS_R_COULD_NOT_SET_TIME 115 +#define TS_R_DETACHED_CONTENT 134 +#define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +#define TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR 139 +#define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 +#define TS_R_INVALID_NULL_POINTER 102 +#define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 +#define TS_R_MESSAGE_IMPRINT_MISMATCH 103 +#define TS_R_NONCE_MISMATCH 104 +#define TS_R_NONCE_NOT_RETURNED 105 +#define TS_R_NO_CONTENT 106 +#define TS_R_NO_TIME_STAMP_TOKEN 107 +#define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 +#define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 +#define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 +#define TS_R_POLICY_MISMATCH 108 +#define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 +#define TS_R_RESPONSE_SETUP_ERROR 121 +#define TS_R_SIGNATURE_FAILURE 109 +#define TS_R_THERE_MUST_BE_ONE_SIGNER 110 +#define TS_R_TIME_SYSCALL_ERROR 122 +#define TS_R_TOKEN_NOT_PRESENT 130 +#define TS_R_TOKEN_PRESENT 131 +#define TS_R_TSA_NAME_MISMATCH 111 +#define TS_R_TSA_UNTRUSTED 112 +#define TS_R_TST_INFO_SETUP_ERROR 123 +#define TS_R_TS_DATASIGN 124 +#define TS_R_UNACCEPTABLE_POLICY 125 +#define TS_R_UNSUPPORTED_MD_ALGORITHM 126 +#define TS_R_UNSUPPORTED_VERSION 113 +#define TS_R_VAR_BAD_VALUE 135 +#define TS_R_VAR_LOOKUP_FAILURE 136 +#define TS_R_WRONG_CONTENT_TYPE 114 + +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/txt_db.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/txt_db.h new file mode 100644 index 0000000..64e9d4c --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/txt_db.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2017 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_TXT_DB_H +#define OPENSSL_TXT_DB_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_TXT_DB_H +#endif + +#include +#include +#include +#include + +#define DB_ERROR_OK 0 +#define DB_ERROR_MALLOC 1 +#define DB_ERROR_INDEX_CLASH 2 +#define DB_ERROR_INDEX_OUT_OF_RANGE 3 +#define DB_ERROR_NO_INDEX 4 +#define DB_ERROR_INSERT_INDEX_CLASH 5 +#define DB_ERROR_WRONG_NUM_FIELDS 6 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OPENSSL_STRING *OPENSSL_PSTRING; +DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING) + +typedef struct txt_db_st { + int num_fields; + STACK_OF(OPENSSL_PSTRING) *data; + LHASH_OF(OPENSSL_STRING) **index; + int (**qual)(OPENSSL_STRING *); + long error; + long arg1; + long arg2; + OPENSSL_STRING *arg_row; +} TXT_DB; + +TXT_DB *TXT_DB_read(BIO *in, int num); +long TXT_DB_write(BIO *out, TXT_DB *db); +int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(OPENSSL_STRING *), + OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC cmp); +void TXT_DB_free(TXT_DB *db); +OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, + OPENSSL_STRING *value); +int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/types.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/types.h new file mode 100644 index 0000000..f9c4373 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/types.h @@ -0,0 +1,250 @@ +/* + * Copyright 2001-2026 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 + */ + +/* + * Unfortunate workaround to avoid symbol conflict with wincrypt.h + * See https://github.com/openssl/openssl/issues/9981 + */ +#ifdef _WIN32 +#define WINCRYPT_USE_SYMBOL_PREFIX +#undef X509_NAME +#undef X509_EXTENSIONS +#undef PKCS7_SIGNER_INFO +#undef OCSP_REQUEST +#undef OCSP_RESPONSE +#endif + +#ifndef OPENSSL_TYPES_H +#define OPENSSL_TYPES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#if OPENSSL_VERSION_MAJOR >= 4 +#define OSSL_FUTURE_CONST const +#else +#define OSSL_FUTURE_CONST +#endif + +typedef struct ossl_provider_st OSSL_PROVIDER; /* Provider Object */ + +#ifdef NO_ASN1_TYPEDEFS +#define ASN1_INTEGER ASN1_STRING +#define ASN1_ENUMERATED ASN1_STRING +#define ASN1_BIT_STRING ASN1_STRING +#define ASN1_OCTET_STRING ASN1_STRING +#define ASN1_PRINTABLESTRING ASN1_STRING +#define ASN1_T61STRING ASN1_STRING +#define ASN1_IA5STRING ASN1_STRING +#define ASN1_UTCTIME ASN1_STRING +#define ASN1_GENERALIZEDTIME ASN1_STRING +#define ASN1_TIME ASN1_STRING +#define ASN1_GENERALSTRING ASN1_STRING +#define ASN1_UNIVERSALSTRING ASN1_STRING +#define ASN1_BMPSTRING ASN1_STRING +#define ASN1_VISIBLESTRING ASN1_STRING +#define ASN1_UTF8STRING ASN1_STRING +#define ASN1_BOOLEAN int +#define ASN1_NULL int +#else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +#endif + +typedef struct asn1_type_st ASN1_TYPE; +typedef struct asn1_object_st ASN1_OBJECT; +typedef struct asn1_string_table_st ASN1_STRING_TABLE; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +#ifdef BIGNUM +#undef BIGNUM +#endif + +typedef struct bio_st BIO; +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +STACK_OF(BIGNUM); +STACK_OF(BIGNUM_const); + +typedef struct err_state_st ERR_STATE; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_md_st EVP_MD; +typedef struct evp_md_ctx_st EVP_MD_CTX; +typedef struct evp_mac_st EVP_MAC; +typedef struct evp_mac_ctx_st EVP_MAC_CTX; +typedef struct evp_pkey_st EVP_PKEY; +typedef struct evp_skey_st EVP_SKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct evp_keymgmt_st EVP_KEYMGMT; + +typedef struct evp_kdf_st EVP_KDF; +typedef struct evp_kdf_ctx_st EVP_KDF_CTX; + +typedef struct evp_rand_st EVP_RAND; +typedef struct evp_rand_ctx_st EVP_RAND_CTX; + +typedef struct evp_keyexch_st EVP_KEYEXCH; + +typedef struct evp_signature_st EVP_SIGNATURE; + +typedef struct evp_skeymgmt_st EVP_SKEYMGMT; + +typedef struct evp_asym_cipher_st EVP_ASYM_CIPHER; + +typedef struct evp_kem_st EVP_KEM; + +typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +#endif + +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; +typedef struct rsa_oaep_params_st RSA_OAEP_PARAMS; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; +#endif + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; +typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ossl_http_req_ctx_st OSSL_HTTP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +typedef struct ossl_lib_ctx_st OSSL_LIB_CTX; + +typedef struct ossl_dispatch_st OSSL_DISPATCH; +typedef struct ossl_item_st OSSL_ITEM; +typedef struct ossl_algorithm_st OSSL_ALGORITHM; +typedef struct ossl_param_st OSSL_PARAM; +typedef struct ossl_param_bld_st OSSL_PARAM_BLD; + +typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata); + +typedef struct ossl_encoder_st OSSL_ENCODER; +typedef struct ossl_encoder_ctx_st OSSL_ENCODER_CTX; +typedef struct ossl_decoder_st OSSL_DECODER; +typedef struct ossl_decoder_ctx_st OSSL_DECODER_CTX; + +typedef struct ossl_self_test_st OSSL_SELF_TEST; + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_TYPES_H */ diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ui.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ui.h new file mode 100644 index 0000000..59331da --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/ui.h @@ -0,0 +1,409 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/ui.h.in + * + * Copyright 2001-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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_UI_H +#define OPENSSL_UI_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_UI_H +#endif + +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#include +#include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifdef OPENSSL_NO_UI_CONSOLE +#define OPENSSL_NO_UI +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +#define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +#define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * + */ +#define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. + * phrase_desc is a textual short description of the phrase to enter, + * for example "pass phrase", and + * object_name is the name of the object + * (which might be a card name or a file name) or NULL. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {phrase_desc} for {object_name}:" + * + * So, if phrase_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" + */ +char *UI_construct_prompt(UI *ui_method, + const char *phrase_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)(void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +#define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +#define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +#define UI_set_app_data(s, arg) UI_set_ex_data(s, 0, arg) +#define UI_get_app_data(s) UI_get_ex_data(s, 0) + +#define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(const UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +#ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +#endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) +#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) +#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) +#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) +#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) +#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) +#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) +#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_freefunc_type(freefunc)) +#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) +#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) +#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) +#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener)(UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer)(UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader)(UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator)(UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor)(UI *ui, + const char + *phrase_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method))(UI *); +int (*UI_method_get_writer(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method))(UI *); +int (*UI_method_get_reader(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method))(UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method))(UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method))(UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method))(UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/uierr.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/uierr.h new file mode 100644 index 0000000..5201b03 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/uierr.h @@ -0,0 +1,36 @@ +/* + * 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_UIERR_H +#define OPENSSL_UIERR_H +#pragma once + +#include +#include +#include + +/* + * UI reason codes. + */ +#define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104 +#define UI_R_INDEX_TOO_LARGE 102 +#define UI_R_INDEX_TOO_SMALL 103 +#define UI_R_NO_RESULT_BUFFER 105 +#define UI_R_PROCESSING_ERROR 107 +#define UI_R_RESULT_TOO_LARGE 100 +#define UI_R_RESULT_TOO_SMALL 101 +#define UI_R_SYSASSIGN_ERROR 109 +#define UI_R_SYSDASSGN_ERROR 110 +#define UI_R_SYSQIOW_ERROR 111 +#define UI_R_UNKNOWN_CONTROL_COMMAND 106 +#define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE 108 +#define UI_R_USER_DATA_DUPLICATION_UNSUPPORTED 112 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/whrlpool.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/whrlpool.h new file mode 100644 index 0000000..cff9134 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/whrlpool.h @@ -0,0 +1,62 @@ +/* + * Copyright 2005-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_WHRLPOOL_H +#define OPENSSL_WHRLPOOL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_WHRLPOOL_H +#endif + +#include + +#ifndef OPENSSL_NO_WHIRLPOOL +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define WHIRLPOOL_DIGEST_LENGTH (512 / 8) + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) + +#define WHIRLPOOL_BBLOCK 512 +#define WHIRLPOOL_COUNTER (256 / 8) + +typedef struct { + union { + unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; + /* double q is here to ensure 64-bit alignment */ + double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)]; + } H; + unsigned char data[WHIRLPOOL_BBLOCK / 8]; + unsigned int bitoff; + size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)]; +} WHIRLPOOL_CTX; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, + const void *inp, size_t bytes); +OSSL_DEPRECATEDIN_3_0 void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, + const void *inp, size_t bits); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *WHIRLPOOL(const void *inp, size_t bytes, + unsigned char *md); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509.h new file mode 100644 index 0000000..7009129 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509.h @@ -0,0 +1,1302 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/x509.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_H +#define OPENSSL_X509_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_H +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Needed stacks for types defined in other headers */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) +#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) +#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) +#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) +#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) +#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) +#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_freefunc_type(freefunc)) +#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) +#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) +#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) +#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) +#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) +#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) +#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) +#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) +#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) +#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) +#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) +#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) +#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) +#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) +#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) +#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk), ossl_check_X509_freefunc_type(freefunc)) +#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) +#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) +#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) +#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) +#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) +#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) +#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) +#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) +#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) +#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) +#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) +#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) +#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) +#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_freefunc_type(freefunc)) +#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) +#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) +#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) +#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) +#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) +#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) +#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) +#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) +#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) +#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) +#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_freefunc_type(freefunc)) +#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) +#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) +#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) +#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) + +/* clang-format on */ + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +#define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +#define X509_SIG_INFO_TLS 0x2 + +#define X509_FILETYPE_PEM 1 +#define X509_FILETYPE_ASN1 2 +#define X509_FILETYPE_DEFAULT 3 + +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +#define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +#define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +#define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +#define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +#define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +#define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +#define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +#define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +#define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +#ifndef OPENSSL_NO_DEPRECATED_3_4 +#define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +#endif + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) +#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) +#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) +#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) +#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) +#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) +#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) +#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) +#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) +#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) +#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_EX_V_NETSCAPE_HACK 0x8000 +#define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) +#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) +#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) +#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) +#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) +#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) +#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) +#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_freefunc_type(freefunc)) +#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) +#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) +#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) +#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; +typedef struct x509_attributes_st X509_ATTRIBUTE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) +#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) +#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) +#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) +#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) +#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) +#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) +#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) +#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) +#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) +#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) +#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct X509_req_info_st X509_REQ_INFO; +typedef struct X509_req_st X509_REQ; +typedef struct x509_cert_aux_st X509_CERT_AUX; +typedef struct x509_cinf_st X509_CINF; + +/* Flags for X509_print_ex() */ + +#define X509_FLAG_COMPAT 0 +#define X509_FLAG_NO_HEADER 1L +#define X509_FLAG_NO_VERSION (1L << 1) +#define X509_FLAG_NO_SERIAL (1L << 2) +#define X509_FLAG_NO_SIGNAME (1L << 3) +#define X509_FLAG_NO_ISSUER (1L << 4) +#define X509_FLAG_NO_VALIDITY (1L << 5) +#define X509_FLAG_NO_SUBJECT (1L << 6) +#define X509_FLAG_NO_PUBKEY (1L << 7) +#define X509_FLAG_NO_EXTENSIONS (1L << 8) +#define X509_FLAG_NO_SIGDUMP (1L << 9) +#define X509_FLAG_NO_AUX (1L << 10) +#define X509_FLAG_NO_ATTRIBUTES (1L << 11) +#define X509_FLAG_NO_IDS (1L << 12) +#define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +#define XN_FLAG_SEP_MASK (0xf << 16) + +#define XN_FLAG_COMPAT 0 /* Traditional; use old X509_NAME_print */ +#define XN_FLAG_SEP_COMMA_PLUS (1 << 16) /* RFC2253 ,+ */ +#define XN_FLAG_SEP_CPLUS_SPC (2 << 16) /* ,+ spaced: more readable */ +#define XN_FLAG_SEP_SPLUS_SPC (3 << 16) /* ;+ spaced */ +#define XN_FLAG_SEP_MULTILINE (4 << 16) /* One line per field */ + +#define XN_FLAG_DN_REV (1 << 20) /* Reverse DN order */ + +/* How the field name is shown */ + +#define XN_FLAG_FN_MASK (0x3 << 21) + +#define XN_FLAG_FN_SN 0 /* Object short name */ +#define XN_FLAG_FN_LN (1 << 21) /* Object long name */ +#define XN_FLAG_FN_OID (2 << 21) /* Always use OIDs */ +#define XN_FLAG_FN_NONE (3 << 21) /* No field names */ + +#define XN_FLAG_SPC_EQ (1 << 23) /* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +#define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +#define XN_FLAG_FN_ALIGN (1 << 25) /* Align field names to 20 \ + * characters */ + +/* Complete set of RFC2253 flags */ + +#define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | XN_FLAG_FN_SN | XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +#define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_SPC_EQ | XN_FLAG_FN_SN) + +/* readable multiline form */ + +#define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | XN_FLAG_SEP_MULTILINE | XN_FLAG_SPC_EQ | XN_FLAG_FN_LN | XN_FLAG_FN_ALIGN) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) +#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) +#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) +#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) +#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) +#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) +#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) +#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_freefunc_type(freefunc)) +#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) +#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) +#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) +#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { + /* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define X509_EXT_PACK_UNKNOWN 1 +#define X509_EXT_PACK_STRING 2 + +#define X509_extract_key(x) X509_get_pubkey(x) /*****/ +#define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +#define X509_name_cmp(a, b) X509_NAME_cmp((a), (b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init)(X509_CRL *crl), + int (*crl_free)(X509_CRL *crl), + int (*crl_lookup)(X509_CRL *crl, + X509_REVOKED **ret, + const ASN1_INTEGER *serial, + const X509_NAME *issuer), + int (*crl_verify)(X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); +int X509_self_signed(X509 *cert, int verify_signature); + +int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, + const char *propq); +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, + EVP_MD **md_used, int *md_is_fallback); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ +#define X509_http_nbio(rctx, pcert) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) +#define X509_CRL_http_nbio(rctx, pcrl) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) +#endif + +#ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, const X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +#endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, const X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +DECLARE_ASN1_DUP_FUNCTION(X509) +DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) +DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) +DECLARE_ASN1_DUP_FUNCTION(X509_CRL) +DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) +DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) +DECLARE_ASN1_DUP_FUNCTION(X509_REQ) +DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +DECLARE_ASN1_DUP_FUNCTION(X509_NAME) +DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, + const ASN1_TIME *start, const ASN1_TIME *end); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) +EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, + OSSL_LIB_CTX *libctx, const char *propq); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSA_PUBKEY) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DSA, DSA_PUBKEY) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) +#endif +#endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) +X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) +DECLARE_ASN1_FUNCTIONS(X509) +X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(const X509 *r, int idx); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509, X509_AUX) + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); +void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *x); + +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) +X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, const ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); +OSSL_DEPRECATEDIN_3_0 +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey, + const EVP_MD *type); +#endif +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); +int ASN1_item_verify(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey); +int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_MD_CTX *ctx); +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey, const EVP_MD *md); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, EVP_MD_CTX *ctx); + +#define X509_VERSION_1 0 +#define X509_VERSION_2 1 +#define X509_VERSION_3 2 + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME *X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_get_notBefore X509_getm_notBefore +#define X509_get_notAfter X509_getm_notAfter +#define X509_set_notBefore X509_set1_notBefore +#define X509_set_notAfter X509_set1_notAfter +#endif + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); + +#define X509_REQ_VERSION_1 0 + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, const X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, + const STACK_OF(X509_EXTENSION) *exts, int nid); +int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +#define X509_CRL_VERSION_1 0 +#define X509_CRL_VERSION_2 1 + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, const X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +#define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); +#endif +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +const X509_ALGOR *X509_CRL_get0_tbs_sigalg(const X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +#ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +#endif + +#define X509_ADD_FLAG_DEFAULT 0 +#define X509_ADD_FLAG_UP_REF 0x1 +#define X509_ADD_FLAG_PREPEND 0x2 +#define X509_ADD_FLAG_NO_DUP 0x4 +#define X509_ADD_FLAG_NO_SS 0x8 +int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); +int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) +OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, + const EVP_PKEY *pubkey); +#endif +unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, + const char *propq, int *ok); +unsigned long X509_NAME_hash_old(const X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +#ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +#endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, + char *buf, int len); +int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(const X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, + const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, + int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, + const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, + const ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); +int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); +X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid, + OSSL_LIB_CTX *libctx); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); +X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen, + OSSL_LIB_CTX *libctx); + +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); +int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, + int type, const unsigned char *bytes, int len); + +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, const X509_PUBKEY *pub); +int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509_acert.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509_acert.h new file mode 100644 index 0000000..298c3c3 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509_acert.h @@ -0,0 +1,304 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/x509_acert.h.in + * + * Copyright 2022-2024 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_ACERT_H +#define OPENSSL_X509_ACERT_H +#pragma once + +#include +#include +#include + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +#ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +#endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +#define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO *X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +#define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +#define OSSL_IETFAS_OCTETS 0 +#define OSSL_IETFAS_OID 1 +#define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +#define OSSL_TGT_TARGET_NAME 0 +#define OSSL_TGT_TARGET_GROUP 1 +#define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + +/* clang-format on */ + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509_vfy.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509_vfy.h new file mode 100644 index 0000000..e7fdda9 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509_vfy.h @@ -0,0 +1,922 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/x509_vfy.h.in + * + * Copyright 1995-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_VFY_H +#define OPENSSL_X509_VFY_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_VFY_H +#endif + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +#ifndef OPENSSL_X509_H +#include +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +DEFINE_STACK_OF(OCSP_RESPONSE) + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, + X509_LU_CRL +} X509_LOOKUP_TYPE; + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) +#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) +#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) +#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) +#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) +#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) +#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) +#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_freefunc_type(freefunc)) +#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) +#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) +#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) +#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) +#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) +#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) +#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) +#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) +#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) +#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_freefunc_type(freefunc)) +#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) +#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) +#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) +#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) +#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) +#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) +#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) +#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) +#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) +#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) +#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) +#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) +#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) +#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) +#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) + +/* clang-format on */ + +/* This is used for a table of trust checking functions */ +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust)(struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) +#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) +#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) +#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) +#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) +#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) +#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) +#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_freefunc_type(freefunc)) +#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) +#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) +#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) +#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) + +/* clang-format on */ + +/* standard trust ids */ +#define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ +#define X509_TRUST_COMPAT 1 +#define X509_TRUST_SSL_CLIENT 2 +#define X509_TRUST_SSL_SERVER 3 +#define X509_TRUST_EMAIL 4 +#define X509_TRUST_OBJECT_SIGN 5 +#define X509_TRUST_OCSP_SIGN 6 +#define X509_TRUST_OCSP_REQUEST 7 +#define X509_TRUST_TSA 8 +/* Keep these up to date! */ +#define X509_TRUST_MIN 1 +#define X509_TRUST_MAX 8 + +/* trust_flags values */ +#define X509_TRUST_DYNAMIC (1U << 0) +#define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +#define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +#define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard rejection OID and as a wildcard trust OID */ +#define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ +#define X509_TRUST_TRUSTED 1 +#define X509_TRUST_REJECTED 2 +#define X509_TRUST_UNTRUSTED 3 + +int X509_TRUST_set(int *t, int trust); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +int X509_trusted(const X509 *x); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +int (*X509_TRUST_set_default(int (*trust)(int, X509 *, int)))(int, X509 *, + int); +int X509_check_trust(X509 *x, int id, int flags); + +int X509_verify_cert(X509_STORE_CTX *ctx); +int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, + X509_STORE *store, int with_self_signed, + OSSL_LIB_CTX *libctx, const char *propq); + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) + *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef STACK_OF(X509_CRL) + *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +#define X509_STORE_CTX_set_app_data(ctx, data) \ + X509_STORE_CTX_set_ex_data(ctx, 0, data) +#define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx, 0) + +#define X509_L_FILE_LOAD 1 +#define X509_L_ADD_DIR 2 +#define X509_L_ADD_STORE 3 +#define X509_L_LOAD_STORE 4 + +#define X509_LOOKUP_load_file(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_FILE_LOAD, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_dir(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_DIR, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_LOAD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_V_OK 0 +#define X509_V_ERR_UNSPECIFIED 1 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +#define X509_V_ERR_UNABLE_TO_GET_CRL 3 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +#define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +#define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +#define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +#define X509_V_ERR_CERT_NOT_YET_VALID 9 +#define X509_V_ERR_CERT_HAS_EXPIRED 10 +#define X509_V_ERR_CRL_NOT_YET_VALID 11 +#define X509_V_ERR_CRL_HAS_EXPIRED 12 +#define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +#define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +#define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +#define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +#define X509_V_ERR_OUT_OF_MEM 17 +#define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +#define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +#define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +#define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +#define X509_V_ERR_CERT_REVOKED 23 +#define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 24 +#define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +#define X509_V_ERR_INVALID_PURPOSE 26 +#define X509_V_ERR_CERT_UNTRUSTED 27 +#define X509_V_ERR_CERT_REJECTED 28 + +/* These are 'informational' when looking for issuer cert */ +#define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +#define X509_V_ERR_AKID_SKID_MISMATCH 30 +#define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +#define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +#define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +#define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +#define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +#define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +#define X509_V_ERR_INVALID_NON_CA 37 +#define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +#define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +#define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +#define X509_V_ERR_INVALID_EXTENSION 41 +#define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +#define X509_V_ERR_NO_EXPLICIT_POLICY 43 +#define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +#define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +#define X509_V_ERR_UNNESTED_RESOURCE 46 +#define X509_V_ERR_PERMITTED_VIOLATION 47 +#define X509_V_ERR_EXCLUDED_VIOLATION 48 +#define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +#define X509_V_ERR_APPLICATION_VERIFICATION 50 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +#define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +#define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +#define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +#define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +#define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +#define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +#define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +#define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +#define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +#define X509_V_ERR_HOSTNAME_MISMATCH 62 +#define X509_V_ERR_EMAIL_MISMATCH 63 +#define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +#define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +#define X509_V_ERR_EE_KEY_TOO_SMALL 66 +#define X509_V_ERR_CA_KEY_TOO_SMALL 67 +#define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +#define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +#define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +#define X509_V_ERR_NO_VALID_SCTS 71 + +#define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +#define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +#define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +#define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ + +#define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 76 +#define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 + +/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ +#define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 +#define X509_V_ERR_INVALID_CA 79 +#define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 +#define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 +#define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 +#define X509_V_ERR_ISSUER_NAME_EMPTY 83 +#define X509_V_ERR_SUBJECT_NAME_EMPTY 84 +#define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 +#define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 +#define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 +#define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 +#define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 +#define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 +#define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 +#define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 +#define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 +#define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +#define X509_V_ERR_RPK_UNTRUSTED 95 + +/* additional OCSP status errors */ +#define X509_V_ERR_OCSP_RESP_INVALID 96 +#define X509_V_ERR_OCSP_SIGNATURE_FAILURE 97 +#define X509_V_ERR_OCSP_NOT_YET_VALID 98 +#define X509_V_ERR_OCSP_HAS_EXPIRED 99 +#define X509_V_ERR_OCSP_NO_RESPONSE 100 +#define X509_V_ERR_CRL_VERIFY_FAILED 101 + +/* Certificate verify flags */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +#endif +/* Use check time instead of current time */ +#define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +#define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +#define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +#define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +#define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +#define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +#define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +#define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +#define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +#define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +#define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +#define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +#define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +#define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +#define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +#define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +#define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +#define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +#define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +/* Verify OCSP stapling response for server certificate */ +#define X509_V_FLAG_OCSP_RESP_CHECK 0x400000 +/* Verify OCSP stapling responses for whole chain */ +#define X509_V_FLAG_OCSP_RESP_CHECK_ALL 0x800000 + +#define X509_VP_FLAG_DEFAULT 0x1 +#define X509_VP_FLAG_OVERWRITE 0x2 +#define X509_VP_FLAG_RESET_FLAGS 0x4 +#define X509_VP_FLAG_LOCKED 0x8 +#define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +#define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, + const X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, + const X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); + +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx), (func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, + X509_STORE_CTX_verify_cb verify_cb); +#define X509_STORE_set_verify_cb_func(ctx, func) \ + X509_STORE_set_verify_cb((ctx), (func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn +X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, + X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY *rpk); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(const X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +#define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +#define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +#define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +#define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +#define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +#define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +#define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); +X509_LOOKUP_METHOD *X509_LOOKUP_store(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_ctrl_ex_fn)( + X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, + OSSL_LIB_CTX *libctx, const char *propq); + +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, + const char *propq); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char *bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn)(X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret, OSSL_LIB_CTX *libctx, const char *propq); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); + +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(const X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); +#ifndef OPENSSL_NO_OCSP +void X509_STORE_CTX_set_ocsp_resp(X509_STORE_CTX *ctx, STACK_OF(OCSP_RESPONSE) *sk); +#endif +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_policies(const X509_POLICY_TREE *tree); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_user_policies(const X509_POLICY_TREE *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(const X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) +*X509_policy_node_get0_qualifiers(const X509_POLICY_NODE *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509err.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509err.h new file mode 100644 index 0000000..7123a72 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509err.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2024 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_X509ERR_H +#define OPENSSL_X509ERR_H +#pragma once + +#include +#include +#include + +/* + * X509 reason codes. + */ +#define X509_R_AKID_MISMATCH 110 +#define X509_R_BAD_SELECTOR 133 +#define X509_R_BAD_X509_FILETYPE 100 +#define X509_R_BASE64_DECODE_ERROR 118 +#define X509_R_CANT_CHECK_DH_KEY 114 +#define X509_R_CERTIFICATE_VERIFICATION_FAILED 139 +#define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +#define X509_R_CRL_ALREADY_DELTA 127 +#define X509_R_CRL_VERIFY_FAILURE 131 +#define X509_R_DUPLICATE_ATTRIBUTE 140 +#define X509_R_ERROR_GETTING_MD_BY_NID 141 +#define X509_R_ERROR_USING_SIGINF_SET 142 +#define X509_R_IDP_MISMATCH 128 +#define X509_R_INVALID_ATTRIBUTES 138 +#define X509_R_INVALID_DIRECTORY 113 +#define X509_R_INVALID_DISTPOINT 143 +#define X509_R_INVALID_FIELD_NAME 119 +#define X509_R_INVALID_TRUST 123 +#define X509_R_ISSUER_MISMATCH 129 +#define X509_R_KEY_TYPE_MISMATCH 115 +#define X509_R_KEY_VALUES_MISMATCH 116 +#define X509_R_LOADING_CERT_DIR 103 +#define X509_R_LOADING_DEFAULTS 104 +#define X509_R_METHOD_NOT_SUPPORTED 124 +#define X509_R_NAME_TOO_LONG 134 +#define X509_R_NEWER_CRL_NOT_NEWER 132 +#define X509_R_NO_CERTIFICATE_FOUND 135 +#define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +#define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +#define X509_R_NO_CRL_FOUND 137 +#define X509_R_NO_CRL_NUMBER 130 +#define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +#define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +#define X509_R_SHOULD_RETRY 106 +#define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +#define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +#define X509_R_UNKNOWN_KEY_TYPE 117 +#define X509_R_UNKNOWN_NID 109 +#define X509_R_UNKNOWN_PURPOSE_ID 121 +#define X509_R_UNKNOWN_SIGID_ALGS 144 +#define X509_R_UNKNOWN_TRUST_ID 120 +#define X509_R_UNSUPPORTED_ALGORITHM 111 +#define X509_R_UNSUPPORTED_VERSION 145 +#define X509_R_WRONG_LOOKUP_TYPE 112 +#define X509_R_WRONG_TYPE 122 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509v3.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509v3.h new file mode 100644 index 0000000..fa8f10a --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509v3.h @@ -0,0 +1,2013 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../../../ios/openssl-3.6.2/include/openssl/x509v3.h.in + * + * Copyright 1999-2025 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 + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509V3_H +#define OPENSSL_X509V3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509V3_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE)(void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D)(const void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; + /* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; + /* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; + /* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; + /* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; + /* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string)(void *db, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section)(void *db, const char *section); + void (*free_string)(void *db, char *string); + void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info for producing X509 v3 extensions*/ +struct v3_ext_ctx { +#define X509V3_CTX_TEST 0x1 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define CTX_TEST X509V3_CTX_TEST +#endif +#define X509V3_CTX_REPLACE 0x2 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; + EVP_PKEY *issuer_pkey; + /* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) +#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) +#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) +#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) +#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) +#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) +#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) +#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) +#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) +#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) +#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) +#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* ext_flags values */ +#define X509V3_EXT_DYNAMIC 0x1 +#define X509V3_EXT_CTX_DEP 0x2 +#define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +#define GEN_OTHERNAME 0 +#define GEN_EMAIL 1 +#define GEN_DNS 2 +#define GEN_X400 3 +#define GEN_DIRNAME 4 +#define GEN_EDIPARTY 5 +#define GEN_URI 6 +#define GEN_IPADD 7 +#define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_STRING *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) +#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) +#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) +#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) +#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) +#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) +#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) +#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) +#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) +#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) +#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) +#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) +#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) +#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) +#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) +#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_freefunc_type(freefunc)) +#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) +#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) +#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) +#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) +#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) +#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) +#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) +#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) +#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) +#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) +#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) +#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) +#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; + /* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) +/* All existing reasons */ +#define CRLDP_ALL_REASONS 0x807f + +#define CRL_REASON_NONE -1 +#define CRL_REASON_UNSPECIFIED 0 +#define CRL_REASON_KEY_COMPROMISE 1 +#define CRL_REASON_CA_COMPROMISE 2 +#define CRL_REASON_AFFILIATION_CHANGED 3 +#define CRL_REASON_SUPERSEDED 4 +#define CRL_REASON_CESSATION_OF_OPERATION 5 +#define CRL_REASON_CERTIFICATE_HOLD 6 +#define CRL_REASON_REMOVE_FROM_CRL 8 +#define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +#define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) +#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) +#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) +#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) +#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) +#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) +#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) +#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_freefunc_type(freefunc)) +#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) +#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) +#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) +#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) +#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) +#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) +#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) +#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) +#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) +#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) +#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_freefunc_type(freefunc)) +#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) +#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) +#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) +#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) +#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct ISSUER_SIGN_TOOL_st { + ASN1_UTF8STRING *signTool; + ASN1_UTF8STRING *cATool; + ASN1_UTF8STRING *signToolCert; + ASN1_UTF8STRING *cAToolCert; +} ISSUER_SIGN_TOOL; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) +#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) +#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) +#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) +#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) +#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) +#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) +#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) +#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) +#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) +#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) +#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) +#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) +#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) +#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) +#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) +#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_freefunc_type(freefunc)) +#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) +#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) +#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) +#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) +#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) +#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) +#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) +#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) +#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) +#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) +#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) +#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) +#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) +#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) +#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) +#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) +#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) +#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) +#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) +#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) +#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) +#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) +#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) +#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) + +/* clang-format on */ + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +#define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +#define IDP_INVALID 0x2 +/* onlyuser true */ +#define IDP_ONLYUSER 0x4 +/* onlyCA true */ +#define IDP_ONLYCA 0x8 +/* onlyattr true */ +#define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +#define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +#define IDP_REASONS 0x40 + +#define X509V3_conf_err(val) ERR_add_error_data(6, \ + "section:", (val)->section, \ + ",name:", (val)->name, ",value:", (val)->value) + +#define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, X509V3_CTX_TEST) +#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0, 0, 0, 0, \ + 0, 0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table } + +#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0, 0, 0, 0, \ + NULL } + +#define EXT_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ + 0, 0, 0, 0, \ + NULL } + +/* clang-format off */ +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +/* clang-format on */ + +/* X509_PURPOSE stuff */ + +#define EXFLAG_BCONS 0x1 +#define EXFLAG_KUSAGE 0x2 +#define EXFLAG_XKUSAGE 0x4 +#define EXFLAG_NSCERT 0x8 + +#define EXFLAG_CA 0x10 +#define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ +#define EXFLAG_V1 0x40 +#define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +#define EXFLAG_SET 0x100 +#define EXFLAG_CRITICAL 0x200 +#define EXFLAG_PROXY 0x400 + +#define EXFLAG_INVALID_POLICY 0x800 +#define EXFLAG_FRESHEST 0x1000 +#define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +#define EXFLAG_BCONS_CRITICAL 0x10000 +#define EXFLAG_AKID_CRITICAL 0x20000 +#define EXFLAG_SKID_CRITICAL 0x40000 +#define EXFLAG_SAN_CRITICAL 0x80000 +#define EXFLAG_NO_FINGERPRINT 0x100000 + +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +#define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +#define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +#define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +#define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +#define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +#define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +#define KU_CRL_SIGN X509v3_KU_CRL_SIGN +#define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +#define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY + +#define NS_SSL_CLIENT 0x80 +#define NS_SSL_SERVER 0x40 +#define NS_SMIME 0x20 +#define NS_OBJSIGN 0x10 +#define NS_SSL_CA 0x04 +#define NS_SMIME_CA 0x02 +#define NS_OBJSIGN_CA 0x01 +#define NS_ANY_CA (NS_SSL_CA | NS_SMIME_CA | NS_OBJSIGN_CA) + +#define XKU_SSL_SERVER 0x1 +#define XKU_SSL_CLIENT 0x2 +#define XKU_SMIME 0x4 +#define XKU_CODE_SIGN 0x8 +#define XKU_SGC 0x10 /* Netscape or MS Server-Gated Crypto */ +#define XKU_OCSP_SIGN 0x20 +#define XKU_TIMESTAMP 0x40 +#define XKU_DVCS 0x80 +#define XKU_ANYEKU 0x100 + +#define X509_PURPOSE_DYNAMIC 0x1 +#define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose)(const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) +#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) +#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) +#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) +#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) +#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) +#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) +#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_freefunc_type(freefunc)) +#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) +#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) +#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) +#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_PURPOSE_DEFAULT_ANY 0 +#define X509_PURPOSE_SSL_CLIENT 1 +#define X509_PURPOSE_SSL_SERVER 2 +#define X509_PURPOSE_NS_SSL_SERVER 3 +#define X509_PURPOSE_SMIME_SIGN 4 +#define X509_PURPOSE_SMIME_ENCRYPT 5 +#define X509_PURPOSE_CRL_SIGN 6 +#define X509_PURPOSE_ANY 7 +#define X509_PURPOSE_OCSP_HELPER 8 +#define X509_PURPOSE_TIMESTAMP_SIGN 9 +#define X509_PURPOSE_CODE_SIGN 10 + +#define X509_PURPOSE_MIN 1 +#define X509_PURPOSE_MAX 10 + +/* Flags for X509V3_EXT_print() */ + +#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +#define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +#define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +#define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +#define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +#define X509V3_ADD_OP_MASK 0xfL +#define X509V3_ADD_DEFAULT 0L +#define X509V3_ADD_APPEND 1L +#define X509V3_ADD_REPLACE 2L +#define X509V3_ADD_REPLACE_EXISTING 3L +#define X509V3_ADD_KEEP_EXISTING 4L +#define X509V3_ADD_DELETE 5L +#define X509V3_ADD_SILENT 0x10 + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); +char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); +ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, const X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); +int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, + const char *value, int is_nc); + +#ifdef OPENSSL_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); + +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +#endif + +char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); +/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ +int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* The new declarations are in crypto.h, but the old ones were here. */ +#define hex_to_string OPENSSL_buf2hexstr +#define string_to_hex OPENSSL_hexstr2buf +#endif + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck)(const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +int X509_PURPOSE_set(int *p, int purpose); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +#define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +#define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +#define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +#define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +#define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +#define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +#define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) +#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) +#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) +#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) +#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) +#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) +#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) +#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) +#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) +#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) +#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) +#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) + +/* clang-format on */ + +#ifndef OPENSSL_NO_RFC3779 +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +#define ASIdOrRange_id 0 +#define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) +#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) +#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) +#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) +#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) +#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) +#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) +#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_freefunc_type(freefunc)) +#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) +#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) +#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) +#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; + +#define ASIdentifierChoice_inherit 0 +#define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +#define IPAddressOrRange_addressPrefix 0 +#define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) +#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) +#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) +#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) +#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) +#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) +#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) +#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_freefunc_type(freefunc)) +#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) +#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) +#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) +#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; + +#define IPAddressChoice_inherit 0 +#define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) +#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) +#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) +#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) +#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) +#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) +#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) +#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_freefunc_type(freefunc)) +#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) +#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) +#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) +#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +#define V3_ASID_ASNUM 0 +#define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +#define IANA_AFI_IPV4 1 +#define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) +#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) +#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) +#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) +#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) +#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_freefunc_type(freefunc)) +#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) +#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) +#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) +#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) +#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) +#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) +#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) +#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) +#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) +#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) +#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) +#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) +#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) +#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) +#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) +#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) +#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) +#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) +#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) +#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) +#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_freefunc_type(freefunc)) +#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) +#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) +#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) +#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT *namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING *namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING *namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +#define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +#define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +#define OSSL_NAMED_DAY_TYPE_INT 0 +#define OSSL_NAMED_DAY_TYPE_BIT 1 +#define OSSL_NAMED_DAY_INT_SUN 1 +#define OSSL_NAMED_DAY_INT_MON 2 +#define OSSL_NAMED_DAY_INT_TUE 3 +#define OSSL_NAMED_DAY_INT_WED 4 +#define OSSL_NAMED_DAY_INT_THU 5 +#define OSSL_NAMED_DAY_INT_FRI 6 +#define OSSL_NAMED_DAY_INT_SAT 7 +#define OSSL_NAMED_DAY_BIT_SUN 0 +#define OSSL_NAMED_DAY_BIT_MON 1 +#define OSSL_NAMED_DAY_BIT_TUE 2 +#define OSSL_NAMED_DAY_BIT_WED 3 +#define OSSL_NAMED_DAY_BIT_THU 4 +#define OSSL_NAMED_DAY_BIT_FRI 5 +#define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +#define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +#define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +#define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +#define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +#define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +#define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +#define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +#define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +#define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +#define OSSL_TIME_SPEC_DAY_BIT_MON 1 +#define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +#define OSSL_TIME_SPEC_DAY_BIT_WED 3 +#define OSSL_TIME_SPEC_DAY_BIT_THU 4 +#define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +#define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +#define OSSL_TIME_SPEC_DAY_INT_SUN 1 +#define OSSL_TIME_SPEC_DAY_INT_MON 2 +#define OSSL_TIME_SPEC_DAY_INT_TUE 3 +#define OSSL_TIME_SPEC_DAY_INT_WED 4 +#define OSSL_TIME_SPEC_DAY_INT_THU 5 +#define OSSL_TIME_SPEC_DAY_INT_FRI 6 +#define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +#define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +#define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +#define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +#define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +#define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +#define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +#define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +#define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +#define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +#define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +#define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +#define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +#define OSSL_TIME_SPEC_INT_MONTH_APR 4 +#define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +#define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +#define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +#define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +#define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +#define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +#define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +#define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +#define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +#define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +#define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +#define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +#define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +#define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +#define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +#define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +#define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +#define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +#define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +#define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +#define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +#define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + +/* clang-format on */ + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +#define OSSL_ATTR_MAP_TYPE 0 +#define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +#define OSSL_AAA_ATTRIBUTE_TYPE 0 +#define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509v3err.h b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509v3err.h new file mode 100644 index 0000000..19f9386 --- /dev/null +++ b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/Headers/openssl/x509v3err.h @@ -0,0 +1,95 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2025 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_X509V3ERR_H +#define OPENSSL_X509V3ERR_H +#pragma once + +#include +#include +#include + +/* + * X509V3 reason codes. + */ +#define X509V3_R_BAD_IP_ADDRESS 118 +#define X509V3_R_BAD_OBJECT 119 +#define X509V3_R_BAD_OPTION 170 +#define X509V3_R_BAD_VALUE 171 +#define X509V3_R_BN_DEC2BN_ERROR 100 +#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 +#define X509V3_R_DIRNAME_ERROR 149 +#define X509V3_R_DISTPOINT_ALREADY_SET 160 +#define X509V3_R_DUPLICATE_ZONE_ID 133 +#define X509V3_R_EMPTY_KEY_USAGE 169 +#define X509V3_R_ERROR_CONVERTING_ZONE 131 +#define X509V3_R_ERROR_CREATING_EXTENSION 144 +#define X509V3_R_ERROR_IN_EXTENSION 128 +#define X509V3_R_EXPECTED_A_SECTION_NAME 137 +#define X509V3_R_EXTENSION_EXISTS 145 +#define X509V3_R_EXTENSION_NAME_ERROR 115 +#define X509V3_R_EXTENSION_NOT_FOUND 102 +#define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 +#define X509V3_R_EXTENSION_VALUE_ERROR 116 +#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151 +#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152 +#define X509V3_R_INVALID_ASNUMBER 162 +#define X509V3_R_INVALID_ASRANGE 163 +#define X509V3_R_INVALID_BOOLEAN_STRING 104 +#define X509V3_R_INVALID_CERTIFICATE 158 +#define X509V3_R_INVALID_EMPTY_NAME 108 +#define X509V3_R_INVALID_EXTENSION_STRING 105 +#define X509V3_R_INVALID_INHERITANCE 165 +#define X509V3_R_INVALID_IPADDRESS 166 +#define X509V3_R_INVALID_MULTIPLE_RDNS 161 +#define X509V3_R_INVALID_NAME 106 +#define X509V3_R_INVALID_NULL_ARGUMENT 107 +#define X509V3_R_INVALID_NULL_VALUE 109 +#define X509V3_R_INVALID_NUMBER 140 +#define X509V3_R_INVALID_NUMBERS 141 +#define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 +#define X509V3_R_INVALID_OPTION 138 +#define X509V3_R_INVALID_POLICY_IDENTIFIER 134 +#define X509V3_R_INVALID_PROXY_POLICY_SETTING 153 +#define X509V3_R_INVALID_PURPOSE 146 +#define X509V3_R_INVALID_SAFI 164 +#define X509V3_R_INVALID_SECTION 135 +#define X509V3_R_INVALID_SYNTAX 143 +#define X509V3_R_ISSUER_DECODE_ERROR 126 +#define X509V3_R_MISSING_VALUE 124 +#define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142 +#define X509V3_R_NEGATIVE_PATHLEN 168 +#define X509V3_R_NO_CONFIG_DATABASE 136 +#define X509V3_R_NO_ISSUER_CERTIFICATE 121 +#define X509V3_R_NO_ISSUER_DETAILS 127 +#define X509V3_R_NO_POLICY_IDENTIFIER 139 +#define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154 +#define X509V3_R_NO_PUBLIC_KEY 114 +#define X509V3_R_NO_SUBJECT_DETAILS 125 +#define X509V3_R_OPERATION_NOT_DEFINED 148 +#define X509V3_R_OTHERNAME_ERROR 147 +#define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 +#define X509V3_R_POLICY_PATH_LENGTH 156 +#define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157 +#define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 +#define X509V3_R_PURPOSE_NOT_UNIQUE 173 +#define X509V3_R_SECTION_NOT_FOUND 150 +#define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 +#define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 +#define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 +#define X509V3_R_UNKNOWN_EXTENSION 129 +#define X509V3_R_UNKNOWN_EXTENSION_NAME 130 +#define X509V3_R_UNKNOWN_OPTION 120 +#define X509V3_R_UNKNOWN_VALUE 172 +#define X509V3_R_UNSUPPORTED_OPTION 117 +#define X509V3_R_UNSUPPORTED_TYPE 167 +#define X509V3_R_USER_TOO_LONG 132 + +#endif diff --git a/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/libcrypto-watchos-device.a b/Frameworks/openssl.xcframework/watchos-arm64_arm64_32/libcrypto-watchos-device.a new file mode 100644 index 0000000000000000000000000000000000000000..2b91184a26cd1225ddeb0a8a843d67fbbdf1e5d5 GIT binary patch literal 15207776 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

  3. PN=x*;>Ca)_+#B^JVid7Ox){qr^Rar0aJpPkF|l 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�Mpy;DeCY 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

      !tQ(_jLIPn24;tbPh@Z`*LJRtez#j+1&j$KV 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 z�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∾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 z%0D&@#(y3pg99g?kjOe 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�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

    1. =7*`Mi00myr$3wWkdCg*=_KxeCstXY8r) zWufpCMhR_HapnAsJ}~i4o3@)={FmdgZFdxM^;Z6_llYsFQ|qP;60RMKsK3*$?e+GS zzSR4E#u!tlHgAlv*?e-&`Rn1B^9C~U8gu3%f2FvtBpq^k z@@(Wt39qAJd1^NDf+NS5+_0v5kd=q)8lZgGvXXqIPY3IFPYvanWRdIf$G*l)J@fL% zw!b*LAjo#I7g$k`oMK||sG$ku3SYpja^if9CC$hc9wW`N6*YlpMrIY+

      $IbSXU< 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

      p`zr&=&NYxjF0#tdNrj5P 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

    2. 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 z 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

  4. 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лFDI8|lzlU$2zddX?KBLk|s)ZkRfK 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

    g6^mi(nuVb9KyyYXg`uA%di#ZV4Rk^i% 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%0Dms;gn!Q#KVMKmIQHCS?}2VEX5ORcT87U) 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 GNssQUL=@~{F{qj!MO7qGwR~8sbB=f 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𝔯adRA$B73VZHJyPDrIj3ipwpVdZmqpX|Iy$Eh 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%0DsQh5s^L56m7p&qfm`e7QQ27Lv&!h5@*4dZU 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�K~-kK%R?-0frJbf#`9(^52YGCdO`0?mj&pL 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νpWB>tQD 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%0D}IBEu^l?q;_q<#Ijztji3<8h2Jn|& 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
    BL8(8 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
    S(4Cu_9v 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

  5. -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≫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%0DsA=_Jh2ljl7HZeQmF^?*SPC)ar#Q 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�T-x~3M6@PnV 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¨bEI-9;oanKDHr#d$a(QLw&o?DdfRxF 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%0DbO7OsvP3mWvV2!NP+I9L8ctCKc)We0#%N)pw_{5 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